仅对英特尔可见 — GUID: mwh1412203473009
Ixiasoft
仅对英特尔可见 — 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] \ }
对于包含复杂时钟的设计,创建时钟组可能是一个迭代过程。例如,包含两个DDR3内核和高速收发器的设计可以有三十个或更多的时钟。在这种情况下,首先添加手动创建的时钟。由于Timing Analyzer假定命令中没有出现的时钟与每个时钟有关,因此保守地将已知时钟分组。如果设计中无关的时钟域之间仍有故障路径,那么可以根据需要开始添加新的时钟域。在这种情况下,set_clock_groups命令中没有大量的时钟,因为它们要么在.sdc文件中被剪切用于IP(例如DDR3内核生成的.sdc文件),要么只连接到相关时钟域。
对于很多设计而言,这些全部就是限制IP所必需的。