Intel® Quartus® Prime Standard Edition用户指南: Timing Analyzer

ID 683068
日期 9/24/2018
Public
文档目录

2.3.4.3. Creating Generated Clocks (create_generated_clock)

Create Generate Clock (create_generated_clock)约束使您能够定义设计中内部生成的时钟的属性和约束。您可以指定Clock name (-name),时钟派生的Source node (-source)和Relationship to the source属性。对为修改时钟信号属性的任何节点定义生成的时钟,包括修改相位,频率,偏移或占空比。

生成的时钟最常应用于PLL的输出,寄存器时钟分频器,时钟多路复用器以及从FPGA输出端口转发到其他器件的时钟(如源同步和存储器接口)。在.sdc文件中,在基本时钟定义之后输入生成的时钟。生成的时钟自动考量所生成的时钟目标的所有时钟延迟。

-source选项指定时钟路径中节点的名称,用作生成时钟的参考。生成的时钟源必须是设计网表中的节点,而不是您先前定义的时钟的名称。您可以在生成时钟的目标的输入时钟管脚与其参考时钟的目标节点之间的时钟路径上使用任何节点名称作为源节点。

指定目标节点的输入时钟管脚作为新生成时钟的源。生成时钟的源与时钟源的命名和层次结构分离。如果更改时钟源,则无需编辑生成的时钟约束。

如果有多个基本时钟驱动一个作为生成时钟源的节点,则必须定义多个生成的时钟。您可以在每个生成的时钟语句中使用-master_clock选项将每个生成的时钟与一个基本时钟相关联。在某些情况下,生成的时钟使用组合逻辑生成。

根据时钟修改逻辑综合的方式,信号名称可以从一个编译到下一个编译。如果在写入生成的时钟约束后名称发生更改,那么Compiler会忽略生成的时钟,因为设计中不再存在此目标名称。要避免此问题的出现,请使用综合属性(synthesis attribute)或综合约束(synthesis assignment)来保留时钟修改逻辑的最终组合节点名称。然后在生成的时钟约束中使用保留的名称。

图 46. clock-as-data的示例

当在一个最终驱动寄存器的数据输入的节点上创建生成时钟时,这会创建“clock-as-data"的特殊情况。Timing Analyzer以不同的方式处理clock-as-data。例如,如果clock-as-data和DDR一起使用,那么必须同时考虑此时钟的上升和下降,并且Timing Analyzer报告上升以及下降。通过使用clock-as-data,Compiler将From Node视为生成时钟的目标,将Launch Clock视为生成的时钟。

图 46中 ,第一条路径是从toggle_clk (INVERTED)clk,第二条路径是从toggle_clkclk。由于沿路径的上升和下降时间不同,两种情况下的时序裕量(slack)略有不同。Data Delay列报告~5 ps的差异。只需要考虑具有最低时序裕量(slack)值的路径。Timing Analyzer仅报告两者之间的最坏情况路径(上升和下降)。在此示例中,如果没有定义寄存器输出上的生成时钟,那么时序分析仅报告一个具有最低时序裕量(slack)值的路径。

您可以使用derive_pll_clocks命令对所有PLL时钟输出自动生成时钟。 PLL输出上生成的时钟属性与您为PLL定义的属性相匹配。