-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can't compile FPGA for tn_vdp_v2_v9918 with latest version GoWin V1.9.9.03 Education (64-Bit) build (73833) #22
Comments
… On Thu, Jul 4, 2024 at 9:46 PM wiesl ***@***.***> wrote:
Hello,
I'm getting the following error:
Parsing netlist file
"C:\Users\username\Desktop\tn_vdp\fpga\tn_vdp_v2_v9918\impl\gwsynthesis\
tn_vdp.vg" completed
ERROR (PA2122) : Not support 'mem_r_mem_r_0_0_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_1_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_2_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_3_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_4_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_5_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_6_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_7_s'(DPB) WRITE_MODE0 = 2'b10,
please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'linebuf1_linebuf1_0_0_s'(DPX9B) WRITE_MODE0
= 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'linebuf2_linebuf2_0_0_s'(DPX9B) WRITE_MODE0
= 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'colram_colram_0_0_s'(DPB) WRITE_MODE1 =
2'b10, please change write mode WRITE_MODE1 = 2'b00 or 2'b01.
NOTE (PA0005) : Processing netlist completed with errors
Looks like this is a problem, with a read before write of the dual ported
RAM part in newer versions of GoWin. That has been removed according to the
release notes. Any way to fix it?
Do you have an older version of GoWin to download?
Didn't try other versions but guess same problem with 9k version.
Some research I already made after using search engines:
Picotiny example fails during Place & Route #19
<#19>
sipeed/TangNano-9K-example#19
<sipeed/TangNano-9K-example#19>
Found it: Tools -> IP Core Generator -> Hard Module -> Memory -> Block
Memory -> DPB
MiSTery on Tang Nano
https://www.atari-forum.com/viewtopic.php?t=43080&start=200
The manifestation of this seems to have changed over the various GoWin
versions. The current MiSTeryNano synthesizes successful with the latest
GoWin 1.9.9 (no beta).
Form Gowin BSRAM & SSRAM User Guide
https://cdn.gowinsemi.com.cn/UG285E.pdf
Read before write in dual port mode was removed.
Bug in Gowin while using Tang Nano 9k?
https://www.reddit.com/r/GowinFPGA/comments/1d1t2to/bug_in_gowin_while_using_tang_nano_9k/
In manual "Gowin BSRAM & SSRAM User Guide" page 6:
GW1N-9/GW1N-1S/GW1NR-9/GW1NS-4 series does not support dual port mode.
but Gowin EDA synthesizes and does place and routes DPB (dual port block
ram) + it is available as an IP (without the "byte addressable" in UI but
generated in Verilog)
p.s. I solved my problem by using a combination of BSRAM pROM and SP
instead of dual port RAM. Not a resourceful use of block RAM but meets the
specs and I couldn't use 100% of it anyway.
That the blocking assignment "fixes" the issue makes sense since the
device does not support "Read-Before-Write". Making a blocking assignment
points out that write is before read so it does make sense.
Still an issue that Gowin IDE generates a netlist that is not supported.
Better would be a message at synthesize and indication of how to fix it.
Picotiny example fails during Place & Route #19
<#19>
sipeed/TangNano-9K-example#19
<sipeed/TangNano-9K-example#19>
***@***.***
<sipeed/TangNano-9K-example@c3b7957>
https://cdn.gowinsemi.com.cn/SUG550E.pdf chapter 4.2 is what you want to
work from.
Changing from asynchronous assign to synchronous solves the problem.
Thnx.
Ciao
This fixes it but I guess it doesn't work anymore:
diff --git a/fpga/tn_vdp_v2_v9918/src/ram16k.v
b/fpga/tn_vdp_v2_v9918/src/ram16k.v
index d5aae63..b9b9aa8 100644
--- a/fpga/tn_vdp_v2_v9918/src/ram16k.v
+++ b/fpga/tn_vdp_v2_v9918/src/ram16k.v
@@ -18,8 +18,8 @@ end
always @(posedge clk) begin
-
dout_r <= mem_r[addr];
-
dout2_r <= mem_r[addr2];
-
//dout_r = mem_r[addr];
-
//dout2_r = mem_r[addr2];
if (we == 1) begin
mem_r[addr] <= din;
end
diff --git a/fpga/tn_vdp_v2_v9918/src/f18a/f18a_color.vhd
b/fpga/tn_vdp_v2_v9918/src/f18a/f18a_color.vhd
index ccf3789..f3fe08c 100644
--- a/fpga/tn_vdp_v2_v9918/src/f18a/f18a_color.vhd
+++ b/fpga/tn_vdp_v2_v9918/src/f18a/f18a_color.vhd
@@ -167,7 +167,7 @@ begin
begin
if rising_edge(clk) then
if we1 = '1' then
-
colram(to_integer(unsigned(addr1))) <= din;
-
-- colram(to_integer(unsigned(addr1))) <= din;
end if;
-- to the GPU! :-)
diff --git a/fpga/tn_vdp_v2_v9918/src/f18a/f18a_sprites.vhd
b/fpga/tn_vdp_v2_v9918/src/f18a/f18a_sprites.vhd
index 275a2af..42d196e 100644
--- a/fpga/tn_vdp_v2_v9918/src/f18a/f18a_sprites.vhd
+++ b/fpga/tn_vdp_v2_v9918/src/f18a/f18a_sprites.vhd
@@ -214,8 +214,8 @@ begin
process (clk)
begin
if rising_edge(clk) then
-
dout1a <= linebuf1(to_integer(unsigned(addr1a)));
-
dout1b <= linebuf1(to_integer(unsigned(addr1b)));
-
--dout1a <= linebuf1(to_integer(unsigned(addr1a)));
-
--dout1b <= linebuf1(to_integer(unsigned(addr1b)));
if we1 = '1' then
linebuf1(to_integer(unsigned(addr1a))) <= din;
end if;
@@ -227,8 +227,8 @@ begin
process (clk)
begin
if rising_edge(clk) then
-
dout2a <= linebuf2(to_integer(unsigned(addr2a)));
-
dout2b <= linebuf2(to_integer(unsigned(addr2b)));
-
--dout2a <= linebuf2(to_integer(unsigned(addr2a)));
-
--dout2b <= linebuf2(to_integer(unsigned(addr2b)));
if we2 = '1' then
linebuf2(to_integer(unsigned(addr2a))) <= din;
end if;
—
Reply to this email directly, view it on GitHub
<#22>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACCJWU5QDYA2JFRR6DIRUVTZKYQKTAVCNFSM6AAAAABKMPZAZ2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGM4TCNZZGM2DOMY>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
Luis Felipe Antoniosi
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello,
I'm getting the following error:
Parsing netlist file "C:\Users\username\Desktop\tn_vdp\fpga\tn_vdp_v2_v9918\impl\gwsynthesis\tn_vdp.vg" completed
ERROR (PA2122) : Not support 'mem_r_mem_r_0_0_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_1_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_2_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_3_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_4_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_5_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_6_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'mem_r_mem_r_0_7_s'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'linebuf1_linebuf1_0_0_s'(DPX9B) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'linebuf2_linebuf2_0_0_s'(DPX9B) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01.
ERROR (PA2122) : Not support 'colram_colram_0_0_s'(DPB) WRITE_MODE1 = 2'b10, please change write mode WRITE_MODE1 = 2'b00 or 2'b01.
NOTE (PA0005) : Processing netlist completed with errors
Looks like this is a problem, with a read before write of the dual ported RAM part in newer versions of GoWin. That has been removed according to the release notes. Any way to fix it?
Do you have an older version of GoWin to download?
Didn't try other versions but guess same problem with 9k version.
Some research I already made after using search engines:
Picotiny example fails during Place & Route #19
sipeed/TangNano-9K-example#19
Found it: Tools -> IP Core Generator -> Hard Module -> Memory -> Block Memory -> DPB
MiSTery on Tang Nano
https://www.atari-forum.com/viewtopic.php?t=43080&start=200
The manifestation of this seems to have changed over the various GoWin versions. The current MiSTeryNano synthesizes successful with the latest GoWin 1.9.9 (no beta).
Form Gowin BSRAM & SSRAM User Guide
https://cdn.gowinsemi.com.cn/UG285E.pdf
Read before write in dual port mode was removed.
Bug in Gowin while using Tang Nano 9k?
https://www.reddit.com/r/GowinFPGA/comments/1d1t2to/bug_in_gowin_while_using_tang_nano_9k/
In manual "Gowin BSRAM & SSRAM User Guide" page 6:
GW1N-9/GW1N-1S/GW1NR-9/GW1NS-4 series does not support dual port mode.
but Gowin EDA synthesizes and does place and routes
DPB
(dual port block ram) + it is available as an IP (without the "byte addressable" in UI but generated in Verilog)p.s. I solved my problem by using a combination of BSRAM pROM and SP instead of dual port RAM. Not a resourceful use of block RAM but meets the specs and I couldn't use 100% of it anyway.
That the blocking assignment "fixes" the issue makes sense since the device does not support "Read-Before-Write". Making a blocking assignment points out that write is before read so it does make sense.
Still an issue that Gowin IDE generates a netlist that is not supported. Better would be a message at synthesize and indication of how to fix it.
Picotiny example fails during Place & Route #19
sipeed/TangNano-9K-example#19
sipeed/TangNano-9K-example@c3b7957
https://cdn.gowinsemi.com.cn/SUG550E.pdf chapter 4.2 is what you want to work from.
Changing from asynchronous assign to synchronous solves the problem.
Thnx.
Ciao
This fixes it but I guess it doesn't work anymore:
The text was updated successfully, but these errors were encountered: