iverilog/ivtest/ivltests/pr531b.v

65 lines
2.4 KiB
Verilog

module example;
reg [3:0] mem [0:7];
reg [3:0] addr;
wire [3:0] m0 = mem[0];
wire [3:0] m1 = mem[1];
wire [3:0] m2 = mem[2];
wire [3:0] m3 = mem[3];
wire [3:0] m4 = mem[4];
wire [3:0] m5 = mem[5];
wire [3:0] m6 = mem[6];
wire [3:0] m7 = mem[7];
wire [3:0] maddr = mem[addr];
initial begin
$write( " " );
$display(
"time addr maddr m0 m1 m2 m3 m4 m5 m6 m7" );
$write( " " );
$display(
"---- ---- ----- ---- ---- ---- ---- ---- ---- ---- ----" );
$monitor( "%T %b %b %b %b %b %b %b %b %b %b",
$time, addr, maddr,
m0, m1, m2, m3, m4, m5, m6, m7 );
mem[0] = 8;
mem[1] = 1;
mem[2] = 2;
mem[3] = 3;
mem[4] = 4;
mem[5] = 5;
mem[6] = 6;
mem[7] = 7;
addr = 0; // 0
#100 addr = 1; // 100
#100 addr = 2; // 200
#100 addr = 3; // 300
#100 addr = 4; // 400
#100 addr = 5; // 500
#100 addr = 6; // 600
#100 addr = 7; // 700
#100 addr = 8; // 800
#100 addr = 4'b001x; // 900
#100 addr = 4'b01x0; // 1000
#100 addr = 4'b0x01; // 1100
#100 addr = 0; // 1200
#100 mem[addr] <= 9; // 1300
#100 addr = 3; // 1400
#100 mem[addr] <= 10; // 1500
#100 addr = 6; // 1600
#100 mem[addr] <= 11; // 1700
#100 addr = 8; // 1800
#100 mem[addr] <= 12; // 1900
#100 addr = 4'b010x; // 2000
#100 mem[addr] <= 13; // 2100
#100 addr = 4'b00x1; // 2200
#100 mem[addr] <= 14; // 2300
#100 addr = 4'b0x10; // 2400
#100 mem[addr] <= 15; // 2500
#100 addr = 4'bxxxx; // 2600
#100 mem[addr] <= 0; // 2700
#100 $display( "Finish at time %T", $time );
end
endmodule