Struct IncrementalDmax¶
Defined in File routing.h
Struct Documentation¶
-
struct IncrementalDmax¶
基于链路占用量的增量最大延迟评估器。
缓存每条无向边上的线网数量、TDM 比例和边延迟,并建立边到线网的反向索引, 从而在 rip-up/reroute 后只重算受影响线网的最差源汇延迟。
Public Functions
-
inline IncrementalDmax(int F_, const std::vector<std::vector<int>> &cap_, double alpha_, double beta_, double die_delay_)¶
创建空的增量延迟缓存。
- Parameters:
F_ – 路由拓扑节点数。
cap_ – 物理链路容量矩阵,生命周期必须覆盖本对象。
alpha_ – TDM 延迟系数。
beta_ – 跨 FPGA 固定延迟。
die_delay_ – 片内跨 Die 固定延迟。
-
inline void build_from(const flat_hash_map<int, std::set<std::pair<int, int>>> &route_trees, const std::vector<cut_net> &cut_nets)¶
根据当前路由树完整初始化占用、延迟、反向索引和线网延迟缓存。
- Parameters:
route_trees – 原始线网编号到路由树边集的映射。
cut_nets – 局部割线网列表。
-
inline void apply_edge_delta(int u, int v, int delta)¶
更新一个有向存储位置的线网计数,并重算对应边的 TDM 与延迟。
- Parameters:
u – 边的起点;调用方需按缓存使用的方向传入。
v – 边的终点。
delta – 线网计数变化量,通常为 +1 或 -1。
-
inline void apply_edge_delta_nodirection(int u, int v, int delta)¶
更新一条无向边的线网计数,并对称更新两个方向的 TDM 与延迟。
- Parameters:
u – 边的任一端点。
v – 边的另一端点。
delta – 线网计数变化量,通常为 +1 或 -1。
-
inline void recompute_nets(const std::vector<int> &nets, const flat_hash_map<int, std::set<std::pair<int, int>>> &route_trees, const std::vector<cut_net> &cut_nets)¶
仅重新计算指定局部线网的最差源汇延迟。
- Parameters:
nets – 需要更新的局部 cut_net 编号。
route_trees – 原始线网编号到当前路由树的映射。
cut_nets – 局部割线网列表。
-
inline std::pair<double, int> global_worst(const std::vector<cut_net> &cut_nets) const¶
查询当前所有割线网中的最大延迟。
- Parameters:
cut_nets – 局部割线网列表,用于将局部编号转换为原始线网编号。
- Returns:
{最大延迟, 原始线网编号};无有效线网时编号为 -1。
Public Members
-
int F¶
路由拓扑中的节点总数。
-
const std::vector<std::vector<int>> &cap¶
物理链路容量矩阵。
-
double alpha¶
TDM 比例对应的线性延迟系数。
-
double beta¶
使用跨 FPGA 边时的固定割边延迟。
-
std::vector<std::vector<int>> net_cnt¶
每条无向边上的当前线网数量。
-
std::vector<std::vector<double>> delay¶
每条边的当前延迟,即 beta + alpha * TDM 比例。
-
std::vector<std::vector<double>> tdm¶
每条边的当前 TDM 比例。
-
double die_delay = 0.0¶
片内跨 Die 边的固定延迟。
-
std::unordered_map<long long, std::vector<int>> edge_to_nets¶
无向边到使用它的局部线网编号列表。
Public Static Functions
-
static inline long long k(int u, int v)¶
生成无向边的紧凑整数键。
-
inline IncrementalDmax(int F_, const std::vector<std::vector<int>> &cap_, double alpha_, double beta_, double die_delay_)¶