Merge pull request #2063 from boqwxp/techmapped-firrtl
[yosys.git] / techlibs / efinix / brams_map.v
1 module \$__EFINIX_5K (CLK2, CLK3, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN);
2 parameter CFG_ABITS = 8;
3 parameter CFG_DBITS = 20;
4 parameter CFG_ENABLE_A = 1;
5
6 parameter CLKPOL2 = 1;
7 parameter CLKPOL3 = 1;
8 parameter [5119:0] INIT = 5119'bx;
9 parameter TRANSP2 = 0;
10
11 input CLK2;
12 input CLK3;
13
14 input [CFG_ABITS-1:0] A1ADDR;
15 input [CFG_DBITS-1:0] A1DATA;
16 input [CFG_ENABLE_A-1:0] A1EN;
17
18 input [CFG_ABITS-1:0] B1ADDR;
19 output [CFG_DBITS-1:0] B1DATA;
20 input B1EN;
21
22 localparam WRITEMODE_A = TRANSP2 ? "WRITE_FIRST" : "READ_FIRST";
23
24 EFX_RAM_5K #(
25 .READ_WIDTH(CFG_DBITS),
26 .WRITE_WIDTH(CFG_DBITS),
27 .OUTPUT_REG(1'b0),
28 .RCLK_POLARITY(1'b1),
29 .RE_POLARITY(1'b1),
30 .WCLK_POLARITY(1'b1),
31 .WE_POLARITY(1'b1),
32 .WCLKE_POLARITY(1'b1),
33 .WRITE_MODE(WRITEMODE_A),
34 .INIT_0(INIT[ 0*256 +: 256]),
35 .INIT_1(INIT[ 1*256 +: 256]),
36 .INIT_2(INIT[ 2*256 +: 256]),
37 .INIT_3(INIT[ 3*256 +: 256]),
38 .INIT_4(INIT[ 4*256 +: 256]),
39 .INIT_5(INIT[ 5*256 +: 256]),
40 .INIT_6(INIT[ 6*256 +: 256]),
41 .INIT_7(INIT[ 7*256 +: 256]),
42 .INIT_8(INIT[ 8*256 +: 256]),
43 .INIT_9(INIT[ 9*256 +: 256]),
44 .INIT_A(INIT[10*256 +: 256]),
45 .INIT_B(INIT[11*256 +: 256]),
46 .INIT_C(INIT[12*256 +: 256]),
47 .INIT_D(INIT[13*256 +: 256]),
48 .INIT_E(INIT[14*256 +: 256]),
49 .INIT_F(INIT[15*256 +: 256]),
50 .INIT_10(INIT[16*256 +: 256]),
51 .INIT_11(INIT[17*256 +: 256]),
52 .INIT_12(INIT[18*256 +: 256]),
53 .INIT_13(INIT[19*256 +: 256])
54 ) _TECHMAP_REPLACE_ (
55 .WDATA(A1DATA),
56 .WADDR(A1ADDR),
57 .WE(A1EN),
58 .WCLK(CLK2),
59 .WCLKE(1'b1),
60 .RDATA(B1DATA),
61 .RADDR(B1ADDR),
62 .RE(B1EN),
63 .RCLK(CLK3)
64 );
65 endmodule