iverilog/ivtest/ivltests/pr2425055c.v

47 lines
992 B
Verilog

module top;
reg pass;
reg [1:0] in, shift, result;
reg signed [1:0] ins;
wire [1:0] ls = in << shift;
wire [1:0] als = in <<< shift;
wire [1:0] rs = in >> shift;
wire [1:0] rs2 = in >>> shift;
wire [1:0] ars = ins >> shift;
initial begin
pass = 1'b1;
in = 2'b01;
ins = 2'b10;
shift = 2'bx1;
#1
if (ls !== 2'bxx) begin
$display("Failed << (CA), expected 2'bxx, got %b", ls);
pass = 1'b0;
end
if (als !== 2'bxx) begin
$display("Failed <<< (CA), expected 2'bxx, got %b", als);
pass = 1'b0;
end
if (rs !== 2'bxx) begin
$display("Failed >> (CA), expected 2'bxx, got %b", rs);
pass = 1'b0;
end
if (rs2 !== 2'bxx) begin
$display("Failed >>> (CA), expected 2'bxx, got %b", rs2);
pass = 1'b0;
end
if (ars !== 2'bxx) begin
$display("Failed >>> (signed, CA), expected 2'bxx, got %b", ars);
pass = 1'b0;
end
if (pass) $display("PASSED");
end
endmodule