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 };