首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
资源利用率报告中的LUT和LUTRAM有什么区别
2
xilinx verilog语法技巧(三)--RAM的初始化
3
为什么推荐使用XPM?
4
Block RAM的基本结构
5
为什么要用XPM_MEMORY
6
Vivado中用于时钟操作的几个Tcl命令
7
影响FPGA时序的进位链(Carry Chain), 你用对了么??
8
动态时钟相位
9
动态时钟频率
10
如何缩短Vivado运行时间
11
你的FPGA设计有这些缺陷吗
12
report_utilization远比你想象的强大
13
vivado如何快速找到schematic中的object
14
FPGA中的CLOCK REGION和SLR是什么含义
15
FPGA中的BEL, SITE, TILE是什么含义
16
如何快速查找目标cell
17
都是pin,有什么区别
18
都是net,有什么区别
19
一张图看懂cell, pin, net, port
20
如何快速找到组合逻辑生成的时钟
21
【Vivado那些事】Vivado下头文件使用注意事项
22
Pblock可以这么画
23
关于Pblock的8个必知问题
24
常用的跟Pblock相关的Tcl命令
25
【Vivado】那些事儿-汇总篇
26
【Vivado那些事】Xilinx FPGA普通IO能不能直接接入PLL作为时钟输入
27
Storage Elements
28
D触发器都有哪几种类型?对应什么样的代码?
29
Xilinx 7系列FPGA逻辑单元理解
30
Vivado下查看芯片资源
31
对RAM初始化怎么做
32
干货:Vivado 直接修改RAM初始化文件,避免重新综合、实现的方法
33
借助Elaborated Design优化RTL代码
34
一张图理解什么是好的设计层次
35
9个关于SSI芯片的必知问题
36
Vivado 2018.3 report_qor_suggestions怎么用
37
Vivado 2019.1新特性(5):更新的report_qor_suggestions
38
Xilinx的高质量时钟输出ODDR原语【随路时钟】【全局时钟网络】【ZC706输出时钟】【ZYNQ】
39
FPGA中BEL Site Tile FSR SLR分别指什么?
40
跟I/O相关的几个命令
41
Vivado Non-Project模式
42
FPGA中降低时钟skew的几种方法
43
FPGA时序优化之Reduce MUXF Mapping
44
什么是Forwarded Clock?
45
几个常见问题
46
如何让同一层次的模块在布局时更紧凑一些
47
什么情况下要用OOC综合方式
48
Vivado 2019.1新特性(2):report_ram_utilization
49
URAM和BRAM有什么区别
50
write_first/read_first/no_change什么区别
清单首页FPGA文章详情

约束文件有哪些

对于一个完整的FPGA设计,既要有时序约束,也要有物理约束(例如:管脚分配与管脚电平设置)。Xilinx建议将这两类约束分开写在不同的约束文件中。此外,考虑到某些设计中可能会用到手工布局,从而会有相应的Floorplan约束(对应Pblock,可理解为面积约束)。同时,在大多数情形下都需要对FPGA设计进行调试,这样就会用到ILA,同时需要对相应的net设置MARK_DEBUG属性,这可理解为第三种约束即调试约束。因此一个完备的约束会包含时序约束、物理约束和调试约束,如下图所示。

对于约束文件,Vivado支持.xdc和.tcl两种格式。约束文件都有自己的属性,可在属性窗口中查看,也可通过下图示的Tcl脚本在Vivado Tcl Console中查看。

在这些属性中有一个需要关注的属性即USED_IN,如下图所示。图中显示其值为{synthesis, implementation},表示该约束文件在综合和实现阶段均有效。相应地,属性USED_IN_IMPLEMENTATION和USED_IN_SYNTHESIS属性值为1。可见对约束文件,可通过USED_IN属性设定其有效阶段。

另一个比较重要的属性是IS_ENABLED,如下图所示,用于ENABLE或DISABLE相应的约束文件,实际上就是管理约束文件是否使用。这个属性对于调式约束非常有用。当调试完毕,可直接将调试约束文件设置为不使用状态(在Sources窗口中显示为灰色)。如果调试约束与时序约束混合在一个文件中,调试结束就需要注释掉或直接删除相应的调试约束,操作起来不太方便。IS_ENABLED属性则避免了这种不便。

此外,Vivado允许用户创建不同的Design Runs,从而,对于不同的Design Run,用户可以使用不同的Constraint Set,如下图所示。这样的好处是可以根据Design Run的需求创建不同的约束。例如,Synth_1/Impl_1要求时钟频率为200MHz,而Synth_2/Impl_2要求时钟频率为300MHz,如果这两个Design Run的目标芯片一致,则可验证该设计的Fmax(最高时钟频率);如果目标芯片不一致,则可用于验证同一设计在不同芯片上所能达到的最高频率。

结论:

-约束文件= 时序约束 + 物理约束 + 调试约束

-通过属性可设定约束文件是否有效及其有效阶段

-Vivado允许用户创建多个Constraint Set

下一篇
举报
领券