mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-20 14:20:32 +00:00 
			
		
		
		
	Right now neither `sat` nor `sim` have support for the `$check` cell. For formal verification it is a good idea to always run either async2sync or clk2fflogic which will (in a future commit) lower `$check` to `$assert`, etc. While `sim` should eventually support `$check` directly, using `async2sync` is ok for the current tests that use `sim`, so this commit also runs `async2sync` before running sim on designs containing assertions.
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			620 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			620 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| logger -expect-no-warnings
 | |
| 
 | |
| read_verilog -formal <<EOT
 | |
| module top(input clk);
 | |
|     reg signed [3:0] value = -1;
 | |
|     reg ready = 0;
 | |
| 
 | |
|     always @(posedge clk) begin
 | |
|         if (ready)
 | |
|             assert ($past(value) == -1);
 | |
|         ready <= 1;
 | |
|     end
 | |
| endmodule
 | |
| EOT
 | |
| 
 | |
| prep -top top
 | |
| async2sync
 | |
| sim -n 3 -clock clk
 | |
| 
 | |
| design -reset
 | |
| 
 | |
| read_verilog -formal <<EOT
 | |
| module top(input clk);
 | |
|     reg signed [3:0] value = -1;
 | |
|     reg ready = 0;
 | |
| 
 | |
|     always @(posedge clk) begin
 | |
|         if (ready)
 | |
|             assert ($past(value + 4'b0000) == 15);
 | |
|         ready <= 1;
 | |
|     end
 | |
| endmodule
 | |
| EOT
 | |
| 
 | |
| prep -top top
 | |
| async2sync
 | |
| sim -n 3 -clock clk
 |