Documente Academic
Documente Profesional
Documente Cultură
Assertions
Verification Academy Course
Jin Hou
Verification Technologist
Agenda
Overview of handling inconclusive assertions
Formal complexity reduction
— Reduce assumption complexity
— Reduce assertion complexity
— Reduce design complexity
— Use Questa QFL libraries
Over-constraining
— Add/change assumptions to limit the number of input values
— firing is valid, proof may be false
— Example 1: Reduce the address range address_range: assume property (@(posedge clk)
address >= 0 && address <= 256 );
address_range: assume property (@(posedge clk)
— Example 2: Symbolic value address >= 0 && address <= 32 );
— Formal considers all constant values
DUT
Sub1 Duuuddd
Sub2 Sub3
P1 P2 P3
Proven P1 is used as assumption for P2, proven P2 is used as
assumption for P3 automatically by Questa Formal (Assume-
Guarantee)
Restricted © 2017 Mentor Graphics Corporation
With the assumptions U1, U2, the LHS of the complex property is simplified
significantly
Counter remodeling:
— Reduce the size of the counter. Proof and firing may be true or false.
— Reset counter value to X value for Formal to consider all values for
Intial state. Proof is valid, but firing may be true/false.
— Replace the counter with a simple state machine model. Proof and firing may be
true/false.
— Questa automatic counter abstraction that is done at engine level and doesn’t cause false
proof and firing.
always @(addr)
case (addr)
`include “./zin_files/ext_lut_0008.dat"
24'h200000: sram_data <= 32'h284c_2f73 ;
`include “./zin_files/ext_lut_0010.dat"
24'h200002: sram_data <= 32'he55a_25fc ;
`include “./zin_files/ext_lut_0018.dat" 24'h200004: sram_data <= 32'hd75d_ba1c ;
`include “./zin_files/ext_lut_0020.dat" 24'h200006: sram_data <= 32'h64a0_ad14 ;
24'h200008: sram_data <= 32'h33e3_31c1 ;
default: sram_data <= 32'h00000000; 24'h20000A: sram_data <= 32'hd5c6_435e ;
endcase
….
24'h202682: sram_data <= 32'h2a8c_a5aa ;
assign read_data_mux = !HWRITEM ? sram_data : 32'h00000000;
24'h202684: sram_data <= 32'h75f5_b99f ;
always @(posedge HCLK)
if (!HRESETn) 24'h202696: sram_data <= 32'hf0eb_f161 ;
HRDATAM <= 32'h00000000; 24'h202698: sram_data <= 32'h7b58_0d0a ;
else
HRDATAM <= read_data_mux;
endmodule
End-to-end property
— Create a wrapper to only include Encoder and Decoder to verify ECC logic
Wrapper Inject Error
Encoder Decoder
End-to-end property