该命令能够优化当前的网表文件,可以指定的参数如下:
- retarget: 其主要功能是将当前设计从一个器件家族重定向到另一个器件家族。举例,将MUXCY实例或者XORCY实例重定向为CARRY4块。
- Constant Propagation: 针对电路里的常量输入进行优化,去掉冗余的组合逻辑,从而生成一个更简单的网表。
- sweep: 清除无用电路,除去无负载的cells和nets。
- bram_power_opt: bram的功耗优化。
- remap: 将多个LUTs重新映射到一个LUT来降低逻辑的深度。
- aggressive_remap: 执行和remap类似的操作但是更加激进,需要用更多的优化时间来降低更多的LUT级数。
- resynth_area: 在area mode进行重新综合来降低LUTs的数量。
- resynth_seq_area: 进行重新综合来降低组合逻辑和时序逻辑。
- resynth_remap: 通过重新映射来降低逻辑的深度,从而提升关键路径的时序。这种基于时序驱动的方式可以通过复制LUTs的方式降低 LUTs的扇出,并且可以将多个小的LUTs合并为一个大的功能,但是需要的编译时间也更多了。
opt_design -sweep -retarget
需要注意的是,在命令行选择了指定的优化方法后,其他的优化手段均会失效。
opt_design命令可以添加directive参数,可以使用的策略如下:
- explore: 运行额外的优化手段来提升结果。
- exploreArea: 运行resynth_area来降低LUTs的使用量。
- exploreWithRemap: 运行aggressive_remap来压缩逻辑级数。
- ExploreSequentialArea: 运行resynth_seq_area优化来降低寄存器和相关联的组合逻辑用量。
- runtimeOptimized: 运行除去bram_power_opt的default策略,应用最少的优化来达到更快的编译速度。
- RQS: 该方法用于帮助选择opt_design用那种策略。
- default: 默认策略,包括以下策略:
-
- retarget
- constant propagation
- sweep
- global buffer(BUFG) optimizations
- dsp register optimizations
- shift-register logic optimizations
- block ram power optimizations
- implement mig cores
- implement debug cores
使用directive参数例子如下:
opt_design -directive Explore