iverilog/ivtest/vpi/by_index.v

39 lines
862 B
Verilog

module top;
reg [8:1] val;
wire [1:4] wval;
reg [3:0] wdrv;
real r_arr [1:8];
integer i_arr [8:1];
integer lp;
assign wval = wdrv;
initial begin
wdrv = 4'b1010;
for (lp=1; lp<=8; lp=lp+1) begin
val[lp] = lp % 2;
r_arr[lp] = lp + 0.25;
i_arr[lp] = lp - 1;
end
#1;
$check_val(val, 3, 1);
$check_val(wval, 4, 0);
$check_val(r_arr, 5, 5.25);
$check_val(i_arr, 2, 1);
$display("Original value is %b", val);
$put_val(val, 2, 1);
$put_val(val, 1, 0);
$display(" New value is %b", val);
$display("Original net value is %b", wval);
$put_val(wval, 2, 1);
$put_val(wval, 1, 0);
$display(" New net value is %b", wval);
#1;
// Verify that an update overrides the put value
wdrv = 4'b1001;
$display(" net value is now %b", wval);
end
endmodule