赞
踩
一,约束文件包括:时序约束,物理约束 ,调试约束。
二,时序约束:使得片上以及下游器件满足setup slack 与Hold slack。
为了使约束完善,我们按照utrafast设计学的顺序进行约束,也即使用Constraints Wizard 选项。
时序约束可按时钟周期约束,输入/输出延时约束 ,跨时钟域路径约束,多周期路径/伪路径约束。
每一类的约束都可以通过tcl命令以及相应的报告进行验证是否生效。
三,时钟周期约束
1,主时钟周期约束:
主时钟是指由外部器件进入FPGA的全局时钟或者高速收发器输出的时钟。
约束选项:create clock
create_clock -name clk1 - period 10.0 -waveform { 0.0 5.0 } [ get_ports clk0]
2,生成时钟周期约束:
生成时钟分自动生成时钟:PLL或MMCM 和用户逻辑时钟
对于自动生成时钟系统会自动推算出时钟的各个参数。
而用户逻辑时钟则需手动约束,由于它是时钟源产生,是由组合逻辑与时序逻辑组成,使用抗噪能力差,只适用于低频,扇出小的情况。
约束选项:create_ generated_clock
eg : creat_generated_clock- name CLK1 -source [get_pins REGA/C ] - divide_by 2 \[get_pins REGA/Q]
3,set_input_jitter
4,set_clock_uncertainty
5,如何对同一时钟源添加多时钟周期约束。
四,输入\输出约束
input delay:解释见【一】,由于系统(源同步,系统同步),数据的触发模式不同,导致在vivado选项进行约束时,使用的约束表达量不同。
约束选项可使用wizard constraint 或者 Template的xdc模板,这两种方法高效安全。
output delay:类比input delay。
五,跨时钟域约束
使用情形:1,约束异步时钟:set_clock_group -async -group clck1 -group clk2 可能会包括生成时钟
2,同一时钟源创建多个时钟周期
六:多周期/伪路径约束
多周期路径约束:一般情况,数据在发起沿被发送,在捕获沿被捕捉,只有时钟周期约束的情况下,发起沿和捕获沿一般隔一个周期时钟,但当数据在传输的过程中,组合逻辑过于复杂等情况,一个周期无法满足时序要求,则需延迟几个周期进行捕获,caputure edge的改变会自动导致launch edge的改变。caputure edge的约束是根据电路实际情况来告诉eda工具什么时候进行数据的捕获,而launch edge则告诉eda数据什么时候发射,其宗旨为:当前发射沿数据必被当前捕获沿捕获。多周期路径约束的意图是根据电路实际情况,防止eda根据对电路约束过紧,以便使约束更利于其他关键路线的约束,节约布线时间,提高编译质量。
多周期情形:1,数据传输的逻辑电路复杂,capture沿需要延时几个周期。此种情况类似周期是时钟周期整数倍的使能信号。
2,同频跨时钟域的正向偏移和负向偏移。
3,快跨慢时钟域 慢跨快时钟域
约束选项:set_muticycle_path
伪路径约束:将约束的目标路线不参与时序分析,并不是这段路径不存在。旨在提高其他关键路径的提供更多布局布线资源。
约束情况:1,跨时域路径约束 set_false_path -from [get_clocks clock1]-to [get_clocks clock2]
2,异步复位路径 set_false_path -from [get_ports rst]
等
七,对同一路径约束的优先级:1,2,3
八,1,借助TCE调试约束 2,借助tcl命令调试约束 a: write_xdc b:report_exceptions
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。