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



Module Instance : tb.dut.u_spi_tpm.u_tpm_rd_buffer

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
89.74 100.00 69.23 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
89.74 100.00 69.23 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
95.79 99.29 91.20 91.67 96.77 100.00 u_spi_tpm


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_upload.u_payload_buffer

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.15 100.00 84.62 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.15 100.00 84.62 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
96.37 100.00 86.11 100.00 95.74 100.00 u_upload


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_spi_tpm.u_tpm_wr_buffer

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.15 100.00 84.62 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.15 100.00 84.62 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
95.79 99.29 91.20 91.67 96.77 100.00 u_spi_tpm


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children

Line Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=8,FifoDepth=256,SramAw=10,SramDw=32,SramBaseAddr=896,EnPack=1,FifoPtrW=8,NumEntryPerWord=4,g_multiple_entry_per_word.SubWordW=2 )
Line Coverage for Module self-instances :
SCORELINE
96.15 100.00
tb.dut.u_upload.u_payload_buffer

Line No.TotalCoveredPercent
TOTAL1818100.00
CONT_ASSIGN5211100.00
CONT_ASSIGN5611100.00
CONT_ASSIGN5711100.00
CONT_ASSIGN6211100.00
CONT_ASSIGN7311100.00
ALWAYS7666100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9411100.00
ALWAYS9755100.00

51 logic [FifoPtrW-1:0] fifoptr; 52 1/1 assign wdepth_o = fifoptr; Tests: T1 T2 T3  53 54 logic sram_ack, fifoptr_inc; 55 56 1/1 assign sram_req_o = wvalid_i & !clr_i; Tests: T1 T2 T3  57 1/1 assign wready_o = sram_gnt_i & !clr_i; Tests: T1 T2 T3  58 59 assign sram_write_o = 1'b 1; 60 61 logic unused_sram_read; 62 1/1 assign unused_sram_read = ^{sram_rvalid_i, sram_rdata_i, sram_rerror_i}; Tests: T1 T2 T3  63 64 if (EnPack == 1 && NumEntryPerWord != 1) begin : g_multiple_entry_per_word 65 // If pack, the FifoWidth shall divide SramDw 66 `ASSERT_INIT(WidthDivideSramDw_A, SramDw == (SramDw/FifoWidth)*FifoWidth) 67 68 localparam int unsigned SubWordW = $clog2(NumEntryPerWord); 69 70 // Should be multiple of 2 71 `ASSERT_INIT(NumEntryPerWordPowerOf2_A, NumEntryPerWord == 2**SubWordW) 72 73 1/1 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr[FifoPtrW-1:SubWordW]); Tests: T1 T2 T3  74 75 always_comb begin 76 1/1 sram_wdata_o = '0; Tests: T1 T2 T3  77 1/1 sram_wmask_o = '0; Tests: T1 T2 T3  78 1/1 for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin Tests: T1 T2 T3  79 1/1 if (fifoptr[0+:SubWordW] == i) begin Tests: T1 T2 T3  80 1/1 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; Tests: T1 T2 T3  81 1/1 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; Tests: T1 T2 T3  82 end MISSING_ELSE 83 end 84 end 85 86 end else begin : g_one_entry_per_word 87 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr); 88 assign sram_wdata_o = SramDw'(wdata_i); 89 assign sram_wmask_o = SramDw'({1'b0, {FifoWidth{1'b1}}}); 90 end 91 92 1/1 assign sram_ack = sram_req_o && sram_gnt_i; Tests: T1 T2 T3  93 94 1/1 assign fifoptr_inc = sram_ack; Tests: T1 T2 T3  95 96 always_ff @(posedge clk_i or negedge rst_ni) begin 97 1/1 if (!rst_ni) begin Tests: T1 T2 T3  98 1/1 fifoptr <= '0; Tests: T1 T2 T3  99 1/1 end else if (clr_i) begin Tests: T6 T7 T8  100 unreachable fifoptr <= '0; 101 1/1 end else if (fifoptr_inc) begin Tests: T6 T7 T8  102 1/1 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) Tests: T15 T43 T44  103 ? '0 : fifoptr + 1'b1; 104 end MISSING_ELSE

Line Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=8,FifoDepth=64,SramAw=10,SramDw=32,SramBaseAddr=992,EnPack=1,FifoPtrW=6,NumEntryPerWord=4,g_multiple_entry_per_word.SubWordW=2 )
Line Coverage for Module self-instances :
SCORELINE
96.15 100.00
tb.dut.u_spi_tpm.u_tpm_wr_buffer

Line No.TotalCoveredPercent
TOTAL1818100.00
CONT_ASSIGN5211100.00
CONT_ASSIGN5611100.00
CONT_ASSIGN5711100.00
CONT_ASSIGN6211100.00
CONT_ASSIGN7311100.00
ALWAYS7666100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9411100.00
ALWAYS9755100.00

51 logic [FifoPtrW-1:0] fifoptr; 52 1/1 assign wdepth_o = fifoptr; Tests: T1 T2 T3  53 54 logic sram_ack, fifoptr_inc; 55 56 1/1 assign sram_req_o = wvalid_i & !clr_i; Tests: T1 T2 T3  57 1/1 assign wready_o = sram_gnt_i & !clr_i; Tests: T1 T2 T3  58 59 assign sram_write_o = 1'b 1; 60 61 logic unused_sram_read; 62 1/1 assign unused_sram_read = ^{sram_rvalid_i, sram_rdata_i, sram_rerror_i}; Tests: T1 T2 T3  63 64 if (EnPack == 1 && NumEntryPerWord != 1) begin : g_multiple_entry_per_word 65 // If pack, the FifoWidth shall divide SramDw 66 `ASSERT_INIT(WidthDivideSramDw_A, SramDw == (SramDw/FifoWidth)*FifoWidth) 67 68 localparam int unsigned SubWordW = $clog2(NumEntryPerWord); 69 70 // Should be multiple of 2 71 `ASSERT_INIT(NumEntryPerWordPowerOf2_A, NumEntryPerWord == 2**SubWordW) 72 73 1/1 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr[FifoPtrW-1:SubWordW]); Tests: T1 T2 T3  74 75 always_comb begin 76 1/1 sram_wdata_o = '0; Tests: T1 T2 T3  77 1/1 sram_wmask_o = '0; Tests: T1 T2 T3  78 1/1 for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin Tests: T1 T2 T3  79 1/1 if (fifoptr[0+:SubWordW] == i) begin Tests: T1 T2 T3  80 1/1 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; Tests: T1 T2 T3  81 1/1 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; Tests: T1 T2 T3  82 end MISSING_ELSE 83 end 84 end 85 86 end else begin : g_one_entry_per_word 87 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr); 88 assign sram_wdata_o = SramDw'(wdata_i); 89 assign sram_wmask_o = SramDw'({1'b0, {FifoWidth{1'b1}}}); 90 end 91 92 1/1 assign sram_ack = sram_req_o && sram_gnt_i; Tests: T1 T2 T3  93 94 1/1 assign fifoptr_inc = sram_ack; Tests: T1 T2 T3  95 96 always_ff @(posedge clk_i or negedge rst_ni) begin 97 1/1 if (!rst_ni) begin Tests: T1 T2 T3  98 1/1 fifoptr <= '0; Tests: T1 T2 T3  99 1/1 end else if (clr_i) begin Tests: T4 T5 T9  100 unreachable fifoptr <= '0; 101 1/1 end else if (fifoptr_inc) begin Tests: T4 T5 T9  102 1/1 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) Tests: T5 T25 T27  103 ? '0 : fifoptr + 1'b1; 104 end MISSING_ELSE

Line Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=32,FifoDepth=16,SramAw=10,SramDw=32,SramBaseAddr=832,EnPack=1,FifoPtrW=4,NumEntryPerWord=1 )
Line Coverage for Module self-instances :
SCORELINE
89.74 100.00
tb.dut.u_spi_tpm.u_tpm_rd_buffer

Line No.TotalCoveredPercent
TOTAL1414100.00
CONT_ASSIGN5211100.00
CONT_ASSIGN5611100.00
CONT_ASSIGN5711100.00
CONT_ASSIGN6211100.00
CONT_ASSIGN8711100.00
CONT_ASSIGN8811100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9411100.00
ALWAYS9766100.00

51 logic [FifoPtrW-1:0] fifoptr; 52 1/1 assign wdepth_o = fifoptr; Tests: T1 T2 T3  53 54 logic sram_ack, fifoptr_inc; 55 56 1/1 assign sram_req_o = wvalid_i & !clr_i; Tests: T1 T2 T3  57 1/1 assign wready_o = sram_gnt_i & !clr_i; Tests: T1 T2 T3  58 59 assign sram_write_o = 1'b 1; 60 61 logic unused_sram_read; 62 1/1 assign unused_sram_read = ^{sram_rvalid_i, sram_rdata_i, sram_rerror_i}; Tests: T1 T2 T3  63 64 if (EnPack == 1 && NumEntryPerWord != 1) begin : g_multiple_entry_per_word 65 // If pack, the FifoWidth shall divide SramDw 66 `ASSERT_INIT(WidthDivideSramDw_A, SramDw == (SramDw/FifoWidth)*FifoWidth) 67 68 localparam int unsigned SubWordW = $clog2(NumEntryPerWord); 69 70 // Should be multiple of 2 71 `ASSERT_INIT(NumEntryPerWordPowerOf2_A, NumEntryPerWord == 2**SubWordW) 72 73 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr[FifoPtrW-1:SubWordW]); 74 75 always_comb begin 76 sram_wdata_o = '0; 77 sram_wmask_o = '0; 78 for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin 79 if (fifoptr[0+:SubWordW] == i) begin 80 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; 81 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; 82 end 83 end 84 end 85 86 end else begin : g_one_entry_per_word 87 1/1 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr); Tests: T1 T2 T3  88 1/1 assign sram_wdata_o = SramDw'(wdata_i); Tests: T1 T2 T3  89 assign sram_wmask_o = SramDw'({1'b0, {FifoWidth{1'b1}}}); 90 end 91 92 1/1 assign sram_ack = sram_req_o && sram_gnt_i; Tests: T1 T2 T3  93 94 1/1 assign fifoptr_inc = sram_ack; Tests: T5 T13 T25  95 96 always_ff @(posedge clk_i or negedge rst_ni) begin 97 1/1 if (!rst_ni) begin Tests: T1 T2 T3  98 1/1 fifoptr <= '0; Tests: T1 T2 T3  99 1/1 end else if (clr_i) begin Tests: T1 T2 T3  100 1/1 fifoptr <= '0; Tests: T1 T2 T3  101 1/1 end else if (fifoptr_inc) begin Tests: T5 T13 T25  102 1/1 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) Tests: T5 T13 T25  103 ? '0 : fifoptr + 1'b1; 104 end MISSING_ELSE

Cond Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=8,FifoDepth=256,SramAw=10,SramDw=32,SramBaseAddr=896,EnPack=1,FifoPtrW=8,NumEntryPerWord=4,g_multiple_entry_per_word.SubWordW=2 )
Cond Coverage for Module self-instances :
SCORECOND
96.15 84.62
tb.dut.u_upload.u_payload_buffer

TotalCoveredPercent
Conditions131184.62
Logical131184.62
Non-Logical00
Event00

 LINE       56
 EXPRESSION (wvalid_i & ((!clr_i)))
             ----1---   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT15,T43,T44

 LINE       57
 EXPRESSION (sram_gnt_i & ((!clr_i)))
             -----1----   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT15,T43,T44

 LINE       79
 EXPRESSION (fifoptr[0+:g_multiple_entry_per_word.SubWordW] == i)
            --------------------------1--------------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       92
 EXPRESSION (sram_req_o && sram_gnt_i)
             -----1----    -----2----
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT15,T43,T44

 LINE       102
 EXPRESSION ((fifoptr == 8'((FifoDepth - 1))) ? '0 : ((fifoptr + 1'b1)))
             ----------------1---------------
-1-StatusTests
0CoveredT15,T43,T44
1CoveredT15,T43,T44

 LINE       102
 SUB-EXPRESSION (fifoptr == 8'((FifoDepth - 1)))
                ----------------1---------------
-1-StatusTests
0CoveredT15,T43,T44
1CoveredT15,T43,T44

Cond Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=8,FifoDepth=64,SramAw=10,SramDw=32,SramBaseAddr=992,EnPack=1,FifoPtrW=6,NumEntryPerWord=4,g_multiple_entry_per_word.SubWordW=2 )
Cond Coverage for Module self-instances :
SCORECOND
96.15 84.62
tb.dut.u_spi_tpm.u_tpm_wr_buffer

TotalCoveredPercent
Conditions131184.62
Logical131184.62
Non-Logical00
Event00

 LINE       56
 EXPRESSION (wvalid_i & ((!clr_i)))
             ----1---   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT5,T25,T27

 LINE       57
 EXPRESSION (sram_gnt_i & ((!clr_i)))
             -----1----   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT5,T25,T27

 LINE       79
 EXPRESSION (fifoptr[0+:g_multiple_entry_per_word.SubWordW] == i)
            --------------------------1--------------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       92
 EXPRESSION (sram_req_o && sram_gnt_i)
             -----1----    -----2----
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT5,T25,T27

 LINE       102
 EXPRESSION ((fifoptr == 6'((FifoDepth - 1))) ? '0 : ((fifoptr + 1'b1)))
             ----------------1---------------
-1-StatusTests
0CoveredT5,T25,T27
1CoveredT25,T27,T30

 LINE       102
 SUB-EXPRESSION (fifoptr == 6'((FifoDepth - 1)))
                ----------------1---------------
-1-StatusTests
0CoveredT5,T25,T27
1CoveredT25,T27,T30

Cond Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=32,FifoDepth=16,SramAw=10,SramDw=32,SramBaseAddr=832,EnPack=1,FifoPtrW=4,NumEntryPerWord=1 )
Cond Coverage for Module self-instances :
SCORECOND
89.74 69.23
tb.dut.u_spi_tpm.u_tpm_rd_buffer

TotalCoveredPercent
Conditions13969.23
Logical13969.23
Non-Logical00
Event00

 LINE       56
 EXPRESSION (wvalid_i & ((!clr_i)))
             ----1---   -----2----
-1--2-StatusTests
01CoveredT5,T13,T25
10Not Covered
11CoveredT5,T13,T25

 LINE       57
 EXPRESSION (sram_gnt_i & ((!clr_i)))
             -----1----   -----2----
-1--2-StatusTests
01CoveredT5,T13,T25
10Not Covered
11CoveredT5,T13,T25

 LINE       92
 EXPRESSION (sram_req_o && sram_gnt_i)
             -----1----    -----2----
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT5,T13,T25

 LINE       102
 EXPRESSION ((fifoptr == 4'((FifoDepth - 1))) ? '0 : ((fifoptr + 1'b1)))
             ----------------1---------------
-1-StatusTests
0CoveredT5,T13,T25
1CoveredT5,T25,T27

 LINE       102
 SUB-EXPRESSION (fifoptr == 4'((FifoDepth - 1)))
                ----------------1---------------
-1-StatusTests
0CoveredT5,T13,T25
1CoveredT5,T25,T27

Branch Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=8,FifoDepth=256,SramAw=10,SramDw=32,SramBaseAddr=896,EnPack=1,FifoPtrW=8,NumEntryPerWord=4,g_multiple_entry_per_word.SubWordW=2 )
Branch Coverage for Module self-instances :
SCOREBRANCH
96.15 100.00
tb.dut.u_upload.u_payload_buffer

Line No.TotalCoveredPercent
Branches 6 6 100.00
IF 97 4 4 100.00
IF 79 2 2 100.00


97 if (!rst_ni) begin -1- 98 fifoptr <= '0; ==> 99 end else if (clr_i) begin -2- 100 fifoptr <= '0; ==> (Unreachable) 101 end else if (fifoptr_inc) begin -3- 102 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) 103 ? '0 : fifoptr + 1'b1; -4- ==> ==> 104 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T1,T2,T3
0 1 - - Unreachable
0 0 1 1 Covered T15,T43,T44
0 0 1 0 Covered T15,T43,T44
0 0 0 - Covered T6,T7,T8


79 if (fifoptr[0+:SubWordW] == i) begin -1- 80 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; ==> 81 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; 82 end MISSING_ELSE ==>

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


Branch Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=8,FifoDepth=64,SramAw=10,SramDw=32,SramBaseAddr=992,EnPack=1,FifoPtrW=6,NumEntryPerWord=4,g_multiple_entry_per_word.SubWordW=2 )
Branch Coverage for Module self-instances :
SCOREBRANCH
96.15 100.00
tb.dut.u_spi_tpm.u_tpm_wr_buffer

Line No.TotalCoveredPercent
Branches 6 6 100.00
IF 97 4 4 100.00
IF 79 2 2 100.00


97 if (!rst_ni) begin -1- 98 fifoptr <= '0; ==> 99 end else if (clr_i) begin -2- 100 fifoptr <= '0; ==> (Unreachable) 101 end else if (fifoptr_inc) begin -3- 102 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) 103 ? '0 : fifoptr + 1'b1; -4- ==> ==> 104 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T1,T2,T3
0 1 - - Unreachable
0 0 1 1 Covered T25,T27,T30
0 0 1 0 Covered T5,T25,T27
0 0 0 - Covered T4,T5,T9


79 if (fifoptr[0+:SubWordW] == i) begin -1- 80 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; ==> 81 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; 82 end MISSING_ELSE ==>

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


Branch Coverage for Module : spid_fifo2sram_adapter ( parameter FifoWidth=32,FifoDepth=16,SramAw=10,SramDw=32,SramBaseAddr=832,EnPack=1,FifoPtrW=4,NumEntryPerWord=1 )
Branch Coverage for Module self-instances :
SCOREBRANCH
89.74 100.00
tb.dut.u_spi_tpm.u_tpm_rd_buffer

Line No.TotalCoveredPercent
Branches 5 5 100.00
IF 97 5 5 100.00


97 if (!rst_ni) begin -1- 98 fifoptr <= '0; ==> 99 end else if (clr_i) begin -2- 100 fifoptr <= '0; ==> 101 end else if (fifoptr_inc) begin -3- 102 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) 103 ? '0 : fifoptr + 1'b1; -4- ==> ==> 104 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T1,T2,T3
0 1 - - Covered T1,T2,T3
0 0 1 1 Covered T5,T25,T27
0 0 1 0 Covered T5,T13,T25
0 0 0 - Covered T5,T13,T25


Assert Coverage for Module : spid_fifo2sram_adapter
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
g_multiple_entry_per_word.NumEntryPerWordPowerOf2_A 1950 1950 0 0
g_multiple_entry_per_word.WidthDivideSramDw_A 1950 1950 0 0


g_multiple_entry_per_word.NumEntryPerWordPowerOf2_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1950 1950 0 0
T1 2 2 0 0
T2 2 2 0 0
T3 2 2 0 0
T4 2 2 0 0
T5 2 2 0 0
T6 2 2 0 0
T7 2 2 0 0
T8 2 2 0 0
T9 2 2 0 0
T10 2 2 0 0

g_multiple_entry_per_word.WidthDivideSramDw_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1950 1950 0 0
T1 2 2 0 0
T2 2 2 0 0
T3 2 2 0 0
T4 2 2 0 0
T5 2 2 0 0
T6 2 2 0 0
T7 2 2 0 0
T8 2 2 0 0
T9 2 2 0 0
T10 2 2 0 0

Line Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_rd_buffer
Line No.TotalCoveredPercent
TOTAL1414100.00
CONT_ASSIGN5211100.00
CONT_ASSIGN5611100.00
CONT_ASSIGN5711100.00
CONT_ASSIGN6211100.00
CONT_ASSIGN8711100.00
CONT_ASSIGN8811100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9411100.00
ALWAYS9766100.00

51 logic [FifoPtrW-1:0] fifoptr; 52 1/1 assign wdepth_o = fifoptr; Tests: T1 T2 T3  53 54 logic sram_ack, fifoptr_inc; 55 56 1/1 assign sram_req_o = wvalid_i & !clr_i; Tests: T1 T2 T3  57 1/1 assign wready_o = sram_gnt_i & !clr_i; Tests: T1 T2 T3  58 59 assign sram_write_o = 1'b 1; 60 61 logic unused_sram_read; 62 1/1 assign unused_sram_read = ^{sram_rvalid_i, sram_rdata_i, sram_rerror_i}; Tests: T1 T2 T3  63 64 if (EnPack == 1 && NumEntryPerWord != 1) begin : g_multiple_entry_per_word 65 // If pack, the FifoWidth shall divide SramDw 66 `ASSERT_INIT(WidthDivideSramDw_A, SramDw == (SramDw/FifoWidth)*FifoWidth) 67 68 localparam int unsigned SubWordW = $clog2(NumEntryPerWord); 69 70 // Should be multiple of 2 71 `ASSERT_INIT(NumEntryPerWordPowerOf2_A, NumEntryPerWord == 2**SubWordW) 72 73 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr[FifoPtrW-1:SubWordW]); 74 75 always_comb begin 76 sram_wdata_o = '0; 77 sram_wmask_o = '0; 78 for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin 79 if (fifoptr[0+:SubWordW] == i) begin 80 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; 81 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; 82 end 83 end 84 end 85 86 end else begin : g_one_entry_per_word 87 1/1 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr); Tests: T1 T2 T3  88 1/1 assign sram_wdata_o = SramDw'(wdata_i); Tests: T1 T2 T3  89 assign sram_wmask_o = SramDw'({1'b0, {FifoWidth{1'b1}}}); 90 end 91 92 1/1 assign sram_ack = sram_req_o && sram_gnt_i; Tests: T1 T2 T3  93 94 1/1 assign fifoptr_inc = sram_ack; Tests: T5 T13 T25  95 96 always_ff @(posedge clk_i or negedge rst_ni) begin 97 1/1 if (!rst_ni) begin Tests: T1 T2 T3  98 1/1 fifoptr <= '0; Tests: T1 T2 T3  99 1/1 end else if (clr_i) begin Tests: T1 T2 T3  100 1/1 fifoptr <= '0; Tests: T1 T2 T3  101 1/1 end else if (fifoptr_inc) begin Tests: T5 T13 T25  102 1/1 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) Tests: T5 T13 T25  103 ? '0 : fifoptr + 1'b1; 104 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_rd_buffer
TotalCoveredPercent
Conditions13969.23
Logical13969.23
Non-Logical00
Event00

 LINE       56
 EXPRESSION (wvalid_i & ((!clr_i)))
             ----1---   -----2----
-1--2-StatusTests
01CoveredT5,T13,T25
10Not Covered
11CoveredT5,T13,T25

 LINE       57
 EXPRESSION (sram_gnt_i & ((!clr_i)))
             -----1----   -----2----
-1--2-StatusTests
01CoveredT5,T13,T25
10Not Covered
11CoveredT5,T13,T25

 LINE       92
 EXPRESSION (sram_req_o && sram_gnt_i)
             -----1----    -----2----
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT5,T13,T25

 LINE       102
 EXPRESSION ((fifoptr == 4'((FifoDepth - 1))) ? '0 : ((fifoptr + 1'b1)))
             ----------------1---------------
-1-StatusTests
0CoveredT5,T13,T25
1CoveredT5,T25,T27

 LINE       102
 SUB-EXPRESSION (fifoptr == 4'((FifoDepth - 1)))
                ----------------1---------------
-1-StatusTests
0CoveredT5,T13,T25
1CoveredT5,T25,T27

Branch Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_rd_buffer
Line No.TotalCoveredPercent
Branches 5 5 100.00
IF 97 5 5 100.00


97 if (!rst_ni) begin -1- 98 fifoptr <= '0; ==> 99 end else if (clr_i) begin -2- 100 fifoptr <= '0; ==> 101 end else if (fifoptr_inc) begin -3- 102 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) 103 ? '0 : fifoptr + 1'b1; -4- ==> ==> 104 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T1,T2,T3
0 1 - - Covered T1,T2,T3
0 0 1 1 Covered T5,T25,T27
0 0 1 0 Covered T5,T13,T25
0 0 0 - Covered T5,T13,T25

Line Coverage for Instance : tb.dut.u_upload.u_payload_buffer
Line No.TotalCoveredPercent
TOTAL1818100.00
CONT_ASSIGN5211100.00
CONT_ASSIGN5611100.00
CONT_ASSIGN5711100.00
CONT_ASSIGN6211100.00
CONT_ASSIGN7311100.00
ALWAYS7666100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9411100.00
ALWAYS9755100.00

51 logic [FifoPtrW-1:0] fifoptr; 52 1/1 assign wdepth_o = fifoptr; Tests: T1 T2 T3  53 54 logic sram_ack, fifoptr_inc; 55 56 1/1 assign sram_req_o = wvalid_i & !clr_i; Tests: T1 T2 T3  57 1/1 assign wready_o = sram_gnt_i & !clr_i; Tests: T1 T2 T3  58 59 assign sram_write_o = 1'b 1; 60 61 logic unused_sram_read; 62 1/1 assign unused_sram_read = ^{sram_rvalid_i, sram_rdata_i, sram_rerror_i}; Tests: T1 T2 T3  63 64 if (EnPack == 1 && NumEntryPerWord != 1) begin : g_multiple_entry_per_word 65 // If pack, the FifoWidth shall divide SramDw 66 `ASSERT_INIT(WidthDivideSramDw_A, SramDw == (SramDw/FifoWidth)*FifoWidth) 67 68 localparam int unsigned SubWordW = $clog2(NumEntryPerWord); 69 70 // Should be multiple of 2 71 `ASSERT_INIT(NumEntryPerWordPowerOf2_A, NumEntryPerWord == 2**SubWordW) 72 73 1/1 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr[FifoPtrW-1:SubWordW]); Tests: T1 T2 T3  74 75 always_comb begin 76 1/1 sram_wdata_o = '0; Tests: T1 T2 T3  77 1/1 sram_wmask_o = '0; Tests: T1 T2 T3  78 1/1 for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin Tests: T1 T2 T3  79 1/1 if (fifoptr[0+:SubWordW] == i) begin Tests: T1 T2 T3  80 1/1 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; Tests: T1 T2 T3  81 1/1 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; Tests: T1 T2 T3  82 end MISSING_ELSE 83 end 84 end 85 86 end else begin : g_one_entry_per_word 87 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr); 88 assign sram_wdata_o = SramDw'(wdata_i); 89 assign sram_wmask_o = SramDw'({1'b0, {FifoWidth{1'b1}}}); 90 end 91 92 1/1 assign sram_ack = sram_req_o && sram_gnt_i; Tests: T1 T2 T3  93 94 1/1 assign fifoptr_inc = sram_ack; Tests: T1 T2 T3  95 96 always_ff @(posedge clk_i or negedge rst_ni) begin 97 1/1 if (!rst_ni) begin Tests: T1 T2 T3  98 1/1 fifoptr <= '0; Tests: T1 T2 T3  99 1/1 end else if (clr_i) begin Tests: T6 T7 T8  100 unreachable fifoptr <= '0; 101 1/1 end else if (fifoptr_inc) begin Tests: T6 T7 T8  102 1/1 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) Tests: T15 T43 T44  103 ? '0 : fifoptr + 1'b1; 104 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_upload.u_payload_buffer
TotalCoveredPercent
Conditions131184.62
Logical131184.62
Non-Logical00
Event00

 LINE       56
 EXPRESSION (wvalid_i & ((!clr_i)))
             ----1---   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT15,T43,T44

 LINE       57
 EXPRESSION (sram_gnt_i & ((!clr_i)))
             -----1----   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT15,T43,T44

 LINE       79
 EXPRESSION (fifoptr[0+:g_multiple_entry_per_word.SubWordW] == i)
            --------------------------1--------------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       92
 EXPRESSION (sram_req_o && sram_gnt_i)
             -----1----    -----2----
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT15,T43,T44

 LINE       102
 EXPRESSION ((fifoptr == 8'((FifoDepth - 1))) ? '0 : ((fifoptr + 1'b1)))
             ----------------1---------------
-1-StatusTests
0CoveredT15,T43,T44
1CoveredT15,T43,T44

 LINE       102
 SUB-EXPRESSION (fifoptr == 8'((FifoDepth - 1)))
                ----------------1---------------
-1-StatusTests
0CoveredT15,T43,T44
1CoveredT15,T43,T44

Branch Coverage for Instance : tb.dut.u_upload.u_payload_buffer
Line No.TotalCoveredPercent
Branches 6 6 100.00
IF 97 4 4 100.00
IF 79 2 2 100.00


97 if (!rst_ni) begin -1- 98 fifoptr <= '0; ==> 99 end else if (clr_i) begin -2- 100 fifoptr <= '0; ==> (Unreachable) 101 end else if (fifoptr_inc) begin -3- 102 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) 103 ? '0 : fifoptr + 1'b1; -4- ==> ==> 104 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T1,T2,T3
0 1 - - Unreachable
0 0 1 1 Covered T15,T43,T44
0 0 1 0 Covered T15,T43,T44
0 0 0 - Covered T6,T7,T8


79 if (fifoptr[0+:SubWordW] == i) begin -1- 80 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; ==> 81 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; 82 end MISSING_ELSE ==>

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


Assert Coverage for Instance : tb.dut.u_upload.u_payload_buffer
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
g_multiple_entry_per_word.NumEntryPerWordPowerOf2_A 975 975 0 0
g_multiple_entry_per_word.WidthDivideSramDw_A 975 975 0 0


g_multiple_entry_per_word.NumEntryPerWordPowerOf2_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 975 975 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T7 1 1 0 0
T8 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0

g_multiple_entry_per_word.WidthDivideSramDw_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 975 975 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T7 1 1 0 0
T8 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0

Line Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_wr_buffer
Line No.TotalCoveredPercent
TOTAL1818100.00
CONT_ASSIGN5211100.00
CONT_ASSIGN5611100.00
CONT_ASSIGN5711100.00
CONT_ASSIGN6211100.00
CONT_ASSIGN7311100.00
ALWAYS7666100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9411100.00
ALWAYS9755100.00

51 logic [FifoPtrW-1:0] fifoptr; 52 1/1 assign wdepth_o = fifoptr; Tests: T1 T2 T3  53 54 logic sram_ack, fifoptr_inc; 55 56 1/1 assign sram_req_o = wvalid_i & !clr_i; Tests: T1 T2 T3  57 1/1 assign wready_o = sram_gnt_i & !clr_i; Tests: T1 T2 T3  58 59 assign sram_write_o = 1'b 1; 60 61 logic unused_sram_read; 62 1/1 assign unused_sram_read = ^{sram_rvalid_i, sram_rdata_i, sram_rerror_i}; Tests: T1 T2 T3  63 64 if (EnPack == 1 && NumEntryPerWord != 1) begin : g_multiple_entry_per_word 65 // If pack, the FifoWidth shall divide SramDw 66 `ASSERT_INIT(WidthDivideSramDw_A, SramDw == (SramDw/FifoWidth)*FifoWidth) 67 68 localparam int unsigned SubWordW = $clog2(NumEntryPerWord); 69 70 // Should be multiple of 2 71 `ASSERT_INIT(NumEntryPerWordPowerOf2_A, NumEntryPerWord == 2**SubWordW) 72 73 1/1 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr[FifoPtrW-1:SubWordW]); Tests: T1 T2 T3  74 75 always_comb begin 76 1/1 sram_wdata_o = '0; Tests: T1 T2 T3  77 1/1 sram_wmask_o = '0; Tests: T1 T2 T3  78 1/1 for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin Tests: T1 T2 T3  79 1/1 if (fifoptr[0+:SubWordW] == i) begin Tests: T1 T2 T3  80 1/1 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; Tests: T1 T2 T3  81 1/1 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; Tests: T1 T2 T3  82 end MISSING_ELSE 83 end 84 end 85 86 end else begin : g_one_entry_per_word 87 assign sram_addr_o = SramBaseAddr + SramAw'(fifoptr); 88 assign sram_wdata_o = SramDw'(wdata_i); 89 assign sram_wmask_o = SramDw'({1'b0, {FifoWidth{1'b1}}}); 90 end 91 92 1/1 assign sram_ack = sram_req_o && sram_gnt_i; Tests: T1 T2 T3  93 94 1/1 assign fifoptr_inc = sram_ack; Tests: T1 T2 T3  95 96 always_ff @(posedge clk_i or negedge rst_ni) begin 97 1/1 if (!rst_ni) begin Tests: T1 T2 T3  98 1/1 fifoptr <= '0; Tests: T1 T2 T3  99 1/1 end else if (clr_i) begin Tests: T4 T5 T9  100 unreachable fifoptr <= '0; 101 1/1 end else if (fifoptr_inc) begin Tests: T4 T5 T9  102 1/1 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) Tests: T5 T25 T27  103 ? '0 : fifoptr + 1'b1; 104 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_wr_buffer
TotalCoveredPercent
Conditions131184.62
Logical131184.62
Non-Logical00
Event00

 LINE       56
 EXPRESSION (wvalid_i & ((!clr_i)))
             ----1---   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT5,T25,T27

 LINE       57
 EXPRESSION (sram_gnt_i & ((!clr_i)))
             -----1----   -----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10Unreachable
11CoveredT5,T25,T27

 LINE       79
 EXPRESSION (fifoptr[0+:g_multiple_entry_per_word.SubWordW] == i)
            --------------------------1--------------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       92
 EXPRESSION (sram_req_o && sram_gnt_i)
             -----1----    -----2----
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT5,T25,T27

 LINE       102
 EXPRESSION ((fifoptr == 6'((FifoDepth - 1))) ? '0 : ((fifoptr + 1'b1)))
             ----------------1---------------
-1-StatusTests
0CoveredT5,T25,T27
1CoveredT25,T27,T30

 LINE       102
 SUB-EXPRESSION (fifoptr == 6'((FifoDepth - 1)))
                ----------------1---------------
-1-StatusTests
0CoveredT5,T25,T27
1CoveredT25,T27,T30

Branch Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_wr_buffer
Line No.TotalCoveredPercent
Branches 6 6 100.00
IF 97 4 4 100.00
IF 79 2 2 100.00


97 if (!rst_ni) begin -1- 98 fifoptr <= '0; ==> 99 end else if (clr_i) begin -2- 100 fifoptr <= '0; ==> (Unreachable) 101 end else if (fifoptr_inc) begin -3- 102 fifoptr <= (fifoptr == FifoPtrW'(FifoDepth-1)) 103 ? '0 : fifoptr + 1'b1; -4- ==> ==> 104 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T1,T2,T3
0 1 - - Unreachable
0 0 1 1 Covered T25,T27,T30
0 0 1 0 Covered T5,T25,T27
0 0 0 - Covered T4,T5,T9


79 if (fifoptr[0+:SubWordW] == i) begin -1- 80 sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i; ==> 81 sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}}; 82 end MISSING_ELSE ==>

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


Assert Coverage for Instance : tb.dut.u_spi_tpm.u_tpm_wr_buffer
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
g_multiple_entry_per_word.NumEntryPerWordPowerOf2_A 975 975 0 0
g_multiple_entry_per_word.WidthDivideSramDw_A 975 975 0 0


g_multiple_entry_per_word.NumEntryPerWordPowerOf2_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 975 975 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T7 1 1 0 0
T8 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0

g_multiple_entry_per_word.WidthDivideSramDw_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 975 975 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T7 1 1 0 0
T8 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0

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