Class fpga

Class Documentation

class fpga

FPGA 或多芯片底板环境建模基类 (FPGA Topography Model)。

包括多 FPGA 的资源容量、任意两FPGA之间的多级跳数限制(Hop Topo), 以及对该底层平台上产生 TDM 分割代价进行最终评判、打分的重要逻辑与度量器。

Public Functions

inline int computeCutWeight(const graph &g, const vector<int> &parts) const

计算在当前给定的分割归划 parts 中切断的网络边所构造成的总物理权重和。

遍历超图里的每条超边,检索网中涉及到的多个分区,凡跨域就会按照连线本身的权重累加入整体 cutweight 返回。

Parameters:
  • g – 当前正在操作处理的受评超图数据模型引用。

  • parts – 全图各节点当前分区映射表(即解集合数组: parts[node_id] = fpga_id)。

Returns:

int 对应的总计算割截代价值,是评估主要参照物。

inline float computeMaxTdmDelayFromCutWeights(const vector<vector<int>> &cut_weights) const

基于各互连的割边统计矩阵,调用 TDM 数据引擎计算全图拥堵延迟的绝对最大值。

该函数依赖内嵌的 tdmEstimate,根据传入的数据带宽阵列通过模型化时分分配后预估最大的线路拖延情况。

Parameters:

cut_weights – FPGA与FPGA之间由于交叉互联已经计算生成完毕的待跑信道割边体积密度邻接矩阵。

Returns:

float 系统预计发生的最严重点到点TDM预估拖延时间。若无IO相关配置或者无法合法完成拓扑则反馈特殊极大值。

inline Metrics computeCutWeightsOld(const graph &g, const vector<int> &parts, vector<vector<int>> &cut_weights) const

(弃用或老版) 仅执行基础割边连线代偿预估与常规指标合成。

包括评估切面总割大小(cut)、基础 TDM 指标以及拓扑违规。不会进行高低速信道深度 TDM 引擎延时判定。

Parameters:
  • g – 输入超图。

  • parts – 指定图内当前分区判定结果列。

  • cut_weights[out] 将返回输出该分配下不同体系的二维块割关联流向流量阵列信息。

Returns:

Metrics 返回填充包装好的传统多维质量评分大类数据块对象。

inline Metrics computeCutWeights(const graph &g, const vector<int> &parts, vector<vector<int>> &cut_weights, bool withNet = false)

获取完整时序及割边等多目标的合并计分。

相较于旧版不仅输出汇总流量,还在带有正确时延库(I/O不为空)的基础上强制性向外输送 TdmDelay 的综合评级计算。可选地传递重路由的网络。

Parameters:
  • g – 基准超图。

  • parts – 分页对应方案。

  • cut_weights[out] 将会由函数内清空调配并存放双向节点图上切面压力的双向带宽数组。

  • withNet – 布尔参数标志。为真时同时将图的网络数据传递到物理引擎,以获取更精确的评估。

Returns:

Metrics 返回囊揽多类目标的集合信息,主要供外界启发式策略调优计算 Gain 或 Accept 。

Public Members

vector<VectorXi> resources

每个 FPGA (按其索引 [k]) 容量大小配置限额 (LUT, FF 等)。

vector<vector<int>> topology

定义了FPGA系统模块之间的基本相邻无向或有向连通矩阵(通常用0与1构建),用于反映可达性布线可能。

vector<int> maxDist

此 FPGA 最多允许其连接的网络延伸的最长跳线数值设定。

vector<vector<int>> dist

一张完整求取所得的全局距离矩阵网络最短跳路表。dist[i][j] 为节点 i 与节点 j 至少需搭桥跳越的中继数。

vector<vector<set<int>>> S_hat

可达点备选覆盖区域层,多用于快速获取距离 d 附近的能够跳跃投递的一张容差节点映射列表 S_hat[src][dist]

vector<vector<int>> cutweights_assignment

每对FPGA组件相互通讯时预先评估或预保留的最优容量配置切割分配基准图 [i][j]

vector<vector<int>> hio_channel_assignment

IO JSON 模式下每对 FPGA 的 HIO/GIO 通道数;它不是 FIT 中的物理根数。

vector<vector<int>> mgt_channel_assignment

IO JSON 模式下每对 FPGA 的 MGT 通道数;它不是 FIT 中的物理根数。

vector<vector<int>> fpga_hierarchy_paths

扁平 FPGA 下标对应的层级路径,如 {rack, cluster, board, fpga}。

bool bound_constraint = false

指出在当前规划下是否开启和应用强约束级别的“资源严格上下限壁垒”。

bool need_routing = false

指出在当前规划下是否需要进行跨FPGA的路由布线代价评估。

bool is_hierarchical = false

当前是否为层次化分割模式下拍平的FPGA体系结构。

VectorXi upper_resources

被设置并生效的总池利用率的严格高水位界限控制值向量;如果某部分达到此容量边界则拒绝接受更多节点。

VectorXi lower_resources

低水位限制控制值向量。

vector<DieConnection> die_connections

保存该体系下所有 Die-to-Die 跨块连接和带宽映射详情的物理规格表。

map<int, int> die_to_fpga_map
int dies_per_fpga = 1
int board_count = -1
int fpga_per_board = -1
HSFullTiming::HSIOTdmDelay tdmEstimate