6363
6464// Remember shifted in data
6565//
66- logic [31 : 0 ] fv_din = 'b0 ;
66+ logic [31 : 0 ] fv_din = 2'b11 ;
6767always_ff @ (posedge clk_i) fv_din <= { din, fv_din[31 : CHUNKSIZE ]} ;
6868
69+ // We can safely assume the PC does not overflow
70+ always_ff @ (posedge clk_i) begin
71+ if (fv_cycle_check) assume (fv_din != 32'hFFFF_FFFF );
72+ end
73+
6974logic [31 : 0 ] fv_pcinc = 'b0 ;
7075always_ff @ (posedge clk_i) fv_pcinc <= { pc_ser_inc, fv_pcinc[31 : CHUNKSIZE ]} ;
7176
@@ -85,7 +90,7 @@ fazyrv_pc #(
8590 .rst_in ( rst_in ),
8691 // Continuous inc to strobe; handle here for simplicity
8792 .inc_i ( inc & fv_cycle_lsb & fv_pc_op ),
88- .shift_i ( shift & fv_pc_op ),
93+ .shift_i ( shift & fv_pc_op ),
8994 .din_i ( din ),
9095 .pc_ser_o ( pc_ser ),
9196 .pc_ser_inc_o ( pc_ser_inc ),
@@ -101,8 +106,6 @@ always_comb begin
101106 if (inc) assume (shift);
102107 // Assume normal pc increment
103108 if (inc) assume (din == pc_ser_inc);
104- // Loading PC, assume data != 0 for easier debugging
105- if (shift & ~ inc) assume (din != 'b0 );
106109end
107110
108111
@@ -152,18 +155,22 @@ end
152155
153156always_ff @ (posedge clk_i) begin
154157 cover (rst_in);
155- cover (rst_in & (pc == BOOTADR ));
156- cover (fv_cycle_check);
157- cover (fv_cycle_check && $past (inc));
158- cover (fv_cycle_check && $past (shift));
159- cover (fv_cycle_check & (~ inc & ~ shift));
160- cover (fv_cycle_check & (inc != $past (inc)));
161-
158+ cover (rst_in && (pc == BOOTADR ));
159+ cover (rst_in && fv_cycle_check);
160+ cover (rst_in && fv_cycle_check && $past (inc));
161+ cover (rst_in && fv_cycle_check && $past (shift));
162+
163+ cover (rst_in && fv_cycle_check & (inc != $past (inc)));
164+ cover (rst_in && fv_cycle_check && (fv_pcinc == 32'h0000_00F3 ) && $past (inc));
165+ cover (rst_in && fv_cycle_check && (fv_pcinc == 32'h0000_FF03 ) && $past (inc));
166+ cover (rst_in && fv_cycle_check && (fv_pcinc == 32'hFFFF_FFF3 ) && $past (inc));
167+ cover (rst_in && fv_cycle_check && (fv_pcinc == 32'h0000_FF03 ) && $past (inc));
168+ cover (rst_in && fv_cycle_check && (fv_pcinc == 32'hFFFF_FFF3 ) && $past (inc));
162169 //
163- cover ($past (shift) & $past (inc) & (pc == fv_prev_pc + 'd4 ));
164- cover ($past (shift) & $past (inc) & (pc == fv_pcinc));
165- cover ($past (shift) & (pc == fv_din));
166- cover ($past (shift) & (fv_prev_pc == fv_pcser));
170+ cover (rst_in && fv_cycle_check && $past (shift) && $past (inc) & & (pc == fv_prev_pc + 'd4 ));
171+ cover (rst_in && fv_cycle_check && $past (shift) && $past (inc) & & (pc == fv_pcinc));
172+ cover (rst_in && fv_cycle_check && $past (shift) & & (pc == fv_din));
173+ cover (rst_in && fv_cycle_check && $past (shift) & & (fv_prev_pc == fv_pcser));
167174end
168175
169176endmodule
0 commit comments