Skip to content

Commit

Permalink
Add torture test for (* nowrshmsk *) stride optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
daglem committed Dec 12, 2023
1 parent b627d60 commit 9c3b4d7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
18 changes: 18 additions & 0 deletions tests/various/dynamic_part_select.ys
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,24 @@ 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

### 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) ###
design -reset
read_verilog ./dynamic_part_select/reset_test.v
Expand Down
20 changes: 20 additions & 0 deletions tests/various/dynamic_part_select/forloop_select_nowrshmsk.v
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 9c3b4d7

Please sign in to comment.