iverilog/ivtest/ivltests/pr1879226.v

47 lines
833 B
Verilog

`timescale 1ns/1ns
module test;
reg pass = 1;
reg [3 : 0] A = 4'hf;
wire [3 : 0] a_lls, a_lrs;
reg signed [3 : 0] B = 7;
wire signed [3 : 0] b_als, b_ars;
assign a_lls = A<<4;
assign a_lrs = A>>4;
assign b_als = B<<<4;
assign b_ars = B>>>4;
initial begin
#1;
if (a_lls !== 4'b0) begin
$display("FAILED assigning logical left shift");
pass = 0;
end
if (a_lrs !== 4'b0) begin
$display("FAILED assigning logical right shift");
pass = 0;
end
if (b_als !== 4'b0) begin
$display("FAILED assigning arithmetic left shift");
pass = 0;
end
if (b_ars !== 4'h0) begin
$display("FAILED assigning arithmetic right shift (0)");
pass = 0;
end
#1 B = -8;
#1;
if (b_ars !== 4'hf) begin
$display("FAILED assigning arithmetic right shift (1)");
pass = 0;
end
if (pass) $display("PASSED");
end
endmodule // test