【Xilinx】时序约束学习 TIMING-1: 时钟修改块上的时钟波形无效

时间:2024-04-18 15:23:30

        在 <cell_type> 输出 <pin_name> 上指定的时钟 <clock_name> 的时钟波形无效, 与时钟修改块 (CMB) 设置不匹配。该时钟波形为 <VALUE>。期望的波形为 <VALUE>。

描述

        Vivado Design Suite 会根据 CMB 设置和传入主时钟的特性, 在 CMB 输出上自动衍生时钟。如果用户在 CMB 输出上定义生成时钟, 那么 Vivado 不会在同一定义点(信号线或管脚) 上自动衍生生成时钟。 DRC 警告报告称用户定义的生成时钟与 Vivado 将自动创建的自动衍生时钟不匹配。这可能导致硬件故障, 因为设计的时序约束与器件上所发生的约束不匹配。

学习:

CMB--时钟调整模块(Clock Modifying Blocks,CMB)

Vivado时序工具能够识别设计中时钟调整模块(Clock Modifying Blocks,CMB)及其输入主时钟的变更特性。自动为CMB输出的时钟信号创建约束,指定其相对源时钟的波形关系。

解决方案

        如果无需用户定义的生成时钟, 请移除约束并改为使用自动衍生时钟。如果需要约束, 请验证生成时钟约束与自动衍生时钟波形是否匹配, 或者修改 CMB 属性以与期望的时钟波形相匹配。如果要强制设置自动衍生时钟的名称, 建议使用仅定义 -name 选项的 create_generated_clock 约束以及定义该时钟的对象(通常为 CMB 的输出管脚) 的名称。请参阅《Vivado Design Suite 用户指南: 使用约束》 (UG903), 以了解有关创建生成时钟的信息以及自动衍生时钟重命名约束的限制。

示例

        在图中, 在 MMCM 实例管脚 CLKOUT0 上定义了 create_generated_clock 约束, 但此约束与 Vivado 从MMCM 属性设置生成的自动衍生波形不匹配。

        如需仅对自动衍生时钟进行重命名, 请在约束文件中的主时钟定义后使用以下约束:
create_generated_clock -name clkName [get_pins clk_gen_i0/clk_core_i0/inst/mmcme3_adv_inst/CLKOUT0]