Prior to the 5A series, pin functions (GPIO/SSPI/JTAG/DONE/etc) were
switched using fuses. This was done during the binary image formation
stage for loading into the FPGA using the command line keys of the
gowin_pack program.
The 5A series features certain ports that connect to VCC or GND
depending on whether the pin is used as SSPI or GPIO, for example. This
mechanism exists in parallel with fuses, but it is not described
anywhere, nor is there a corresponding primitive.
To generate working images, we have no choice but to simulate this thing
at the nextpnr stage, since VCC/GND routing is required.
For now, two flags are added, responsible for the SSPI and I2C pin
functions.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
This item is likely no longer necessary, as this executable file has
been unavailable since May, with the complete transition to Himbaechel.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Gowin. Preparing to support the 5A series.
Family recognition is added, as well as minor fixes, but base generation
itself is not allowed for GW5 - this gives the ability to test the next
Apicula release and still not break installations for those who simply
specify `HIMBAECHEL_GOWIN_DEVICES = "all"`.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Gowin. Recognize GW5A family chips.
Construct chip base name for
- GW5A-LV25MG121C1/l0 - TangPrimer 25k
- GW5AT-LV60PG484A - TangMega 60k
- GW5AST-LV138PG484A - TangMega 138k
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
---------
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Add log output
* Optimize CC_LUT1
* Update tests
* Optimize CC_LUT2 as well
* Use init enumerations
* Merge DFF in MX4
* Move repack code
* Move ramio code to pack_cpe
* Merge LUT1/2 to ADDF inputs
* Note actual CPE ports
* Merge DFF in ADDF
* Update FF params and ports first
* Check if DFFs are compatible before merging
* Optimize DFF/Latch
* Add reporting of optimized cells
* Optimize MX2/4
* Add statistics
* Use special nets for VCC/GND to skip using name
* Add warning for carry chain split
* Merge FFs where possible
* Cleanup
* Keep statistics out for now
* Add logs for packing sections
* review fixes
---------
Co-authored-by: Lofty <dan.ravensloft@gmail.com>
Adds automatic connection of a general-purpose pin to the global clock
network.
The old behaviour, where such networks have to be explicitly specified,
can be activated with the command line key
"--vopt disable_gp_clock_routing".
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>