Vivado从此开始(进阶篇)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 综合阶段

1.1 综合设置分析

1.1.1 −flatten_hierarchy

−flatten_hierarchy在综合设置(Synth Design)中的位置如图1.1所示。

img

图1.1

−flatten_hierarchy有三个可选值,每个值的具体含义如表1.1所示[1]。通常来讲,当−flatten_hierarchy为none时,工具进行的优化最少,消耗的资源最多,层次保留最为完整。相反,当其为full时,工具进行的优化最多,消耗的资源最少,层次完全被打平(只能看到顶层)。从这个角度来说,−flatten_hierarchy的三个值体现了工具对设计层次完整性和优化力度的折中。在通常情况下,使用默认值rebuilt即可。

表1.1

img

−flatten_hierarchy是一个全局设置(凡是出现在综合设置中的均为全局设置),意味着对设计中的所有模块生效。如果期望模块中的某个层次使用与−flatten_hierarchy的可选值不同的层次优化方式,则要用到综合属性(Synthesis Attribute)中的KEEP_HIERARCHY,它只能在RTL代码中使用,其优先级高于−flatten_hierarchy。

在Verilog版中,KEEP_HIERARCHY的使用方法如下。

(* KEEP_HIERARCHY="yes" *) module uart_r ();

在VHDL版中,KEEP_HIERARCHY的使用方法如下。

作用于entity:

attribute KEEP_HIERARCHY : string;

attribute KEEP_HIERARCHY of uart_rx : entity is "yes";

作用于Instance:

attribute KEEP_HIERARCHY : string;

attribute KEEP_HIERARCHY of uart_rx_u0 : label is "yes";

结论:

① 对于−flatten_hierarchy,通常使用默认值rebuilt即可。使用默认值rebuilt的一个好处是,在使用Vivado Logic Analyzer 时,可快速根据层次找到待观测信号。

② KEEP_HIERARCHY的优先级高于−flatten_hierarchy,因此,可根据设计需求灵活地对某些层次设置此属性。