43 lines
936 B
Verilog
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
|