diff options
author | gatecat <gatecat@ds0.me> | 2022-02-26 15:17:46 +0000 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2022-02-27 13:47:05 +0000 |
commit | 86699b42f619960bfefd4d0b479dd44a90527ea4 (patch) | |
tree | 06997246ae104b75ce472215fcee3ba37ee5c50c /common/timing.h | |
parent | 434a9737bb459189b463c8768454ea6c0e151406 (diff) | |
download | nextpnr-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.h | 23 |
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; |