mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 19:52:31 +00:00 
			
		
		
		
	* When used with -tempinduct mode, -seq <N> causes assertions to be ignored in the first N steps. While this has uses for reset modelling, for these test cases it is unnecessary and could lead to failures slipping through uncaught
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			913 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			913 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| read_verilog -sv << EOF
 | |
| package p;
 | |
| typedef struct packed {
 | |
|   logic a;
 | |
|   logic b;
 | |
| } struct_t;
 | |
| 
 | |
| typedef struct packed {
 | |
|   struct_t g;
 | |
|   logic [2:0] h;
 | |
| } nested_struct_t;
 | |
| 
 | |
| typedef union packed {
 | |
|   logic [4:0] x;
 | |
| } nested_union_t;
 | |
| 
 | |
| parameter struct_t c = {1'b1, 1'b0};
 | |
| parameter nested_struct_t x = {{1'b1, 1'b0}, 1'b1, 1'b1, 1'b1};
 | |
| endpackage
 | |
| 
 | |
| module dut ();
 | |
| parameter p::struct_t d = p::c;
 | |
| parameter p::nested_struct_t i = p::x;
 | |
| 
 | |
| parameter p::nested_union_t u = {5'b11001};
 | |
| 
 | |
| localparam e = d.a;
 | |
| localparam f = d.b;
 | |
| 
 | |
| localparam j = i.g.a;
 | |
| localparam k = i.g.b;
 | |
| localparam l = i.h;
 | |
| localparam m = i.g;
 | |
| 
 | |
| localparam o = u.x;
 | |
| 
 | |
| always_comb begin
 | |
|   assert(d == 2'b10);
 | |
|   assert(e == 1'b1);
 | |
|   assert(f == 1'b0);
 | |
|   assert(j == 1'b1);
 | |
|   assert(k == 1'b0);
 | |
|   assert(l == 3'b111);
 | |
|   assert(m == 2'b10);
 | |
|   assert(u == 5'b11001);
 | |
| end
 | |
| endmodule
 | |
| EOF
 | |
| hierarchy; proc; opt
 | |
| async2sync
 | |
| sat -verify -tempinduct -prove-asserts -show-all
 |