如何从时序分析中排除跨时钟域路径?

如何从时序分析中排除跨时钟域路径?,第1张

解决方案 1

要从时序分析删除一组路径,如果您确定这些路径不会影响时序性能(False 路径),可用FROM-TO 约束以及时序忽略 (TIG) 关键字。这种方法要指定时序忽略 (TIG) 约束,应按如下定义:

  • 为源寄存器集合创建一个时间组
  • 为目的寄存器集合创建一个时间组
  • 用含有TIG 关键字的FROM-TO 约束,删除上述两个组之间的路径

以下给出 DCM/PLL/MMCM 的使用实例;假设 clk_in 是 DCM/PLL/MMCM 的输入时钟而clk_0、clk_90、clk_180 是输出时钟

net "clk_in" TNM_NET = clk_in_grp; net "clk_0" TNM_NET = clk0_grp; net "clk_90" TNM_NET = clk90_grp; net "clk_180" TNM_NET = clk180_grp; TIMESPEC TS_clk_in = PERIOD "clk_in_grp" 10ns HIGH;

1.假定信号 clk_in 还驱动DCM/PLL/MMCM之外的其他同步元件

TIMEGRP "clk_out_grp" = "clk0_grp" "clk90_grp" "clk180_grp"; TIMESPEC TS_01 = FROM "clk_in_grp" TO "clk_out_grp" TIG; TIMESPEC TS_02 = FROM "clk_out_grp" TO "clk_in_grp" TIG;

这些约束忽略 DCM/PLL/MMCM 输入时钟和输出时钟之间的跨时钟域路径。

2.假定信号 ckl_in 只驱动 DCM/PLL/MMCM

TIMESPEC TS_01 = FROM "clk0_grp" TO "clk90_grp" TIG; TIMESPEC TS_02 = FROM "clk0_grp" TO "clk180_grp" TIG; TIMESPEC TS_03 = FROM "clk90_grp" TO "clk0_grp" TIG; TIMESPEC TS_04 = FROM "clk90_grp" TO "clk180_grp" TIG; TIMESPEC TS_05 = FROM "clk180_grp" TO "clk0_grp" TIG; TIMESPEC TS_06 = FROM "clk180_grp" TO "clk90_grp" TIG;

这些约束忽略 DCM/PLL/MMCM 所有输出时钟的跨域路径。

解决方案 2

此外,您也可在 UCF 中为 DCM/PLL/MMCM 输出时钟手动添加不相关的 PERIOD 约束,而不是采用自动传递。只要不施加相关的 PERIOD 约束,工具就不会分析时钟跨域路径。查看以下范例。

自动传递:

net "clk_in" TNM_NET = clk_in_grp; TIMESPEC TS_clk_in = PERIOD "clk_in_grp" 10ns HIGH; TIMESPEC TS_clk0 = PERIOD "clk0" TS_clk_in HIGH; (Note 1) TIMESPEC TS_clk90 = PERIOD "clk90" TS_clk_in PHASE + 2.5 ns HIGH; (Note 1) TIMESPEC TS_clk180 = PERIOD "clk180" TS_clk_in PHASE + 5 ns HIGH; (note 1)

注 1:这些约束可自动传递到输出时钟。

手动添加不相关的 PERIOD 约束:

TIMESPEC TS_clk0 = PERIOD "clk0" 10 ns HIGH; TIMESPEC TS_clk90 = PERIOD "clk90" 10 ns HIGH; TIMESPEC TS_clk180 = PERIOD "clk180" 10 ns HIGH;



审核编辑:刘清

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2710961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存