直接SDC支援 + 时序引擎整合 = 更有效率的时序分析 静态时序分析是一种分析、除错与确认设计时序效能的法则,它用于连结功能性验证(典型的模拟或原型)以检验正确的设计运作。在合成或佈局佈线(可以包含实体合成)执行之后,工程师便可以执行时序分析,以检查设计编译的结果是否违反了时序的要求。
SDC格式是一种业界标准,可用于描述未来设计运作时所预期的时序约束。有越来越多的商业应用从ASIC转移到FPGA,也有越来越多的ASIC设计工程师使用FPGA架构的设计软件与技术,来开发新的晶片与其衍生产品,这些工程师已经非常熟悉SDC架构的时序分析法则,通常许多想要重新实行到FPGA设计中的模块,都已经有了这些约束条件,因此重新使用相同的时序约束,可以提供更明确的生产力优势。无论是採用手动还是自动方式,从SDC到专为FPGA设计软件所设计的时序分析工具支援的约束格式,均可避免在转换过程中所造成的任何错误,以更进一步地节省时间。
另一个SDC架构时序分析的关键要素是使用工具指令语言(Tool Command Language;Tcl),以及遵守Tcl语法规则来描述约束。因此,SDC架构的时序分析相当适合编写,并可允许设计师可以自动地完成时序相关的工作。这是为何像是Altera HardCopy II元件产品系列这类的结构化ASIC元件的设计法则,会喜欢使用SDC架构时序分析的其中一个原因。此外,设计中包含来源同步介面(像是DDR与DDR2)与时钟多工设计架构等这类复杂的时序约束,均可以轻易地使用SDC格式来进行描述。
结合了这些效益之后,可让Quartus II设计软件的使用者可以增进生产力,并当他们从电路图输入转换为像是Verilog与VHDL这类的硬件描述语言(Hardware Description Languages)时,更可提供显着的生产力优势。SDC格式能够普遍流行的其中一个原因,便是它具备直觉性与易于学习。图1显示了这些约束条件的基本范例。
图1
锁相迴路(Phase-Locked Loop;PLL)是用于提供时钟信号到FPGA设计的输出暂存器,PLL的输出是时钟信号SYSCLK,电路板的佈局考量到FPGA输出到外部暂存器(可以是在另一个FPGA里面)需要花费1 ns的时间,这种「资料到达时间」可确保由FPGA驱动的元件可以产生正确的行为模式。
这些时序约束可以在第一次描写时钟定义本身时加以描述,这在SDC执行时称之为create_clock:
在这个SDC中,设计师将会指定从[get_ports CLK_IN]的输入时钟到达所产生的PLL输出时也是一个时钟。
在电路板输出与目的元件之间的延时,会使用set_output_delay命令:
这个命令会参考同一个SYSCLK时钟,这在两个元件之间是相当常见的。这个范例假设在时钟与资料之间是零时滞的(在图1中,从外部时钟来源到PLL输入所花的时间是「time A」,以及从同一个外部时钟来源到外部暂存器所花的时间是「time B」,两者之间是有差异的),且可在两个元件之间共用。对运作在较低频率的设计来说,就算有一点时滞也不会有重大的影响。然而,在高频率下运作时,时滞便是阻碍设计信号同步的主要限制因素之一。就算不考虑频率的因素,时滞对于保持检测也是相当重要的事,为确保「time A」与「time B」能够一致,藉此消除资料与时钟信号之间的时滞,将是非常困难且需要花费很多时间才能达成。
想要克服同步介面在频率上的限制,设计师开始採用「来源同步」介面架构,这种介面是透过主控元件让资料与时钟信号都成为「来源」,如此一来当在电路板上传送信号到目的元件时,双方都可以同时遭受到相同的实体效应,这可实质地消除掉所有与资料「飞行时间」相关的所有因素,并可达到较大的介面速度。
图2显示了如先前所示的PLL延伸范例,在这个例子中,PLL的输出(PLLCLK)做为外部元件的时钟「来源」,在这个例子中的输出延时需求是2.3 ns。
图2
如同我们先前所做的一样,我们用SDC构成create_clock来定义时钟,我们指定PLL输出是一种起源或是产生的时钟。
在SDC中,它可以使用元件的其他接脚做为参考,来指派信号的输出延时。
这个范例展示了在任何具备ASIC效能的FPGA时续分析仪,能够直接支援SDC的重要性,当工程师在对高效能的FGPA架构设计执行时序分析时,支援SDC能提供所有精密的约束控制。
图 3. 在TimeQuest 时序分析仪中直接支援SDC约束
对时序分析工具的另一个重要软件需求,是有效地整合具备佈局佈线功能的静态时序分析与过滤器引擎,以达到较佳的结果品质(Quality of Results;QoR)。整合佈局佈线与具备时序引擎的过滤器引擎,其所带来的主要效益是便于对设计的关键路径进行检测与除错。整合可让内部的节点保持「可观察性」,并让工程师能够更容易地对设计中任何想要的节点进行追踪,并使其回到原来的时序约束。整合的缺失则在于原始网表与合成引擎所产生的网表之间,可能会产生节点名称不吻合的现象。 |