仅对英特尔可见 — GUID: mwh1412203473009
Ixiasoft
2.5.1.1. Report Fmax Summary(报告Fmax汇总)
2.5.1.2. Report Timing(报告时序)
2.5.1.3. Report Timing By Source Files(按源文件报告时序)
2.5.1.4. Report Data Delay(报告数据延迟)
2.5.1.5. Report Net Delay(报告网络延迟)
2.5.1.6. Report Clocks and Clock Network(报告时钟和时钟网络)
2.5.1.7. Report Clock Transfers(报告时钟传输)
2.5.1.8. Report Metastability(报告亚稳定性)
2.5.1.9. Report CDC Viewer(报告CDC Viewer)
2.5.1.10. Report Asynchronous CDC(报告异步CDC)
2.5.1.11. Report Logic Depth(报告逻辑深度)
2.5.1.12. Report Neighbor Paths(报告相邻路径)
2.5.1.13. Report Register Spread
2.5.1.14. Report Route Net of Interest
2.5.1.15. Report Retiming Restrictions(报告重定时限制)
2.5.1.16. Report Register Statistics(报告寄存器统计)
2.5.1.17. Report Pipelining Information(报告流水线信息)
2.5.1.18. 报告时间借用数据
2.5.1.19. Report Exceptions and Exceptions Reachability(报告异常和异常可达性)
2.5.1.20. Report Bottlenecks(报告瓶颈)
仅对英特尔可见 — GUID: mwh1412203473009
Ixiasoft
2.6.5.5.3. set_clock_groups约束技巧
当您使用derive_pll_clocks创建时钟时,确定要包含在set_clock_groups约束中的所有时钟名称可能非常耗时。然而,即便您不知道所有的时钟名称,也可以使用以下技巧在某种程度上自动创建时钟约束。
- 创建一个包含建议的初始SDC约束的基本.sdc文件,除非现在省略set_clock_groups约束。
- 将.sdc添加到工程中,点击Assignments > Settings > Timing Analyzer。在SDC files to include in the project下指定.sdc文件。
- 若要打开Timing Analyzer,请点击Tools > Timing Analyzer。
- 在Task窗格中,双击Report Clocks。Timing Analyzer读取您的.sdc,应用约束(包含derive_pll_clocks)和报告所有时钟。
- 从Clocks Summary报告中,复制第一列中的所有时钟名称。此报告以正确的格式列出时钟名称 ,以便在Timing Analyzer中进行识别。
- 打开.sdc文件,将时钟名称粘贴到文件中,每行一个时钟名称。
- 通过将时钟名称剪切并粘贴到相应组中,将时钟名称列表格式化为set_clock_groups命令。接下来,将以下模板粘贴到.sdc文件中:
set_clock_groups -asynchronous -group { \ } \ -group { \ } \ -group { \ } \ -group { \ }
- 将时钟名称剪切并粘贴到组中以定义它们的关系,根据需要添加或删除组。对组进行格式化以使代码可读。
注: 此命令在一行中很难读取。您可以使用Tcl行继续字符“\”来使其更具可读性。在最后一个字符后面放置一个空格,然后将“\”字符放在该行的末尾。请注意不要在转义字符后包含任何空格,否则空格将成为转义字符,而不是行尾字符。
set_clock_groups -asynchronous \ -group {adc_clk \ the_adc_pll|altpll_component_autogenerated|pll|clk[0] \ the_adc_pll|altpll_component_autogenerated|pll|clk[1] \ the_adc_pll|altpll_component_autogenerated|pll|clk[2] \ } \ -group {sys_clk \ the_system_pll|altpll_component_autogenerated|pll|clk[0] \ the_system_pll|altpll_component_autogenerated|pll|clk[1] \ } \ -group {the_system_pll|altpll_component_autogenerated|pll|clk[2] \ }
注: 最后一组有一个PLL输出 system_pll|..|clk[2],而输入时钟和其他PLL输出位于不同的组中。如果使用PLL,并且输入时钟频率与PLL输出的频率无关,那么必须异步地处理PLL。通常情况下,一个PLL的输出都是相关的,并在同一组中,但这不是必需的。
对于包含复杂时钟的设计,创建时钟组可能是一个迭代过程。例如,包含两个DDR3内核和高速收发器的设计可以有三十个或更多的时钟。在这种情况下,首先添加手动创建的时钟。由于Timing Analyzer假定命令中没有出现的时钟与每个时钟有关,因此保守地将已知时钟分组。如果设计中无关的时钟域之间仍有故障路径,那么可以根据需要开始添加新的时钟域。在这种情况下,set_clock_groups命令中没有大量的时钟,因为它们要么在.sdc文件中被剪切用于IP(例如DDR3内核生成的.sdc文件),要么只连接到相关时钟域。
对于很多设计而言,这些全部就是限制IP所必需的。