|
1 | 1 | module $__NX_RAM_ (...);
|
2 | 2 |
|
3 | 3 | parameter INIT = 0;
|
4 |
| -parameter OPTION_RESETMODE = "SYNC"; |
| 4 | +parameter OPTION_STD_MODE = ""; |
5 | 5 |
|
6 |
| -parameter PORT_A_WIDTH = 9; |
| 6 | +parameter WIDTH = 24; |
7 | 7 | parameter PORT_A_CLK_POL = 1;
|
8 |
| -parameter PORT_A_OPTION_WRITEMODE = "NORMAL"; |
9 | 8 |
|
10 | 9 | input PORT_A_CLK;
|
11 | 10 | input PORT_A_CLK_EN;
|
12 | 11 | input PORT_A_WR_EN;
|
13 |
| -input PORT_A_RD_SRST; |
14 |
| -input PORT_A_RD_ARST; |
15 |
| -input [12:0] PORT_A_ADDR; |
16 |
| -input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; |
17 |
| -output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; |
| 12 | +input [15:0] PORT_A_ADDR; |
| 13 | +input [WIDTH-1:0] PORT_A_WR_DATA; |
| 14 | +wire [24-1:0] A_DATA; |
| 15 | +output [WIDTH-1:0] PORT_A_RD_DATA; |
18 | 16 |
|
19 |
| -parameter PORT_B_WIDTH = 9; |
20 | 17 | parameter PORT_B_CLK_POL = 1;
|
21 |
| -parameter PORT_B_OPTION_WRITEMODE = "NORMAL"; |
22 | 18 |
|
23 | 19 | input PORT_B_CLK;
|
24 | 20 | input PORT_B_CLK_EN;
|
25 | 21 | input PORT_B_WR_EN;
|
26 |
| -input PORT_B_RD_SRST; |
27 |
| -input PORT_B_RD_ARST; |
28 |
| -input [12:0] PORT_B_ADDR; |
29 |
| -input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; |
30 |
| -output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; |
| 22 | +input [15:0] PORT_B_ADDR; |
| 23 | +input [WIDTH-1:0] PORT_B_WR_DATA; |
| 24 | +wire [24-1:0] B_DATA; |
| 25 | +output [WIDTH-1:0] PORT_B_RD_DATA; |
| 26 | + |
| 27 | +generate |
| 28 | + if (OPTION_STD_MODE == "NOECC_48kx1") begin |
| 29 | + assign A_DATA = {24{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 30 | + assign B_DATA = {24{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 31 | + end |
| 32 | + else if (OPTION_STD_MODE == "NOECC_24kx2") begin |
| 33 | + assign A_DATA = {12{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 34 | + assign B_DATA = {12{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 35 | + end |
| 36 | + else if (OPTION_STD_MODE == "NOECC_16kx3") begin |
| 37 | + assign A_DATA = {8{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 38 | + assign B_DATA = {8{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 39 | + end |
| 40 | + else if (OPTION_STD_MODE == "NOECC_12kx4") begin |
| 41 | + assign A_DATA = {6{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 42 | + assign B_DATA = {6{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 43 | + end |
| 44 | + else if (OPTION_STD_MODE == "NOECC_8kx6") begin |
| 45 | + assign A_DATA = {4{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 46 | + assign B_DATA = {4{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 47 | + end |
| 48 | + else if (OPTION_STD_MODE == "NOECC_6kx8") begin |
| 49 | + assign A_DATA = {3{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 50 | + assign B_DATA = {3{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 51 | + end |
| 52 | + else if (OPTION_STD_MODE == "NOECC_4kx12") begin |
| 53 | + assign A_DATA = {2{PORT_A_WR_DATA[WIDTH-1:0]}}; |
| 54 | + assign B_DATA = {2{PORT_B_WR_DATA[WIDTH-1:0]}}; |
| 55 | + end |
| 56 | + else if (OPTION_STD_MODE == "NOECC_2kx24") begin |
| 57 | + assign A_DATA = PORT_A_WR_DATA; |
| 58 | + assign B_DATA = PORT_B_WR_DATA; |
| 59 | + end |
| 60 | +endgenerate |
31 | 61 |
|
32 | 62 | NX_RAM_WRAP #(
|
| 63 | + .std_mode(OPTION_STD_MODE), |
| 64 | + .mcka_edge(PORT_A_CLK_POL == 1 ? 1'b0 : 1'b1), |
| 65 | + .mckb_edge(PORT_B_CLK_POL == 1 ? 1'b0 : 1'b1), |
33 | 66 | ) _TECHMAP_REPLACE_ (
|
34 | 67 | .ACK(PORT_A_CLK),
|
| 68 | + //.ACKS(PORT_A_CLK), |
| 69 | + //.ACKD(), // Not used in Non-ECC modes |
| 70 | + //.ACKR(), |
| 71 | + //.AR(), |
| 72 | + //.ACOR(), |
| 73 | + //.AERR(), |
| 74 | + .ACS(PORT_A_CLK_EN), |
| 75 | + .AWE(PORT_A_WR_EN), |
| 76 | + |
35 | 77 | .AA(PORT_A_ADDR),
|
36 |
| - .AI(PORT_A_WR_DATA), |
| 78 | + .AI(A_DATA), |
37 | 79 | .AO(PORT_A_RD_DATA),
|
38 | 80 |
|
39 | 81 | .BCK(PORT_B_CLK),
|
40 |
| - .BA(PORT_B_ADDR), |
| 82 | + //.BCKC(PORT_B_CLK), |
| 83 | + //.BCKD(), // Not used in Non-ECC modes |
| 84 | + //.BCKR() |
| 85 | + //.BR(), |
| 86 | + //.BCOR(), |
| 87 | + //.BERR(), |
| 88 | + .BCS(PORT_B_CLK_EN), |
| 89 | + .BWE(PORT_B_WR_EN), |
| 90 | + .BA(B_DATA), |
41 | 91 | .BI(PORT_B_WR_DATA),
|
42 | 92 | .BO(PORT_B_RD_DATA)
|
43 | 93 | );
|
|
0 commit comments