gowin: Add bels for oscillator

This commit is contained in:
Tim Pambor 2022-03-27 22:15:12 +02:00
parent 3ed53153ca
commit 12b38bab6d
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)); snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this));
addBelInput(belname, id_GSRI, id(buf)); addBelInput(belname, id_GSRI, id(buf));
break; 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 ++ // fall through the ++
case ID_LUT7: case ID_LUT7:
z++; z++;

View File

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