Line Coverage for Module : 
flash_phy_rd_buf_dep
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 23 | 23 | 100.00 | 
| ALWAYS | 48 | 7 | 7 | 100.00 | 
| CONT_ASSIGN | 61 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 62 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 65 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 66 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 71 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 72 | 1 | 1 | 100.00 | 
| ALWAYS | 76 | 6 | 6 | 100.00 | 
| ALWAYS | 90 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
| ALWAYS | 116 | 0 | 0 |  | 
47                        always_comb begin
48         1/1              incr_buf_sel = '0;
           Tests:       T1 T2 T3 
49         1/1              decr_buf_sel = '0;
           Tests:       T1 T2 T3 
50         1/1              for (int unsigned i = 0; i < NumBuf; i++) begin
           Tests:       T1 T2 T3 
51         1/1                if (wr_buf_i[i]) begin
           Tests:       T1 T2 T3 
52         1/1                  incr_buf_sel = buf_mux_cnt[i];
           Tests:       T1 T2 T3 
53                            end
                        MISSING_ELSE
54         1/1                if (rd_buf_i[i]) begin
           Tests:       T1 T2 T3 
55         1/1                  decr_buf_sel = buf_mux_cnt[i];
           Tests:       T1 T2 T3 
56                            end
                        MISSING_ELSE
57                          end
58                        end // always_comb
59                      
60                        logic [BufDepCntWidth-1:0] curr_incr_cnt, curr_decr_cnt;
61         1/1            assign curr_incr_cnt = buf_dependency_cnt[incr_buf_sel];
           Tests:       T1 T2 T3 
62         1/1            assign curr_decr_cnt = buf_dependency_cnt[decr_buf_sel];
           Tests:       T1 T2 T3 
63                      
64                        logic cnt_incr, cnt_decr;
65         1/1            assign cnt_incr = en_i & fifo_wr_i & (curr_incr_cnt < RspOrderDepth);
           Tests:       T1 T2 T3 
66         1/1            assign cnt_decr = en_i & fifo_rd_i & (curr_decr_cnt > '0);
           Tests:       T1 T2 T3 
67                      
68                        //assign cnt_decr = fifo_rd_i & (rsp_fifo_vld & data_valid_o) & (curr_decr_cnt > '0);
69                      
70                        logic fin_cnt_incr, fin_cnt_decr;
71         1/1            assign fin_cnt_incr = (incr_buf_sel == decr_buf_sel) ? cnt_incr && !cnt_decr : cnt_incr;
           Tests:       T1 T2 T3 
72         1/1            assign fin_cnt_decr = (incr_buf_sel == decr_buf_sel) ? !cnt_incr && cnt_decr : cnt_decr;
           Tests:       T1 T2 T3 
73                      
74                        // This tells us which buffer currently has a dependency to an item in the rsp_order_fifo
75                        always_ff @(posedge clk_i or negedge rst_ni) begin
76         1/1              if (!rst_ni) begin
           Tests:       T1 T2 T3 
77         1/1                buf_dependency_cnt <= '0;
           Tests:       T1 T2 T3 
78                          end else begin
79         1/1                 if (fin_cnt_incr) begin
           Tests:       T1 T2 T3 
80         1/1                    buf_dependency_cnt[incr_buf_sel] <= curr_incr_cnt + 1'b1;
           Tests:       T1 T2 T3 
81                             end
                        MISSING_ELSE
82         1/1                 if (fin_cnt_decr) begin
           Tests:       T1 T2 T3 
83         1/1                    buf_dependency_cnt[decr_buf_sel] <= curr_decr_cnt - 1'b1;
           Tests:       T1 T2 T3 
84                             end
                        MISSING_ELSE
85                          end
86                        end
87                      
88                        // per buffer dependency determination
89                        always_comb begin
90         1/1              dependency_o = '0;
           Tests:       T1 T2 T3 
91         1/1              for (int i = 0; i < NumBuf; i++) begin
           Tests:       T1 T2 T3 
92         1/1                dependency_o[i] = |buf_dependency_cnt[i];
           Tests:       T1 T2 T3 
93                          end
94                        end
95                      
96                        // all buffer entries currently have a dependency
97         1/1            assign all_dependency_o = &dependency_o;
           Tests:       T1 T2 T3 
98                      
99                      
100                       // If there are more buffers than there are number of response fifo entries, we an never have
101                       // a fully dependent condition
102                       `ASSERT(BufferDepRsp_A, NumBuf > RspOrderDepth |-> ~all_dependency_o)
103                     
104                       // We should never attempt to increment when at max value
105                       `ASSERT(BufferIncrOverFlow_A, en_i & fifo_wr_i |-> curr_incr_cnt < RspOrderDepth)
106                     
107                       // We should never attempt to decrement when at min value
108                       `ASSERT(BufferDecrUnderRun_A, en_i & fifo_rd_i |-> (curr_decr_cnt > '0))
109                     
110                       // The total number of dependent buffers cannot never exceed the size of response queue
111                       `ifdef INC_ASSERT
112                       //VCS coverage off
113                       // pragma coverage off
114                       logic [31:0] assert_cnt;
115                       always_comb begin
116        unreachable      assert_cnt = '0;
117        unreachable      for (int unsigned i = 0; i < NumBuf; i++) begin
118        unreachable        assert_cnt = assert_cnt + dependency_o[i];
Cond Coverage for Module : 
flash_phy_rd_buf_dep
 | Total | Covered | Percent | 
| Conditions | 22 | 19 | 86.36 | 
| Logical | 22 | 19 | 86.36 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       65
 EXPRESSION (en_i & fifo_wr_i & (curr_incr_cnt < flash_phy_pkg::RspOrderDepth))
             --1-   ----2----   -----------------------3----------------------
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       66
 EXPRESSION (en_i & fifo_rd_i & (curr_decr_cnt > '0))
             --1-   ----2----   ----------3---------
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       71
 EXPRESSION ((incr_buf_sel == decr_buf_sel) ? (cnt_incr && ((!cnt_decr))) : cnt_incr)
             ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       71
 SUB-EXPRESSION (incr_buf_sel == decr_buf_sel)
                ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       71
 SUB-EXPRESSION (cnt_incr && ((!cnt_decr)))
                 ----1---    ------2------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T3,T11 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       72
 EXPRESSION ((incr_buf_sel == decr_buf_sel) ? (((!cnt_incr)) && cnt_decr) : cnt_decr)
             ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       72
 SUB-EXPRESSION (incr_buf_sel == decr_buf_sel)
                ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       72
 SUB-EXPRESSION (((!cnt_incr)) && cnt_decr)
                 ------1------    ----2---
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T3,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Module : 
flash_phy_rd_buf_dep
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
13 | 
13 | 
100.00 | 
| TERNARY | 
71 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
72 | 
2 | 
2 | 
100.00 | 
| IF | 
51 | 
2 | 
2 | 
100.00 | 
| IF | 
54 | 
2 | 
2 | 
100.00 | 
| IF | 
76 | 
5 | 
5 | 
100.00 | 
71           assign fin_cnt_incr = (incr_buf_sel == decr_buf_sel) ? cnt_incr && !cnt_decr : cnt_incr;
                                                                  -1-  
                                                                  ==>  
                                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
72           assign fin_cnt_decr = (incr_buf_sel == decr_buf_sel) ? !cnt_incr && cnt_decr : cnt_decr;
                                                                  -1-  
                                                                  ==>  
                                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
51               if (wr_buf_i[i]) begin
                 -1-  
52                 incr_buf_sel = buf_mux_cnt[i];
                   ==>
53               end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
54               if (rd_buf_i[i]) begin
                 -1-  
55                 decr_buf_sel = buf_mux_cnt[i];
                   ==>
56               end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
76             if (!rst_ni) begin
               -1-  
77               buf_dependency_cnt <= '0;
                 ==>
78             end else begin
79                if (fin_cnt_incr) begin
                  -2-  
80                   buf_dependency_cnt[incr_buf_sel] <= curr_incr_cnt + 1'b1;
                     ==>
81                end
                  MISSING_ELSE
                  ==>
82                if (fin_cnt_decr) begin
                  -3-  
83                   buf_dependency_cnt[decr_buf_sel] <= curr_decr_cnt - 1'b1;
                     ==>
84                end
                  MISSING_ELSE
                  ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
- | 
1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
- | 
0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Module : 
flash_phy_rd_buf_dep
Assertion Details
BufferDecrUnderRun_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
788501718 | 
6538016 | 
0 | 
0 | 
| T1 | 
1194 | 
10 | 
0 | 
0 | 
| T2 | 
2508 | 
20 | 
0 | 
0 | 
| T3 | 
29156 | 
1200 | 
0 | 
0 | 
| T4 | 
6986 | 
0 | 
0 | 
0 | 
| T10 | 
667446 | 
3920 | 
0 | 
0 | 
| T11 | 
12790 | 
318 | 
0 | 
0 | 
| T12 | 
0 | 
11317 | 
0 | 
0 | 
| T16 | 
144936 | 
192 | 
0 | 
0 | 
| T17 | 
3024 | 
46 | 
0 | 
0 | 
| T18 | 
174018 | 
2388 | 
0 | 
0 | 
| T19 | 
129292 | 
42 | 
0 | 
0 | 
| T26 | 
0 | 
108 | 
0 | 
0 | 
| T28 | 
0 | 
68 | 
0 | 
0 | 
| T45 | 
0 | 
396 | 
0 | 
0 | 
| T58 | 
2208 | 
146 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
146 | 
0 | 
0 | 
BufferDepRsp_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
788501718 | 
786758146 | 
0 | 
0 | 
| T1 | 
2388 | 
2210 | 
0 | 
0 | 
| T2 | 
5016 | 
4904 | 
0 | 
0 | 
| T3 | 
29156 | 
29016 | 
0 | 
0 | 
| T4 | 
6986 | 
5526 | 
0 | 
0 | 
| T10 | 
667446 | 
642918 | 
0 | 
0 | 
| T11 | 
12790 | 
12680 | 
0 | 
0 | 
| T16 | 
144936 | 
144762 | 
0 | 
0 | 
| T17 | 
3024 | 
2908 | 
0 | 
0 | 
| T18 | 
174018 | 
173896 | 
0 | 
0 | 
| T19 | 
129292 | 
128962 | 
0 | 
0 | 
BufferIncrOverFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
788501718 | 
6538022 | 
0 | 
0 | 
| T1 | 
1194 | 
10 | 
0 | 
0 | 
| T2 | 
2508 | 
20 | 
0 | 
0 | 
| T3 | 
29156 | 
1200 | 
0 | 
0 | 
| T4 | 
6986 | 
0 | 
0 | 
0 | 
| T10 | 
667446 | 
3920 | 
0 | 
0 | 
| T11 | 
12790 | 
318 | 
0 | 
0 | 
| T12 | 
0 | 
11317 | 
0 | 
0 | 
| T16 | 
144936 | 
192 | 
0 | 
0 | 
| T17 | 
3024 | 
46 | 
0 | 
0 | 
| T18 | 
174018 | 
2388 | 
0 | 
0 | 
| T19 | 
129292 | 
42 | 
0 | 
0 | 
| T26 | 
0 | 
108 | 
0 | 
0 | 
| T28 | 
0 | 
68 | 
0 | 
0 | 
| T45 | 
0 | 
396 | 
0 | 
0 | 
| T58 | 
2208 | 
146 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
146 | 
0 | 
0 | 
DepBufferRspOrder_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
788501720 | 
16527676 | 
0 | 
0 | 
| T1 | 
1194 | 
42 | 
0 | 
0 | 
| T2 | 
2508 | 
52 | 
0 | 
0 | 
| T3 | 
29156 | 
1232 | 
0 | 
0 | 
| T4 | 
6986 | 
140 | 
0 | 
0 | 
| T10 | 
667446 | 
9136 | 
0 | 
0 | 
| T11 | 
12790 | 
350 | 
0 | 
0 | 
| T12 | 
0 | 
11317 | 
0 | 
0 | 
| T16 | 
144936 | 
224 | 
0 | 
0 | 
| T17 | 
3024 | 
78 | 
0 | 
0 | 
| T18 | 
174018 | 
2420 | 
0 | 
0 | 
| T19 | 
129292 | 
74 | 
0 | 
0 | 
| T26 | 
0 | 
108 | 
0 | 
0 | 
| T28 | 
0 | 
68 | 
0 | 
0 | 
| T45 | 
0 | 
396 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
146 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_rd_buf_dep
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 23 | 23 | 100.00 | 
| ALWAYS | 48 | 7 | 7 | 100.00 | 
| CONT_ASSIGN | 61 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 62 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 65 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 66 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 71 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 72 | 1 | 1 | 100.00 | 
| ALWAYS | 76 | 6 | 6 | 100.00 | 
| ALWAYS | 90 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
| ALWAYS | 116 | 0 | 0 |  | 
47                        always_comb begin
48         1/1              incr_buf_sel = '0;
           Tests:       T1 T2 T3 
49         1/1              decr_buf_sel = '0;
           Tests:       T1 T2 T3 
50         1/1              for (int unsigned i = 0; i < NumBuf; i++) begin
           Tests:       T1 T2 T3 
51         1/1                if (wr_buf_i[i]) begin
           Tests:       T1 T2 T3 
52         1/1                  incr_buf_sel = buf_mux_cnt[i];
           Tests:       T1 T2 T3 
53                            end
                        MISSING_ELSE
54         1/1                if (rd_buf_i[i]) begin
           Tests:       T1 T2 T3 
55         1/1                  decr_buf_sel = buf_mux_cnt[i];
           Tests:       T1 T2 T3 
56                            end
                        MISSING_ELSE
57                          end
58                        end // always_comb
59                      
60                        logic [BufDepCntWidth-1:0] curr_incr_cnt, curr_decr_cnt;
61         1/1            assign curr_incr_cnt = buf_dependency_cnt[incr_buf_sel];
           Tests:       T1 T2 T3 
62         1/1            assign curr_decr_cnt = buf_dependency_cnt[decr_buf_sel];
           Tests:       T1 T2 T3 
63                      
64                        logic cnt_incr, cnt_decr;
65         1/1            assign cnt_incr = en_i & fifo_wr_i & (curr_incr_cnt < RspOrderDepth);
           Tests:       T1 T2 T3 
66         1/1            assign cnt_decr = en_i & fifo_rd_i & (curr_decr_cnt > '0);
           Tests:       T1 T2 T3 
67                      
68                        //assign cnt_decr = fifo_rd_i & (rsp_fifo_vld & data_valid_o) & (curr_decr_cnt > '0);
69                      
70                        logic fin_cnt_incr, fin_cnt_decr;
71         1/1            assign fin_cnt_incr = (incr_buf_sel == decr_buf_sel) ? cnt_incr && !cnt_decr : cnt_incr;
           Tests:       T1 T2 T3 
72         1/1            assign fin_cnt_decr = (incr_buf_sel == decr_buf_sel) ? !cnt_incr && cnt_decr : cnt_decr;
           Tests:       T1 T2 T3 
73                      
74                        // This tells us which buffer currently has a dependency to an item in the rsp_order_fifo
75                        always_ff @(posedge clk_i or negedge rst_ni) begin
76         1/1              if (!rst_ni) begin
           Tests:       T1 T2 T3 
77         1/1                buf_dependency_cnt <= '0;
           Tests:       T1 T2 T3 
78                          end else begin
79         1/1                 if (fin_cnt_incr) begin
           Tests:       T1 T2 T3 
80         1/1                    buf_dependency_cnt[incr_buf_sel] <= curr_incr_cnt + 1'b1;
           Tests:       T1 T2 T3 
81                             end
                        MISSING_ELSE
82         1/1                 if (fin_cnt_decr) begin
           Tests:       T1 T2 T3 
83         1/1                    buf_dependency_cnt[decr_buf_sel] <= curr_decr_cnt - 1'b1;
           Tests:       T1 T2 T3 
84                             end
                        MISSING_ELSE
85                          end
86                        end
87                      
88                        // per buffer dependency determination
89                        always_comb begin
90         1/1              dependency_o = '0;
           Tests:       T1 T2 T3 
91         1/1              for (int i = 0; i < NumBuf; i++) begin
           Tests:       T1 T2 T3 
92         1/1                dependency_o[i] = |buf_dependency_cnt[i];
           Tests:       T1 T2 T3 
93                          end
94                        end
95                      
96                        // all buffer entries currently have a dependency
97         1/1            assign all_dependency_o = &dependency_o;
           Tests:       T1 T2 T3 
98                      
99                      
100                       // If there are more buffers than there are number of response fifo entries, we an never have
101                       // a fully dependent condition
102                       `ASSERT(BufferDepRsp_A, NumBuf > RspOrderDepth |-> ~all_dependency_o)
103                     
104                       // We should never attempt to increment when at max value
105                       `ASSERT(BufferIncrOverFlow_A, en_i & fifo_wr_i |-> curr_incr_cnt < RspOrderDepth)
106                     
107                       // We should never attempt to decrement when at min value
108                       `ASSERT(BufferDecrUnderRun_A, en_i & fifo_rd_i |-> (curr_decr_cnt > '0))
109                     
110                       // The total number of dependent buffers cannot never exceed the size of response queue
111                       `ifdef INC_ASSERT
112                       //VCS coverage off
113                       // pragma coverage off
114                       logic [31:0] assert_cnt;
115                       always_comb begin
116        unreachable      assert_cnt = '0;
117        unreachable      for (int unsigned i = 0; i < NumBuf; i++) begin
118        unreachable        assert_cnt = assert_cnt + dependency_o[i];
Cond Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_rd_buf_dep
 | Total | Covered | Percent | 
| Conditions | 22 | 19 | 86.36 | 
| Logical | 22 | 19 | 86.36 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       65
 EXPRESSION (en_i & fifo_wr_i & (curr_incr_cnt < flash_phy_pkg::RspOrderDepth))
             --1-   ----2----   -----------------------3----------------------
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       66
 EXPRESSION (en_i & fifo_rd_i & (curr_decr_cnt > '0))
             --1-   ----2----   ----------3---------
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       71
 EXPRESSION ((incr_buf_sel == decr_buf_sel) ? (cnt_incr && ((!cnt_decr))) : cnt_incr)
             ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       71
 SUB-EXPRESSION (incr_buf_sel == decr_buf_sel)
                ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       71
 SUB-EXPRESSION (cnt_incr && ((!cnt_decr)))
                 ----1---    ------2------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T3,T11 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       72
 EXPRESSION ((incr_buf_sel == decr_buf_sel) ? (((!cnt_incr)) && cnt_decr) : cnt_decr)
             ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       72
 SUB-EXPRESSION (incr_buf_sel == decr_buf_sel)
                ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       72
 SUB-EXPRESSION (((!cnt_incr)) && cnt_decr)
                 ------1------    ----2---
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T3,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_rd_buf_dep
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
13 | 
13 | 
100.00 | 
| TERNARY | 
71 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
72 | 
2 | 
2 | 
100.00 | 
| IF | 
51 | 
2 | 
2 | 
100.00 | 
| IF | 
54 | 
2 | 
2 | 
100.00 | 
| IF | 
76 | 
5 | 
5 | 
100.00 | 
71           assign fin_cnt_incr = (incr_buf_sel == decr_buf_sel) ? cnt_incr && !cnt_decr : cnt_incr;
                                                                  -1-  
                                                                  ==>  
                                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
72           assign fin_cnt_decr = (incr_buf_sel == decr_buf_sel) ? !cnt_incr && cnt_decr : cnt_decr;
                                                                  -1-  
                                                                  ==>  
                                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
51               if (wr_buf_i[i]) begin
                 -1-  
52                 incr_buf_sel = buf_mux_cnt[i];
                   ==>
53               end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
54               if (rd_buf_i[i]) begin
                 -1-  
55                 decr_buf_sel = buf_mux_cnt[i];
                   ==>
56               end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
76             if (!rst_ni) begin
               -1-  
77               buf_dependency_cnt <= '0;
                 ==>
78             end else begin
79                if (fin_cnt_incr) begin
                  -2-  
80                   buf_dependency_cnt[incr_buf_sel] <= curr_incr_cnt + 1'b1;
                     ==>
81                end
                  MISSING_ELSE
                  ==>
82                if (fin_cnt_decr) begin
                  -3-  
83                   buf_dependency_cnt[decr_buf_sel] <= curr_decr_cnt - 1'b1;
                     ==>
84                end
                  MISSING_ELSE
                  ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
- | 
1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
- | 
0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_rd_buf_dep
Assertion Details
BufferDecrUnderRun_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
3595343 | 
0 | 
0 | 
| T1 | 
1194 | 
10 | 
0 | 
0 | 
| T2 | 
2508 | 
20 | 
0 | 
0 | 
| T3 | 
14578 | 
591 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
3920 | 
0 | 
0 | 
| T11 | 
6395 | 
213 | 
0 | 
0 | 
| T16 | 
72468 | 
192 | 
0 | 
0 | 
| T17 | 
1512 | 
16 | 
0 | 
0 | 
| T18 | 
87009 | 
1228 | 
0 | 
0 | 
| T19 | 
64646 | 
18 | 
0 | 
0 | 
| T58 | 
0 | 
146 | 
0 | 
0 | 
BufferDepRsp_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
BufferIncrOverFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
3595346 | 
0 | 
0 | 
| T1 | 
1194 | 
10 | 
0 | 
0 | 
| T2 | 
2508 | 
20 | 
0 | 
0 | 
| T3 | 
14578 | 
591 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
3920 | 
0 | 
0 | 
| T11 | 
6395 | 
213 | 
0 | 
0 | 
| T16 | 
72468 | 
192 | 
0 | 
0 | 
| T17 | 
1512 | 
16 | 
0 | 
0 | 
| T18 | 
87009 | 
1228 | 
0 | 
0 | 
| T19 | 
64646 | 
18 | 
0 | 
0 | 
| T58 | 
0 | 
146 | 
0 | 
0 | 
DepBufferRspOrder_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250860 | 
8969024 | 
0 | 
0 | 
| T1 | 
1194 | 
42 | 
0 | 
0 | 
| T2 | 
2508 | 
52 | 
0 | 
0 | 
| T3 | 
14578 | 
623 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
9136 | 
0 | 
0 | 
| T11 | 
6395 | 
245 | 
0 | 
0 | 
| T16 | 
72468 | 
224 | 
0 | 
0 | 
| T17 | 
1512 | 
48 | 
0 | 
0 | 
| T18 | 
87009 | 
1260 | 
0 | 
0 | 
| T19 | 
64646 | 
50 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_rd_buf_dep
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 23 | 23 | 100.00 | 
| ALWAYS | 48 | 7 | 7 | 100.00 | 
| CONT_ASSIGN | 61 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 62 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 65 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 66 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 71 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 72 | 1 | 1 | 100.00 | 
| ALWAYS | 76 | 6 | 6 | 100.00 | 
| ALWAYS | 90 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
| ALWAYS | 116 | 0 | 0 |  | 
47                        always_comb begin
48         1/1              incr_buf_sel = '0;
           Tests:       T1 T2 T3 
49         1/1              decr_buf_sel = '0;
           Tests:       T1 T2 T3 
50         1/1              for (int unsigned i = 0; i < NumBuf; i++) begin
           Tests:       T1 T2 T3 
51         1/1                if (wr_buf_i[i]) begin
           Tests:       T1 T2 T3 
52         1/1                  incr_buf_sel = buf_mux_cnt[i];
           Tests:       T3 T11 T17 
53                            end
                        MISSING_ELSE
54         1/1                if (rd_buf_i[i]) begin
           Tests:       T1 T2 T3 
55         1/1                  decr_buf_sel = buf_mux_cnt[i];
           Tests:       T3 T11 T17 
56                            end
                        MISSING_ELSE
57                          end
58                        end // always_comb
59                      
60                        logic [BufDepCntWidth-1:0] curr_incr_cnt, curr_decr_cnt;
61         1/1            assign curr_incr_cnt = buf_dependency_cnt[incr_buf_sel];
           Tests:       T1 T2 T3 
62         1/1            assign curr_decr_cnt = buf_dependency_cnt[decr_buf_sel];
           Tests:       T1 T2 T3 
63                      
64                        logic cnt_incr, cnt_decr;
65         1/1            assign cnt_incr = en_i & fifo_wr_i & (curr_incr_cnt < RspOrderDepth);
           Tests:       T1 T2 T3 
66         1/1            assign cnt_decr = en_i & fifo_rd_i & (curr_decr_cnt > '0);
           Tests:       T1 T2 T3 
67                      
68                        //assign cnt_decr = fifo_rd_i & (rsp_fifo_vld & data_valid_o) & (curr_decr_cnt > '0);
69                      
70                        logic fin_cnt_incr, fin_cnt_decr;
71         1/1            assign fin_cnt_incr = (incr_buf_sel == decr_buf_sel) ? cnt_incr && !cnt_decr : cnt_incr;
           Tests:       T1 T2 T3 
72         1/1            assign fin_cnt_decr = (incr_buf_sel == decr_buf_sel) ? !cnt_incr && cnt_decr : cnt_decr;
           Tests:       T1 T2 T3 
73                      
74                        // This tells us which buffer currently has a dependency to an item in the rsp_order_fifo
75                        always_ff @(posedge clk_i or negedge rst_ni) begin
76         1/1              if (!rst_ni) begin
           Tests:       T1 T2 T3 
77         1/1                buf_dependency_cnt <= '0;
           Tests:       T1 T2 T3 
78                          end else begin
79         1/1                 if (fin_cnt_incr) begin
           Tests:       T1 T2 T3 
80         1/1                    buf_dependency_cnt[incr_buf_sel] <= curr_incr_cnt + 1'b1;
           Tests:       T3 T11 T17 
81                             end
                        MISSING_ELSE
82         1/1                 if (fin_cnt_decr) begin
           Tests:       T1 T2 T3 
83         1/1                    buf_dependency_cnt[decr_buf_sel] <= curr_decr_cnt - 1'b1;
           Tests:       T3 T11 T17 
84                             end
                        MISSING_ELSE
85                          end
86                        end
87                      
88                        // per buffer dependency determination
89                        always_comb begin
90         1/1              dependency_o = '0;
           Tests:       T1 T2 T3 
91         1/1              for (int i = 0; i < NumBuf; i++) begin
           Tests:       T1 T2 T3 
92         1/1                dependency_o[i] = |buf_dependency_cnt[i];
           Tests:       T1 T2 T3 
93                          end
94                        end
95                      
96                        // all buffer entries currently have a dependency
97         1/1            assign all_dependency_o = &dependency_o;
           Tests:       T1 T2 T3 
98                      
99                      
100                       // If there are more buffers than there are number of response fifo entries, we an never have
101                       // a fully dependent condition
102                       `ASSERT(BufferDepRsp_A, NumBuf > RspOrderDepth |-> ~all_dependency_o)
103                     
104                       // We should never attempt to increment when at max value
105                       `ASSERT(BufferIncrOverFlow_A, en_i & fifo_wr_i |-> curr_incr_cnt < RspOrderDepth)
106                     
107                       // We should never attempt to decrement when at min value
108                       `ASSERT(BufferDecrUnderRun_A, en_i & fifo_rd_i |-> (curr_decr_cnt > '0))
109                     
110                       // The total number of dependent buffers cannot never exceed the size of response queue
111                       `ifdef INC_ASSERT
112                       //VCS coverage off
113                       // pragma coverage off
114                       logic [31:0] assert_cnt;
115                       always_comb begin
116        unreachable      assert_cnt = '0;
117        unreachable      for (int unsigned i = 0; i < NumBuf; i++) begin
118        unreachable        assert_cnt = assert_cnt + dependency_o[i];
Cond Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_rd_buf_dep
 | Total | Covered | Percent | 
| Conditions | 22 | 19 | 86.36 | 
| Logical | 22 | 19 | 86.36 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       65
 EXPRESSION (en_i & fifo_wr_i & (curr_incr_cnt < flash_phy_pkg::RspOrderDepth))
             --1-   ----2----   -----------------------3----------------------
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T6,T29,T30 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T3,T11,T17 | 
 LINE       66
 EXPRESSION (en_i & fifo_rd_i & (curr_decr_cnt > '0))
             --1-   ----2----   ----------3---------
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T3,T11,T17 | 
 LINE       71
 EXPRESSION ((incr_buf_sel == decr_buf_sel) ? (cnt_incr && ((!cnt_decr))) : cnt_incr)
             ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       71
 SUB-EXPRESSION (incr_buf_sel == decr_buf_sel)
                ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       71
 SUB-EXPRESSION (cnt_incr && ((!cnt_decr)))
                 ----1---    ------2------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T11,T12 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       72
 EXPRESSION ((incr_buf_sel == decr_buf_sel) ? (((!cnt_incr)) && cnt_decr) : cnt_decr)
             ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       72
 SUB-EXPRESSION (incr_buf_sel == decr_buf_sel)
                ---------------1--------------
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       72
 SUB-EXPRESSION (((!cnt_incr)) && cnt_decr)
                 ------1------    ----2---
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T12 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T11,T17 | 
Branch Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_rd_buf_dep
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
13 | 
13 | 
100.00 | 
| TERNARY | 
71 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
72 | 
2 | 
2 | 
100.00 | 
| IF | 
51 | 
2 | 
2 | 
100.00 | 
| IF | 
54 | 
2 | 
2 | 
100.00 | 
| IF | 
76 | 
5 | 
5 | 
100.00 | 
71           assign fin_cnt_incr = (incr_buf_sel == decr_buf_sel) ? cnt_incr && !cnt_decr : cnt_incr;
                                                                  -1-  
                                                                  ==>  
                                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
72           assign fin_cnt_decr = (incr_buf_sel == decr_buf_sel) ? !cnt_incr && cnt_decr : cnt_decr;
                                                                  -1-  
                                                                  ==>  
                                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
51               if (wr_buf_i[i]) begin
                 -1-  
52                 incr_buf_sel = buf_mux_cnt[i];
                   ==>
53               end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
Covered | 
T1,T2,T3 | 
54               if (rd_buf_i[i]) begin
                 -1-  
55                 decr_buf_sel = buf_mux_cnt[i];
                   ==>
56               end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
Covered | 
T1,T2,T3 | 
76             if (!rst_ni) begin
               -1-  
77               buf_dependency_cnt <= '0;
                 ==>
78             end else begin
79                if (fin_cnt_incr) begin
                  -2-  
80                   buf_dependency_cnt[incr_buf_sel] <= curr_incr_cnt + 1'b1;
                     ==>
81                end
                  MISSING_ELSE
                  ==>
82                if (fin_cnt_decr) begin
                  -3-  
83                   buf_dependency_cnt[decr_buf_sel] <= curr_decr_cnt - 1'b1;
                     ==>
84                end
                  MISSING_ELSE
                  ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T3,T11,T17 | 
| 0 | 
0 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
- | 
1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
- | 
0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_rd_buf_dep
Assertion Details
BufferDecrUnderRun_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2942673 | 
0 | 
0 | 
| T3 | 
14578 | 
609 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
105 | 
0 | 
0 | 
| T12 | 
0 | 
11317 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
30 | 
0 | 
0 | 
| T18 | 
87009 | 
1160 | 
0 | 
0 | 
| T19 | 
64646 | 
24 | 
0 | 
0 | 
| T26 | 
0 | 
108 | 
0 | 
0 | 
| T28 | 
0 | 
68 | 
0 | 
0 | 
| T45 | 
0 | 
396 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
146 | 
0 | 
0 | 
BufferDepRsp_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
BufferIncrOverFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2942676 | 
0 | 
0 | 
| T3 | 
14578 | 
609 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
105 | 
0 | 
0 | 
| T12 | 
0 | 
11317 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
30 | 
0 | 
0 | 
| T18 | 
87009 | 
1160 | 
0 | 
0 | 
| T19 | 
64646 | 
24 | 
0 | 
0 | 
| T26 | 
0 | 
108 | 
0 | 
0 | 
| T28 | 
0 | 
68 | 
0 | 
0 | 
| T45 | 
0 | 
396 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
146 | 
0 | 
0 | 
DepBufferRspOrder_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250860 | 
7558652 | 
0 | 
0 | 
| T3 | 
14578 | 
609 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
105 | 
0 | 
0 | 
| T12 | 
0 | 
11317 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
30 | 
0 | 
0 | 
| T18 | 
87009 | 
1160 | 
0 | 
0 | 
| T19 | 
64646 | 
24 | 
0 | 
0 | 
| T26 | 
0 | 
108 | 
0 | 
0 | 
| T28 | 
0 | 
68 | 
0 | 
0 | 
| T45 | 
0 | 
396 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
146 | 
0 | 
0 |