知识分享|XDC时钟约束的详细说明

在FPGA设计中,时钟约束是确保设计满足时序要求的关键。Xilinx Design Constraints (XDC) 文件允许设计者对时钟、输入/输出(I/O)和跨时钟域(CDC)路径进行精确的时序约束。以下是XDC文件中时钟约束的详细说明:

时钟约束的重要性

时钟约束必须最早创建,因为它们是设计实现的基础。在Vivado工具中,精简而准确的时序约束是时序收敛的必要条件。过约束往往只会阻碍时序收敛,因此避免过度约束是实现高性能设计的关键。

XDC时钟约束分类

XDC的时钟约束可以分为以下几类:

  1. 主时钟创建 :使用create_clock命令创建主时钟。对于7系列FPGA,所有端口进来的时钟和GT的输入RXCLK都必须由用户创建为主时钟。

    复制代码

    create_clock -name clk_200 -period 5 [get_ports clk200_p]

  2. 衍生时钟:Vivado可以自动推导MMCM/PLL/BUFR的输出作为衍生时钟,无需用户创建。但用户可以指定衍生时钟的名字,让Vivado自动推导其余频率等信息。

    复制代码

    create_generated_clock -name my_clk_name [get_pins mmcm0/CLKOUT] \ -source [get_pins mmcm0/CLKIN] \ master_clock main_clk

  3. 用户自定义衍生时钟 :对于工具不能自动推导出的衍生时钟,如使用寄存器和组合逻辑搭建的分频器,必须由用户使用create_generated_clock来创建。

    复制代码

    create_generated_clock -name clk2 [get_pins REGA/Q] \ -source [get_ports CKP1] -divide_by 2

  4. 同步与异步时钟:在XDC中,所有时钟默认视为相关。设计人员需要通过约束明确指出哪些路径无需分析,哪些时钟域之间是异步的。

    复制代码

    set_clock_groups -name sys_ss_async --asynchronous \ -group [get_clocks -include_generated_clocks sysclk] \ -group [get_clocks -include_generated_clocks ssclkin]

  5. 重叠时钟 :重叠时钟指多个时钟共享相同的时钟传输网络。建议在输出端创建重叠的衍生时钟,并将其时钟关系约束为-physically_exclusive,表示不可能同时通过。

    复制代码

    set_clock_groups --physically_exclusive \ -group clk125_bufgctrl \ -group clk250_bufgctrl

通过以上约束,可以确保Vivado工具能够正确地分析和优化设计,满足必要的时序要求。时钟约束的正确设置对于实现高性能、低功耗的FPGA设计至关重要。

相关推荐
一条九漏鱼12 小时前
Verilog divide
fpga开发
0基础学习者12 小时前
按键消抖(用状态机实现)
前端·笔记·fpga开发·verilog·fpga
奋斗的牛马13 小时前
FPGA_modelsim错误总结
fpga开发
Terasic友晶科技13 小时前
Lab Cloud FPGA 硬件在线实验云平台介绍
fpga开发·云平台·资源共享·实验云·fpga 云平台·远程实验
LEEE@FPGA16 小时前
声学测温度原理解释
fpga开发
夜雨听萧瑟19 小时前
数字集成电路中时延不可综合与时间单位介绍
fpga开发
奋斗的牛马19 小时前
FPGA_DDR错误总结
fpga开发
Terasic友晶科技2 天前
第7篇:Linux程序访问控制FPGA端LEDR<五>
fpga开发·嵌入式系统·de1-soc开发板
FakeOccupational2 天前
fpga系列 HDL:跨时钟域同步 4-phase handshake(四相握手通信协议,请求-确认机制)浅释与代码实现
fpga开发
Terasic友晶科技2 天前
第4篇:Linux程序访问控制FPGA端LEDR<二>
fpga开发·de1-soc开发板·linux嵌入式程序