fpga - Vivado:TCL 命令将时钟 1 和时钟 2 之间的时序路径设置为假路径(TIMING-6 和 TIMING-7)
问题描述
假设我有一个具有两个时钟域的 FPGA/VHDL 设计,并且一个时钟域到另一个时钟域之间的每条路径都有用 VHDL 编写的 CDC 同步代码,以确保在跨时钟边界之间传递信息时没有亚稳定性。
在这种情况下,将时钟 1 和时钟 2 之间的时序路径设置为时钟 1 和时钟 2 之间的每个时序路径的假路径的 Vivado TCL 命令是什么?
示例编译器警告:
WARNING: [TIMING-6] The clocks clk_1 and clk_2 are related (timed together) but they have no common primary clock. The design could fail in hardware. To find a timing path between these clocks, run the following command: report_timing -from [get_clocks clk_fpga_0] -to [get_clocks clk_out1_design_zynq_zyboz720_clk_wiz_0_0]
WARNING: [TIMING-7] The clocks clk_1 and clk_2 are related (timed together) but they have no common node. The design could fail in hardware. To find a timing path between these clocks, run the following command: report_timing -from [get_clocks clk_1] -to [get_clocks clk_2]
解决方案
set_false_path -from [get_clocks clk_1] -to [get_clocks clk_2]
此命令将删除您的警告以及与此 CDC 相关的预期严重警告“未满足时间”,但这并不能确保您的设计能够正常工作。
我建议您在重新同步信号上也添加属性 ASYNC_REG 以确保合成器将 2 CDC FF 放置得很近(如果可能的话在同一个切片中):
attribute ASYNC_REG : string;
attribute ASYNC_REG of a_r_clk_2 : signal is "TRUE"; -- Output of the first resync FF in clk_2
attribute ASYNC_REG of a_rr_clk_2 : signal is "TRUE"; -- Output of the second resync FF in clk_2
推荐阅读
- c# - 转换 IEnumerable
加倍 - tkinter - 多帧中的 Tkinter 网格和 ttk 小部件的潜在影响
- python - 如果 Python 有其他问题,我该如何解决?
- kubernetes - 有什么方法可以为 K8s 中的服务(或端口)增加延迟?
- firebase - Firebase 角色管理
- c# - MassTransit 使用队列中的所有消息
- r - 如何对某个组和某个年份的 DF 进行一些计算
- python - 熊猫数据框图不共享 x 轴标签?
- random - 在局部轴 Godot 上的弧之间旋转自身
- linux - fortran:错误:(1) 处的实际参数和 (2) 处的实际参数之间的类型不匹配 (INTEGER(8)/INTEGER(2))