您当前的位置: 首页 > 

lu-ming.xyz

暂无认证

  • 0浏览

    0关注

    115博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【vivado UG学习】Synthesis策略学习

lu-ming.xyz 发布时间:2021-08-24 16:09:59 ,浏览量:0

目录
  • 1.1 综合方法
  • 1.2 使用Sythesis
    • 1.2.1 Sythesis设置
    • 1.2.2 创建运行策略
    • 1.2.3 控制文件编译顺序
  • 1.2 运行Synthesis
    • 1.2.1 使用Tcl运行Synthesis
    • 1.2.2 RTL synthesis的多线程处理
  • 参考文档

综合是将rtl指定的设计转换为门级表示的过程

1.1 综合方法

Vivado,可以:

  • 创建以及保存策略。策略是命令选项的配置,您可以将其应用于设计运行以进行综合或实现。
  • 对综合和实现运行进行排队,以便在多处理器机器上顺序或同时运行。
  • 监视综合或时间过程,查看log报告。
1.2 使用Sythesis 1.2.1 Sythesis设置

在这里插入图片描述

  1. Constraints(约束):选择默认的约束设置,对应工程种添加了的.XDC文件。包含两种类型的约束:

    1. Physical constraints: 物理约束。包含引脚布置、cells(如RAMs,LUTs,Flip-Flops)的布置、器件配置相关设置。
    2. Timing constraints: 时序约束。定义设计的频率要求,如果没有要求,Vivado仅对wire的长度和布局进行优化。
  2. Options-Strategy选项:有一些已经定义好的策略可选,自己选择定义的策略。 在这里插入图片描述

    各策略选项的默认值: 在这里插入图片描述

  3. 策略的选项:

  • -flatten_hierarchy:确定Vivado合成如何控制层次结构。 在这里插入图片描述

    1. full: 指示工具将层次结构完全变平,只留下顶层。
    2. none:指示合成工具永远不要把层次结构变平。合成的输出与原RTL具有相同的层次结构。
    3. rebuilt:当设置为rebuild时,合成工具可以将层次结构扁平化,执行合成,然后基于原始RTL重建层次结构。这个值允许跨边界优化的QoR好处,其最终层次结构与RTL类似,便于分析。
  • -gated_clock_conversion: 是否转换时钟逻辑为门控时钟。

  • -bufg: 控制工具在设计中推断的bufg数量。当设计网表中的其他bufg对合成过程不可见时,Vivado设计工具才会使用这个选项。

  • -fanout_limit: 指定信号在开始复制逻辑之前必须驱动的负载数。也就是扇出的最大值。这个全局限制是一个通用指南,当工具确定它是必要的时,它可以忽略这个选项。 注意:-fanout_limit开关不影响控制信号(如设置,复位,时钟使能),如果需要,使用MAX_FANOUT复制这些信号。

  • -directive: 替换-effort_level选项。指定后,运行此选项Vivado综合与不同的优化。 在这里插入图片描述

    1. Default:
    2. RuntimeOptimized: 运行时间最优化。即减少时序优化和RTL优化以减少综合的运行时间。
    3. AreaOptimized_high: 执行的面积优化,包含强制三值加法器(ternary adder)的实现,改变比较器中是否应用进位链的阈值,实现area-optimized多路复用器。
    4. AreaOptimized_medium: 执行的面积优化,包含更改是否执行控制集优化的阈值,强制三值加法器(ternary adder)的实现,降低推断为DSP块时的乘数的阈值,移动移位寄存器到BRAM,降低在比较器中应用进位链的阈值,实现area-optimized多路复用器。
    5. AlternateRoutability: 改进路由能力的算法集(少使用MUXFs和CARRYs)。
    6. AreaMapLargeShiftRegToBRAM: 检测大移位寄存器并使用专用块RAM实现它们。
    7. AreaMultThresholdDSP: 降低推断为DSP块实现的阈值。
    8. FewerCarryChains: 提高【使用lut而不是进位链】的操作数大小阈值。
  • -retiming: 是否通过【组合门或lut】自动移动寄存器来改善【时钟内顺序路径的电路性能(寄存器平衡)】。它保持电路的原始行为和延迟,不需要更改RTL文件,默认值是OFF。

  • -fsm_extraction: 控制Sythesis如何提取和映射有限状态机。

  • -keep_equivalent_registers: 防止合并具有相同输入逻辑的寄存器。

  • -resource_sharing: 设置不同信号间算术运算的共享。值:auto, on和off。auto设置是否共享取决于设计的时序。

  • control_set_opt_threshold: 设置将clock enable 优化为较低数量的控制信号集(control set)的门限。auto:根据选择的器件自动选择一个值。当控制信号的扇出数小于给定的值时,工具合并control sets到寄存器D端输入。如果控制信号扇出高于设置值,工具试图让该控制信号信号驱动寄存器上的control_set_pin,也就是实际的控制引脚。支持任何正整数值。但IDE最大可选16,如果选0,则禁用此项优化。【20211123修正】

  • -no_lc: 关闭LUT组合。

  • -no_srlextract:关闭SRL提取,使它们实现为简单寄存器。

  • -shreg_min_size: 推断为SRLs的门限值。默认值为3,这设置了将推断为固定延迟链(静态SRL)的SRL 时 顺序元素的数量。

  • -max_bram:描述设计中允许的最大block RAM数目。当设计中有黑盒子或第三方网表时,通常会使用这种方法,为这些网表节省空间。默认设置为-1表示工具选择指定部件允许的最大数量。

  • -max_uram: 设置设计中允许的UltraRAM (UltraScale®和UltraScale+™设备块ram)块的最大数量。默认设置为-1表示工具选择指定部件允许的最大数量。

  • -max_dsp:描述设计中允许的最大块DSP数量。通常在设计中有黑盒或第三方网表时使用,并允许使用这些网表。默认设置为-1表示工具选择指定部件允许的最大数量。

  • -max_bram_cascade_height: 控制工具可级联的最大BRAM数量。默认设置为-1表示工具选择指定部件允许的最大数量。

  • -max_uram_cascade_height:控制URAMs的最大数量(UltraScale+™设备UltraRAM块),可以由工具级联。默认设置-1表示工具选择指定部件允许的最大数量。

  • -cascade_dsp: 控制如何在DSP块输出中实现加法器。默认情况下,DSP输出的和是使用块内置加法器链计算的。值树强制在结构中实现总和。取值为:auto、tree和force。默认为auto。

  • -no_timing_driven: (可选)禁用默认的timing driven 综合算法。这减少了synthesis时间,但忽略了timing对synthesis的影响。

  • -sfcu: 在单文件编译单元模式下运行synthesis。

  • -assert: 使VHDL断言语句得到评估。

  • tcl.pre tcl.post 设置综合前后执行的tcl脚本。 在这里插入图片描述

1.2.2 创建运行策略

更改策略后点保存即可 在这里插入图片描述

1.2.3 控制文件编译顺序

当一个文件有一个声明,而另一个文件依赖于该声明时,就需要特定的编译顺序。 Sources窗口底部的的Compile Order窗口选项可以打开编译顺序。

1.2 运行Synthesis 1.2.1 使用Tcl运行Synthesis

例子:synth_design -part xc7k30tfbg484-2 -top my_top synth_design -help 查看帮助: 在这里插入图片描述

1.2.2 RTL synthesis的多线程处理
  • 在多处理器系统上,RTL合成在默认情况下利用多个CPU核(最多4个)来加速编译时间。
  • 并发线程的最大数量是不同的,这取决于系统上可用的处理器数量、操作系统和流程的阶段。
  • Tcl参数 general.maxThreads 设置线程数,一般写在Vivado_init.tcl 中用以在打开软件时执行。
参考文档

UG901:Vivado Design Suite User Guide: Synthesis

关注
打赏
1655639048
查看更多评论
立即登录/注册

微信扫码登录

0.0409s