Module Definition
dashboard | hierarchy | modlist | groups | tests | asserts



Module Instance : tb.dut.dap.i_dmi_jtag_tap

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.88 100.00 100.00 87.50 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.50 100.00 100.00 87.50 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
92.93 98.81 90.57 100.00 82.35 dap


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
i_tck_inv 100.00 100.00 100.00 100.00

Line Coverage for Module : dmi_jtag_tap
Line No.TotalCoveredPercent
TOTAL9696100.00
ALWAYS791111100.00
ALWAYS10555100.00
ALWAYS1271515100.00
ALWAYS1511010100.00
ALWAYS17266100.00
ALWAYS20155100.00
ALWAYS2153131100.00
ALWAYS30277100.00
CONT_ASSIGN31511100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31711100.00
CONT_ASSIGN31811100.00
CONT_ASSIGN31911100.00
CONT_ASSIGN32011100.00

78 always_comb begin : p_jtag 79 1/1 jtag_ir_shift_d = jtag_ir_shift_q; Tests: T1 T2 T3  80 1/1 jtag_ir_d = jtag_ir_q; Tests: T1 T2 T3  81 82 // IR shift register 83 1/1 if (shift_ir) begin Tests: T1 T2 T3  84 1/1 jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength-1:1]}; Tests: T1 T2 T3  85 end MISSING_ELSE 86 87 // capture IR register 88 1/1 if (capture_ir) begin Tests: T1 T2 T3  89 1/1 jtag_ir_shift_d = IrLength'(4'b0101); Tests: T1 T2 T3  90 end MISSING_ELSE 91 92 // update IR register 93 1/1 if (update_ir) begin Tests: T1 T2 T3  94 1/1 jtag_ir_d = ir_reg_e'(jtag_ir_shift_q); Tests: T1 T2 T3  95 end MISSING_ELSE 96 97 1/1 if (test_logic_reset) begin Tests: T1 T2 T3  98 // Bring all TAP state to the initial value. 99 1/1 jtag_ir_shift_d = '0; Tests: T1 T2 T3  100 1/1 jtag_ir_d = IDCODE; Tests: T1 T2 T3  101 end MISSING_ELSE 102 end 103 104 always_ff @(posedge tck_i, negedge trst_ni) begin : p_jtag_ir_reg 105 1/1 if (!trst_ni) begin Tests: T1 T2 T3  106 1/1 jtag_ir_shift_q <= '0; Tests: T1 T2 T3  107 1/1 jtag_ir_q <= IDCODE; Tests: T1 T2 T3  108 end else begin 109 1/1 jtag_ir_shift_q <= jtag_ir_shift_d; Tests: T1 T2 T3  110 1/1 jtag_ir_q <= jtag_ir_d; Tests: T1 T2 T3  111 end 112 end 113 114 // ---------------- 115 // TAP DR Regs 116 // ---------------- 117 // - Bypass 118 // - IDCODE 119 // - DTM CS 120 logic [31:0] idcode_d, idcode_q; 121 logic idcode_select; 122 logic bypass_select; 123 124 logic bypass_d, bypass_q; // this is a 1-bit register 125 126 always_comb begin 127 1/1 idcode_d = idcode_q; Tests: T1 T2 T3  128 1/1 bypass_d = bypass_q; Tests: T1 T2 T3  129 130 1/1 if (capture_dr) begin Tests: T1 T2 T3  131 2/2 if (idcode_select) idcode_d = IdcodeValue; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 132 2/2 if (bypass_select) bypass_d = 1'b0; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 133 end MISSING_ELSE 134 135 1/1 if (shift_dr) begin Tests: T1 T2 T3  136 2/2 if (idcode_select) idcode_d = {td_i, 31'(idcode_q >> 1)}; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 137 2/2 if (bypass_select) bypass_d = td_i; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 138 end MISSING_ELSE 139 140 1/1 if (test_logic_reset) begin Tests: T1 T2 T3  141 // Bring all TAP state to the initial value. 142 1/1 idcode_d = IdcodeValue; Tests: T1 T2 T3  143 1/1 bypass_d = 1'b0; Tests: T1 T2 T3  144 end MISSING_ELSE 145 end 146 147 // ---------------- 148 // Data reg select 149 // ---------------- 150 always_comb begin : p_data_reg_sel 151 1/1 dmi_select_o = 1'b0; Tests: T1 T2 T3  152 1/1 dtmcs_select_o = 1'b0; Tests: T1 T2 T3  153 1/1 idcode_select = 1'b0; Tests: T1 T2 T3  154 1/1 bypass_select = 1'b0; Tests: T1 T2 T3  155 1/1 unique case (jtag_ir_q) Tests: T1 T2 T3  156 1/1 BYPASS0: bypass_select = 1'b1; Tests: T77 T27 T9  157 1/1 IDCODE: idcode_select = 1'b1; Tests: T1 T2 T3  158 1/1 DTMCSR: dtmcs_select_o = 1'b1; Tests: T3 T23 T7  159 1/1 DMIACCESS: dmi_select_o = 1'b1; Tests: T1 T2 T3  160 1/1 BYPASS1: bypass_select = 1'b1; Tests: T87 T88 T89  161 default: bypass_select = 1'b1; 162 endcase 163 end 164 165 // ---------------- 166 // Output select 167 // ---------------- 168 logic tdo_mux; 169 170 always_comb begin : p_out_sel 171 // we are shifting out the IR register 172 1/1 if (shift_ir) begin Tests: T1 T2 T3  173 1/1 tdo_mux = jtag_ir_shift_q[0]; Tests: T1 T2 T3  174 // here we are shifting the DR register 175 end else begin 176 1/1 unique case (jtag_ir_q) Tests: T1 T2 T3  177 1/1 IDCODE: tdo_mux = idcode_q[0]; // Reading ID code Tests: T1 T2 T3  178 1/1 DTMCSR: tdo_mux = dtmcs_tdo_i; // Read from DTMCS TDO Tests: T3 T23 T7  179 1/1 DMIACCESS: tdo_mux = dmi_tdo_i; // Read from DMI TDO Tests: T1 T2 T3  180 default: tdo_mux = bypass_q; // BYPASS instruction 181 endcase 182 end 183 end 184 185 // ---------------- 186 // DFT 187 // ---------------- 188 logic tck_n; 189 190 prim_clock_inv #( 191 .HasScanMode(1'b1), 192 .NoFpgaBufG(1'b1) 193 ) i_tck_inv ( 194 .clk_i ( tck_i ), 195 .clk_no ( tck_n ), 196 .scanmode_i ( testmode_i ) 197 ); 198 199 // TDO changes state at negative edge of TCK 200 always_ff @(posedge tck_n, negedge trst_ni) begin : p_tdo_regs 201 1/1 if (!trst_ni) begin Tests: T1 T2 T3  202 1/1 td_o <= 1'b0; Tests: T1 T2 T3  203 1/1 tdo_oe_o <= 1'b0; Tests: T1 T2 T3  204 end else begin 205 1/1 td_o <= tdo_mux; Tests: T1 T2 T3  206 1/1 tdo_oe_o <= (shift_ir | shift_dr); Tests: T1 T2 T3  207 end 208 end 209 // ---------------- 210 // TAP FSM 211 // ---------------- 212 // Determination of next state; purely combinatorial 213 always_comb begin : p_tap_fsm 214 215 1/1 test_logic_reset = 1'b0; Tests: T1 T2 T3  216 217 1/1 capture_dr = 1'b0; Tests: T1 T2 T3  218 1/1 shift_dr = 1'b0; Tests: T1 T2 T3  219 1/1 update_dr = 1'b0; Tests: T1 T2 T3  220 221 1/1 capture_ir = 1'b0; Tests: T1 T2 T3  222 1/1 shift_ir = 1'b0; Tests: T1 T2 T3  223 // pause_ir = 1'b0; unused 224 1/1 update_ir = 1'b0; Tests: T1 T2 T3  225 226 1/1 unique case (tap_state_q) Tests: T1 T2 T3  227 TestLogicReset: begin 228 1/1 tap_state_d = (tms_i) ? TestLogicReset : RunTestIdle; Tests: T1 T2 T3  229 1/1 test_logic_reset = 1'b1; Tests: T1 T2 T3  230 end 231 RunTestIdle: begin 232 1/1 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; Tests: T1 T2 T3  233 end 234 // DR Path 235 SelectDrScan: begin 236 1/1 tap_state_d = (tms_i) ? SelectIrScan : CaptureDr; Tests: T1 T2 T3  237 end 238 CaptureDr: begin 239 1/1 capture_dr = 1'b1; Tests: T1 T2 T3  240 1/1 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; Tests: T1 T2 T3  241 end 242 ShiftDr: begin 243 1/1 shift_dr = 1'b1; Tests: T1 T2 T3  244 1/1 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; Tests: T1 T2 T3  245 end 246 Exit1Dr: begin 247 1/1 tap_state_d = (tms_i) ? UpdateDr : PauseDr; Tests: T1 T2 T3  248 end 249 PauseDr: begin 250 1/1 tap_state_d = (tms_i) ? Exit2Dr : PauseDr; Tests: T1 T2 T3  251 end 252 Exit2Dr: begin 253 1/1 tap_state_d = (tms_i) ? UpdateDr : ShiftDr; Tests: T1 T2 T3  254 end 255 UpdateDr: begin 256 1/1 update_dr = 1'b1; Tests: T1 T2 T3  257 1/1 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; Tests: T1 T2 T3  258 end 259 // IR Path 260 SelectIrScan: begin 261 1/1 tap_state_d = (tms_i) ? TestLogicReset : CaptureIr; Tests: T1 T2 T3  262 end 263 // In this controller state, the shift register bank in the 264 // Instruction Register parallel loads a pattern of fixed values on 265 // the rising edge of TCK. The last two significant bits must always 266 // be "01". 267 CaptureIr: begin 268 1/1 capture_ir = 1'b1; Tests: T1 T2 T3  269 1/1 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; Tests: T1 T2 T3  270 end 271 // In this controller state, the instruction register gets connected 272 // between TDI and TDO, and the captured pattern gets shifted on 273 // each rising edge of TCK. The instruction available on the TDI 274 // pin is also shifted in to the instruction register. 275 ShiftIr: begin 276 1/1 shift_ir = 1'b1; Tests: T1 T2 T3  277 1/1 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; Tests: T1 T2 T3  278 end 279 Exit1Ir: begin 280 1/1 tap_state_d = (tms_i) ? UpdateIr : PauseIr; Tests: T1 T2 T3  281 end 282 PauseIr: begin 283 // pause_ir = 1'b1; // unused 284 1/1 tap_state_d = (tms_i) ? Exit2Ir : PauseIr; Tests: T1 T2 T3  285 end 286 Exit2Ir: begin 287 1/1 tap_state_d = (tms_i) ? UpdateIr : ShiftIr; Tests: T1 T2 T3  288 end 289 // In this controller state, the instruction in the instruction 290 // shift register is latched to the latch bank of the Instruction 291 // Register on every falling edge of TCK. This instruction becomes 292 // the current instruction once it is latched. 293 UpdateIr: begin 294 1/1 update_ir = 1'b1; Tests: T1 T2 T3  295 1/1 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; Tests: T1 T2 T3  296 end 297 default: ; // can't actually happen since case is full 298 endcase 299 end 300 301 always_ff @(posedge tck_i or negedge trst_ni) begin : p_regs 302 1/1 if (!trst_ni) begin Tests: T1 T2 T3  303 1/1 tap_state_q <= TestLogicReset; Tests: T1 T2 T3  304 1/1 idcode_q <= IdcodeValue; Tests: T1 T2 T3  305 1/1 bypass_q <= 1'b0; Tests: T1 T2 T3  306 end else begin 307 1/1 tap_state_q <= tap_state_d; Tests: T1 T2 T3  308 1/1 idcode_q <= idcode_d; Tests: T1 T2 T3  309 1/1 bypass_q <= bypass_d; Tests: T1 T2 T3  310 end 311 end 312 313 // Pass through JTAG signals to debug custom DR logic. 314 // In case of a single TAP those are just feed-through. 315 1/1 assign tck_o = tck_i; Tests: T1 T2 T3  316 1/1 assign tdi_o = td_i; Tests: T1 T2 T3  317 1/1 assign update_o = update_dr; Tests: T1 T2 T3  318 1/1 assign shift_o = shift_dr; Tests: T1 T2 T3  319 1/1 assign capture_o = capture_dr; Tests: T1 T2 T3  320 1/1 assign dmi_clear_o = test_logic_reset; Tests: T1 T2 T3 

Cond Coverage for Module : dmi_jtag_tap
TotalCoveredPercent
Conditions3535100.00
Logical3535100.00
Non-Logical00
Event00

 LINE       206
 EXPRESSION (shift_ir | shift_dr)
             ----1---   ----2---
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT1,T2,T3
10CoveredT1,T2,T3

 LINE       228
 EXPRESSION (tms_i ? TestLogicReset : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT77,T27,T9

 LINE       232
 EXPRESSION (tms_i ? SelectDrScan : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       236
 EXPRESSION (tms_i ? SelectIrScan : CaptureDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       240
 EXPRESSION (tms_i ? Exit1Dr : ShiftDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T91,T92

 LINE       244
 EXPRESSION (tms_i ? Exit1Dr : ShiftDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       247
 EXPRESSION (tms_i ? UpdateDr : PauseDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       250
 EXPRESSION (tms_i ? Exit2Dr : PauseDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       253
 EXPRESSION (tms_i ? UpdateDr : ShiftDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       257
 EXPRESSION (tms_i ? SelectDrScan : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       261
 EXPRESSION (tms_i ? TestLogicReset : CaptureIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       269
 EXPRESSION (tms_i ? Exit1Ir : ShiftIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT23,T90,T31

 LINE       277
 EXPRESSION (tms_i ? Exit1Ir : ShiftIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       280
 EXPRESSION (tms_i ? UpdateIr : PauseIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       284
 EXPRESSION (tms_i ? Exit2Ir : PauseIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T49,T6

 LINE       287
 EXPRESSION (tms_i ? UpdateIr : ShiftIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T49,T6

 LINE       295
 EXPRESSION (tms_i ? SelectDrScan : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

FSM Coverage for Module : dmi_jtag_tap
Summary for FSM :: tap_state_q
TotalCoveredPercent
States 16 16 100.00 (Not included in score)
Transitions 40 35 87.50
Sequences 0 0

State, Transition and Sequence Details for FSM :: tap_state_q
statesLine No.CoveredTests
CaptureDr 236 Covered T1,T2,T3
CaptureIr 261 Covered T1,T2,T3
Exit1Dr 240 Covered T1,T2,T3
Exit1Ir 269 Covered T1,T2,T3
Exit2Dr 250 Covered T1,T2,T3
Exit2Ir 284 Covered T3,T49,T6
PauseDr 247 Covered T1,T2,T3
PauseIr 280 Covered T3,T49,T6
RunTestIdle 228 Covered T1,T2,T3
SelectDrScan 232 Covered T1,T2,T3
SelectIrScan 236 Covered T1,T2,T3
ShiftDr 240 Covered T1,T2,T3
ShiftIr 269 Covered T1,T2,T3
TestLogicReset 303 Covered T1,T2,T3
UpdateDr 247 Covered T1,T2,T3
UpdateIr 280 Covered T1,T2,T3


transitionsLine No.CoveredTests
CaptureDr->Exit1Dr 240 Covered T90,T91,T92
CaptureDr->ShiftDr 240 Covered T1,T2,T3
CaptureDr->TestLogicReset 303 Covered T71,T16,T93
CaptureIr->Exit1Ir 269 Covered T23,T90,T31
CaptureIr->ShiftIr 269 Covered T1,T2,T3
CaptureIr->TestLogicReset 303 Not Covered
Exit1Dr->PauseDr 247 Covered T1,T2,T3
Exit1Dr->TestLogicReset 303 Covered T37,T94,T95
Exit1Dr->UpdateDr 247 Covered T1,T2,T3
Exit1Ir->PauseIr 280 Covered T3,T49,T6
Exit1Ir->TestLogicReset 303 Covered T62
Exit1Ir->UpdateIr 280 Covered T1,T2,T3
Exit2Dr->ShiftDr 253 Covered T1,T2,T3
Exit2Dr->TestLogicReset 303 Covered T95
Exit2Dr->UpdateDr 253 Covered T1,T2,T3
Exit2Ir->ShiftIr 287 Covered T49,T12,T23
Exit2Ir->TestLogicReset 303 Not Covered
Exit2Ir->UpdateIr 287 Covered T3,T49,T6
PauseDr->Exit2Dr 250 Covered T1,T2,T3
PauseDr->TestLogicReset 303 Covered T36,T34,T79
PauseIr->Exit2Ir 284 Covered T3,T49,T6
PauseIr->TestLogicReset 303 Covered T94,T96,T97
RunTestIdle->SelectDrScan 232 Covered T1,T2,T3
RunTestIdle->TestLogicReset 303 Covered T49,T6,T8
SelectDrScan->CaptureDr 236 Covered T1,T2,T3
SelectDrScan->SelectIrScan 236 Covered T1,T2,T3
SelectDrScan->TestLogicReset 303 Covered T96,T98
SelectIrScan->CaptureIr 261 Covered T1,T2,T3
SelectIrScan->TestLogicReset 303 Covered T77,T27,T9
ShiftDr->Exit1Dr 244 Covered T1,T2,T3
ShiftDr->TestLogicReset 303 Covered T62,T36,T34
ShiftIr->Exit1Ir 277 Covered T1,T2,T3
ShiftIr->TestLogicReset 303 Covered T99,T100,T101
TestLogicReset->RunTestIdle 228 Covered T1,T2,T3
UpdateDr->RunTestIdle 257 Covered T1,T2,T3
UpdateDr->SelectDrScan 257 Not Covered
UpdateDr->TestLogicReset 303 Covered T90,T79
UpdateIr->RunTestIdle 295 Covered T1,T2,T3
UpdateIr->SelectDrScan 295 Not Covered
UpdateIr->TestLogicReset 303 Not Covered



Branch Coverage for Module : dmi_jtag_tap
Line No.TotalCoveredPercent
Branches 70 69 98.57
IF 83 2 2 100.00
IF 88 2 2 100.00
IF 93 2 2 100.00
IF 97 2 2 100.00
IF 105 2 2 100.00
IF 130 5 5 100.00
IF 135 5 5 100.00
IF 140 2 2 100.00
CASE 155 6 6 100.00
IF 172 5 5 100.00
IF 201 2 2 100.00
CASE 226 33 32 96.97
IF 302 2 2 100.00


83 if (shift_ir) begin -1- 84 jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength-1:1]}; ==> 85 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


88 if (capture_ir) begin -1- 89 jtag_ir_shift_d = IrLength'(4'b0101); ==> 90 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


93 if (update_ir) begin -1- 94 jtag_ir_d = ir_reg_e'(jtag_ir_shift_q); ==> 95 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


97 if (test_logic_reset) begin -1- 98 // Bring all TAP state to the initial value. 99 jtag_ir_shift_d = '0; ==> 100 jtag_ir_d = IDCODE; 101 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


105 if (!trst_ni) begin -1- 106 jtag_ir_shift_q <= '0; ==> 107 jtag_ir_q <= IDCODE; 108 end else begin 109 jtag_ir_shift_q <= jtag_ir_shift_d; ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


130 if (capture_dr) begin -1- 131 if (idcode_select) idcode_d = IdcodeValue; -2- ==> MISSING_ELSE ==> 132 if (bypass_select) bypass_d = 1'b0; -3- ==> MISSING_ELSE ==> 133 end MISSING_ELSE ==>

Branches:
-1--2--3-StatusTests
1 1 - Covered T1,T2,T3
1 0 - Covered T1,T2,T3
1 - 1 Covered T1,T2,T3
1 - 0 Covered T1,T2,T3
0 - - Covered T1,T2,T3


135 if (shift_dr) begin -1- 136 if (idcode_select) idcode_d = {td_i, 31'(idcode_q >> 1)}; -2- ==> MISSING_ELSE ==> 137 if (bypass_select) bypass_d = td_i; -3- ==> MISSING_ELSE ==> 138 end MISSING_ELSE ==>

Branches:
-1--2--3-StatusTests
1 1 - Covered T1,T2,T3
1 0 - Covered T1,T2,T3
1 - 1 Covered T1,T2,T3
1 - 0 Covered T1,T2,T3
0 - - Covered T1,T2,T3


140 if (test_logic_reset) begin -1- 141 // Bring all TAP state to the initial value. 142 idcode_d = IdcodeValue; ==> 143 bypass_d = 1'b0; 144 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


155 unique case (jtag_ir_q) -1- 156 BYPASS0: bypass_select = 1'b1; ==> 157 IDCODE: idcode_select = 1'b1; ==> 158 DTMCSR: dtmcs_select_o = 1'b1; ==> 159 DMIACCESS: dmi_select_o = 1'b1; ==> 160 BYPASS1: bypass_select = 1'b1; ==> 161 default: bypass_select = 1'b1; ==>

Branches:
-1-StatusTests
BYPASS0 Covered T77,T27,T9
IDCODE Covered T1,T2,T3
DTMCSR Covered T3,T23,T7
DMIACCESS Covered T1,T2,T3
BYPASS1 Covered T87,T88,T89
default Covered T23,T90,T31


172 if (shift_ir) begin -1- 173 tdo_mux = jtag_ir_shift_q[0]; ==> 174 // here we are shifting the DR register 175 end else begin 176 unique case (jtag_ir_q) -2- 177 IDCODE: tdo_mux = idcode_q[0]; // Reading ID code ==> 178 DTMCSR: tdo_mux = dtmcs_tdo_i; // Read from DTMCS TDO ==> 179 DMIACCESS: tdo_mux = dmi_tdo_i; // Read from DMI TDO ==> 180 default: tdo_mux = bypass_q; // BYPASS instruction ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 IDCODE Covered T1,T2,T3
0 DTMCSR Covered T3,T23,T7
0 DMIACCESS Covered T1,T2,T3
0 default Covered T23,T77,T27


201 if (!trst_ni) begin -1- 202 td_o <= 1'b0; ==> 203 tdo_oe_o <= 1'b0; 204 end else begin 205 td_o <= tdo_mux; ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


226 unique case (tap_state_q) -1- 227 TestLogicReset: begin 228 tap_state_d = (tms_i) ? TestLogicReset : RunTestIdle; -2- ==> ==> 229 test_logic_reset = 1'b1; 230 end 231 RunTestIdle: begin 232 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; -3- ==> ==> 233 end 234 // DR Path 235 SelectDrScan: begin 236 tap_state_d = (tms_i) ? SelectIrScan : CaptureDr; -4- ==> ==> 237 end 238 CaptureDr: begin 239 capture_dr = 1'b1; 240 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; -5- ==> ==> 241 end 242 ShiftDr: begin 243 shift_dr = 1'b1; 244 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; -6- ==> ==> 245 end 246 Exit1Dr: begin 247 tap_state_d = (tms_i) ? UpdateDr : PauseDr; -7- ==> ==> 248 end 249 PauseDr: begin 250 tap_state_d = (tms_i) ? Exit2Dr : PauseDr; -8- ==> ==> 251 end 252 Exit2Dr: begin 253 tap_state_d = (tms_i) ? UpdateDr : ShiftDr; -9- ==> ==> 254 end 255 UpdateDr: begin 256 update_dr = 1'b1; 257 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; -10- ==> ==> 258 end 259 // IR Path 260 SelectIrScan: begin 261 tap_state_d = (tms_i) ? TestLogicReset : CaptureIr; -11- ==> ==> 262 end 263 // In this controller state, the shift register bank in the 264 // Instruction Register parallel loads a pattern of fixed values on 265 // the rising edge of TCK. The last two significant bits must always 266 // be "01". 267 CaptureIr: begin 268 capture_ir = 1'b1; 269 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; -12- ==> ==> 270 end 271 // In this controller state, the instruction register gets connected 272 // between TDI and TDO, and the captured pattern gets shifted on 273 // each rising edge of TCK. The instruction available on the TDI 274 // pin is also shifted in to the instruction register. 275 ShiftIr: begin 276 shift_ir = 1'b1; 277 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; -13- ==> ==> 278 end 279 Exit1Ir: begin 280 tap_state_d = (tms_i) ? UpdateIr : PauseIr; -14- ==> ==> 281 end 282 PauseIr: begin 283 // pause_ir = 1'b1; // unused 284 tap_state_d = (tms_i) ? Exit2Ir : PauseIr; -15- ==> ==> 285 end 286 Exit2Ir: begin 287 tap_state_d = (tms_i) ? UpdateIr : ShiftIr; -16- ==> ==> 288 end 289 // In this controller state, the instruction in the instruction 290 // shift register is latched to the latch bank of the Instruction 291 // Register on every falling edge of TCK. This instruction becomes 292 // the current instruction once it is latched. 293 UpdateIr: begin 294 update_ir = 1'b1; 295 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; -17- ==> ==> 296 end 297 default: ; // can't actually happen since case is full ==>

Branches:
-1--2--3--4--5--6--7--8--9--10--11--12--13--14--15--16--17-StatusTests
TestLogicReset 1 - - - - - - - - - - - - - - - Covered T77,T27,T9
TestLogicReset 0 - - - - - - - - - - - - - - - Covered T1,T2,T3
RunTestIdle - 1 - - - - - - - - - - - - - - Covered T1,T2,T3
RunTestIdle - 0 - - - - - - - - - - - - - - Covered T1,T2,T3
SelectDrScan - - 1 - - - - - - - - - - - - - Covered T1,T2,T3
SelectDrScan - - 0 - - - - - - - - - - - - - Covered T1,T2,T3
CaptureDr - - - 1 - - - - - - - - - - - - Covered T90,T91,T92
CaptureDr - - - 0 - - - - - - - - - - - - Covered T1,T2,T3
ShiftDr - - - - 1 - - - - - - - - - - - Covered T1,T2,T3
ShiftDr - - - - 0 - - - - - - - - - - - Covered T1,T2,T3
Exit1Dr - - - - - 1 - - - - - - - - - - Covered T1,T2,T3
Exit1Dr - - - - - 0 - - - - - - - - - - Covered T1,T2,T3
PauseDr - - - - - - 1 - - - - - - - - - Covered T1,T2,T3
PauseDr - - - - - - 0 - - - - - - - - - Covered T1,T2,T3
Exit2Dr - - - - - - - 1 - - - - - - - - Covered T1,T2,T3
Exit2Dr - - - - - - - 0 - - - - - - - - Covered T1,T2,T3
UpdateDr - - - - - - - - 1 - - - - - - - Covered T1,T2,T3
UpdateDr - - - - - - - - 0 - - - - - - - Covered T1,T2,T3
SelectIrScan - - - - - - - - - 1 - - - - - - Covered T1,T2,T3
SelectIrScan - - - - - - - - - 0 - - - - - - Covered T1,T2,T3
CaptureIr - - - - - - - - - - 1 - - - - - Covered T23,T90,T31
CaptureIr - - - - - - - - - - 0 - - - - - Covered T1,T2,T3
ShiftIr - - - - - - - - - - - 1 - - - - Covered T1,T2,T3
ShiftIr - - - - - - - - - - - 0 - - - - Covered T1,T2,T3
Exit1Ir - - - - - - - - - - - - 1 - - - Covered T1,T2,T3
Exit1Ir - - - - - - - - - - - - 0 - - - Covered T1,T2,T3
PauseIr - - - - - - - - - - - - - 1 - - Covered T3,T49,T6
PauseIr - - - - - - - - - - - - - 0 - - Covered T1,T2,T3
Exit2Ir - - - - - - - - - - - - - - 1 - Covered T3,T49,T6
Exit2Ir - - - - - - - - - - - - - - 0 - Covered T1,T2,T3
UpdateIr - - - - - - - - - - - - - - - 1 Covered T1,T2,T3
UpdateIr - - - - - - - - - - - - - - - 0 Covered T1,T2,T3
default - - - - - - - - - - - - - - - - Not Covered


302 if (!trst_ni) begin -1- 303 tap_state_q <= TestLogicReset; ==> 304 idcode_q <= IdcodeValue; 305 bypass_q <= 1'b0; 306 end else begin 307 tap_state_q <= tap_state_d; ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3

Line Coverage for Instance : tb.dut.dap.i_dmi_jtag_tap
Line No.TotalCoveredPercent
TOTAL9696100.00
ALWAYS791111100.00
ALWAYS10555100.00
ALWAYS1271515100.00
ALWAYS1511010100.00
ALWAYS17266100.00
ALWAYS20155100.00
ALWAYS2153131100.00
ALWAYS30277100.00
CONT_ASSIGN31511100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31711100.00
CONT_ASSIGN31811100.00
CONT_ASSIGN31911100.00
CONT_ASSIGN32011100.00

78 always_comb begin : p_jtag 79 1/1 jtag_ir_shift_d = jtag_ir_shift_q; Tests: T1 T2 T3  80 1/1 jtag_ir_d = jtag_ir_q; Tests: T1 T2 T3  81 82 // IR shift register 83 1/1 if (shift_ir) begin Tests: T1 T2 T3  84 1/1 jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength-1:1]}; Tests: T1 T2 T3  85 end MISSING_ELSE 86 87 // capture IR register 88 1/1 if (capture_ir) begin Tests: T1 T2 T3  89 1/1 jtag_ir_shift_d = IrLength'(4'b0101); Tests: T1 T2 T3  90 end MISSING_ELSE 91 92 // update IR register 93 1/1 if (update_ir) begin Tests: T1 T2 T3  94 1/1 jtag_ir_d = ir_reg_e'(jtag_ir_shift_q); Tests: T1 T2 T3  95 end MISSING_ELSE 96 97 1/1 if (test_logic_reset) begin Tests: T1 T2 T3  98 // Bring all TAP state to the initial value. 99 1/1 jtag_ir_shift_d = '0; Tests: T1 T2 T3  100 1/1 jtag_ir_d = IDCODE; Tests: T1 T2 T3  101 end MISSING_ELSE 102 end 103 104 always_ff @(posedge tck_i, negedge trst_ni) begin : p_jtag_ir_reg 105 1/1 if (!trst_ni) begin Tests: T1 T2 T3  106 1/1 jtag_ir_shift_q <= '0; Tests: T1 T2 T3  107 1/1 jtag_ir_q <= IDCODE; Tests: T1 T2 T3  108 end else begin 109 1/1 jtag_ir_shift_q <= jtag_ir_shift_d; Tests: T1 T2 T3  110 1/1 jtag_ir_q <= jtag_ir_d; Tests: T1 T2 T3  111 end 112 end 113 114 // ---------------- 115 // TAP DR Regs 116 // ---------------- 117 // - Bypass 118 // - IDCODE 119 // - DTM CS 120 logic [31:0] idcode_d, idcode_q; 121 logic idcode_select; 122 logic bypass_select; 123 124 logic bypass_d, bypass_q; // this is a 1-bit register 125 126 always_comb begin 127 1/1 idcode_d = idcode_q; Tests: T1 T2 T3  128 1/1 bypass_d = bypass_q; Tests: T1 T2 T3  129 130 1/1 if (capture_dr) begin Tests: T1 T2 T3  131 2/2 if (idcode_select) idcode_d = IdcodeValue; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 132 2/2 if (bypass_select) bypass_d = 1'b0; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 133 end MISSING_ELSE 134 135 1/1 if (shift_dr) begin Tests: T1 T2 T3  136 2/2 if (idcode_select) idcode_d = {td_i, 31'(idcode_q >> 1)}; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 137 2/2 if (bypass_select) bypass_d = td_i; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 138 end MISSING_ELSE 139 140 1/1 if (test_logic_reset) begin Tests: T1 T2 T3  141 // Bring all TAP state to the initial value. 142 1/1 idcode_d = IdcodeValue; Tests: T1 T2 T3  143 1/1 bypass_d = 1'b0; Tests: T1 T2 T3  144 end MISSING_ELSE 145 end 146 147 // ---------------- 148 // Data reg select 149 // ---------------- 150 always_comb begin : p_data_reg_sel 151 1/1 dmi_select_o = 1'b0; Tests: T1 T2 T3  152 1/1 dtmcs_select_o = 1'b0; Tests: T1 T2 T3  153 1/1 idcode_select = 1'b0; Tests: T1 T2 T3  154 1/1 bypass_select = 1'b0; Tests: T1 T2 T3  155 1/1 unique case (jtag_ir_q) Tests: T1 T2 T3  156 1/1 BYPASS0: bypass_select = 1'b1; Tests: T77 T27 T9  157 1/1 IDCODE: idcode_select = 1'b1; Tests: T1 T2 T3  158 1/1 DTMCSR: dtmcs_select_o = 1'b1; Tests: T3 T23 T7  159 1/1 DMIACCESS: dmi_select_o = 1'b1; Tests: T1 T2 T3  160 1/1 BYPASS1: bypass_select = 1'b1; Tests: T87 T88 T89  161 default: bypass_select = 1'b1; 162 endcase 163 end 164 165 // ---------------- 166 // Output select 167 // ---------------- 168 logic tdo_mux; 169 170 always_comb begin : p_out_sel 171 // we are shifting out the IR register 172 1/1 if (shift_ir) begin Tests: T1 T2 T3  173 1/1 tdo_mux = jtag_ir_shift_q[0]; Tests: T1 T2 T3  174 // here we are shifting the DR register 175 end else begin 176 1/1 unique case (jtag_ir_q) Tests: T1 T2 T3  177 1/1 IDCODE: tdo_mux = idcode_q[0]; // Reading ID code Tests: T1 T2 T3  178 1/1 DTMCSR: tdo_mux = dtmcs_tdo_i; // Read from DTMCS TDO Tests: T3 T23 T7  179 1/1 DMIACCESS: tdo_mux = dmi_tdo_i; // Read from DMI TDO Tests: T1 T2 T3  180 default: tdo_mux = bypass_q; // BYPASS instruction 181 endcase 182 end 183 end 184 185 // ---------------- 186 // DFT 187 // ---------------- 188 logic tck_n; 189 190 prim_clock_inv #( 191 .HasScanMode(1'b1), 192 .NoFpgaBufG(1'b1) 193 ) i_tck_inv ( 194 .clk_i ( tck_i ), 195 .clk_no ( tck_n ), 196 .scanmode_i ( testmode_i ) 197 ); 198 199 // TDO changes state at negative edge of TCK 200 always_ff @(posedge tck_n, negedge trst_ni) begin : p_tdo_regs 201 1/1 if (!trst_ni) begin Tests: T1 T2 T3  202 1/1 td_o <= 1'b0; Tests: T1 T2 T3  203 1/1 tdo_oe_o <= 1'b0; Tests: T1 T2 T3  204 end else begin 205 1/1 td_o <= tdo_mux; Tests: T1 T2 T3  206 1/1 tdo_oe_o <= (shift_ir | shift_dr); Tests: T1 T2 T3  207 end 208 end 209 // ---------------- 210 // TAP FSM 211 // ---------------- 212 // Determination of next state; purely combinatorial 213 always_comb begin : p_tap_fsm 214 215 1/1 test_logic_reset = 1'b0; Tests: T1 T2 T3  216 217 1/1 capture_dr = 1'b0; Tests: T1 T2 T3  218 1/1 shift_dr = 1'b0; Tests: T1 T2 T3  219 1/1 update_dr = 1'b0; Tests: T1 T2 T3  220 221 1/1 capture_ir = 1'b0; Tests: T1 T2 T3  222 1/1 shift_ir = 1'b0; Tests: T1 T2 T3  223 // pause_ir = 1'b0; unused 224 1/1 update_ir = 1'b0; Tests: T1 T2 T3  225 226 1/1 unique case (tap_state_q) Tests: T1 T2 T3  227 TestLogicReset: begin 228 1/1 tap_state_d = (tms_i) ? TestLogicReset : RunTestIdle; Tests: T1 T2 T3  229 1/1 test_logic_reset = 1'b1; Tests: T1 T2 T3  230 end 231 RunTestIdle: begin 232 1/1 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; Tests: T1 T2 T3  233 end 234 // DR Path 235 SelectDrScan: begin 236 1/1 tap_state_d = (tms_i) ? SelectIrScan : CaptureDr; Tests: T1 T2 T3  237 end 238 CaptureDr: begin 239 1/1 capture_dr = 1'b1; Tests: T1 T2 T3  240 1/1 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; Tests: T1 T2 T3  241 end 242 ShiftDr: begin 243 1/1 shift_dr = 1'b1; Tests: T1 T2 T3  244 1/1 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; Tests: T1 T2 T3  245 end 246 Exit1Dr: begin 247 1/1 tap_state_d = (tms_i) ? UpdateDr : PauseDr; Tests: T1 T2 T3  248 end 249 PauseDr: begin 250 1/1 tap_state_d = (tms_i) ? Exit2Dr : PauseDr; Tests: T1 T2 T3  251 end 252 Exit2Dr: begin 253 1/1 tap_state_d = (tms_i) ? UpdateDr : ShiftDr; Tests: T1 T2 T3  254 end 255 UpdateDr: begin 256 1/1 update_dr = 1'b1; Tests: T1 T2 T3  257 1/1 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; Tests: T1 T2 T3  258 end 259 // IR Path 260 SelectIrScan: begin 261 1/1 tap_state_d = (tms_i) ? TestLogicReset : CaptureIr; Tests: T1 T2 T3  262 end 263 // In this controller state, the shift register bank in the 264 // Instruction Register parallel loads a pattern of fixed values on 265 // the rising edge of TCK. The last two significant bits must always 266 // be "01". 267 CaptureIr: begin 268 1/1 capture_ir = 1'b1; Tests: T1 T2 T3  269 1/1 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; Tests: T1 T2 T3  270 end 271 // In this controller state, the instruction register gets connected 272 // between TDI and TDO, and the captured pattern gets shifted on 273 // each rising edge of TCK. The instruction available on the TDI 274 // pin is also shifted in to the instruction register. 275 ShiftIr: begin 276 1/1 shift_ir = 1'b1; Tests: T1 T2 T3  277 1/1 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; Tests: T1 T2 T3  278 end 279 Exit1Ir: begin 280 1/1 tap_state_d = (tms_i) ? UpdateIr : PauseIr; Tests: T1 T2 T3  281 end 282 PauseIr: begin 283 // pause_ir = 1'b1; // unused 284 1/1 tap_state_d = (tms_i) ? Exit2Ir : PauseIr; Tests: T1 T2 T3  285 end 286 Exit2Ir: begin 287 1/1 tap_state_d = (tms_i) ? UpdateIr : ShiftIr; Tests: T1 T2 T3  288 end 289 // In this controller state, the instruction in the instruction 290 // shift register is latched to the latch bank of the Instruction 291 // Register on every falling edge of TCK. This instruction becomes 292 // the current instruction once it is latched. 293 UpdateIr: begin 294 1/1 update_ir = 1'b1; Tests: T1 T2 T3  295 1/1 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; Tests: T1 T2 T3  296 end 297 default: ; // can't actually happen since case is full Exclude Annotation: VC_COV_UNR 298 endcase 299 end 300 301 always_ff @(posedge tck_i or negedge trst_ni) begin : p_regs 302 1/1 if (!trst_ni) begin Tests: T1 T2 T3  303 1/1 tap_state_q <= TestLogicReset; Tests: T1 T2 T3  304 1/1 idcode_q <= IdcodeValue; Tests: T1 T2 T3  305 1/1 bypass_q <= 1'b0; Tests: T1 T2 T3  306 end else begin 307 1/1 tap_state_q <= tap_state_d; Tests: T1 T2 T3  308 1/1 idcode_q <= idcode_d; Tests: T1 T2 T3  309 1/1 bypass_q <= bypass_d; Tests: T1 T2 T3  310 end 311 end 312 313 // Pass through JTAG signals to debug custom DR logic. 314 // In case of a single TAP those are just feed-through. 315 1/1 assign tck_o = tck_i; Tests: T1 T2 T3  316 1/1 assign tdi_o = td_i; Tests: T1 T2 T3  317 1/1 assign update_o = update_dr; Tests: T1 T2 T3  318 1/1 assign shift_o = shift_dr; Tests: T1 T2 T3  319 1/1 assign capture_o = capture_dr; Tests: T1 T2 T3  320 1/1 assign dmi_clear_o = test_logic_reset; Tests: T1 T2 T3 

Cond Coverage for Instance : tb.dut.dap.i_dmi_jtag_tap
TotalCoveredPercent
Conditions3535100.00
Logical3535100.00
Non-Logical00
Event00

 LINE       206
 EXPRESSION (shift_ir | shift_dr)
             ----1---   ----2---
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT1,T2,T3
10CoveredT1,T2,T3

 LINE       228
 EXPRESSION (tms_i ? TestLogicReset : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT77,T27,T9

 LINE       232
 EXPRESSION (tms_i ? SelectDrScan : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       236
 EXPRESSION (tms_i ? SelectIrScan : CaptureDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       240
 EXPRESSION (tms_i ? Exit1Dr : ShiftDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T91,T92

 LINE       244
 EXPRESSION (tms_i ? Exit1Dr : ShiftDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       247
 EXPRESSION (tms_i ? UpdateDr : PauseDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       250
 EXPRESSION (tms_i ? Exit2Dr : PauseDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       253
 EXPRESSION (tms_i ? UpdateDr : ShiftDr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       257
 EXPRESSION (tms_i ? SelectDrScan : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       261
 EXPRESSION (tms_i ? TestLogicReset : CaptureIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       269
 EXPRESSION (tms_i ? Exit1Ir : ShiftIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT23,T90,T31

 LINE       277
 EXPRESSION (tms_i ? Exit1Ir : ShiftIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       280
 EXPRESSION (tms_i ? UpdateIr : PauseIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       284
 EXPRESSION (tms_i ? Exit2Ir : PauseIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T49,T6

 LINE       287
 EXPRESSION (tms_i ? UpdateIr : ShiftIr)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T49,T6

 LINE       295
 EXPRESSION (tms_i ? SelectDrScan : RunTestIdle)
             --1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

FSM Coverage for Instance : tb.dut.dap.i_dmi_jtag_tap
Summary for FSM :: tap_state_q
TotalCoveredPercent
States 16 16 100.00 (Not included in score)
Transitions 40 35 87.50
Sequences 0 0

State, Transition and Sequence Details for FSM :: tap_state_q
statesLine No.CoveredTests
CaptureDr 236 Covered T1,T2,T3
CaptureIr 261 Covered T1,T2,T3
Exit1Dr 240 Covered T1,T2,T3
Exit1Ir 269 Covered T1,T2,T3
Exit2Dr 250 Covered T1,T2,T3
Exit2Ir 284 Covered T3,T49,T6
PauseDr 247 Covered T1,T2,T3
PauseIr 280 Covered T3,T49,T6
RunTestIdle 228 Covered T1,T2,T3
SelectDrScan 232 Covered T1,T2,T3
SelectIrScan 236 Covered T1,T2,T3
ShiftDr 240 Covered T1,T2,T3
ShiftIr 269 Covered T1,T2,T3
TestLogicReset 303 Covered T1,T2,T3
UpdateDr 247 Covered T1,T2,T3
UpdateIr 280 Covered T1,T2,T3


transitionsLine No.CoveredTests
CaptureDr->Exit1Dr 240 Covered T90,T91,T92
CaptureDr->ShiftDr 240 Covered T1,T2,T3
CaptureDr->TestLogicReset 303 Covered T71,T16,T93
CaptureIr->Exit1Ir 269 Covered T23,T90,T31
CaptureIr->ShiftIr 269 Covered T1,T2,T3
CaptureIr->TestLogicReset 303 Not Covered
Exit1Dr->PauseDr 247 Covered T1,T2,T3
Exit1Dr->TestLogicReset 303 Covered T37,T94,T95
Exit1Dr->UpdateDr 247 Covered T1,T2,T3
Exit1Ir->PauseIr 280 Covered T3,T49,T6
Exit1Ir->TestLogicReset 303 Covered T62
Exit1Ir->UpdateIr 280 Covered T1,T2,T3
Exit2Dr->ShiftDr 253 Covered T1,T2,T3
Exit2Dr->TestLogicReset 303 Covered T95
Exit2Dr->UpdateDr 253 Covered T1,T2,T3
Exit2Ir->ShiftIr 287 Covered T49,T12,T23
Exit2Ir->TestLogicReset 303 Not Covered
Exit2Ir->UpdateIr 287 Covered T3,T49,T6
PauseDr->Exit2Dr 250 Covered T1,T2,T3
PauseDr->TestLogicReset 303 Covered T36,T34,T79
PauseIr->Exit2Ir 284 Covered T3,T49,T6
PauseIr->TestLogicReset 303 Covered T94,T96,T97
RunTestIdle->SelectDrScan 232 Covered T1,T2,T3
RunTestIdle->TestLogicReset 303 Covered T49,T6,T8
SelectDrScan->CaptureDr 236 Covered T1,T2,T3
SelectDrScan->SelectIrScan 236 Covered T1,T2,T3
SelectDrScan->TestLogicReset 303 Covered T96,T98
SelectIrScan->CaptureIr 261 Covered T1,T2,T3
SelectIrScan->TestLogicReset 303 Covered T77,T27,T9
ShiftDr->Exit1Dr 244 Covered T1,T2,T3
ShiftDr->TestLogicReset 303 Covered T62,T36,T34
ShiftIr->Exit1Ir 277 Covered T1,T2,T3
ShiftIr->TestLogicReset 303 Covered T99,T100,T101
TestLogicReset->RunTestIdle 228 Covered T1,T2,T3
UpdateDr->RunTestIdle 257 Covered T1,T2,T3
UpdateDr->SelectDrScan 257 Not Covered
UpdateDr->TestLogicReset 303 Covered T90,T79
UpdateIr->RunTestIdle 295 Covered T1,T2,T3
UpdateIr->SelectDrScan 295 Not Covered
UpdateIr->TestLogicReset 303 Not Covered



Branch Coverage for Instance : tb.dut.dap.i_dmi_jtag_tap
Line No.TotalCoveredPercent
Branches 69 69 100.00
IF 83 2 2 100.00
IF 88 2 2 100.00
IF 93 2 2 100.00
IF 97 2 2 100.00
IF 105 2 2 100.00
IF 130 5 5 100.00
IF 135 5 5 100.00
IF 140 2 2 100.00
CASE 155 6 6 100.00
IF 172 5 5 100.00
IF 201 2 2 100.00
CASE 226 32 32 100.00
IF 302 2 2 100.00


83 if (shift_ir) begin -1- 84 jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength-1:1]}; ==> 85 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


88 if (capture_ir) begin -1- 89 jtag_ir_shift_d = IrLength'(4'b0101); ==> 90 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


93 if (update_ir) begin -1- 94 jtag_ir_d = ir_reg_e'(jtag_ir_shift_q); ==> 95 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


97 if (test_logic_reset) begin -1- 98 // Bring all TAP state to the initial value. 99 jtag_ir_shift_d = '0; ==> 100 jtag_ir_d = IDCODE; 101 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


105 if (!trst_ni) begin -1- 106 jtag_ir_shift_q <= '0; ==> 107 jtag_ir_q <= IDCODE; 108 end else begin 109 jtag_ir_shift_q <= jtag_ir_shift_d; ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


130 if (capture_dr) begin -1- 131 if (idcode_select) idcode_d = IdcodeValue; -2- ==> MISSING_ELSE ==> 132 if (bypass_select) bypass_d = 1'b0; -3- ==> MISSING_ELSE ==> 133 end MISSING_ELSE ==>

Branches:
-1--2--3-StatusTests
1 1 - Covered T1,T2,T3
1 0 - Covered T1,T2,T3
1 - 1 Covered T1,T2,T3
1 - 0 Covered T1,T2,T3
0 - - Covered T1,T2,T3


135 if (shift_dr) begin -1- 136 if (idcode_select) idcode_d = {td_i, 31'(idcode_q >> 1)}; -2- ==> MISSING_ELSE ==> 137 if (bypass_select) bypass_d = td_i; -3- ==> MISSING_ELSE ==> 138 end MISSING_ELSE ==>

Branches:
-1--2--3-StatusTests
1 1 - Covered T1,T2,T3
1 0 - Covered T1,T2,T3
1 - 1 Covered T1,T2,T3
1 - 0 Covered T1,T2,T3
0 - - Covered T1,T2,T3


140 if (test_logic_reset) begin -1- 141 // Bring all TAP state to the initial value. 142 idcode_d = IdcodeValue; ==> 143 bypass_d = 1'b0; 144 end MISSING_ELSE ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


155 unique case (jtag_ir_q) -1- 156 BYPASS0: bypass_select = 1'b1; ==> 157 IDCODE: idcode_select = 1'b1; ==> 158 DTMCSR: dtmcs_select_o = 1'b1; ==> 159 DMIACCESS: dmi_select_o = 1'b1; ==> 160 BYPASS1: bypass_select = 1'b1; ==> 161 default: bypass_select = 1'b1; ==>

Branches:
-1-StatusTests
BYPASS0 Covered T77,T27,T9
IDCODE Covered T1,T2,T3
DTMCSR Covered T3,T23,T7
DMIACCESS Covered T1,T2,T3
BYPASS1 Covered T87,T88,T89
default Covered T23,T90,T31


172 if (shift_ir) begin -1- 173 tdo_mux = jtag_ir_shift_q[0]; ==> 174 // here we are shifting the DR register 175 end else begin 176 unique case (jtag_ir_q) -2- 177 IDCODE: tdo_mux = idcode_q[0]; // Reading ID code ==> 178 DTMCSR: tdo_mux = dtmcs_tdo_i; // Read from DTMCS TDO ==> 179 DMIACCESS: tdo_mux = dmi_tdo_i; // Read from DMI TDO ==> 180 default: tdo_mux = bypass_q; // BYPASS instruction ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 IDCODE Covered T1,T2,T3
0 DTMCSR Covered T3,T23,T7
0 DMIACCESS Covered T1,T2,T3
0 default Covered T23,T77,T27


201 if (!trst_ni) begin -1- 202 td_o <= 1'b0; ==> 203 tdo_oe_o <= 1'b0; 204 end else begin 205 td_o <= tdo_mux; ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


226 unique case (tap_state_q) -1- 227 TestLogicReset: begin 228 tap_state_d = (tms_i) ? TestLogicReset : RunTestIdle; -2- ==> ==> 229 test_logic_reset = 1'b1; 230 end 231 RunTestIdle: begin 232 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; -3- ==> ==> 233 end 234 // DR Path 235 SelectDrScan: begin 236 tap_state_d = (tms_i) ? SelectIrScan : CaptureDr; -4- ==> ==> 237 end 238 CaptureDr: begin 239 capture_dr = 1'b1; 240 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; -5- ==> ==> 241 end 242 ShiftDr: begin 243 shift_dr = 1'b1; 244 tap_state_d = (tms_i) ? Exit1Dr : ShiftDr; -6- ==> ==> 245 end 246 Exit1Dr: begin 247 tap_state_d = (tms_i) ? UpdateDr : PauseDr; -7- ==> ==> 248 end 249 PauseDr: begin 250 tap_state_d = (tms_i) ? Exit2Dr : PauseDr; -8- ==> ==> 251 end 252 Exit2Dr: begin 253 tap_state_d = (tms_i) ? UpdateDr : ShiftDr; -9- ==> ==> 254 end 255 UpdateDr: begin 256 update_dr = 1'b1; 257 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; -10- ==> ==> 258 end 259 // IR Path 260 SelectIrScan: begin 261 tap_state_d = (tms_i) ? TestLogicReset : CaptureIr; -11- ==> ==> 262 end 263 // In this controller state, the shift register bank in the 264 // Instruction Register parallel loads a pattern of fixed values on 265 // the rising edge of TCK. The last two significant bits must always 266 // be "01". 267 CaptureIr: begin 268 capture_ir = 1'b1; 269 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; -12- ==> ==> 270 end 271 // In this controller state, the instruction register gets connected 272 // between TDI and TDO, and the captured pattern gets shifted on 273 // each rising edge of TCK. The instruction available on the TDI 274 // pin is also shifted in to the instruction register. 275 ShiftIr: begin 276 shift_ir = 1'b1; 277 tap_state_d = (tms_i) ? Exit1Ir : ShiftIr; -13- ==> ==> 278 end 279 Exit1Ir: begin 280 tap_state_d = (tms_i) ? UpdateIr : PauseIr; -14- ==> ==> 281 end 282 PauseIr: begin 283 // pause_ir = 1'b1; // unused 284 tap_state_d = (tms_i) ? Exit2Ir : PauseIr; -15- ==> ==> 285 end 286 Exit2Ir: begin 287 tap_state_d = (tms_i) ? UpdateIr : ShiftIr; -16- ==> ==> 288 end 289 // In this controller state, the instruction in the instruction 290 // shift register is latched to the latch bank of the Instruction 291 // Register on every falling edge of TCK. This instruction becomes 292 // the current instruction once it is latched. 293 UpdateIr: begin 294 update_ir = 1'b1; 295 tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle; -17- ==> ==> 296 end 297 default: ; // can't actually happen since case is full ==> (Excluded) Exclude Annotation: VC_COV_UNR

Branches:
-1--2--3--4--5--6--7--8--9--10--11--12--13--14--15--16--17-StatusTestsExclude Annotation
TestLogicReset 1 - - - - - - - - - - - - - - - Covered T77,T27,T9
TestLogicReset 0 - - - - - - - - - - - - - - - Covered T1,T2,T3
RunTestIdle - 1 - - - - - - - - - - - - - - Covered T1,T2,T3
RunTestIdle - 0 - - - - - - - - - - - - - - Covered T1,T2,T3
SelectDrScan - - 1 - - - - - - - - - - - - - Covered T1,T2,T3
SelectDrScan - - 0 - - - - - - - - - - - - - Covered T1,T2,T3
CaptureDr - - - 1 - - - - - - - - - - - - Covered T90,T91,T92
CaptureDr - - - 0 - - - - - - - - - - - - Covered T1,T2,T3
ShiftDr - - - - 1 - - - - - - - - - - - Covered T1,T2,T3
ShiftDr - - - - 0 - - - - - - - - - - - Covered T1,T2,T3
Exit1Dr - - - - - 1 - - - - - - - - - - Covered T1,T2,T3
Exit1Dr - - - - - 0 - - - - - - - - - - Covered T1,T2,T3
PauseDr - - - - - - 1 - - - - - - - - - Covered T1,T2,T3
PauseDr - - - - - - 0 - - - - - - - - - Covered T1,T2,T3
Exit2Dr - - - - - - - 1 - - - - - - - - Covered T1,T2,T3
Exit2Dr - - - - - - - 0 - - - - - - - - Covered T1,T2,T3
UpdateDr - - - - - - - - 1 - - - - - - - Covered T1,T2,T3
UpdateDr - - - - - - - - 0 - - - - - - - Covered T1,T2,T3
SelectIrScan - - - - - - - - - 1 - - - - - - Covered T1,T2,T3
SelectIrScan - - - - - - - - - 0 - - - - - - Covered T1,T2,T3
CaptureIr - - - - - - - - - - 1 - - - - - Covered T23,T90,T31
CaptureIr - - - - - - - - - - 0 - - - - - Covered T1,T2,T3
ShiftIr - - - - - - - - - - - 1 - - - - Covered T1,T2,T3
ShiftIr - - - - - - - - - - - 0 - - - - Covered T1,T2,T3
Exit1Ir - - - - - - - - - - - - 1 - - - Covered T1,T2,T3
Exit1Ir - - - - - - - - - - - - 0 - - - Covered T1,T2,T3
PauseIr - - - - - - - - - - - - - 1 - - Covered T3,T49,T6
PauseIr - - - - - - - - - - - - - 0 - - Covered T1,T2,T3
Exit2Ir - - - - - - - - - - - - - - 1 - Covered T3,T49,T6
Exit2Ir - - - - - - - - - - - - - - 0 - Covered T1,T2,T3
UpdateIr - - - - - - - - - - - - - - - 1 Covered T1,T2,T3
UpdateIr - - - - - - - - - - - - - - - 0 Covered T1,T2,T3
default - - - - - - - - - - - - - - - - Excluded VC_COV_UNR


302 if (!trst_ni) begin -1- 303 tap_state_q <= TestLogicReset; ==> 304 idcode_q <= IdcodeValue; 305 bypass_q <= 1'b0; 306 end else begin 307 tap_state_q <= tap_state_d; ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3

0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%