在 Xilinx Vivado 环境中,使用 create_generated_clock 约束来定义由锁相环(PLL)或时钟管理模块(如 MMCM 或 DCM)生成的时钟。这个约束用于指定生成时钟的属性,例如时钟的源、相位和频率。
基本语法
以下是 create_generated_clock 约束的基本语法
create_generated_clock -name <clock_name>-source <source_pin_or_port>-sink <sink_pin_or_port>[-edge {POS|NEG}][-period <clock_period_in_nano_seconds>][-divide_by <division_factor>][-mult_by <multiplication_factor>][-source_is_pll][-neg_edge_clock <clock_name>][-generate_timing_information][-from <clock_region>][-also_from <clock_region>][-append][-combinational][-physical][-use_fabric][-quiet]
参数说明
-name <clock_name>: 指定生成时钟的名称。-source <source_pin_or_port>: 指定生成时钟的源,可以是管脚或内部端口。-sink <sink_pin_or_port>: 指定生成时钟的接收端,可以是管脚或内部端口。-edge {POS|NEG}: 指定时钟边沿(上升沿 POS 或下降沿 NEG)。-period <clock_period_in_nano_seconds>: 指定时钟周期(以纳秒为单位)。-divide_by <division_factor>: 指定分频因子。-mult_by <multiplication_factor>: 指定倍频因子。-source_is_pll: 指示源时钟是由 PLL 生成的。-neg_edge_clock <clock_name>: 指定负边沿时钟的名称。-generate_timing_information: 生成时序信息。-from <clock_region>: 指定时钟区域的源。-also_from <clock_region>: 指定附加的时钟区域源。-append: 将新约束添加到现有约束。-combinational: 指定组合逻辑时钟域。-physical: 指定物理时钟域。-use_fabric: 指定使用 FPGA 内部的布线资源生成时钟。-quiet: 执行操作时不显示消息。
示例
假设你有一个 PLL,并且想要创建一个从 PLL 输出的时钟,可以这样写
create_generated_clock -name generated_clk-source clk_in_pin-sink clk_out_pin-period 10000-source_is_pll
在这个示例中,generated_clk 是新生成的时钟名称,clk_in_pin 是 PLL 的输入时钟管脚,clk_out_pin 是 PLL 输出的时钟管脚,-period 10000 指定了时钟周期为 10 ns,对应于 100 MHz 的频率。