知识分享|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设计至关重要。

相关推荐
salipopl15 小时前
FPGA中AXI-FIFO主机接口的自定义实现与versal读写工程分析
网络·fpga开发
觉感15 小时前
25、Verilog RTL 级低功耗设计(下)
fpga开发·verilog教程
可编程芯片开发20 小时前
基于均匀线阵混频信号和FFT变换的相移波束形成算法FPGA实现
fpga开发·fft变换·均匀线阵·混频信号·相移波束形成
汽车仪器仪表相关领域21 小时前
Kvaser USBcan Pro 2xHS v2:双通道高速 CAN/FD 专业级 USB 接口,汽车与工业总线深度开发与诊断的核心工具
网络·人工智能·功能测试·fpga开发·汽车·可用性测试
小麦大叔1 天前
给嵌入式工程师推荐一个 FOC 学习项目
学习·fpga开发
ALINX技术博客1 天前
【黑金云课堂】FPGA技术教程Linux开发:GPIO 编程/寄存器读写/以太网RJ45
fpga开发
ALINX技术博客2 天前
AMD VU FPGA+NVIDIA Thor AI 超高性能异构平台 ALINX HEA13,支撑新一代边缘 AI 系统
人工智能·fpga开发
木心术12 天前
如何使用AI agent基于产品技术手册和标准协议完成FPGA寄存器的自动化配置、代码修改和编译的完整方案
人工智能·fpga开发·自动化
unicrom_深圳市由你创科技3 天前
多通道ADDA系统开发需要哪些技术?
fpga开发
ooo-p3 天前
FPGA相关(包含ZYNQ)基础概念理解
fpga开发