aboutsummaryrefslogtreecommitdiffstats
path: root/machxo2/pack.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2022-02-16 16:15:26 +0000
committerGitHub <noreply@github.com>2022-02-16 16:15:26 +0000
commit25c47e5b7e12d232cac9408b7d6d339ee11793b7 (patch)
tree7700f5ce4d8b40255aa54e08d2c4489e74b906ff /machxo2/pack.cc
parent02e6d2dbca0433e6f873c6af635cee701e84f5f5 (diff)
parent30fd86ce69fa65e89dec119e23b5bccb54de70a3 (diff)
downloadnextpnr-25c47e5b7e12d232cac9408b7d6d339ee11793b7.tar.gz
nextpnr-25c47e5b7e12d232cac9408b7d6d339ee11793b7.tar.bz2
nextpnr-25c47e5b7e12d232cac9408b7d6d339ee11793b7.zip
Merge pull request #917 from YosysHQ/gatecat/netlist-i
refactor: New NetInfo and CellInfo constructors
Diffstat (limited to 'machxo2/pack.cc')
-rw-r--r--machxo2/pack.cc15
1 files changed, 6 insertions, 9 deletions
diff --git a/machxo2/pack.cc b/machxo2/pack.cc
index c53229ba..0c2c9459 100644
--- a/machxo2/pack.cc
+++ b/machxo2/pack.cc
@@ -183,17 +183,16 @@ static void pack_constants(Context *ctx)
const_cell->params[id_LUT0_INITVAL] = Property(0, 16);
const_cell->params[id_LUT1_INITVAL] = Property(0xFFFF, 16);
- std::unique_ptr<NetInfo> gnd_net = std::unique_ptr<NetInfo>(new NetInfo);
- gnd_net->name = ctx->id("$PACKER_GND_NET");
+ NetInfo *gnd_net = ctx->createNet(ctx->id("$PACKER_GND_NET"));
gnd_net->driver.cell = const_cell.get();
gnd_net->driver.port = id_F0;
- const_cell->ports.at(id_F0).net = gnd_net.get();
+ const_cell->ports.at(id_F0).net = gnd_net;
- std::unique_ptr<NetInfo> vcc_net = std::unique_ptr<NetInfo>(new NetInfo);
+ NetInfo *vcc_net = ctx->createNet(ctx->id("$PACKER_VCC_NET"));
vcc_net->name = ctx->id("$PACKER_VCC_NET");
vcc_net->driver.cell = const_cell.get();
vcc_net->driver.port = id_F1;
- const_cell->ports.at(id_F1).net = vcc_net.get();
+ const_cell->ports.at(id_F1).net = vcc_net;
std::vector<IdString> dead_nets;
@@ -201,20 +200,18 @@ static void pack_constants(Context *ctx)
NetInfo *ni = net.second.get();
if (ni->driver.cell != nullptr && ni->driver.cell->type == ctx->id("GND")) {
IdString drv_cell = ni->driver.cell->name;
- set_net_constant(ctx, ni, gnd_net.get(), false);
+ set_net_constant(ctx, ni, gnd_net, false);
dead_nets.push_back(net.first);
ctx->cells.erase(drv_cell);
} else if (ni->driver.cell != nullptr && ni->driver.cell->type == ctx->id("VCC")) {
IdString drv_cell = ni->driver.cell->name;
- set_net_constant(ctx, ni, vcc_net.get(), true);
+ set_net_constant(ctx, ni, vcc_net, true);
dead_nets.push_back(net.first);
ctx->cells.erase(drv_cell);
}
}
ctx->cells[const_cell->name] = std::move(const_cell);
- ctx->nets[gnd_net->name] = std::move(gnd_net);
- ctx->nets[vcc_net->name] = std::move(vcc_net);
for (auto dn : dead_nets) {
ctx->nets.erase(dn);