Merge pull request #965 from tpambor/gowin-osc

gowin: Add bels for oscillator
This commit is contained in:
gatecat 2022-03-29 13:57:40 +01:00 committed by GitHub
commit bd81dcc8f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 0 deletions

View File

@ -1009,6 +1009,44 @@ Arch::Arch(ArchArgs args) : args(args)
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelInput(belname, id_GSRI, id(buf));
break;
case ID_OSC:
snprintf(buf, 32, "R%dC%d_OSC", row + 1, col + 1);
belname = id(buf);
addBel(belname, id_OSC, Loc(col, row, 0), false);
portname = IdString(pairLookup(bel->ports.get(), bel->num_ports, ID_OSCOUT)->src_id);
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelOutput(belname, id_OSCOUT, id(buf));
break;
case ID_OSCH:
snprintf(buf, 32, "R%dC%d_OSCH", row + 1, col + 1);
belname = id(buf);
addBel(belname, id_OSCH, Loc(col, row, 0), false);
portname = IdString(pairLookup(bel->ports.get(), bel->num_ports, ID_OSCOUT)->src_id);
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelOutput(belname, id_OSCOUT, id(buf));
break;
case ID_OSCF:
snprintf(buf, 32, "R%dC%d_OSCF", row + 1, col + 1);
belname = id(buf);
addBel(belname, id_OSCF, Loc(col, row, 0), false);
portname = IdString(pairLookup(bel->ports.get(), bel->num_ports, ID_OSCOUT)->src_id);
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelOutput(belname, id_OSCOUT, id(buf));
portname = IdString(pairLookup(bel->ports.get(), bel->num_ports, ID_OSCEN)->src_id);
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelInput(belname, id_OSCEN, id(buf));
break;
case ID_OSCZ:
snprintf(buf, 32, "R%dC%d_OSCZ", row + 1, col + 1);
belname = id(buf);
addBel(belname, id_OSCZ, Loc(col, row, 0), false);
portname = IdString(pairLookup(bel->ports.get(), bel->num_ports, ID_OSCOUT)->src_id);
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelOutput(belname, id_OSCOUT, id(buf));
portname = IdString(pairLookup(bel->ports.get(), bel->num_ports, ID_OSCEN)->src_id);
snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelInput(belname, id_OSCEN, id(buf));
break;
// fall through the ++
case ID_LUT7:
z++;

View File

@ -758,6 +758,12 @@ X(GSR)
X(GSR0)
X(GSRI)
// Oscillators
X(OSC)
X(OSCZ)
X(OSCH)
X(OSCF)
// primitive attributes
X(INIT)
X(FF_USED)
@ -791,6 +797,8 @@ X(COUT)
X(OF)
X(V)
X(G)
X(OSCOUT)
X(OSCEN)
// timing
X(X0)