Open okwatts opened 3 months ago
Not sure if the log file actually got attached so here is the contents:
Reading netlist file: "/home/larry/Downloads/TangNanoFPGA/Nano9K/BeebFpga/src/gowin/tang9k/impl/gwsynthesis/tang9k.vg" Parsing netlist file "/home/larry/Downloads/TangNanoFPGA/Nano9K/BeebFpga/src/gowin/tang9k/impl/gwsynthesis/tang9k.vg" completed ERROR (PA2122) : Not support 'rom_low'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01. ERROR (PA2122) : Not support 'rom_low'(DPB) WRITE_MODE1 = 2'b10, please change write mode WRITE_MODE1 = 2'b00 or 2'b01. ERROR (PA2122) : Not support 'rom_high'(DPB) WRITE_MODE0 = 2'b10, please change write mode WRITE_MODE0 = 2'b00 or 2'b01. ERROR (PA2122) : Not support 'rom_high'(DPB) WRITE_MODE1 = 2'b10, please change write mode WRITE_MODE1 = 2'b00 or 2'b01. NOTE (PA0005) : Processing netlist completed with errors
Someone hit a similar issue building AtomFPGA recently.
I think the issue here is a difference of behaviour between Gowin IDE 1.9.8.11 Education (which I was using in 2023) and Gowin IDE 1.9.9 / 1.9.10.
As I understand it, Gowin has removed support for the "Read-Before-Write" mode from their dual port RAM, likely because they discovered bugs in the Silicon.
I don't think it's important that we use this mode, normal mode should be fine.
So you can change the all values of WRITE_MODE0/WRITE_MODE1 from "10" to "00" in the following files:
tang9k/src/music5000_ram_dual_port.vhd
tang9k/src/saa5050_rom_dual_port.vhd
If I get time later today, I'll update to the latest Gowin IDE and try this myself.
Dave
Fixed in master, and tested with v1.9.9.03 Education.
Builds fine now, still not sure how to try this out, my Tang9K is setup for AtomFPGA at the moment.
As far as I remember
Generate the Tang9K Beeb ROM set by running:
cd roms
./make_rom_image_tang9k.sh
Program the generated ROM image file (tmp/tang_image_beeb_000000.bin
) into external flash at address 0.
Program the bitstream file (src/gowin/tang9k/impl/pnr/tang9k.fs
) into internal flash.
Okay that works nicely just a long flash for the ROM.
Yes, it's a shame external FLASH programming is so slow. I think it's bit-banged.
You can acutally just glue together the Beeb and Atom ROMs and have both programmed at the same time. Then it's much quicker to switch between the Beeb and the Atom cores.
After seeing that the Gowin IDE had a project for the Tang9K I tried building this and got a couple of errors. I include the log file and before making changes I just wanted to make sure that I am not making some other silly mistake. I know that there is more to know in actually making this work with ROMS etc. but I would at least like to get the build correct. Thanks