YosysHQ / apicula

Project Apicula 🐝: bitstream documentation for Gowin FPGAs
MIT License
465 stars 66 forks source link

Cannot programm TangNano wrong id-code #155

Closed KozikR closed 1 year ago

KozikR commented 1 year ago

I set DEVICE to GW1N-LV1QN48C6/I5 BOARD to tangnano and create pack.fs from blink example.

When I use GOWIN programmer version 1.9.8.10 got error:

image
trabucayre commented 1 year ago

There is two tangNano 1k: one based on an GW1N-1 (the original) and one (the new revision) with a GW1NZ-1 Could you check idcode from your board ?:

KozikR commented 1 year ago

ID code is

Info: Cable found: USB Debugger A/0/10545/null (USB location:10545) Info: Cost 0.1 second(s) :
Info: Target Cable: USB Debugger A/0/10545/null@2.5MHz Info: Operation "Read Device Codes" is starting on device-1... Info: ID code is: 0x0900281B Info: User code is: 0x0000496F Info: Status code is: 0x0001F020 Info: Cost 0.54 second(s)

So looks like GW1NZ-1 but on chip package there is GW1N-LV1QN48C6/I5:

image

I change DEVICE to GW1NZ-LV1QN48C6/I5 end rerun:

nextpnr-gowin --json blinky.json --write pnrblinky.json --device $DEVICE --cst $BOARD.cst
gowin_pack -d $DEVICE -o pack1.fs pnrblinky.json

But got simmilar issue:

image
trabucayre commented 1 year ago

My fault: I've inverted idcode... It's a GW1N-1. Sorry. Could you share your .fs (the one targeted for GW1N-LV1QN48C6/I5) ? Thanks

KozikR commented 1 year ago

pack.zip

trabucayre commented 1 year ago

the idcode contained into pack.fs is okay. I have tested your file with my tangnano: it works (but haven't used proprietary tool). Seems the issue isn't apicula related but due to the programmer...

yrabbit commented 1 year ago

At the moment both tangnano (GW1N-1) and tangnano1k (GW1NZ-1) flash without problems.

marsohod4you commented 1 year ago

I met similar issue that Gowin native programmer refuses to use bitstream file after gowin_pack. It seems that native gowin programmer needs header like that:

//Copyright (C)2014-2022 Gowin Semiconductor Corporation. //All rights reserved. //File Title: Bitstream file //GOWIN Version: V1.9.8.09 //Part Number: GW1NR-UV9QN88PC6/I5 //Device-package: GW1NR-9-QFN88P //BackgroundProgramming: OFF //CheckSum: 0xCB1A //UserCode: 0x0000CB1A //SPIAddr: 0x00000000 //LoadingRate: 2.500MHz //CRCCheck: OFF //Compress: OFF //Encryption: OFF //SecurityBit: ON //SecureMode: OFF //JTAGAsRegularIO: OFF //Created Time: Thu Sep 07 17:44:22 2023

I added this header at the begin of gowin_pack generated bitstream and then could use Gowin native programmer.

pepijndevos commented 1 year ago

I am not opposed to generating a header in apicula, but couldn't get their programmer to work at all.

Would you be interested to make a pr for this? I expect not all headers are required, so it'd take a bit of experimentation which parts are required and how to fill them in from apicula