Vivado使用:综合篇(二)综合选项设置 您所在的位置:网站首页 ad为什么生成不了工程层次报告 Vivado使用:综合篇(二)综合选项设置

Vivado使用:综合篇(二)综合选项设置

2024-07-06 13:07| 来源: 网络整理| 查看: 265

目录

-flatten_hierarchy (影响综合结果的层次)-gated_clock_conversion-fsm_extraction (影响状态机编码方式) -fsm_encoding Keep_equivalent_registers (含义)-resource_sharing (影响算术运算)-control_set_opt_threshold (影响触发器控制集)-no_lc (影响LUT资源)-shreg_min_size (影响移位寄存器)-bufg-fanout_limit-directive-max_bram-max_dsp-cascase_dsp

 

                                         Synthesis  setting

 

          Vivado开发套件的综合设置中提供了一系列的综合选项,这些综合选项对综合的结果有着潜在的影响,运行综合时可利用这些 综合选项 来对综合的设计进行综合。常用的选项都可以在下图菜单中设置。

图1综合选项 -flatten_hierarchy (影响综合结果的层次)

       该选项决定了Vivado综合工具将如何控制层次结构

  full指示工具完全展平层次结构,只留下顶层。只保留顶层层次,执行边界优化 none指示综合工具从不展平层次结构。 综合后的输出具有与原始RTL相同的层次结构。不执行边界优化   rebuilt:rebuilt允许综合工具展平层次结构,执行综合,然后根据原始RTL重建层次结构。 此值允许跨边界优化的QoR优势,最终层次结构与RTL类似,便于分析。即综合时将原始设计打平,执行边界优化,综合后将网表文件按照原始层次显示,故与原始层次相似。

 创建3个综合运行(Design Runs):synth_1、synth_2、synth_3,将三者的flatten_hierarchy分别设置为full、none、rebuilt。

创建方法见综合篇():Global和OCC综合模式。

综合结果分别如下所示:

三种综合结果的资源利用率报告:

 对比可发现,当-flatten_hierarchy为none时消耗的寄存器最多,建议其设定为默认值rebuilt。

flatten_hierarchy是一个全局的综合指导原则,即它是对整个工程所有模块起作用而不是仅仅某一个模块。如果需要对某一个模块进行层次化管理,则需要用到综合属性:keep_hierarchy了。(详见综合属性章节)

(*keep_hierarchy = "yes"*) module module_name ( /* 接口信号 */ ); ... endmodule -gated_clock_conversion

              打开和关闭综合工具转换时钟逻辑的能力。使用门控时钟转换还需要使用RTL属性才能工作。 后面将介绍RTL属性GATED_CLOCK。

-fsm_extraction (影响状态机编码方式)

     该选项主要对状态机的编码方式有影响,默认值为auto,此时vivado会自动推断最佳的编码方式。

在wavegen工程中,fsm_extraction选项选择auto如此综合后的设计中,在下方Log窗口中CRTL+F搜索encoding,结果如下:

可看出该状态机编码方式为sequential。而previous Encoding是什么呢,这是因为cmd_pase模块本身已经设定了编码方式了。

【注意】

-fsm_extraction设定为one-hot时,综合后的结果编码方式就是独热码。也就是说,-fsm_extraction设定的编码方式优先级高于HDL代码中定义的编码方式。

      与-fsm_extraction综合选项功能一样的,还有综合属性,即-fsm_encoding。

 -fsm_encoding 

      该综合属性可以针对某个状态机设定编码方式(体会综合选项和综合属性功能的异同,应用场合)。  综合属性 -fsm_coding的优先级高于综合选项-fsm_extraction,但如果代码本身已经定义了编码方式,该设定将无效。 

     有意思的是 综合选项fsm_extraction高于HDL代码定义的编码方式,而综合属性fsm_coding优先级高于综合选项fsm_extraction,HDL代码中定义编码了却能让综合属性失效。     现在有个问题是:假如三个方式全部都定义,且定义了不同的编码方式,哪一个会生效呢??

                                    答:关于这个问题,在问题一栏中做了尝试。

Keep_equivalent_registers (含义)

      equivalent registers即等效寄存器,是指具有同源的寄存器,即共享输入数据的寄存器。勾选时,等效寄存器不会合并;不勾选时,等效寄存器会被合并。

 示例:

// always@(posedge clk) begin opa_rx


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有