nextpnr/himbaechel/uarch/gowin/constids.inc

1336 lines
13 KiB
PHP
Raw Normal View History

2023-06-28 08:16:29 +08:00
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)
2023-06-28 08:16:29 +08:00
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)
2023-06-28 08:16:29 +08:00
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)
2023-06-28 08:16:29 +08:00
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)
2023-06-28 08:16:29 +08:00
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)
2023-06-28 08:16:29 +08:00
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)
2023-06-28 08:16:29 +08:00
// 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)
2023-06-28 08:16:29 +08:00
// 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)
2023-06-28 08:16:29 +08:00
// 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)
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 20:11:57 +08:00
// 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)