iverilog/ivtest/ivltests/pr1002a.v

43 lines
936 B
Verilog

module top (
);
reg signed [13:0] datain;
wire signed [15:0] dataout;
assign dataout = datain <<< 2;
reg test_failed;
initial
begin
test_failed = 0;
#1 datain = 14'h0FFF;
#1 datain = 14'h0000;
#1 datain = 14'h1FFF;
#1 datain = 14'h1000;
#1 datain = 14'h2FFF;
#1 datain = 14'h2000;
#1 datain = 14'h3FFF;
#1 datain = 14'h3000;
#2;
if (test_failed)
$display("TEST FAILED :-(");
else
$display("TEST PASSED :-)");
end
wire signed [15:0] expected_dataout;
assign expected_dataout = $signed({datain[13:0], 2'b0});
always @(dataout)
if (expected_dataout != dataout)
begin
$display("datain = %d dataout = %d expected = %d ... CHECK FAILED", datain, dataout, expected_dataout);
test_failed = 1;
end
else
$display("datain = %d dataout = %d expected = %d ... CHECK PASSED", datain, dataout, expected_dataout);
endmodule // top