iverilog/ivtest/ivltests/br_gh703.v

45 lines
680 B
Verilog

module test;
logic [7:0] dout;
logic [7:0] sel;
for (genvar i = 0; i < 8; i++) begin
if (i == 0) begin
assign dout[i] = 1'b0;
end else if (i == 1) begin
assign dout[i] = 1'b1;
end else begin
// using always block reports error
always @(*) begin
if (sel[i]) dout[i] = 1'b1;
else dout[i] = 1'b0;
end
end
end
logic [7:0] expected;
reg failed = 0;
initial begin
sel = 8'd1;
repeat (8) begin
#1 $display("%b %b", sel, dout);
expected = sel & 8'b11111100 | 8'b00000010;
if (dout !== expected) failed = 1;
sel = sel << 1;
end
if (failed)
$display("FAILED");
else
$display("PASSED");
end
endmodule