nextpnr/himbaechel/uarch/gowin/constids.inc
YRabbit c565e364bc
Gowin. Add the ability to place registers in IOB (#1403)
* Gowin. Add the ability to place registers in IOB

IO blocks have registers: for input, for output and for OutputEnable
signal - IREG, OREG and TREG respectively.

Each of the registers has one implicit non-switched wire, which one
depends on the type of register (IREG has a Q wire, OREG has a D wire).
Although the registers can be activated independently of each other they
share the CLK, ClockEnable and LocalSetReset wires and this places
restrictions on the possible combinations of register types in a single
IO.

Register placement in IO blocks is enabled by specifying the command
line keys --vopt ireg_in_iob, --vopt oreg_in_iob, or --vopt ioreg_in_iob.

It should be noted that specifying these keys leads to attempts to place
registers in IO blocks, but no errors are generated in case of failure.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. Registers in IO

Check for unconnected ports.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. IO regs. Verbose warnings.

If an attempt to place an FF in an IO block fails, issue a warning
detailing the reason for the failure, whether it is a register type
conflict, a network requirement violation, or a control signal conflict.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. BUGFIX. Fix FFs compatibility.

Flipflops with a fixed ClockEnable input cannot coexist with flipflops
with a variable one.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. FFs in IO.  Changing diagnostic messages.

Placement modes are still specified by the command line keys
ireg_in_iob/oreg_in_iob/ioreg_in_iob, but also introduces more granular
control in the form of attributes at I/O ports:

  (* NOIOBFF *) - registers are never placed in this IO,

  (* IOBFF *) - registers must be placed in this IO, in case of failure
  a warning (not an error) with the reason for nonplacement is issued,

  _attribute_absence_ - no diagnostics will be issued: managed to place - good, failed - not bad either.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. Registers in IO.

Change the logic for handling command line keys and attributes -
attributes allow routines to be placed in IO regardless of global mode.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. Registers in IO. Fix style.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

---------

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-01-01 13:11:57 +01:00

1336 lines
13 KiB
PHP

X(A0)
X(B0)
X(C0)
X(D0)
X(A1)
X(B1)
X(C1)
X(D1)
X(A2)
X(B2)
X(C2)
X(D2)
X(A3)
X(B3)
X(C3)
X(D3)
X(A4)
X(B4)
X(C4)
X(D4)
X(A5)
X(B5)
X(C5)
X(D5)
X(A6)
X(B6)
X(C6)
X(D6)
X(A7)
X(B7)
X(C7)
X(D7)
X(F0)
X(F1)
X(F2)
X(F3)
X(F4)
X(F5)
X(F6)
X(F7)
X(Q0)
X(Q1)
X(Q2)
X(Q3)
X(Q4)
X(Q5)
X(Q6)
X(Q7)
X(OF0)
X(OF1)
X(OF2)
X(OF3)
X(OF4)
X(OF5)
X(OF6)
X(OF7)
X(X01)
X(X02)
X(X03)
X(X04)
X(X05)
X(X06)
X(X07)
X(X08)
X(N100)
X(SN10)
X(SN20)
X(N130)
X(S100)
X(S130)
X(E100)
X(EW10)
X(EW20)
X(E130)
X(W100)
X(W130)
X(N200)
X(N210)
X(N220)
X(N230)
X(N240)
X(N250)
X(N260)
X(N270)
X(S200)
X(S210)
X(S220)
X(S230)
X(S240)
X(S250)
X(S260)
X(S270)
X(E200)
X(E210)
X(E220)
X(E230)
X(E240)
X(E250)
X(E260)
X(E270)
X(W200)
X(W210)
X(W220)
X(W230)
X(W240)
X(W250)
X(W260)
X(W270)
X(N800)
X(N810)
X(N820)
X(N830)
X(S800)
X(S810)
X(S820)
X(S830)
X(E800)
X(E810)
X(E820)
X(E830)
X(W800)
X(W810)
X(W820)
X(W830)
X(MCLK)
X(CLK0)
X(CLK1)
X(CLK2)
X(LSR0)
X(LSR1)
X(LSR2)
X(CE0)
X(CE1)
X(CE2)
X(SEL0)
X(SEL1)
X(SEL2)
X(SEL3)
X(SEL4)
X(SEL5)
X(SEL6)
X(SEL7)
X(N101)
X(N131)
X(S101)
X(S131)
X(E101)
X(E131)
X(W101)
X(W131)
X(N201)
X(N211)
X(N221)
X(N231)
X(N241)
X(N251)
X(N261)
X(N271)
X(S201)
X(S211)
X(S221)
X(S231)
X(S241)
X(S251)
X(S261)
X(S271)
X(E201)
X(E211)
X(E221)
X(E231)
X(E241)
X(E251)
X(E261)
X(E271)
X(W201)
X(W211)
X(W221)
X(W231)
X(W241)
X(W251)
X(W261)
X(W271)
X(N202)
X(N212)
X(N222)
X(N232)
X(N242)
X(N252)
X(N262)
X(N272)
X(S202)
X(S212)
X(S222)
X(S232)
X(S242)
X(S252)
X(S262)
X(S272)
X(E202)
X(E212)
X(E222)
X(E232)
X(E242)
X(E252)
X(E262)
X(E272)
X(W202)
X(W212)
X(W222)
X(W232)
X(W242)
X(W252)
X(W262)
X(W272)
X(N804)
X(N814)
X(N824)
X(N834)
X(S804)
X(S814)
X(S824)
X(S834)
X(E804)
X(E814)
X(E824)
X(E834)
X(W804)
X(W814)
X(W824)
X(W834)
X(N808)
X(N818)
X(N828)
X(N838)
X(S808)
X(S818)
X(S828)
X(S838)
X(E808)
X(E818)
X(E828)
X(E838)
X(W808)
X(W818)
X(W828)
X(W838)
X(E110)
X(W110)
X(E120)
X(W120)
X(S110)
X(N110)
X(S120)
X(N120)
X(E111)
X(W111)
X(E121)
X(W121)
X(S111)
X(N111)
X(S121)
X(N121)
X(LB01)
X(LB11)
X(LB21)
X(LB31)
X(LB41)
X(LB51)
X(LB61)
X(LB71)
X(GB00)
X(GB10)
X(GB20)
X(GB30)
X(GB40)
X(GB50)
X(GB60)
X(GB70)
X(VCC)
X(VSS)
X(LT00)
X(LT10)
X(LT20)
X(LT30)
X(LT02)
X(LT13)
X(LT01)
X(LT04)
X(LBO0)
X(LBO1)
X(SS00)
X(SS40)
X(GT00)
X(GT10)
X(GBO0)
X(GBO1)
X(DI0)
X(DI1)
X(DI2)
X(DI3)
X(DI4)
X(DI5)
X(DI6)
X(DI7)
X(CIN0)
X(CIN1)
X(CIN2)
X(CIN3)
X(CIN4)
X(CIN5)
X(COUT0)
X(COUT1)
X(COUT2)
X(COUT3)
X(COUT4)
X(COUT5)
X(VREN)
// wires
// SN
X(S10)
X(S10_loop0)
X(S13)
X(S13_loop0)
X(N10)
X(N10_loop0)
X(N13)
X(N13_loop0)
X(SN10_loop_n)
X(SN10_loop_s)
X(SN20_loop_n)
X(SN20_loop_s)
X(S20)
X(S20_loop0)
X(S20_loop1)
X(S21)
X(S21_loop0)
X(S21_loop1)
X(S22)
X(S22_loop0)
X(S22_loop1)
X(S23)
X(S23_loop0)
X(S23_loop1)
X(S24)
X(S24_loop0)
X(S24_loop1)
X(S25)
X(S25_loop0)
X(S25_loop1)
X(S26)
X(S26_loop0)
X(S26_loop1)
X(S27)
X(S27_loop0)
X(S27_loop1)
X(N20)
X(N20_loop0)
X(N20_loop1)
X(N21)
X(N21_loop0)
X(N21_loop1)
X(N22)
X(N22_loop0)
X(N22_loop1)
X(N23)
X(N23_loop0)
X(N23_loop1)
X(N24)
X(N24_loop0)
X(N24_loop1)
X(N25)
X(N25_loop0)
X(N25_loop1)
X(N26)
X(N26_loop0)
X(N26_loop1)
X(N27)
X(N27_loop0)
X(N27_loop1)
X(S80)
X(S80_loop0)
X(S80_loop1)
X(S80_loop2)
X(S80_loop3)
X(S80_loop4)
X(S80_loop5)
X(S80_loop6)
X(S80_loop7)
X(N80)
X(N80_loop0)
X(N80_loop1)
X(N80_loop2)
X(N80_loop3)
X(N80_loop4)
X(N80_loop5)
X(N80_loop6)
X(N80_loop7)
X(S81)
X(S81_loop0)
X(S81_loop1)
X(S81_loop2)
X(S81_loop3)
X(S81_loop4)
X(S81_loop5)
X(S81_loop6)
X(S81_loop7)
X(N81)
X(N81_loop0)
X(N81_loop1)
X(N81_loop2)
X(N81_loop3)
X(N81_loop4)
X(N81_loop5)
X(N81_loop6)
X(N81_loop7)
X(S82)
X(S82_loop0)
X(S82_loop1)
X(S82_loop2)
X(S82_loop3)
X(S82_loop4)
X(S82_loop5)
X(S82_loop6)
X(S82_loop7)
X(N82)
X(N82_loop0)
X(N82_loop1)
X(N82_loop2)
X(N82_loop3)
X(N82_loop4)
X(N82_loop5)
X(N82_loop6)
X(N82_loop7)
X(S83)
X(S83_loop0)
X(S83_loop1)
X(S83_loop2)
X(S83_loop3)
X(S83_loop4)
X(S83_loop5)
X(S83_loop6)
X(S83_loop7)
X(N83)
X(N83_loop0)
X(N83_loop1)
X(N83_loop2)
X(N83_loop3)
X(N83_loop4)
X(N83_loop5)
X(N83_loop6)
X(N83_loop7)
// WE
X(E10)
X(E10_loop0)
X(E13)
X(E13_loop0)
X(W10)
X(W10_loop0)
X(W13)
X(W13_loop0)
X(EW10_loop_w)
X(EW10_loop_e)
X(EW20_loop_w)
X(EW20_loop_e)
//
X(E20)
X(E20_loop0)
X(E20_loop1)
X(E21)
X(E21_loop0)
X(E21_loop1)
X(E22)
X(E22_loop0)
X(E22_loop1)
X(E23)
X(E23_loop0)
X(E23_loop1)
X(E24)
X(E24_loop0)
X(E24_loop1)
X(E25)
X(E25_loop0)
X(E25_loop1)
X(E26)
X(E26_loop0)
X(E26_loop1)
X(E27)
X(E27_loop0)
X(E27_loop1)
X(W20)
X(W20_loop0)
X(W20_loop1)
X(W21)
X(W21_loop0)
X(W21_loop1)
X(W22)
X(W22_loop0)
X(W22_loop1)
X(W23)
X(W23_loop0)
X(W23_loop1)
X(W24)
X(W24_loop0)
X(W24_loop1)
X(W25)
X(W25_loop0)
X(W25_loop1)
X(W26)
X(W26_loop0)
X(W26_loop1)
X(W27)
X(W27_loop0)
X(W27_loop1)
//
X(E80)
X(E80_loop0)
X(E80_loop1)
X(E80_loop2)
X(E80_loop3)
X(E80_loop4)
X(E80_loop5)
X(E80_loop6)
X(E80_loop7)
X(W80)
X(W80_loop0)
X(W80_loop1)
X(W80_loop2)
X(W80_loop3)
X(W80_loop4)
X(W80_loop5)
X(W80_loop6)
X(W80_loop7)
X(E81)
X(E81_loop0)
X(E81_loop1)
X(E81_loop2)
X(E81_loop3)
X(E81_loop4)
X(E81_loop5)
X(E81_loop6)
X(E81_loop7)
X(W81)
X(W81_loop0)
X(W81_loop1)
X(W81_loop2)
X(W81_loop3)
X(W81_loop4)
X(W81_loop5)
X(W81_loop6)
X(W81_loop7)
X(E82)
X(E82_loop0)
X(E82_loop1)
X(E82_loop2)
X(E82_loop3)
X(E82_loop4)
X(E82_loop5)
X(E82_loop6)
X(E82_loop7)
X(W82)
X(W82_loop0)
X(W82_loop1)
X(W82_loop2)
X(W82_loop3)
X(W82_loop4)
X(W82_loop5)
X(W82_loop6)
X(W82_loop7)
X(E83)
X(E83_loop0)
X(E83_loop1)
X(E83_loop2)
X(E83_loop3)
X(E83_loop4)
X(E83_loop5)
X(E83_loop6)
X(E83_loop7)
X(W83)
X(W83_loop0)
X(W83_loop1)
X(W83_loop2)
X(W83_loop3)
X(W83_loop4)
X(W83_loop5)
X(W83_loop6)
X(W83_loop7)
// spines
X(SPINE0)
X(SPINE1)
X(SPINE2)
X(SPINE3)
X(SPINE4)
X(SPINE5)
X(SPINE6)
X(SPINE7)
X(SPINE8)
X(SPINE9)
X(SPINE10)
X(SPINE11)
X(SPINE12)
X(SPINE13)
X(SPINE14)
X(SPINE15)
X(SPINE16)
X(SPINE17)
X(SPINE18)
X(SPINE19)
X(SPINE20)
X(SPINE21)
X(SPINE22)
X(SPINE23)
X(SPINE24)
X(SPINE25)
X(SPINE26)
X(SPINE27)
X(SPINE28)
X(SPINE29)
X(SPINE30)
X(SPINE31)
// slice items
X(SLICE)
X(CLK)
X(LSR)
X(CE)
X(Q)
X(F)
X(A)
X(B)
X(C)
X(D)
// iob items
X(IOB)
X(I)
X(O)
X(IO)
X(OE)
X(OB)
X(IB)
// bels
X(DFF0)
X(DFF1)
X(DFF2)
X(DFF3)
X(DFF4)
X(DFF5)
X(LUT0)
X(LUT1)
X(LUT2)
X(LUT3)
X(LUT4)
X(LUT5)
X(LUT6)
X(LUT7)
X(IOBA)
X(IOBB)
X(IOBC)
X(IOBD)
X(IOBE)
X(IOBF)
X(IOBG)
X(IOBH)
X(IOBI)
X(IOBJ)
// misc
X(DUMMY_CELL)
// simplified iobs
X(IOBS)
X(IOBAS)
X(IOBBS)
X(IOBCS)
X(IOBDS)
X(IOBES)
X(IOBFS)
X(IOBGS)
X(IOBHS)
X(IOBIS)
X(IOBJS)
// long wires
X(LONGWIRE)
X(BUFS)
X(BUFS0)
X(BUFS1)
X(BUFS2)
X(BUFS3)
X(BUFS4)
X(BUFS5)
X(BUFS6)
X(BUFS7)
X(LWT0)
X(LWB0)
X(LWT1)
X(LWB1)
X(LWT2)
X(LWB2)
X(LWT3)
X(LWB3)
X(LWT4)
X(LWB4)
X(LWT5)
X(LWB5)
X(LWT6)
X(LWB6)
X(LWT7)
X(LWB7)
X(LWSPINETL0)
X(LWSPINETL1)
X(LWSPINETL2)
X(LWSPINETL3)
X(LWSPINETL4)
X(LWSPINETL5)
X(LWSPINETL6)
X(LWSPINETL7)
X(LWSPINETR0)
X(LWSPINETR1)
X(LWSPINETR2)
X(LWSPINETR3)
X(LWSPINETR4)
X(LWSPINETR5)
X(LWSPINETR6)
X(LWSPINETR7)
X(LWSPINEBL0)
X(LWSPINEBL1)
X(LWSPINEBL2)
X(LWSPINEBL3)
X(LWSPINEBL4)
X(LWSPINEBL5)
X(LWSPINEBL6)
X(LWSPINEBL7)
X(LWSPINEBR0)
X(LWSPINEBR1)
X(LWSPINEBR2)
X(LWSPINEBR3)
X(LWSPINEBR4)
X(LWSPINEBR5)
X(LWSPINEBR6)
X(LWSPINEBR7)
X(LWI0)
X(LWI1)
X(LWI2)
X(LWI3)
X(LWI4)
X(LWI5)
X(LWI6)
X(LWI7)
X(LWO0)
X(LWO1)
X(LWO2)
X(LWO3)
X(LWO4)
X(LWO5)
X(LWO6)
X(LWO7)
// IOLOGIC
X(C_STATIC_DLY)
X(IODELAY)
X(SDTAP)
X(SETN)
X(VALUE)
X(DF)
X(IEM)
X(WINSIZE)
X(WINSIZE0)
X(WINSIZE1)
X(SMALL)
X(MIDSMALL)
X(MIDLARGE)
X(LARGE)
X(LAG)
X(LEAD)
X(TX)
X(TX0)
X(TX1)
X(TX2)
X(TX3)
X(FCLK)
X(PCLK)
X(CALIB)
X(DAADJ0)
X(DAADJ1)
X(GW9_ALWAYS_LOW0)
X(GW9_ALWAYS_LOW1)
X(GW9C_ALWAYS_LOW0)
X(GW9C_ALWAYS_LOW1)
X(OBUF_TYPE)
X(IBUF_TYPE)
X(SBUF)
X(DBUF)
X(ODDR)
X(IDDR)
X(ODDRC)
X(IDDRC)
X(ODDRA)
X(ODDRB)
X(ODDRCA)
X(ODDRCB)
X(OSER4)
X(OSER8)
X(OSER10)
X(OVIDEO)
X(OSER16)
X(IDES4)
X(IDES8)
X(IDES10)
X(IVIDEO)
X(IDES16)
X(IOLOGICI_EMPTY)
X(IOLOGICO_EMPTY)
X(IOLOGIC)
X(IOLOGICI)
X(IOLOGICO)
X(IOLOGICA)
X(IOLOGICB)
X(IOLOGIC_TYPE)
X(IOLOGIC_FCLK)
X(IOLOGIC_MASTER_CELL)
X(IOLOGIC_AUX_CELL)
X(D8)
X(D9)
X(D10)
X(D11)
X(D12)
X(D13)
X(D14)
X(D15)
X(Q8)
X(Q9)
X(Q10)
X(Q11)
X(Q12)
X(Q13)
X(Q14)
X(Q15)
// Wide LUTs
X(MUX2_LUT5)
X(MUX2_LUT6)
X(MUX2_LUT7)
X(MUX2_LUT8)
X(I0MUX0)
X(I1MUX0)
X(I0MUX1)
X(I1MUX1)
X(I0MUX2)
X(I1MUX2)
X(I0MUX3)
X(I1MUX3)
X(I0MUX4)
X(I1MUX4)
X(I0MUX5)
X(I1MUX5)
X(I0MUX6)
X(I1MUX6)
X(I0MUX7)
X(I1MUX7)
// ALU
X(ALU)
X(GND)
X(ALU_MODE)
// DFF types
X(DFF)
X(DFFE)
X(DFFS)
X(DFFSE)
X(DFFR)
X(DFFRE)
X(DFFP)
X(DFFPE)
X(DFFC)
X(DFFCE)
X(DFFN)
X(DFFNE)
X(DFFNS)
X(DFFNSE)
X(DFFNR)
X(DFFNRE)
X(DFFNP)
X(DFFNPE)
X(DFFNC)
X(DFFNCE)
// Shadow RAM
X(RAM16)
X(RAMW)
X(RAM16SDP4)
X(RAM16SDP2)
X(RAM16SDP1)
X(WADA)
X(WADB)
X(WADC)
X(WADD)
X(DIA)
X(DIB)
X(DIC)
X(DID)
X(WRE)
// BSRAM
X(BLK_SEL)
X(BSRAM_SUBTYPE)
X(WRITE_MODE)
X(READ_MODE)
X(RESET_MODE)
X(BIT_WIDTH)
X(BIT_WIDTH_0)
X(BIT_WIDTH_1)
X(ROM)
X(DP)
X(DPB)
X(DPX9B)
X(SP)
X(SPX9)
X(SDP)
X(SDPB)
X(SDPX9B)
X(pROM)
X(pROMX9)
X(BSRAM)
X(OCE)
X(OCEA)
X(OCEB)
X(CEA)
X(CEB)
X(RESETA)
X(RESETB)
X(WREA)
X(WREB)
X(CLKA)
X(CLKB)
// DSP
X(ALU54D)
X(MULTADDALU18X18)
X(MULTALU18X18)
X(MULTALU36X18)
X(MULT36X36)
X(MULT18X18)
X(MULT9X9)
X(PADD18)
X(PADD9)
X(ASIGN)
X(BSIGN)
X(ASIGN0)
X(BSIGN0)
X(ASIGN1)
X(BSIGN1)
X(ZERO_SIGN)
X(ZERO_ASIGN0)
X(ZERO_BSIGN0)
X(ZERO_ASIGN1)
X(ZERO_BSIGN1)
X(ASEL)
X(ASEL0)
X(ASEL1)
X(BSEL)
X(BSEL0)
X(BSEL1)
X(SOA_REG)
X(DSIGN)
X(ACCLOAD)
X(ACCLOAD0)
X(ACCLOAD1)
X(NET_ACCLOAD)
X(ALUSEL0)
X(ALUSEL1)
X(ALUSEL2)
X(ALUSEL3)
X(ALUSEL4)
X(ALUSEL5)
X(ALUSEL6)
X(USE_CASCADE_OUT)
X(USE_CASCADE_IN)
X(LAST_IN_CHAIN)
X(MULTALU18X18_MODE)
X(MULTADDALU18X18_MODE)
X(MULTALU36X18_MODE)
// IOB types
X(IBUF)
X(OBUF)
X(IOBUF)
X(TBUF)
X(TLVDS_OBUF)
X(TLVDS_TBUF)
X(TLVDS_IBUF)
X(TLVDS_IOBUF)
X(ELVDS_OBUF)
X(ELVDS_TBUF)
X(ELVDS_IBUF)
X(ELVDS_IOBUF)
// global set/reset
X(GSR)
X(GSR0)
X(GSRI)
// power saving
X(BANDGAP)
X(BGEN)
// inverter
X(INV)
// Oscillators
X(OSC)
X(OSCZ)
X(OSCH)
X(OSCF)
X(OSCW)
X(OSCO)
// PLLs
X(rPLL)
X(RPLLA)
X(PLLVR)
// primitive attributes
X(INIT)
X(FF_USED)
X(FF_TYPE)
X(INPUT_USED)
X(OUTPUT_USED)
X(ENABLE_USED)
X(BEL)
X(DIFF)
X(DIFF_TYPE)
X(DEVICE)
X(IOLOGIC_IOB)
// ports
X(EN)
X(E)
X(Y)
X(PAD)
X(RESET)
X(SET)
X(PRESET)
X(CLEAR)
X(I0)
X(I1)
X(I2)
X(I3)
X(OEN)
X(S0)
X(SEL)
X(SUM)
X(CIN)
X(COUT)
X(OF)
X(V)
X(G)
X(OSCOUT)
X(OSCEN)
X(RESET_P)
X(CLKFB)
X(FBDSEL0)
X(FBDSEL1)
X(FBDSEL2)
X(FBDSEL3)
X(FBDSEL4)
X(FBDSEL5)
X(IDSEL0)
X(IDSEL1)
X(IDSEL2)
X(IDSEL3)
X(IDSEL4)
X(IDSEL5)
X(ODSEL0)
X(ODSEL1)
X(ODSEL2)
X(ODSEL3)
X(ODSEL4)
X(ODSEL5)
X(PSDA0)
X(PSDA1)
X(PSDA2)
X(PSDA3)
X(DUTYDA0)
X(DUTYDA1)
X(DUTYDA2)
X(DUTYDA3)
X(FDLY0)
X(FDLY1)
X(FDLY2)
X(FDLY3)
X(CLKIN)
X(CLKOUT)
X(CLKOUTP)
X(CLKOUTD)
X(CLKOUTD3)
X(LOCK)
X(AD)
X(DI)
X(DO)
X(P16A)
X(P16B)
X(P16C)
X(P16D)
X(P17A)
X(P17B)
X(P17C)
X(P17D)
X(P26A)
X(P26B)
X(P26C)
X(P26D)
X(P27A)
X(P27B)
X(P27C)
X(P27D)
X(P36A)
X(P36B)
X(P36C)
X(P36D)
X(P37A)
X(P37B)
X(P37C)
X(P37D)
X(P46A)
X(P46B)
X(P46C)
X(P46D)
X(P47A)
X(P47B)
X(P47C)
X(P47D)
// PLL parameters
X(CLKOUTPS)
X(CLKOUTDIV)
X(CLKOUTDIV3)
X(PWDEN)
X(RSTEN)
X(FLOCK)
X(INSEL)
X(FBSEL)
X(CLKFB_SEL)
// timing
X(X0)
X(FX1)
X(X2)
X(X8)
X(PIO_CENT_PCLK)
X(CENT_SPINE_PCLK)
X(SPINE_TAP_PCLK)
X(TAP_BRANCH_PCLK)
X(BRANCH_PCLK)
X(CENT_SPINE_SCLK)
X(SPINE_TAP_SCLK_0)
X(SPINE_TAP_SCLK_1)
X(TAP_BRANCH_SCLK)
X(BRANCH_SCLK)
X(clksetpos)
X(clkholdpos)
X(clk_qpos)
X(a_f)
X(b_f)
X(c_f)
X(d_f)
X(fx_ofx1)
X(I01)
// GUI
X(DECAL_LUT_ACTIVE)
X(DECAL_LUT_INACTIVE)
X(DECAL_LUTDFF_ACTIVE)
X(DECAL_LUTDFF_INACTIVE)
X(DECAL_LUT_UNUSED_DFF_ACTIVE)
X(DECAL_GRP_LUT)
X(DECAL_CRU)
X(DECAL_MUXUPPER_INACTIVE)
X(DECAL_MUXUPPER_ACTIVE)
X(DECAL_MUXLOWER_INACTIVE)
X(DECAL_MUXLOWER_ACTIVE)
X(DECAL_IOB_INACTIVE)
X(DECAL_IOB_ACTIVE)
X(DECAL_IOBS_INACTIVE)
X(DECAL_IOBS_ACTIVE)
X(DECAL_ALU_ACTIVE)
X(SINGLE_INPUT_MUX)
X(cst)
X(none)
X(pack)
X(place)
X(placer)
X(route)
X(router)
// misc
X(GOWIN_GND)
X(GOWIN_VCC)
X(PLL)
X(CLKIN_T)
X(CLKIN_C)
X(FB_T)
X(FB_C)
X(BOTTOM_IO_PORT_A)
X(BOTTOM_IO_PORT_B)
X(IOLOGIC_DUMMY)
// User Flash
X(INUSEN)
X(DIN)
X(DOUT)
X(XE)
X(YE)
X(SE)
X(PROG)
X(ERASE)
X(NVSTR)
X(XADR0)
X(XADR1)
X(XADR2)
X(XADR3)
X(XADR4)
X(XADR5)
X(XADR6)
X(XADR7)
X(XADR8)
X(YADR)
X(RA)
X(CA)
X(PA)
X(MODE)
X(SEQ)
X(RMODE)
X(WMODE)
X(RBYTESEL)
X(WBYTESEL)
X(FLASH96K)
X(FLASH256K)
X(FLASH608K)
X(FLASH128K)
X(FLASH64K)
X(FLASH64KZ)
X(FLASH96KA)
// wire types
X(GLOBAL_CLK)
X(TILE_CLK)
X(TILE_LSR)
X(TILE_CE)
X(IO_I)
X(IO_O)
X(LUT_INPUT)
X(LUT_OUT)
X(FF_INPUT)
X(FF_OUT)
X(MUX_OUT)
X(MUX_SEL)
X(ALU_CIN)
X(ALU_COUT)
X(PLL_O)
X(PLL_I)
// fake dff inputs
X(XD0)
X(XD1)
X(XD2)
X(XD3)
X(XD4)
X(XD5)
// HCLK wires
X(HCLK)
X(HCLK_OUT0)
X(HCLK_OUT1)
X(HCLK_OUT2)
X(HCLK_OUT3)
// BUFG, clock buffers stuff
X(CLKSEL)
X(BUFG)
X(CLOCK)
X(DQCE)
X(DCS)
X(DQCE_PIP)
X(DHCEN_USED)
X(DCS_USED)
X(SELFORCE)
X(DHCEN)
X(DCS_MODE)
//HCLK Bels
X(CLKDIV)
X(CLKDIV2)
//HCLK Ports
X(HCLKIN)
X(RESETN)
// X(CALIB)
// X(CLKOUT)
//HCLK Parameters
X(DIV_MODE)
X(GSREN)
X(LSREN)
// EMCU
X(EMCU)
// Register placement options
X(IREG_IN_IOB)
X(OREG_IN_IOB)
X(IOREG_IN_IOB)
X(HAS_REG)
X(IREG_TYPE)
X(OREG_TYPE)
X(TREG_TYPE)
X(IREG_CLK_NET)
X(IREG_CE_NET)
X(IREG_LSR_NET)
X(OREG_CLK_NET)
X(OREG_CE_NET)
X(OREG_LSR_NET)
X(TREG_CLK_NET)
X(TREG_CE_NET)
X(TREG_LSR_NET)
X(NOIOBFF)
X(IOBFF)