目录
装箱选项 Packing Options
--connection_driven_clustering {on | off}
--alpha_clustering
--beta_clustering
--timing_driven_clustering {on|off}
--cluster_seed_type {blend | timing | max_inputs}
--clustering_pin_feasibility_filter {on | off}
--balance_block_type_utilization {on, off, auto}
--target_ext_pin_util { auto | | , | : | :, }
--pack_prioritize_transitive_connectivity {on | off}
--pack_high_fanout_threshold {auto | | :}
--pack_transitive_fanout_threshold
--pack_feasible_block_array_size
--pack_verbosity
--write_block_usage
--use_attraction_groups
--pack_num_moves
--pack_move_type
AAPack是集成在VPR中的打包算法。AAPack以技术映射的blif网表作为输入,该网表由LUT、触发器、存储器、乘法器等组成,并输出一个由更复杂的逻辑块组成的.net格式的网表。FPGA上可用的逻辑块由FPGA架构文件指定。对于不从事CAD工作的人员,可以将所有选项保持默认值。
控制 AAPack 是否优先吸收连接较少的网络到复杂逻辑块中,而不是优先吸收连接较多的网络。
默认值: on
控制是否允许将没有吸收到簇中的原语打包到其中。
不相关的簇可以增加打包密度(减少实现电路所需的块数),但可能会显著影响可布线性,代价是布线性能较差。
当设置为自动(auto)时,VPR会根据目标设备和实现的打包密度自动决定是否启用不相关的簇。
on : 启用不相关的簇
off : 禁用不相关的簇
auto: 动态启用/禁用(基于密度)
默认值: auto
该参数用于权衡时序和面积的优化。
当参数值为0时,仅关注面积优化;当参数值为1时,完全关注时序优化。
默认值: 0.75
该参数用于控制对较小的网络吸收优化和信号共享优化之间的权衡。
当该参数值为0时,仅关注信号共享;当参数值为1时,仅关注将较小的网络吸收到簇中。只有在启用了 --connection_driven_clustering=on 的情况下才具有意义。
默认值: 0.9
控制簇是否优化时序。
默认值: on
Controls how the packer chooses the first primitive to place in a new cluster.
控制装箱在一个新的簇中选择第一个要放置的原语的方式。该选项控制如何选择原语作为种子。
"timing" 意味着选择具有最关键时序连接的未聚类原语作为种子。
"max_inputs" 意味着选择具有最多连接输入的未聚类原语作为种子。
"blend" 使用时序关键性、与该原语紧密耦合的块数量以及外部输入数量的加权和作为种子选择的依据。
"max_pins" 选择具有最多引脚数量(无论使用与否)的原语作为种子。
"max_input_pins" 选择具有最多输入引脚数量(无论使用与否)的原语作为种子。
"blend2" 是一种替代的混合公式,同时考虑了已使用和未使用的引脚数量、紧密耦合块的数量以及关键性。
默认情况下,如果启用了时序驱动聚类(timing_driven_clustering),则使用 "blend2";否则使用 "max_inputs"。
该选项控制在聚类过程中是否使用引脚计数可行性过滤器。当启用时,聚类引擎会计算聚类内互相连接的引脚组/类中可用引脚的数量。这些计数用于快速过滤候选原语/原子/分子,对于这些原语,聚类没有足够的引脚进行布线(而不需要执行完整的布线)。这样可以减少打包运行时间。
默认值: on
该选项控制打包器在将原语映射到可能的多个块类型时选择的块类型方式。
on : 尝试通过选择(当前)利用率最低的块类型来平衡块类型的利用情况。
off : 不尝试平衡块类型的利用情况。
auto: 动态启用/禁用(根据密度)。
默认值: auto
设置聚类过程中的外部引脚利用率目标(介于0.0和1.0之间的分数)。这确定了在给定聚类中聚类引擎在关闭当前聚类并打开新聚类之前将尝试使用多少引脚。
将此值设置为1.0将引导打包器尽可能密集地打包(即它将继续向簇中添加分子,直到无法容纳为止)。将此值设置为较低的值将引导打包器进行较少密集的打包,而是创建更多的簇。在极限情况下,将此值设置为0.0将导致打包器为每个分子创建一个新的簇。
通常,较少密集的打包可以提高布线的可行性,但会增加簇的使用量。
该选项可以接受多种不同类型的值:
auto VPR将自动确定适当的目标利用率。
例如:
0.7 指定所有块应该以 70% 的输入引脚利用率为目标。
例如:
0.7, 0.9 指定所有块应该以 70% 的输入引脚利用率和 90% 的输出引脚利用率为目标。
例如:
clb:0.7 指定只有 clb 类型的块应该以 70% 的输入引脚利用率为目标。
clb:0.7,0.9 指定只有 clb 类型的块应该以 70% 的输入引脚利用率和 90% 的输出引脚利用率为目标。
注意:如果未指定引脚利用率目标,则默认为 1.0(即100%利用率)。
例如:
0.7 没有指定输出引脚利用率,相当于 0.7,1.0。
clb:0.7,0.9 没有指定其他块类型的引脚利用率,因此它们将假定默认利用率为 1.0,1.0。
该选项还可以接受多个以空格分隔的值。例如:
--target_ext_pin_util clb:0.5 dsp:0.9,0.7 0.8
这将指定 clb 块使用 50% 的目标输入引脚利用率,dsp 块分别使用 90% 和 70% 的目标输入和输出引脚利用率,而所有其他块使用 80% 的目标输入引脚利用率。
注意:此选项仅作为一个指导。如果一个分子(例如具有许多输入的进位链)在指定的目标利用率下无法适应聚类类型,打包器将退回到使用所有引脚(即目标利用率为 1.0)。
注意:此选项需要启用 --clustering_pin_feasibility_filter 选项。
默认值: auto
该选项控制在打包过程中是否优先考虑传递连接而不是高扇出连接。
默认值: on
定义了打包器中高扇出网络的阈值。
该选项可以接受多种不同类型的值:
auto VPR将自动确定适当的阈值。
例如:
64 指定所有块应使用阈值为 64。
例如:
clb:16 指定 clb 类型的块应使用阈值为 16。
该选项还可以接受多个以空格分隔的值。例如:
--pack_high_fanout_threshold 128 clb:16
这将指定 clb 块使用阈值为 16,而所有其他块(例如 DSP/RAM)将使用阈值为 128。
默认值: auto
打包器的传递扇出阈值。
默认值: 4
此值用于确定通过早期过滤合法性测试但未通过更详细的路由过滤器的候选项的优先级队列的最大大小。
默认值: 30
控制聚类输出的详细程度。较大的值会产生更详细的输出,对于调试架构打包问题可能会有用。
默认值: 2
将聚类级别的块使用摘要以机器可读(JSON 或 XML)或人类可读(TXT)的格式写入路径为
是否使用吸引组,以便更容易将原语打包在同一楼层规划区域中。
默认值:on
在打包阶段可以尝试的移动次数。
默认值:100000
在打包阶段使用的移动类型。
可用的值包括:randomSwap、semiDirectedSwap、semiDirectedSameTypeSwap。
默认值:semiDirectedSwap