hoglet67 / BeebFpga

48 stars 8 forks source link

Tang9K build errors #26

Open okwatts opened 3 months ago

okwatts commented 3 months ago

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

okwatts commented 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

hoglet67 commented 3 months ago

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

hoglet67 commented 2 months ago

Fixed in master, and tested with v1.9.9.03 Education.

okwatts commented 2 months ago

Builds fine now, still not sure how to try this out, my Tang9K is setup for AtomFPGA at the moment.

hoglet67 commented 2 months ago

As far as I remember

  1. Generate the Tang9K Beeb ROM set by running:

    cd roms
    ./make_rom_image_tang9k.sh
  2. Program the generated ROM image file (tmp/tang_image_beeb_000000.bin) into external flash at address 0.

  3. Program the bitstream file (src/gowin/tang9k/impl/pnr/tang9k.fs) into internal flash.

okwatts commented 2 months ago

Okay that works nicely just a long flash for the ROM.

hoglet67 commented 2 months ago

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.