目录
学习手册 UG949
对更加详细的约束信息参照 UG906 UG903
1.组织管理约束文件
对于简单的工程,我们可以按照下面的方法组织我们的约束文件:
- 直接采用一个约束文件;
- 物理约束+时序约束
- 物理约束+时序约束(综合)+ 时序约束(实现)
对于大型的项目或者是多个团队合作实现的约束可以采用下面的方法:
- 一个顶层的物理约束+一个顶层的时序约束+对每个IP的约束或者每个模块的时序约束
如果一个工程中存在多个约束文件,那么此时需要注意约束文件的编译顺序:
- 在工程模式下可以使用reorder_files tcl命令改变约束文件的编译顺序,
- 在非工程模式下约束文件的执行顺序直接由read_xdc和source 的顺序所决定。
ug949 P151 打开实际的工程进行测试
Defining Clock Constraints 时钟约束:
Identifying Clock Sources
Clock Networks Report 报告工程中的时钟网络:
其中包括可以报告未添加约束的时钟!!!
命令:
report_clock_networks
这个命令可以报告出未添加约束的时钟网络,
example:
Clock Networks Report
Constrained Clocks
-------------------
Clock clk_fpga_0 (50MHz)(endpoints: 0 clock, 1 nonclock)
PS7/FCLKCLK[0] (processing_system_i/processing_system7_0/inst/PS7_i)
Unconstrained Clocks
-------------------
Clock osc_clk (endpoints: 38 clock, 0 nonclock)
Port osc_clk
在上面的例子中可以看到在报告中已经指出哪些时钟已经添加了约束,哪一些没有添加约束(osc_clk)。
Check Timing Report
在这个报告中的no_clock 不懂
check_timing -override_defaults no_clock
result:
check_timing report
Table of Contents
-----------------
1. checking no_clock
1. checking no_clock
--------------------
There are 38 register/latch pins with no clock driven by root clock pin: osc_clk (HIGH)