mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-07 09:55:20 +00:00
Add torture test for (* nowrshmsk *) stride optimization
This commit is contained in:
parent
2cab4ff173
commit
a105d2c050
|
@ -69,6 +69,24 @@ design -copy-from gate -as gate gate
|
||||||
miter -equiv -make_assert -make_outcmp -flatten gold gate equiv
|
miter -equiv -make_assert -make_outcmp -flatten gold gate equiv
|
||||||
sat -prove-asserts -seq 10 -show-public -verify -set-init-zero equiv
|
sat -prove-asserts -seq 10 -show-public -verify -set-init-zero equiv
|
||||||
|
|
||||||
|
### For-loop select, one dynamic input, (* nowrshmsk *)
|
||||||
|
design -reset
|
||||||
|
read_verilog ./dynamic_part_select/forloop_select_nowrshmsk.v
|
||||||
|
proc
|
||||||
|
rename -top gold
|
||||||
|
design -stash gold
|
||||||
|
|
||||||
|
read_verilog ./dynamic_part_select/forloop_select_gate.v
|
||||||
|
proc
|
||||||
|
rename -top gate
|
||||||
|
design -stash gate
|
||||||
|
|
||||||
|
design -copy-from gold -as gold gold
|
||||||
|
design -copy-from gate -as gate gate
|
||||||
|
|
||||||
|
miter -equiv -make_assert -make_outcmp -flatten gold gate equiv
|
||||||
|
sat -prove-asserts -seq 10 -show-public -verify -set-init-zero equiv
|
||||||
|
|
||||||
#### Double loop (part-select, reset) ###
|
#### Double loop (part-select, reset) ###
|
||||||
design -reset
|
design -reset
|
||||||
read_verilog ./dynamic_part_select/reset_test.v
|
read_verilog ./dynamic_part_select/reset_test.v
|
||||||
|
|
20
tests/various/dynamic_part_select/forloop_select_nowrshmsk.v
Normal file
20
tests/various/dynamic_part_select/forloop_select_nowrshmsk.v
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
`default_nettype none
|
||||||
|
module forloop_select #(parameter WIDTH=16, SELW=4, CTRLW=$clog2(WIDTH), DINW=2**SELW)
|
||||||
|
(input wire clk,
|
||||||
|
input wire [CTRLW-1:0] ctrl,
|
||||||
|
input wire [DINW-1:0] din,
|
||||||
|
input wire en,
|
||||||
|
(* nowrshmsk *)
|
||||||
|
output reg [WIDTH-1:0] dout);
|
||||||
|
|
||||||
|
reg [SELW:0] sel;
|
||||||
|
localparam SLICE = WIDTH/(SELW**2);
|
||||||
|
|
||||||
|
always @(posedge clk)
|
||||||
|
begin
|
||||||
|
if (en) begin
|
||||||
|
for (sel = 0; sel <= 4'hf; sel=sel+1'b1)
|
||||||
|
dout[(ctrl*sel)+:SLICE] <= din;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
endmodule
|
Loading…
Reference in a new issue