From 6b4bd0993f5576d89df1c674b1868e29dcf650e5 Mon Sep 17 00:00:00 2001 From: gatecat Date: Wed, 17 Feb 2021 10:24:06 +0000 Subject: generic: Don't generate Vcc if not needed Signed-off-by: gatecat --- generic/pack.cc | 12 +++++++----- tests | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/generic/pack.cc b/generic/pack.cc index 43157b6c..6b984fef 100644 --- a/generic/pack.cc +++ b/generic/pack.cc @@ -156,7 +156,7 @@ static void pack_constants(Context *ctx) std::vector dead_nets; - bool gnd_used = false; + bool gnd_used = false, vcc_used = false; for (auto net : sorted(ctx->nets)) { NetInfo *ni = net.second; @@ -169,6 +169,7 @@ static void pack_constants(Context *ctx) } 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); + vcc_used = true; dead_nets.push_back(net.first); ctx->cells.erase(drv_cell); } @@ -178,10 +179,11 @@ static void pack_constants(Context *ctx) ctx->cells[gnd_cell->name] = std::move(gnd_cell); ctx->nets[gnd_net->name] = std::move(gnd_net); } - // Vcc cell always inserted for now, as it may be needed during carry legalisation (TODO: trim later if actually - // never used?) - ctx->cells[vcc_cell->name] = std::move(vcc_cell); - ctx->nets[vcc_net->name] = std::move(vcc_net); + + if (vcc_used) { + ctx->cells[vcc_cell->name] = std::move(vcc_cell); + ctx->nets[vcc_net->name] = std::move(vcc_net); + } for (auto dn : dead_nets) { ctx->nets.erase(dn); diff --git a/tests b/tests index 6d010ef0..2aa02a28 160000 --- a/tests +++ b/tests @@ -1 +1 @@ -Subproject commit 6d010ef07edb383f9caba9498cdec8b13fff03a6 +Subproject commit 2aa02a28d4078c616d96400973d3b5e4cf1e454c -- cgit v1.2.3