mirror of
https://github.com/verilator/verilator.git
synced 2025-01-07 15:17:36 +00:00
ef3c7bb6a2
Signed-off-by: Wilson Snyder <wsnyder@wsnyder.org>
56 lines
1.4 KiB
Verilog
56 lines
1.4 KiB
Verilog
// DESCRIPTION: Verilator: Verilog Test module
|
|
//
|
|
// This file ONLY is placed into the Public Domain, for any use,
|
|
// without warranty, 2018 by Wilson Snyder.
|
|
|
|
module t (/*AUTOARG*/
|
|
// Inputs
|
|
clk
|
|
);
|
|
|
|
input clk;
|
|
integer cyc; initial cyc=1;
|
|
|
|
reg [15:0] m_din;
|
|
|
|
reg [15:0] v1;
|
|
reg [15:0] v2;
|
|
reg [15:0] v3;
|
|
integer nosplit;
|
|
|
|
always @ (posedge clk) begin
|
|
// write needed so that V3Dead doesn't kill v0..v3
|
|
$write(" values %x %x %x\n", v1, v2, v3);
|
|
|
|
// Locally-set 'nosplit' will prevent the if from splitting
|
|
// in splitAlwaysAll(). This whole always block should still be
|
|
// intact when we call splitReorderAll() which is the subject
|
|
// of this test.
|
|
nosplit = cyc;
|
|
if (nosplit > 2) begin
|
|
/* S1 */ v1 <= 16'h0;
|
|
/* S2 */ v1 <= m_din;
|
|
/* S3 */ if (m_din == 16'h0) begin
|
|
/* X1 */ v2 <= v1;
|
|
/* X2 */ v3 <= v2;
|
|
end
|
|
end
|
|
|
|
// We expect to swap S2 and S3, and to swap X1 and X2.
|
|
// We can check that this worked by the absense of dly vars
|
|
// in the generated output; if the reorder fails (or is disabled)
|
|
// we should see dly vars for v1 and v2.
|
|
end
|
|
|
|
always @ (posedge clk) begin
|
|
if (cyc!=0) begin
|
|
cyc<=cyc+1;
|
|
if (cyc==7) begin
|
|
$write("*-* All Finished *-*\n");
|
|
$finish;
|
|
end
|
|
end
|
|
end
|
|
|
|
endmodule
|