diff options
Diffstat (limited to 'nexus')
-rw-r--r-- | nexus/arch.cc | 3 | ||||
-rw-r--r-- | nexus/constids.inc | 2 | ||||
-rw-r--r-- | nexus/fasm.cc | 2 |
3 files changed, 7 insertions, 0 deletions
diff --git a/nexus/arch.cc b/nexus/arch.cc index 90acc7b7..fa81485a 100644 --- a/nexus/arch.cc +++ b/nexus/arch.cc @@ -591,6 +591,9 @@ delay_t Arch::getRipupDelayPenalty() const { return 250; } delay_t Arch::estimateDelay(WireId src, WireId dst) const { + const auto &dst_data = wire_data(dst); + if (src.tile == 0 && dst_data.name == ID_LOCAL_VCC) + return 0; int src_x = src.tile % chip_info->width, src_y = src.tile / chip_info->width; int dst_x = dst.tile % chip_info->width, dst_y = dst.tile / chip_info->width; int dist_x = std::abs(src_x - dst_x); diff --git a/nexus/constids.inc b/nexus/constids.inc index 5407cb23..48b0ca2b 100644 --- a/nexus/constids.inc +++ b/nexus/constids.inc @@ -528,3 +528,5 @@ X(TOUT) X(Q0) X(Q1) X(SCLK) + +X(LOCAL_VCC) diff --git a/nexus/fasm.cc b/nexus/fasm.cc index c4eb9a1b..964828cb 100644 --- a/nexus/fasm.cc +++ b/nexus/fasm.cc @@ -211,6 +211,8 @@ struct NexusFasmWriter return; std::string tile = tile_name(pip.tile, tile_by_type_and_loc(pip.tile, IdString(pd.tile_type))); std::string source_wire = escape_name(ctx->pip_src_wire_name(pip).str(ctx)); + if (source_wire == "LOCAL_VCC") + source_wire = "G__VCC"; std::string dest_wire = escape_name(ctx->pip_dst_wire_name(pip).str(ctx)); out << stringf("%s.PIP.%s.%s", tile.c_str(), dest_wire.c_str(), source_wire.c_str()) << std::endl; } |