4 Timing report
上面三个部分分别介绍了时序分析中常用的约束的实用方法。在设定了这些约束以后,软件在综合的过程中,会根据约束对设计进行优化,采用一定的算法尽量保证设计能满足所有约束的要求。但是,很多情况下,系统是没有办法完全实现约束的要求,这时就会出现timing violation。在这种情况下,我们可以通过分析时序报告,找出问题的所在,从而给出解决方案。那我们如何获取时序报告呢?
时序报告的获取,必然是依赖于进行时序分析的软件。TimeQuest在做时序分析时,可以给出所有分析过的timing path的时序报告,不过一般情况下,我们只关心有问题的timing path或者一些关键的timing path的时序报告。在我们用time craft或者prime time做时序分析时,一般习惯于用命令行输入命令的方式控制软件输出时序报告。而在用TimeQuest做时序分析时,用GUI来获取时序报告会更方便一些。下面我们就介绍如何用TimeQuest获取时序报告。一般比较关注的是setup time和hold time的相关信息,所以在介绍中,也以setup time和hold time的report为主。
首先我们看TimeQuest左侧的task窗口,在Slack下面,有各种summary。如果我们要获取某一个项目的时序报告的summary,那么用鼠标双击这一条目就可以了。
比如说要看Setup的summary,那么双击Report Setup Summary,软件会在右边的主窗口给出Setup time的summary信息,如下图所示。
可以看到,PORT_DA_SCLK时钟域下,最大的setup timing violation是-8.620ns。其他三个时钟域(CLK50M,DA_SCLK和CLK25M)下没有setup timing violation。但是在这个报告中,并没有给出PORT_DA_SCLK下有setup timing violation的timing path以及更详细的信息。
同样的,我们也可以给出Hold time的summary。
如果想要获取PORT_DA_SCLK下,所有存在setup timing violation的timing path的详细信息,那么就可以执行下面的操作。
还是在软件左侧的Tasks窗口里,找到Custom Reports中的Report Timing…,如下图所示。
双击Report Timing,会弹出如下的对话框:
对话框中有Clocks,Targets,Analysis Type,Paths,Output和Tcl Command这几个选项。我们分别对其做介绍。
Clocks选项,用来选择要报告的timing path的时钟域。比如我们要获取PORT_DA_SCLK这个时钟域内timing path的报告,那么我们就在From Clock和To clock中,都选择PORT_DA_SCLK。如果要获取终点是PORT_DA_SCLK的timing path的报告,那么就在to clock中选择PORT_DA_SCLK。
Targets选项,用来选择要报告的timing path的具体信息。From是timing path的起点,Through是timing path所经过的点,To是timing path的终点,确定这几个选项的话,可以给出特定timing path的时序报告。如果我们要给出Clocks选项中所有timing path的时序报告,那么targets选项里就可以空置。
Analysis Type给出了要获取的报告的种类,做setup的话,就选择setup。
在paths选项里,Report number of paths一项里,用来确定要报告的timing path的数量。首先要明确一点,假设你选择要报告的timing path的数量为n,那么软件在给出这个报告的时候,会将slack的值按从大到小的顺序排列,给出slack值最大的n条timing path的报告。如果要报告所有的timing path,那么这一项可以设定为空。之所以要给出这个选项,是因为在一些规模较大的设计中,timing path的数量可能会非常多,如果要给出全部的报告,软件需要运行的时间会非常的长。
有的timing path,会有共同的起点和不同的终点,或者有不同的起点和相同的终点,那么Maximum number of paths per endpoint就是为了约束这种情况的。
Output中给出了一些关于报告的内容的选项。这里不再做详细的介绍,一般情况下,按默认选项就可以了。
Tcl Command是上面所有选项对应的Tcl Command,也就是说,你在SDC文件中加入这个Tcl Command的话,运行SDC文件,就会得到同样的结果。
我们按照下面的选项执行Report Timing命令,如下图所示:
会得到如下图所示的结果。
说明一共有两条timing path,其中一条有-8.620的slack。至于这一条timing path的详细信息,都可以从报告中获取。
另外在TimeQuest的Tasks中有各种各样的命令,大家可以尝试着去执行一下看看结果,这里因篇幅的限制,就不做更多的介绍了。
至此,用Quartus II Timequest Timing Analyzer进行时序分析的实例讲解告一段落。