Skip to content

Commit e6dbecd

Browse files
add dp_mem
1 parent c5cd4c6 commit e6dbecd

File tree

4 files changed

+391
-4
lines changed

4 files changed

+391
-4
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
[General]
2+
file=gowin_dpb
3+
ipc_version=4
4+
module=Gowin_DPB
5+
target_device=gw2a18c-011
6+
type=ram_dpb
7+
version=1.0
8+
9+
[Config]
10+
Area=true
11+
BYTE_SIZE=0
12+
DEPTH_A=16384
13+
DEPTH_B=16384
14+
LANG=0
15+
READ_A=0
16+
READ_B=0
17+
RESET_MODE=true
18+
Speed=false
19+
WIDTH_A=8
20+
WIDTH_B=8
21+
WRITE_A=0
22+
WRITE_B=0
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-series GW2A
2+
-device GW2A-18
3+
-device_version C
4+
-package PBGA256
5+
-part_number GW2A-LV18PG256C8/I7
6+
7+
8+
-mod_name Gowin_DPB
9+
-file_name gowin_dpb
10+
-path /Users/nikitalukonenko/Desktop/FPGA/fpga-sdk-prj/tang20k/scr1/src/gowin_dpb/
11+
-type RAM_DP
12+
-file_type vlg
13+
-bram_b true
14+
-dev_type GW2A-18C
15+
-depth_0 16384
16+
-depth_1 16384
17+
-width_0 8
18+
-width_1 8
19+
-read_mode_0 bypass
20+
-read_mode_1 bypass
21+
-write_mode_0 normal
22+
-write_mode_1 normal
23+
-speed false
24+
-reset_mode sync
Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
1+
//Copyright (C)2014-2024 Gowin Semiconductor Corporation.
2+
//All rights reserved.
3+
//File Title: IP file
4+
//Tool Version: V1.9.10.03 Education
5+
//Part Number: GW2A-LV18PG256C8/I7
6+
//Device: GW2A-18
7+
//Device Version: C
8+
//Created Time: Sun Apr 13 11:25:13 2025
9+
10+
module Gowin_DPB (douta, doutb, clka, ocea, cea, reseta, wrea, clkb, oceb, ceb, resetb, wreb, ada, dina, adb, dinb);
11+
12+
output [7:0] douta;
13+
output [7:0] doutb;
14+
input clka;
15+
input ocea;
16+
input cea;
17+
input reseta;
18+
input wrea;
19+
input clkb;
20+
input oceb;
21+
input ceb;
22+
input resetb;
23+
input wreb;
24+
input [13:0] ada;
25+
input [7:0] dina;
26+
input [13:0] adb;
27+
input [7:0] dinb;
28+
29+
wire [14:0] dpb_inst_0_douta_w;
30+
wire [14:0] dpb_inst_0_doutb_w;
31+
wire [14:0] dpb_inst_1_douta_w;
32+
wire [14:0] dpb_inst_1_doutb_w;
33+
wire [14:0] dpb_inst_2_douta_w;
34+
wire [14:0] dpb_inst_2_doutb_w;
35+
wire [14:0] dpb_inst_3_douta_w;
36+
wire [14:0] dpb_inst_3_doutb_w;
37+
wire [14:0] dpb_inst_4_douta_w;
38+
wire [14:0] dpb_inst_4_doutb_w;
39+
wire [14:0] dpb_inst_5_douta_w;
40+
wire [14:0] dpb_inst_5_doutb_w;
41+
wire [14:0] dpb_inst_6_douta_w;
42+
wire [14:0] dpb_inst_6_doutb_w;
43+
wire [14:0] dpb_inst_7_douta_w;
44+
wire [14:0] dpb_inst_7_doutb_w;
45+
wire gw_gnd;
46+
47+
assign gw_gnd = 1'b0;
48+
49+
DPB dpb_inst_0 (
50+
.DOA({dpb_inst_0_douta_w[14:0],douta[0]}),
51+
.DOB({dpb_inst_0_doutb_w[14:0],doutb[0]}),
52+
.CLKA(clka),
53+
.OCEA(ocea),
54+
.CEA(cea),
55+
.RESETA(reseta),
56+
.WREA(wrea),
57+
.CLKB(clkb),
58+
.OCEB(oceb),
59+
.CEB(ceb),
60+
.RESETB(resetb),
61+
.WREB(wreb),
62+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
63+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
64+
.ADA(ada[13:0]),
65+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[0]}),
66+
.ADB(adb[13:0]),
67+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[0]})
68+
);
69+
70+
defparam dpb_inst_0.READ_MODE0 = 1'b0;
71+
defparam dpb_inst_0.READ_MODE1 = 1'b0;
72+
defparam dpb_inst_0.WRITE_MODE0 = 2'b00;
73+
defparam dpb_inst_0.WRITE_MODE1 = 2'b00;
74+
defparam dpb_inst_0.BIT_WIDTH_0 = 1;
75+
defparam dpb_inst_0.BIT_WIDTH_1 = 1;
76+
defparam dpb_inst_0.BLK_SEL_0 = 3'b000;
77+
defparam dpb_inst_0.BLK_SEL_1 = 3'b000;
78+
defparam dpb_inst_0.RESET_MODE = "SYNC";
79+
80+
DPB dpb_inst_1 (
81+
.DOA({dpb_inst_1_douta_w[14:0],douta[1]}),
82+
.DOB({dpb_inst_1_doutb_w[14:0],doutb[1]}),
83+
.CLKA(clka),
84+
.OCEA(ocea),
85+
.CEA(cea),
86+
.RESETA(reseta),
87+
.WREA(wrea),
88+
.CLKB(clkb),
89+
.OCEB(oceb),
90+
.CEB(ceb),
91+
.RESETB(resetb),
92+
.WREB(wreb),
93+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
94+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
95+
.ADA(ada[13:0]),
96+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[1]}),
97+
.ADB(adb[13:0]),
98+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[1]})
99+
);
100+
101+
defparam dpb_inst_1.READ_MODE0 = 1'b0;
102+
defparam dpb_inst_1.READ_MODE1 = 1'b0;
103+
defparam dpb_inst_1.WRITE_MODE0 = 2'b00;
104+
defparam dpb_inst_1.WRITE_MODE1 = 2'b00;
105+
defparam dpb_inst_1.BIT_WIDTH_0 = 1;
106+
defparam dpb_inst_1.BIT_WIDTH_1 = 1;
107+
defparam dpb_inst_1.BLK_SEL_0 = 3'b000;
108+
defparam dpb_inst_1.BLK_SEL_1 = 3'b000;
109+
defparam dpb_inst_1.RESET_MODE = "SYNC";
110+
111+
DPB dpb_inst_2 (
112+
.DOA({dpb_inst_2_douta_w[14:0],douta[2]}),
113+
.DOB({dpb_inst_2_doutb_w[14:0],doutb[2]}),
114+
.CLKA(clka),
115+
.OCEA(ocea),
116+
.CEA(cea),
117+
.RESETA(reseta),
118+
.WREA(wrea),
119+
.CLKB(clkb),
120+
.OCEB(oceb),
121+
.CEB(ceb),
122+
.RESETB(resetb),
123+
.WREB(wreb),
124+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
125+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
126+
.ADA(ada[13:0]),
127+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[2]}),
128+
.ADB(adb[13:0]),
129+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[2]})
130+
);
131+
132+
defparam dpb_inst_2.READ_MODE0 = 1'b0;
133+
defparam dpb_inst_2.READ_MODE1 = 1'b0;
134+
defparam dpb_inst_2.WRITE_MODE0 = 2'b00;
135+
defparam dpb_inst_2.WRITE_MODE1 = 2'b00;
136+
defparam dpb_inst_2.BIT_WIDTH_0 = 1;
137+
defparam dpb_inst_2.BIT_WIDTH_1 = 1;
138+
defparam dpb_inst_2.BLK_SEL_0 = 3'b000;
139+
defparam dpb_inst_2.BLK_SEL_1 = 3'b000;
140+
defparam dpb_inst_2.RESET_MODE = "SYNC";
141+
142+
DPB dpb_inst_3 (
143+
.DOA({dpb_inst_3_douta_w[14:0],douta[3]}),
144+
.DOB({dpb_inst_3_doutb_w[14:0],doutb[3]}),
145+
.CLKA(clka),
146+
.OCEA(ocea),
147+
.CEA(cea),
148+
.RESETA(reseta),
149+
.WREA(wrea),
150+
.CLKB(clkb),
151+
.OCEB(oceb),
152+
.CEB(ceb),
153+
.RESETB(resetb),
154+
.WREB(wreb),
155+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
156+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
157+
.ADA(ada[13:0]),
158+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[3]}),
159+
.ADB(adb[13:0]),
160+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[3]})
161+
);
162+
163+
defparam dpb_inst_3.READ_MODE0 = 1'b0;
164+
defparam dpb_inst_3.READ_MODE1 = 1'b0;
165+
defparam dpb_inst_3.WRITE_MODE0 = 2'b00;
166+
defparam dpb_inst_3.WRITE_MODE1 = 2'b00;
167+
defparam dpb_inst_3.BIT_WIDTH_0 = 1;
168+
defparam dpb_inst_3.BIT_WIDTH_1 = 1;
169+
defparam dpb_inst_3.BLK_SEL_0 = 3'b000;
170+
defparam dpb_inst_3.BLK_SEL_1 = 3'b000;
171+
defparam dpb_inst_3.RESET_MODE = "SYNC";
172+
173+
DPB dpb_inst_4 (
174+
.DOA({dpb_inst_4_douta_w[14:0],douta[4]}),
175+
.DOB({dpb_inst_4_doutb_w[14:0],doutb[4]}),
176+
.CLKA(clka),
177+
.OCEA(ocea),
178+
.CEA(cea),
179+
.RESETA(reseta),
180+
.WREA(wrea),
181+
.CLKB(clkb),
182+
.OCEB(oceb),
183+
.CEB(ceb),
184+
.RESETB(resetb),
185+
.WREB(wreb),
186+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
187+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
188+
.ADA(ada[13:0]),
189+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[4]}),
190+
.ADB(adb[13:0]),
191+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[4]})
192+
);
193+
194+
defparam dpb_inst_4.READ_MODE0 = 1'b0;
195+
defparam dpb_inst_4.READ_MODE1 = 1'b0;
196+
defparam dpb_inst_4.WRITE_MODE0 = 2'b00;
197+
defparam dpb_inst_4.WRITE_MODE1 = 2'b00;
198+
defparam dpb_inst_4.BIT_WIDTH_0 = 1;
199+
defparam dpb_inst_4.BIT_WIDTH_1 = 1;
200+
defparam dpb_inst_4.BLK_SEL_0 = 3'b000;
201+
defparam dpb_inst_4.BLK_SEL_1 = 3'b000;
202+
defparam dpb_inst_4.RESET_MODE = "SYNC";
203+
204+
DPB dpb_inst_5 (
205+
.DOA({dpb_inst_5_douta_w[14:0],douta[5]}),
206+
.DOB({dpb_inst_5_doutb_w[14:0],doutb[5]}),
207+
.CLKA(clka),
208+
.OCEA(ocea),
209+
.CEA(cea),
210+
.RESETA(reseta),
211+
.WREA(wrea),
212+
.CLKB(clkb),
213+
.OCEB(oceb),
214+
.CEB(ceb),
215+
.RESETB(resetb),
216+
.WREB(wreb),
217+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
218+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
219+
.ADA(ada[13:0]),
220+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[5]}),
221+
.ADB(adb[13:0]),
222+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[5]})
223+
);
224+
225+
defparam dpb_inst_5.READ_MODE0 = 1'b0;
226+
defparam dpb_inst_5.READ_MODE1 = 1'b0;
227+
defparam dpb_inst_5.WRITE_MODE0 = 2'b00;
228+
defparam dpb_inst_5.WRITE_MODE1 = 2'b00;
229+
defparam dpb_inst_5.BIT_WIDTH_0 = 1;
230+
defparam dpb_inst_5.BIT_WIDTH_1 = 1;
231+
defparam dpb_inst_5.BLK_SEL_0 = 3'b000;
232+
defparam dpb_inst_5.BLK_SEL_1 = 3'b000;
233+
defparam dpb_inst_5.RESET_MODE = "SYNC";
234+
235+
DPB dpb_inst_6 (
236+
.DOA({dpb_inst_6_douta_w[14:0],douta[6]}),
237+
.DOB({dpb_inst_6_doutb_w[14:0],doutb[6]}),
238+
.CLKA(clka),
239+
.OCEA(ocea),
240+
.CEA(cea),
241+
.RESETA(reseta),
242+
.WREA(wrea),
243+
.CLKB(clkb),
244+
.OCEB(oceb),
245+
.CEB(ceb),
246+
.RESETB(resetb),
247+
.WREB(wreb),
248+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
249+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
250+
.ADA(ada[13:0]),
251+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[6]}),
252+
.ADB(adb[13:0]),
253+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[6]})
254+
);
255+
256+
defparam dpb_inst_6.READ_MODE0 = 1'b0;
257+
defparam dpb_inst_6.READ_MODE1 = 1'b0;
258+
defparam dpb_inst_6.WRITE_MODE0 = 2'b00;
259+
defparam dpb_inst_6.WRITE_MODE1 = 2'b00;
260+
defparam dpb_inst_6.BIT_WIDTH_0 = 1;
261+
defparam dpb_inst_6.BIT_WIDTH_1 = 1;
262+
defparam dpb_inst_6.BLK_SEL_0 = 3'b000;
263+
defparam dpb_inst_6.BLK_SEL_1 = 3'b000;
264+
defparam dpb_inst_6.RESET_MODE = "SYNC";
265+
266+
DPB dpb_inst_7 (
267+
.DOA({dpb_inst_7_douta_w[14:0],douta[7]}),
268+
.DOB({dpb_inst_7_doutb_w[14:0],doutb[7]}),
269+
.CLKA(clka),
270+
.OCEA(ocea),
271+
.CEA(cea),
272+
.RESETA(reseta),
273+
.WREA(wrea),
274+
.CLKB(clkb),
275+
.OCEB(oceb),
276+
.CEB(ceb),
277+
.RESETB(resetb),
278+
.WREB(wreb),
279+
.BLKSELA({gw_gnd,gw_gnd,gw_gnd}),
280+
.BLKSELB({gw_gnd,gw_gnd,gw_gnd}),
281+
.ADA(ada[13:0]),
282+
.DIA({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dina[7]}),
283+
.ADB(adb[13:0]),
284+
.DIB({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,dinb[7]})
285+
);
286+
287+
defparam dpb_inst_7.READ_MODE0 = 1'b0;
288+
defparam dpb_inst_7.READ_MODE1 = 1'b0;
289+
defparam dpb_inst_7.WRITE_MODE0 = 2'b00;
290+
defparam dpb_inst_7.WRITE_MODE1 = 2'b00;
291+
defparam dpb_inst_7.BIT_WIDTH_0 = 1;
292+
defparam dpb_inst_7.BIT_WIDTH_1 = 1;
293+
defparam dpb_inst_7.BLK_SEL_0 = 3'b000;
294+
defparam dpb_inst_7.BLK_SEL_1 = 3'b000;
295+
defparam dpb_inst_7.RESET_MODE = "SYNC";
296+
297+
endmodule //Gowin_DPB

0 commit comments

Comments
 (0)