Line Coverage for Module : 
spid_jedec
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 47 | 47 | 100.00 | 
| CONT_ASSIGN | 65 | 1 | 1 | 100.00 | 
| ALWAYS | 73 | 4 | 4 | 100.00 | 
| CONT_ASSIGN | 79 | 1 | 1 | 100.00 | 
| ALWAYS | 83 | 4 | 4 | 100.00 | 
| ALWAYS | 91 | 5 | 5 | 100.00 | 
| ALWAYS | 101 | 8 | 8 | 100.00 | 
| ALWAYS | 121 | 4 | 4 | 100.00 | 
| CONT_ASSIGN | 125 | 1 | 1 | 100.00 | 
| ALWAYS | 132 | 3 | 3 | 100.00 | 
| ALWAYS | 138 | 16 | 16 | 100.00 | 
64                        logic unused_cmd_info;
65         1/1            assign unused_cmd_info = ^{cmd_info_i , cmd_info_idx_i};
           Tests:       T1 T2 T3 
66                      
67                        //////////////
68                        // Datapath //
69                        //////////////
70                      
71                        // Jedec latch
72                        always_ff @(posedge clk_i or negedge rst_ni) begin
73         2/2              if (!rst_ni)                         jedec <= '{default: '0};
           Tests:       T1 T2 T3  | T1 T2 T3 
74         2/2              else if (cmd_sync_pulse_i) jedec <= sys_jedec_i;
           Tests:       T12 T13 T15  | T12 T13 T15 
                        MISSING_ELSE
75                        end
76                      
77                        // If num_cc is non-zero, the logic shall return CC first
78                        logic cc_needed;
79         1/1            assign cc_needed = |jedec.num_cc;
           Tests:       T1 T2 T3 
80                      
81                        logic [7:0] cc_count;
82                        always_ff @(posedge clk_i or negedge rst_ni) begin
83         2/2              if (!rst_ni) cc_count <= '0;
           Tests:       T1 T2 T3  | T1 T2 T3 
84         1/1              else if (st_q == StCC && outclk_p2s_sent_i) begin
           Tests:       T12 T13 T15 
85         1/1                cc_count <= cc_count + 1'b 1;
           Tests:       T52 T35 T51 
86                          end
                        MISSING_ELSE
87                        end
88                      
89                        // Output to Parallel-to-Serial
90                        always_ff @(posedge clk_out_i or negedge rst_out_ni) begin
91         1/1              if (!rst_out_ni) begin
           Tests:       T1 T2 T3 
92         1/1                outclk_p2s_valid_o <= 1'b 0;
           Tests:       T1 T2 T3 
93         1/1                outclk_p2s_byte_o  <= 8'h 0;
           Tests:       T1 T2 T3 
94                          end else begin
95         1/1                outclk_p2s_valid_o <= p2s_valid;
           Tests:       T12 T13 T15 
96         1/1                outclk_p2s_byte_o  <= p2s_byte;
           Tests:       T12 T13 T15 
97                          end
98                        end
99                      
100                       always_comb begin : p2s_byte_logic
101        1/1              p2s_byte = 8'h 0;
           Tests:       T1 T2 T3 
102                     
103        1/1              if (st_q == StIdle) begin
           Tests:       T1 T2 T3 
104                           // Manufacturer ID always
105        1/1                p2s_byte = (cc_needed) ? jedec.cc : jedec.jedec_id;
           Tests:       T1 T2 T3 
106        1/1              end else if (st_q == StCC) begin
           Tests:       T52 T94 T35 
107        1/1                p2s_byte = jedec.cc;
           Tests:       T52 T35 T51 
108        1/1              end else if (st_q == StJedecId) begin
           Tests:       T94 T35 T51 
109        1/1                p2s_byte = jedec.jedec_id;
           Tests:       T94 T35 T51 
110                         end else begin
111                           // based on byte_sel_q
112                           // End of the transfer but host keep toggles SCK. Sending out 0 always
113        1/1                p2s_byte = (byte_sel_q >= 2'b 10) ? 8'h 0 :
           Tests:       T94 T35 T51 
114                                      (byte_sel_q == 2'b 01) ? jedec.device_id[15:8] :
115                                                               jedec.device_id[7:0] ;
116                         end
117                       end : p2s_byte_logic
118                     
119                       // Byte selection
120                       always_ff @(posedge clk_i or negedge rst_ni) begin : byte_sel_latch
121        2/2              if (!rst_ni)        byte_sel_q <= 2'h 0; // select manufacturer id
           Tests:       T1 T2 T3  | T1 T2 T3 
122        2/2              else if (next_byte) byte_sel_q <= byte_sel_d;
           Tests:       T12 T13 T15  | T94 T35 T51 
                        MISSING_ELSE
123                       end : byte_sel_latch
124                     
125        1/1            assign byte_sel_d = (byte_sel_q == 2'b 10) ? 2'b 10 : byte_sel_q + 1'b 1;
           Tests:       T1 T2 T3 
126                     
127                       ///////////
128                       // State //
129                       ///////////
130                     
131                       always_ff @(posedge clk_i or negedge rst_ni) begin : state_latch
132        2/2              if (!rst_ni) st_q <= StIdle;
           Tests:       T1 T2 T3  | T1 T2 T3 
133        1/1              else         st_q <= st_d;
           Tests:       T12 T13 T15 
134                       end : state_latch
135                     
136                       `ASSERT_KNOWN(JedecStKnown_A, st_q)
137                       always_comb begin : next_state_logic
138        1/1              st_d = st_q;
           Tests:       T1 T2 T3 
139                     
140        1/1              p2s_valid = 1'b 0;
           Tests:       T1 T2 T3 
141        1/1              next_byte = 1'b 0;
           Tests:       T1 T2 T3 
142                     
143        1/1              unique case (st_q)
           Tests:       T1 T2 T3 
144                           StIdle: begin
145        1/1                  if (sel_dp_i == DpReadJEDEC) begin
           Tests:       T1 T2 T3 
146        1/1                    st_d = (cc_needed) ? StCC : StJedecId ;
           Tests:       T52 T94 T35 
147                     
148                               // Send out the dat
149        1/1                    p2s_valid = 1'b 1;
           Tests:       T52 T94 T35 
150                             end
                        MISSING_ELSE
151                           end
152                     
153                           StCC: begin
154                     
155                             // cc_count is increased by 1 when outclk_p2s_sent_i is asserted
156                             // outclk_p2s_sent_i asserts at the 7th beat, not 8th beat.  When
157                             // cc_count reaches to num_cc, it is the end of a byte transaction in
158                             // SCK input clock domain. So, that time state machine moves to
159                             // JedecId
160        1/1                  if (cc_count == jedec.num_cc) begin
           Tests:       T52 T35 T51 
161        1/1                    st_d = StJedecId;
           Tests:       T35 T51 T48 
162                             end
                        MISSING_ELSE
163                     
164        1/1                  p2s_valid = 1'b 1;
           Tests:       T52 T35 T51 
165                           end
166                     
167                           StJedecId: begin
168        1/1                  if (outclk_p2s_sent_i) begin
           Tests:       T94 T35 T51 
169        1/1                    st_d = StDevId;
           Tests:       T94 T35 T51 
170                             end
                        MISSING_ELSE
171                     
172        1/1                  p2s_valid = 1'b 1;
           Tests:       T94 T35 T51 
173                           end
174                     
175                           StDevId: begin
176                             // TERMINAL_STATE
177                     
178                             // Sends data
179        1/1                  p2s_valid = 1'b 1;
           Tests:       T94 T35 T51 
180                     
181        1/1                  if (outclk_p2s_sent_i) begin
           Tests:       T94 T35 T51 
182        1/1                    next_byte = 1'b 1;
           Tests:       T94 T35 T51 
183                             end
                        MISSING_ELSE
184                           end
185                     
186                           default: begin
187                             st_d = StIdle;
Cond Coverage for Module : 
spid_jedec
 | Total | Covered | Percent | 
| Conditions | 29 | 29 | 100.00 | 
| Logical | 29 | 29 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       84
 EXPRESSION ((st_q == StCC) && outclk_p2s_sent_i)
             -------1------    --------2--------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T94,T35,T51 | 
| 1 | 0 | Covered | T52,T35,T51 | 
| 1 | 1 | Covered | T52,T35,T51 | 
 LINE       84
 SUB-EXPRESSION (st_q == StCC)
                -------1------
| -1- | Status | Tests |                       
| 0 | Covered | T12,T13,T15 | 
| 1 | Covered | T52,T35,T51 | 
 LINE       103
 EXPRESSION (st_q == StIdle)
            --------1-------
| -1- | Status | Tests |                       
| 0 | Covered | T52,T94,T35 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       105
 EXPRESSION (cc_needed ? jedec.cc : jedec.jedec_id)
             ----1----
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T13,T15,T16 | 
 LINE       106
 EXPRESSION (st_q == StCC)
            -------1------
| -1- | Status | Tests |                       
| 0 | Covered | T94,T35,T51 | 
| 1 | Covered | T52,T35,T51 | 
 LINE       108
 EXPRESSION (st_q == StJedecId)
            ---------1---------
| -1- | Status | Tests |                       
| 0 | Covered | T94,T35,T51 | 
| 1 | Covered | T94,T35,T51 | 
 LINE       113
 EXPRESSION ((byte_sel_q >= 2'b10) ? 8'b0 : ((byte_sel_q == 2'b1) ? jedec.device_id[15:8] : jedec.device_id[7:0]))
             ----------1----------
| -1- | Status | Tests |                       
| 0 | Covered | T94,T35,T51 | 
| 1 | Covered | T94,T35,T51 | 
 LINE       113
 SUB-EXPRESSION ((byte_sel_q == 2'b1) ? jedec.device_id[15:8] : jedec.device_id[7:0])
                 ----------1---------
| -1- | Status | Tests |                       
| 0 | Covered | T94,T35,T51 | 
| 1 | Covered | T94,T35,T51 | 
 LINE       113
 SUB-EXPRESSION (byte_sel_q == 2'b1)
                ----------1---------
| -1- | Status | Tests |                       
| 0 | Covered | T94,T35,T51 | 
| 1 | Covered | T94,T35,T51 | 
 LINE       125
 EXPRESSION ((byte_sel_q == 2'b10) ? 2'b10 : ((byte_sel_q + 1'b1)))
             ----------1----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T94,T35,T51 | 
 LINE       125
 SUB-EXPRESSION (byte_sel_q == 2'b10)
                ----------1----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T94,T35,T51 | 
 LINE       145
 EXPRESSION (sel_dp_i == DpReadJEDEC)
            ------------1------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T52,T94,T35 | 
 LINE       146
 EXPRESSION (cc_needed ? StCC : StJedecId)
             ----1----
| -1- | Status | Tests |                       
| 0 | Covered | T94,T51,T88 | 
| 1 | Covered | T52,T35,T51 | 
 LINE       160
 EXPRESSION (cc_count == jedec.num_cc)
            -------------1------------
| -1- | Status | Tests |                       
| 0 | Covered | T52,T35,T51 | 
| 1 | Covered | T35,T51,T48 | 
FSM Coverage for Module : 
spid_jedec
Summary for FSM :: st_q
 | Total | Covered | Percent |  | 
| States | 
4 | 
4 | 
100.00 | 
(Not included in score) | 
| Transitions | 
4 | 
4 | 
100.00 | 
 | 
| Sequences | 
0 | 
0 | 
 | 
 | 
State, Transition and Sequence Details for FSM :: st_q
| states | Line No. | Covered | Tests | 
| StCC | 
146 | 
Covered | 
T52,T35,T51 | 
| StDevId | 
169 | 
Covered | 
T94,T35,T51 | 
| StIdle | 
103 | 
Covered | 
T1,T2,T3 | 
| StJedecId | 
146 | 
Covered | 
T94,T35,T51 | 
| transitions | Line No. | Covered | Tests | 
| StCC->StJedecId | 
161 | 
Covered | 
T35,T51,T48 | 
| StIdle->StCC | 
146 | 
Covered | 
T52,T35,T51 | 
| StIdle->StJedecId | 
146 | 
Covered | 
T94,T51,T88 | 
| StJedecId->StDevId | 
169 | 
Covered | 
T94,T35,T51 | 
Branch Coverage for Module : 
spid_jedec
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
32 | 
31 | 
96.88  | 
| TERNARY | 
125 | 
2 | 
2 | 
100.00 | 
| IF | 
73 | 
3 | 
3 | 
100.00 | 
| IF | 
83 | 
3 | 
3 | 
100.00 | 
| IF | 
91 | 
2 | 
2 | 
100.00 | 
| IF | 
103 | 
7 | 
7 | 
100.00 | 
| IF | 
121 | 
3 | 
3 | 
100.00 | 
| IF | 
132 | 
2 | 
2 | 
100.00 | 
| CASE | 
143 | 
10 | 
9 | 
90.00  | 
125          assign byte_sel_d = (byte_sel_q == 2'b 10) ? 2'b 10 : byte_sel_q + 1'b 1;
                                                        -1-  
                                                        ==>  
                                                        ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T94,T35,T51 | 
| 0 | 
Covered | 
T1,T2,T3 | 
73             if (!rst_ni)                         jedec <= '{default: '0};
               -1-  
               ==>
74             else if (cmd_sync_pulse_i) jedec <= sys_jedec_i;
                    -2-  
               ==>
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | Status | Tests | 
| 1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
Covered | 
T12,T13,T15 | 
| 0 | 
0 | 
Covered | 
T12,T13,T15 | 
83             if (!rst_ni) cc_count <= '0;
               -1-  
               ==>
84             else if (st_q == StCC && outclk_p2s_sent_i) begin
                    -2-  
85               cc_count <= cc_count + 1'b 1;
                 ==>
86             end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | Status | Tests | 
| 1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
Covered | 
T52,T35,T51 | 
| 0 | 
0 | 
Covered | 
T12,T13,T15 | 
91             if (!rst_out_ni) begin
               -1-  
92               outclk_p2s_valid_o <= 1'b 0;
                 ==>
93               outclk_p2s_byte_o  <= 8'h 0;
94             end else begin
95               outclk_p2s_valid_o <= p2s_valid;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T12,T13,T15 | 
103            if (st_q == StIdle) begin
               -1-  
104              // Manufacturer ID always
105              p2s_byte = (cc_needed) ? jedec.cc : jedec.jedec_id;
                                        -2-  
                                        ==>  
                                        ==>  
106            end else if (st_q == StCC) begin
                        -3-  
107              p2s_byte = jedec.cc;
                 ==>
108            end else if (st_q == StJedecId) begin
                        -4-  
109              p2s_byte = jedec.jedec_id;
                 ==>
110            end else begin
111              // based on byte_sel_q
112              // End of the transfer but host keep toggles SCK. Sending out 0 always
113              p2s_byte = (byte_sel_q >= 2'b 10) ? 8'h 0 :
                                                   -5-  
                                                   ==>  
114                         (byte_sel_q == 2'b 01) ? jedec.device_id[15:8] :
                                                   -6-  
                                                   ==>  
                                                   ==>  
Branches:
| -1- | -2- | -3- | -4- | -5- | -6- | Status | Tests | 
| 1 | 
1 | 
- | 
- | 
- | 
- | 
Covered | 
T13,T15,T16 | 
| 1 | 
0 | 
- | 
- | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
- | 
1 | 
- | 
- | 
- | 
Covered | 
T52,T35,T51 | 
| 0 | 
- | 
0 | 
1 | 
- | 
- | 
Covered | 
T94,T35,T51 | 
| 0 | 
- | 
0 | 
0 | 
1 | 
- | 
Covered | 
T94,T35,T51 | 
| 0 | 
- | 
0 | 
0 | 
0 | 
1 | 
Covered | 
T94,T35,T51 | 
| 0 | 
- | 
0 | 
0 | 
0 | 
0 | 
Covered | 
T94,T35,T51 | 
121            if (!rst_ni)        byte_sel_q <= 2'h 0; // select manufacturer id
               -1-  
               ==>
122            else if (next_byte) byte_sel_q <= byte_sel_d;
                    -2-  
               ==>
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | Status | Tests | 
| 1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
Covered | 
T94,T35,T51 | 
| 0 | 
0 | 
Covered | 
T12,T13,T15 | 
132            if (!rst_ni) st_q <= StIdle;
               -1-  
               ==>
133            else         st_q <= st_d;
               ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T12,T13,T15 | 
143            unique case (st_q)
                      -1-  
144              StIdle: begin
145                if (sel_dp_i == DpReadJEDEC) begin
                   -2-  
146                  st_d = (cc_needed) ? StCC : StJedecId ;
                                        -3-  
                                        ==>  
                                        ==>  
147        
148                  // Send out the dat
149                  p2s_valid = 1'b 1;
150                end
                   MISSING_ELSE
                   ==>
151              end
152        
153              StCC: begin
154        
155                // cc_count is increased by 1 when outclk_p2s_sent_i is asserted
156                // outclk_p2s_sent_i asserts at the 7th beat, not 8th beat.  When
157                // cc_count reaches to num_cc, it is the end of a byte transaction in
158                // SCK input clock domain. So, that time state machine moves to
159                // JedecId
160                if (cc_count == jedec.num_cc) begin
                   -4-  
161                  st_d = StJedecId;
                     ==>
162                end
                   MISSING_ELSE
                   ==>
163        
164                p2s_valid = 1'b 1;
165              end
166        
167              StJedecId: begin
168                if (outclk_p2s_sent_i) begin
                   -5-  
169                  st_d = StDevId;
                     ==>
170                end
                   MISSING_ELSE
                   ==>
171        
172                p2s_valid = 1'b 1;
173              end
174        
175              StDevId: begin
176                // TERMINAL_STATE
177        
178                // Sends data
179                p2s_valid = 1'b 1;
180        
181                if (outclk_p2s_sent_i) begin
                   -6-  
182                  next_byte = 1'b 1;
                     ==>
183                end
                   MISSING_ELSE
                   ==>
184              end
185        
186              default: begin
187                st_d = StIdle;
                   ==>
Branches:
| -1- | -2- | -3- | -4- | -5- | -6- | Status | Tests | 
| StIdle  | 
1 | 
1 | 
- | 
- | 
- | 
Covered | 
T52,T35,T51 | 
| StIdle  | 
1 | 
0 | 
- | 
- | 
- | 
Covered | 
T94,T51,T88 | 
| StIdle  | 
0 | 
- | 
- | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| StCC  | 
- | 
- | 
1 | 
- | 
- | 
Covered | 
T35,T51,T48 | 
| StCC  | 
- | 
- | 
0 | 
- | 
- | 
Covered | 
T52,T35,T51 | 
| StJedecId  | 
- | 
- | 
- | 
1 | 
- | 
Covered | 
T94,T35,T51 | 
| StJedecId  | 
- | 
- | 
- | 
0 | 
- | 
Covered | 
T94,T35,T51 | 
| StDevId  | 
- | 
- | 
- | 
- | 
1 | 
Covered | 
T94,T35,T51 | 
| StDevId  | 
- | 
- | 
- | 
- | 
0 | 
Covered | 
T94,T35,T51 | 
| default | 
- | 
- | 
- | 
- | 
- | 
Not Covered | 
 | 
Assert Coverage for Module : 
spid_jedec
Assertion Details
| Name | Attempts | Real Successes | Failures | Incomplete | 
| 
JedecStKnown_A | 
154931958 | 
122316743 | 
0 | 
0 | 
JedecStKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
154931958 | 
122316743 | 
0 | 
0 | 
| T12 | 
19250 | 
18910 | 
0 | 
0 | 
| T13 | 
36652 | 
36652 | 
0 | 
0 | 
| T14 | 
75491 | 
0 | 
0 | 
0 | 
| T15 | 
4112 | 
4112 | 
0 | 
0 | 
| T16 | 
44233 | 
44199 | 
0 | 
0 | 
| T17 | 
25952 | 
25952 | 
0 | 
0 | 
| T20 | 
26623 | 
26623 | 
0 | 
0 | 
| T21 | 
25569 | 
24940 | 
0 | 
0 | 
| T22 | 
18110 | 
17328 | 
0 | 
0 | 
| T23 | 
0 | 
16908 | 
0 | 
0 | 
| T26 | 
17816 | 
17816 | 
0 | 
0 |