diff options
| author | YRabbit <rabbit@yrabbit.cyou> | 2021-07-03 10:09:38 +1000 | 
|---|---|---|
| committer | YRabbit <rabbit@yrabbit.cyou> | 2021-07-03 10:09:38 +1000 | 
| commit | 1aae331ddc4d5efcda307588402b8457eeded5b5 (patch) | |
| tree | 0d5f70316f84fd3235b4a7a84f81c9d86da65b94 | |
| parent | 5c5982c50a63c83dba2f68e9d5dcc2bb67cc4c67 (diff) | |
| parent | 8a9fb810369aeb5eed128ef4e7d4de456ef1ec8f (diff) | |
| download | nextpnr-1aae331ddc4d5efcda307588402b8457eeded5b5.tar.gz nextpnr-1aae331ddc4d5efcda307588402b8457eeded5b5.tar.bz2 nextpnr-1aae331ddc4d5efcda307588402b8457eeded5b5.zip  | |
Merge branch 'master' into io_port
| -rw-r--r-- | fpga_interchange/fpga_interchange.cpp | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/fpga_interchange/fpga_interchange.cpp b/fpga_interchange/fpga_interchange.cpp index 92d409f9..1c6e6ce8 100644 --- a/fpga_interchange/fpga_interchange.cpp +++ b/fpga_interchange/fpga_interchange.cpp @@ -544,7 +544,9 @@ void FpgaInterchange::write_physical_netlist(const Context * ctx, const std::str      for(auto & net_pair : ctx->nets) {          auto &net = *net_pair.second; -        if (net.users.empty()) +        // Remove disconnected nets that do not have any users +        auto net_name = std::string(net.name.c_str(ctx)); +        if (net.users.empty() && net_name.rfind("$frontend$", 0) == 0)              nets_to_remove++;      } @@ -553,7 +555,8 @@ void FpgaInterchange::write_physical_netlist(const Context * ctx, const std::str      for(auto & net_pair : ctx->nets) {          auto &net = *net_pair.second; -        if (net.users.empty()) +        auto net_name = std::string(net.name.c_str(ctx)); +        if (net.users.empty() && net_name.rfind("$frontend$", 0) == 0)              continue;          const CellInfo *driver_cell = net.driver.cell; @@ -1087,6 +1090,14 @@ ModuleReader::ModuleReader(const LogicalNetlistImpl *root,              if(iter == net_indicies.end()) {                  PortKey port_key = port_connections.first;                  auto port = ports[port_key.port_idx]; + +                // Disconnected outputs should be marked, so to be ignored when +                // writing the physical netlist. +                // Skipping these nets lets the basic frontend to assign a default +                // name that starts with $frontend$. +                if (port.getDir() == LogicalNetlist::Netlist::Direction::OUTPUT) +                    continue; +                  disconnected_nets[net_idx] = stringf("%s.%d", root->strings.at(port.getName()).c_str(), i);              }          }  | 
