iverilog/ivtest/blif/blif_sign_ext_tb.v

42 lines
972 B
Coq
Raw Normal View History

/*
* This is a post-synthesis test for the blif_sign_ext.v test. Run this
* simulation in these steps:
*
* $ iverilog -tblif -o foo.blif blif_sign_ext.v
* $ abc
* abc 01> read_blif foo.blif
* abc 02> write_verilog foo.v
* abc 03> quit
* $ iverilog -g2009 -o foo.vvp blif_sign_ext_tb.v foo.v
* $ vvp foo.vvp
*/
module main;
parameter W=3, WO=5;
reg signed [W:0] D;
reg signed [WO:0] q;
wire [WO:0] Q;
sign_ext se(.\D[3] (D[3]), .\D[2] (D[2]), .\D[1] (D[1]), .\D[0] (D[0]),
.\Q[5] (Q[5]), .\Q[4] (Q[4]), .\Q[3] (Q[3]), .\Q[2] (Q[2]), .\Q[1] (Q[1]), .\Q[0] (Q[0]));
int ddx;
initial begin
for (ddx = 0 ; ddx < 1 << (W+1) ; ddx = ddx+1) begin
D = ddx[W:0];
q = D;
$display("D = %b, q = %b", D, q);
#1;
if (Q !== q) begin
$display("FAILED -- D=%b, Q=%b (should be %b)", D, Q, q);
$finish;
end
end
$display("PASSED");
end
endmodule // main