2 module memtest00(clk, setA, setB, y);
8 always @(posedge clk) begin
9 if (setA) mem[0] <= 0; // this is line 9
10 if (setB) mem[0] <= 1; // this is line 10
17 // ----------------------------------------------------------
19 module memtest01(clk, wr_en, wr_addr, wr_value, rd_addr, rd_value);
22 input [3:0] wr_addr, rd_addr;
24 output reg [7:0] rd_value;
26 reg [7:0] data [15:0];
30 data[wr_addr] <= wr_value;
33 rd_value <= data[rd_addr];
37 // ----------------------------------------------------------
39 module memtest02(clk, setA, setB, addr, bit, y1, y2, y3, y4);
41 input clk, setA, setB;
52 always @(posedge clk) begin
69 y1 <= mem1[addr][bit];
70 y2 <= mem2[addr][bit];
73 assign y3 = mem1[addr][bit];
74 assign y4 = mem2[addr][bit];
78 // ----------------------------------------------------------
80 module memtest03(clk, wr_addr, wr_data, wr_enable, rd_addr, rd_data);
83 input [3:0] wr_addr, wr_data, rd_addr;
84 output reg [3:0] rd_data;
86 reg [3:0] memory [0:15];
88 always @(posedge clk) begin
90 memory[wr_addr] <= wr_data;
91 rd_data <= memory[rd_addr];
96 // ----------------------------------------------------------
98 module memtest04(clk, wr_addr, wr_data, wr_enable, rd_addr, rd_data);
100 input clk, wr_enable;
101 input [3:0] wr_addr, wr_data, rd_addr;
102 output [3:0] rd_data;
105 reg [3:0] memory [0:15];
107 always @(posedge clk) begin
109 memory[wr_addr] <= wr_data;
110 rd_addr_buf <= rd_addr;
113 assign rd_data = memory[rd_addr_buf];
117 // ----------------------------------------------------------
119 module memtest05(clk, addr, wdata, rdata, wen);
124 output reg [7:0] rdata;
130 always @(posedge clk) begin
131 for (i = 0; i < 4; i = i+1)
132 if (wen[i]) mem[addr][i*2 +: 2] <= wdata[i*2 +: 2];
138 // ----------------------------------------------------------
140 module memtest06_sync(input clk, input rst, input [2:0] idx, input [7:0] din, output [7:0] dout);
141 (* gentb_constant=0 *) wire rst;
142 reg [7:0] test [0:7];
144 always @(posedge clk) begin
146 for (i=0; i<8; i=i+1)
149 test[0][2] <= din[1];
150 test[0][5] <= test[0][2];
151 test[idx][3] <= din[idx];
152 test[idx][6] <= test[idx][2];
153 test[idx][idx] <= !test[idx][idx];
156 assign dout = test[idx];
159 module memtest06_async(input clk, input rst, input [2:0] idx, input [7:0] din, output [7:0] dout);
160 (* gentb_constant=0 *) wire rst;
161 reg [7:0] test [0:7];
163 always @(posedge clk or posedge rst) begin
165 for (i=0; i<8; i=i+1)
168 test[0][2] <= din[1];
169 test[0][5] <= test[0][2];
170 test[idx][3] <= din[idx];
171 test[idx][6] <= test[idx][2];
172 test[idx][idx] <= !test[idx][idx];
175 assign dout = test[idx];
178 // ----------------------------------------------------------
180 module memtest07(clk, addr, woffset, wdata, rdata);
186 output reg [7:0] rdata;
191 always @(posedge clk) begin
192 mem[addr][woffset +: 4] <= wdata;
198 // ----------------------------------------------------------
200 module memtest08(input clk, input [3:0] a, b, c, output reg [3:0] y);
201 reg [3:0] mem [0:15] [0:15];
202 always @(posedge clk) begin
208 // ----------------------------------------------------------
212 input [3:0] a_addr, a_din, b_addr, b_din,
214 output reg [3:0] a_dout, b_dout
216 reg [3:0] memory [10:35];
218 always @(posedge clk) begin
220 memory[10 + a_addr] <= a_din;
221 a_dout <= memory[10 + a_addr];
224 always @(posedge clk) begin
225 if (b_wen && (10 + a_addr != 20 + b_addr || !a_wen))
226 memory[20 + b_addr] <= b_din;
227 b_dout <= memory[20 + b_addr];
231 // ----------------------------------------------------------
233 module memtest10(input clk, input [5:0] din, output [5:0] dout);
234 reg [5:0] queue [0:3];
237 always @(posedge clk) begin
239 for (i = 1; i < 4; i=i+1) begin
240 queue[i] <= queue[i-1];
244 assign dout = queue[3];
247 // ----------------------------------------------------------
249 module memtest11(clk, wen, waddr, raddr, wdata, rdata);
251 input [1:0] waddr, raddr;
257 assign rdata = mem[raddr];
259 always @(posedge clk) begin
263 mem[waddr] <= mem[waddr];
267 // ----------------------------------------------------------
277 {ram[adr], q} <= {din, ram[adr]};
280 // ----------------------------------------------------------
284 input [1:0] a1, a2, a3, a4, a5, a6,
285 input [3:0] off1, off2,
287 input [3:0] din2, din3,
288 output reg [3:0] dout1, dout2,
289 output reg [31:5] dout3
291 reg [31:5] mem [0:3];
293 always @(posedge clk) begin
301 mem[a2][14:11] <= din2;
302 mem[a3][5 + off1 +: 4] <= din3;
303 dout1 <= mem[a4][12:9];
304 dout2 <= mem[a5][5 + off2 +: 4];