iverilog/ivtest/ivltests/pr1719055.v

53 lines
1.5 KiB
Verilog

module array_assign();
parameter MSB = 1;
integer ii;
reg signed [2:0] ar_reg[0:MSB];
wire signed [4:0] as_wr;
// compiled with "-g2 -g2x"
// FAILED at this line
assign as_wr = {{2{ar_reg[0][2]}},ar_reg[1]};
always @(as_wr)
for(ii=0; ii<(MSB+1); ii=ii+1)
begin
$display(" %t ar_reg=%0d w_assign=%0d", $time, ar_reg[ii], as_wr);
$display(" %t ar_reg[0]=3'b%3b ar_reg[1]=3'b%3b", $time, ar_reg[0], ar_reg[1]);
$display(" %t as_wr=5'b%5b", $time, as_wr);
end
initial
begin
$display("\n*** module %m **************************************");
#10;
for(ii=0; ii<(MSB+1); ii=ii+1)
ar_reg[ii] <= 3'sd1;
#10;
for(ii=0; ii<(MSB+1); ii=ii+1)
ar_reg[ii] <= 3'sd0;
$display("\n\n");
end
endmodule
/* expected output - START
module array_assign
10 ar_reg=1 w_assign=1
10 ar_reg[0]=3'b001 ar_reg[1]=3'b001
10 as_wr=5'b00001
10 ar_reg=1 w_assign=1
10 ar_reg[0]=3'b001 ar_reg[1]=3'b001
10 as_wr=5'b00001
20 ar_reg=0 w_assign=0
20 ar_reg[0]=3'b000 ar_reg[1]=3'b000
20 as_wr=5'b00000
20 ar_reg=0 w_assign=0
20 ar_reg[0]=3'b000 ar_reg[1]=3'b000
20 as_wr=5'b00000
expected output - END */