nextpnr/himbaechel/uarch/gowin
YRabbit a18bd2e055
Gowin. BUGFIX. Add data about gate wires. (#1547)
Very rarely (about once a year), the dedicated clock router would
malfunction, issuing an incorrect route.

The reason turned out to be the so-called gate wires to the global clock
wire system from the logic. Among the PIPs for which these wires are
sinks, there are PIPs where the sources are also clock wires.

This leads to the possibility of feeding the clock signal back into the
gate and again into the global clock MUX.

If handled carelessly, this can lead to a complete loop.

But the loop option itself is particularly useful in the case of DCS
(dynamic clock selection) - the fact is that because these primitives
have four clock inputs and each of them could theoretically address all
56 clock sources, but in practice there are not enough wires and the DCS
inputs cannot serve as sinks for all clock sources.

The simplest solution (and the one that currently works) is to use the
gate to re-enter the clock system, but this time changing the clock
source.

This commit explicitly marks wires as gates and removes the possibility
of looping (however unlikely it may be) where a loop is not needed.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-09-02 07:51:08 +02:00
..
CMakeLists.txt Gowin. Enable GW5A series. (#1534) 2025-08-15 07:12:09 +02:00
constids.inc Gowin. Implement on-chip oscillator. 2025-09-01 16:14:49 +01:00
cst.cc clangformat 2025-06-18 09:12:14 +02:00
cst.h gowin: Himbaechel. Add constraint file processing. 2023-08-31 08:28:09 +02:00
globals.cc Gowin. BUGFIX. Add data about gate wires. (#1547) 2025-09-02 07:51:08 +02:00
globals.h gowin: Himbaechel. Add a clock router. 2023-08-31 08:28:09 +02:00
gowin.cc Gowin. Change the way DFF 6&7 presence is checked. 2025-08-14 12:33:48 +01:00
gowin.h Gowin. Add ROM16 primitive. (#1542) 2025-08-27 07:21:38 +02:00
gowin_arch_gen.py Gowin. BUGFIX. Add data about gate wires. (#1547) 2025-09-02 07:51:08 +02:00
gowin_utils.cc Gowin. Implement on-chip oscillator. 2025-09-01 16:14:49 +01:00
gowin_utils.h Gowin. BUGFIX. Add data about gate wires. (#1547) 2025-09-02 07:51:08 +02:00
pack.cc Gowin. Optimize ALU wiring (#1543) 2025-08-29 16:58:26 +02:00
pack.h gowin: Himbaechel. Add ALU. 2023-08-31 08:28:09 +02:00