时序约束实际上是借鉴ASIC的设计方法:加比较完善的约束条件,然后通过RTL仿真,时序分析,后仿真来解决问题,尽量避免在FPGA电路板上来调试。
时序约束主要在FPGA做逻辑综合和布局布线时通过综合工具(如Quartus II 集成的综合工具、Synplify/Synplify Pro、Mentor Graphics LeonardoSpectrum、Synopsys Design Compiler等)来进行设定。根据资料查阅,选择业界最著名的ASIC综合软件套装DesigCompiler作为综合工具。
时序约束主要围绕4中时序路径来进行设置:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。
1、 时钟定义
主要对时钟的周期、占空比、抖动和延迟进行描述。
create_clock -name clk1 -period 10.000 -waveform {2.000 8.000} [get_ports sysclk]
2、 输入延迟的设定
这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄
存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。约束名称:input delay。
set_input_delay -max 4 -clock clk [get_ports A]
3、 输出延迟的设定
这种路径的约束是为了让FPGA设计工具能够优化FPGA内部从最后一级寄存器到
输出端口的路径,确保其输出的信号能够被下一级芯片正确的采到。约束名称:output delay。
set_output_delay -max 7.5 -clock clk [get_ports B]
4、 寄存器到寄存器延迟的设定
这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的
路径,使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。 由于这种路径只存在于FPGA内部,通常通过设定时钟频率的方式就可以对其进行约束。
5、 输入端口到输出端口
这种路径是指组合逻辑的延迟,指信号从输入到输出没有经过任何寄存器。给这种路径加约束条件,需要虚拟一个时钟,然后通过约束来指定哪些路径是要受该虚拟时钟的约束。
关于输入输出延迟的一些参数的含义和计算方法将在后续的文章中给出。
文章评论(0条评论)
登录后参与讨论