mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	sv: fix some edge cases for unbased unsized literals
- Fix explicit size cast of unbased unsized literals - Fix unbased unsized literal bound directly to port - Output `is_unsized` flag in `dumpAst`
This commit is contained in:
		
							parent
							
								
									d245e2bae5
								
							
						
					
					
						commit
						b1a8e73a60
					
				
					 4 changed files with 70 additions and 1 deletions
				
			
		
							
								
								
									
										40
									
								
								tests/verilog/unbased_unsized.sv
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								tests/verilog/unbased_unsized.sv
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
module pass_through(
 | 
			
		||||
    input [63:0] inp,
 | 
			
		||||
    output [63:0] out
 | 
			
		||||
);
 | 
			
		||||
    assign out = inp;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module top;
 | 
			
		||||
    logic [63:0]
 | 
			
		||||
        o01, o02, o03, o04,
 | 
			
		||||
        o05, o06, o07, o08,
 | 
			
		||||
        o09, o10, o11, o12,
 | 
			
		||||
        o13, o14, o15, o16;
 | 
			
		||||
    assign o01 = '0;
 | 
			
		||||
    assign o02 = '1;
 | 
			
		||||
    assign o03 = 'x;
 | 
			
		||||
    assign o04 = 'z;
 | 
			
		||||
    assign o05 = 3'('0);
 | 
			
		||||
    assign o06 = 3'('1);
 | 
			
		||||
    assign o07 = 3'('x);
 | 
			
		||||
    assign o08 = 3'('z);
 | 
			
		||||
    pass_through pt09('0, o09);
 | 
			
		||||
    pass_through pt10('1, o10);
 | 
			
		||||
    pass_through pt11('x, o11);
 | 
			
		||||
    pass_through pt12('z, o12);
 | 
			
		||||
    always @* begin
 | 
			
		||||
        assert (o01 === {64 {1'b0}});
 | 
			
		||||
        assert (o02 === {64 {1'b1}});
 | 
			
		||||
        assert (o03 === {64 {1'bx}});
 | 
			
		||||
        assert (o04 === {64 {1'bz}});
 | 
			
		||||
        assert (o05 === {61'b0, 3'b000});
 | 
			
		||||
        assert (o06 === {61'b0, 3'b111});
 | 
			
		||||
        assert (o07 === {61'b0, 3'bxxx});
 | 
			
		||||
        assert (o08 === {61'b0, 3'bzzz});
 | 
			
		||||
        assert (o09 === {64 {1'b0}});
 | 
			
		||||
        assert (o10 === {64 {1'b1}});
 | 
			
		||||
        assert (o11 === {64 {1'bx}});
 | 
			
		||||
        assert (o12 === {64 {1'bz}});
 | 
			
		||||
    end
 | 
			
		||||
endmodule
 | 
			
		||||
							
								
								
									
										7
									
								
								tests/verilog/unbased_unsized.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tests/verilog/unbased_unsized.ys
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
read_verilog -sv unbased_unsized.sv
 | 
			
		||||
hierarchy
 | 
			
		||||
proc
 | 
			
		||||
flatten
 | 
			
		||||
opt -full
 | 
			
		||||
select -module top
 | 
			
		||||
sat -verify -seq 1 -tempinduct -prove-asserts -show-all
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue