aboutsummaryrefslogtreecommitdiffstats
path: root/common/timing.h
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2022-02-26 15:17:46 +0000
committergatecat <gatecat@ds0.me>2022-02-27 13:47:05 +0000
commit86699b42f619960bfefd4d0b479dd44a90527ea4 (patch)
tree06997246ae104b75ce472215fcee3ba37ee5c50c /common/timing.h
parent434a9737bb459189b463c8768454ea6c0e151406 (diff)
downloadnextpnr-86699b42f619960bfefd4d0b479dd44a90527ea4.tar.gz
nextpnr-86699b42f619960bfefd4d0b479dd44a90527ea4.tar.bz2
nextpnr-86699b42f619960bfefd4d0b479dd44a90527ea4.zip
Switch to potentially-sparse net users array
This uses a new data structure for net.users that allows gaps, so removing a port from a net is no longer an O(n) operation on the number of users the net has. Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'common/timing.h')
-rw-r--r--common/timing.h23
1 files changed, 0 insertions, 23 deletions
diff --git a/common/timing.h b/common/timing.h
index b34fd636..fe1bcaa8 100644
--- a/common/timing.h
+++ b/common/timing.h
@@ -44,28 +44,6 @@ struct CellPortKey
}
};
-struct NetPortKey
-{
- IdString net;
- size_t idx;
- NetPortKey(){};
- explicit NetPortKey(IdString net) : net(net), idx(DRIVER_IDX){}; // driver
- explicit NetPortKey(IdString net, size_t user) : net(net), idx(user){}; // user
-
- static const size_t DRIVER_IDX = std::numeric_limits<size_t>::max();
-
- inline bool is_driver() const { return (idx == DRIVER_IDX); }
- inline size_t user_idx() const
- {
- NPNR_ASSERT(idx != DRIVER_IDX);
- return idx;
- }
-
- unsigned int hash() const { return mkhash(net.hash(), idx); }
-
- inline bool operator==(const NetPortKey &other) const { return (net == other.net) && (idx == other.idx); }
-};
-
struct ClockDomainKey
{
IdString clock;
@@ -194,7 +172,6 @@ struct TimingAnalyser
struct PerPort
{
CellPortKey cell_port;
- NetPortKey net_port;
PortType type;
// per domain timings
dict<domain_id_t, ArrivReqTime> arrival;