mirror of https://github.com/YosysHQ/yosys.git
fmt: add tests for Verilog round trip of format expressions.
This commit is contained in:
parent
67052f62ec
commit
c285880684
|
@ -1,2 +1,3 @@
|
|||
*.log
|
||||
iverilog-initial_display*
|
||||
iverilog-*
|
||||
yosys-*
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
module m(input clk, rst, en, input [31:0] data);
|
||||
|
||||
`ifdef EVENT_CLK
|
||||
always @(posedge clk)
|
||||
`endif
|
||||
`ifdef EVENT_CLK_RST
|
||||
always @(posedge clk or negedge rst)
|
||||
`endif
|
||||
`ifdef EVENT_STAR
|
||||
always @(*)
|
||||
`endif
|
||||
`ifdef COND_EN
|
||||
if (en)
|
||||
`endif
|
||||
$display("data=%d", data);
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,22 @@
|
|||
module m(input clk, input `SIGN [31:0] data);
|
||||
|
||||
always @(posedge clk)
|
||||
// All on a single line to avoid order effects.
|
||||
`ifdef BASE_DEC
|
||||
$display(":%d:%-d:%+d:%+-d:%0d:%-0d:%+0d:%+-0d:%20d:%-20d:%+20d:%+-20d:%020d:%-020d:%+020d:%+-020d:",
|
||||
data, data, data, data, data, data, data, data, data, data, data, data, data, data, data, data);
|
||||
`endif
|
||||
`ifdef BASE_HEX
|
||||
$display(":%h:%-h:%0h:%-0h:%20h:%-20h:%020h:%-020h:",
|
||||
data, data, data, data, data, data, data, data);
|
||||
`endif
|
||||
`ifdef BASE_OCT
|
||||
$display(":%o:%-o:%0o:%-0o:%20o:%-20o:%020o:%-020o:",
|
||||
data, data, data, data, data, data, data, data);
|
||||
`endif
|
||||
`ifdef BASE_BIN
|
||||
$display(":%b:%-b:%0b:%-0b:%20b:%-20b:%020b:%-020b:",
|
||||
data, data, data, data, data, data, data, data);
|
||||
`endif
|
||||
|
||||
endmodule
|
|
@ -0,0 +1,13 @@
|
|||
module tb;
|
||||
reg clk = 1'b0;
|
||||
reg [31:0] data;
|
||||
|
||||
m dut(.clk(clk), .data(data));
|
||||
|
||||
initial begin
|
||||
data = 32'haa;
|
||||
#10; clk = 1; #10; clk = 0;
|
||||
data = 32'haaaa;
|
||||
#10; clk = 1; #10; clk = 0;
|
||||
end
|
||||
endmodule
|
|
@ -1,6 +1,46 @@
|
|||
#!/bin/bash -eu
|
||||
#!/bin/bash -ex
|
||||
|
||||
../../yosys initial_display.v | awk '/<<<BEGIN>>>/,/<<<END>>>/ {print $0}' >yosys-initial_display.log
|
||||
iverilog -o iverilog-initial_display initial_display.v
|
||||
./iverilog-initial_display >iverilog-initial_display.log
|
||||
diff yosys-initial_display.log iverilog-initial_display.log
|
||||
|
||||
test_always_display () {
|
||||
local subtest=$1; shift
|
||||
../../yosys $* always_display.v -p 'proc; opt_expr -mux_bool; clean' -o yosys-always_display-${subtest}-1.v
|
||||
../../yosys yosys-always_display-${subtest}-1.v -p 'proc; opt_expr -mux_bool; clean' -o yosys-always_display-${subtest}-2.v
|
||||
diff yosys-always_display-${subtest}-1.v yosys-always_display-${subtest}-2.v
|
||||
}
|
||||
|
||||
test_always_display clk -DEVENT_CLK
|
||||
test_always_display clk_rst -DEVENT_CLK_RST
|
||||
test_always_display star -DEVENT_STAR
|
||||
|
||||
test_always_display clk_en -DEVENT_CLK -DCOND_EN
|
||||
test_always_display clk_rst_en -DEVENT_CLK_RST -DCOND_EN
|
||||
test_always_display star_en -DEVENT_STAR -DCOND_EN
|
||||
|
||||
test_roundtrip () {
|
||||
local subtest=$1; shift
|
||||
../../yosys $* roundtrip.v -p 'proc; clean' -o yosys-roundtrip-${subtest}-1.v
|
||||
../../yosys yosys-roundtrip-${subtest}-1.v -p 'proc; clean' -o yosys-roundtrip-${subtest}-2.v
|
||||
diff yosys-roundtrip-${subtest}-1.v yosys-roundtrip-${subtest}-2.v
|
||||
|
||||
iverilog $* -o iverilog-roundtrip-${subtest} roundtrip.v roundtrip_tb.v
|
||||
./iverilog-roundtrip-${subtest} >iverilog-roundtrip-${subtest}.log
|
||||
iverilog $* -o iverilog-roundtrip-${subtest}-1 yosys-roundtrip-${subtest}-1.v roundtrip_tb.v
|
||||
./iverilog-roundtrip-${subtest}-1 >iverilog-roundtrip-${subtest}-1.log
|
||||
iverilog $* -o iverilog-roundtrip-${subtest}-2 yosys-roundtrip-${subtest}-2.v roundtrip_tb.v
|
||||
./iverilog-roundtrip-${subtest}-1 >iverilog-roundtrip-${subtest}-2.log
|
||||
diff iverilog-roundtrip-${subtest}.log iverilog-roundtrip-${subtest}-1.log
|
||||
diff iverilog-roundtrip-${subtest}-1.log iverilog-roundtrip-${subtest}-2.log
|
||||
}
|
||||
|
||||
test_roundtrip dec_unsigned -DBASE_DEC -DSIGN=""
|
||||
test_roundtrip dec_signed -DBASE_DEC -DSIGN="signed"
|
||||
test_roundtrip hex_unsigned -DBASE_HEX -DSIGN=""
|
||||
test_roundtrip hex_signed -DBASE_HEX -DSIGN="signed"
|
||||
test_roundtrip oct_unsigned -DBASE_HEX -DSIGN=""
|
||||
test_roundtrip oct_signed -DBASE_HEX -DSIGN="signed"
|
||||
test_roundtrip bin_unsigned -DBASE_HEX -DSIGN=""
|
||||
test_roundtrip bin_signed -DBASE_HEX -DSIGN="signed"
|
||||
|
|
Loading…
Reference in New Issue