42 lines
972 B
Verilog
42 lines
972 B
Verilog
|
|
/*
|
|
* 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
|