KEEP_HIERARCHY是一种对综合和实现过程的约束。
一般而言,一个HDL设计的顶层包含好几个底层子模块。XST在综合过程中为了得到更好的结果,一般打平设计的层次。但是也可以在综合的过程中通过添加KEEP_HIERARCHY约束来使综合的过程保持设计的层次。
添加KEEP_HIERARCHY约束后,综合和实现的结果表现的以下2方面:
1 在实现的过程中保持设计层次。
2 生成仿真需要的保持设计层次的网表。
例子:以上图为例,如果对整个模块或I2添加约束:
1 在最后的生成网表中,I2模块的层次被保持下来。
2 I2模块中的I4 、I5模块的层次被打平。
3 I1 、I3 、I6、 I7的层次也被打平。
KEEP_HIERARCHY支持XILINX所有的FPGA 和CPLD器件,对FPGA默认的约束是FALSE,对CPLD默认的约束是TURE。
KEEP_HIERARCHY用法:
KEEP_HIERARCHY的约束值可以设置成FALSE和TURE。
添加约束分2中情况:
1 在模块里面的verilog代码里面添加只需将约束添加
在需要保持层次的模块或实例的前面即可。
例如:(* KEEP_HIERARCHY = “{TURE|FALSE}” *)
2 在UCF和NCF里面添加
INST “instance_name” KEEP_HIERARCHY = { TURE|FALSE };