aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/xilinx/tests/bram2.v
blob: 0a6013ca66f5adb3643d98cf73f745443ec8b92d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module myram(
	input		  rd_clk,
	input	   [ 7:0] rd_addr,
	output reg [17:0] rd_data,
	input		  wr_clk,
	input		  wr_enable,
	input	   [ 7:0] wr_addr,
	input	   [17:0] wr_data
);
	reg [17:0] memory [0:255];
	integer i;

	function [17:0] hash(input [7:0] k);
		reg [31:0] x;
		begin
			x = {k, ~k, k, ~k};
			x = x ^ (x << 13);
			x = x ^ (x >> 17);
			x = x ^ (x << 5);
			hash = x;
		end
	endfunction

	initial begin
		for (i = 0; i < 256; i = i+1)
			memory[i] = hash(i);
	end

	always @(posedge rd_clk)
		rd_data <= memory[rd_addr];

	always @(posedge wr_clk)
		if (wr_enable)
			memory[wr_addr] <= wr_data;
endmodule
pan class="n">CFG_DBITS == 2 ? 2: CFG_DBITS == 4 ? 3: CFG_DBITS == 8 ? 4: CFG_DBITS == 9 ? 5: CFG_DBITS == 16 ? 6: CFG_DBITS == 18 ? 7: CFG_DBITS == 32 ? 8: CFG_DBITS == 36 ? 9: 'bx; localparam NUMWORDS = CFG_DBITS == 1 ? 8192: CFG_DBITS == 2 ? 4096: CFG_DBITS == 4 ? 2048: CFG_DBITS == 8 ? 1024: CFG_DBITS == 9 ? 1024: CFG_DBITS == 16 ? 512: CFG_DBITS == 18 ? 512: CFG_DBITS == 32 ? 256: CFG_DBITS == 36 ? 256: 'bx; altsyncram #(.clock_enable_input_b ("ALTERNATE" ), .clock_enable_input_a ("ALTERNATE" ), .clock_enable_output_b ("NORMAL" ), .clock_enable_output_a ("NORMAL" ), .wrcontrol_aclr_a ("NONE" ), .indata_aclr_a ("NONE" ), .address_aclr_a ("NONE" ), .outdata_aclr_a ("NONE" ), .outdata_reg_a ("UNREGISTERED"), .operation_mode ("SINGLE_PORT" ), .intended_device_family ("CYCLONE IVE" ), .outdata_reg_a ("UNREGISTERED"), .lpm_type ("altsyncram" ), .init_type ("unused" ), .ram_block_type ("AUTO" ), .lpm_hint ("ENABLE_RUNTIME_MOD=NO"), // Forced value .power_up_uninitialized ("FALSE"), .read_during_write_mode_port_a ("NEW_DATA_NO_NBE_READ"), // Forced value .width_byteena_a (1), // Forced value .numwords_b ( NUMWORDS ), .numwords_a ( NUMWORDS ), .widthad_b ( CFG_DBITS ), .width_b ( CFG_ABITS ), .widthad_a ( CFG_DBITS ), .width_a ( CFG_ABITS ) ) _TECHMAP_REPLACE_ ( .data_a(B1DATA), .address_a(B1ADDR), .wren_a(B1EN), .rden_a(A1EN), .q_a(A1DATA), .data_b(B1DATA), .address_b(0), .wren_b(1'b0), .rden_b(1'b0), .q_b(), .clock0(CLK2), .clock1(1'b1), // Unused in single port mode .clocken0(1'b1), .clocken1(1'b1), .clocken2(1'b1), .clocken3(1'b1), .aclr0(1'b0), .aclr1(1'b0), .addressstall_a(1'b0), .addressstall_b(1'b0)); endmodule