System Generator系列之时序分析

2020-06-29 11:33:26 浏览数 (1)

在很多时候,进行FPGA的设计都是需要注意时序的问题,因为时序一旦不正确将导致最终的结果与预期的不同,因此今天将分享一下在System Generaotr中是如何分析时序,并且在设计中找到违反时序的根源。

~Show Time~

这次直接准备好了一个设计文件,打开如下所示,可以直接回复文末的关键字获取,

双击System Generator,将Compilation菜单下的Compilation改为HDL Netlist,语言可以改成Verilog,也可以默认使用VHDL,然后将目标路径更改下,与以前进行设计时所用的文件做个区分,更改的配置如下:

然后在Clocking菜单下,主要做以下更改,将Perform analysis改成Post Synthesis, Analyzer type选择位Timing,如下所示:

然后点击Generate,等待编译结果,编译完成后,会出现以下的结果,一个FAILED的状态;

在上面分析的表格中,是按Slack的数值从小到大排列的,违反时序的会变成红色的,直接单击红色的(其他的也可以),然后会在Simulink模型界面突出显示其位置,模块违反了时序的就会以红色进行高亮显示,如下:

单击一个未违反时序,就以表格中的第二行为例,然后就会以绿色高亮显示,表示未违反时序,如下所示:

在做完时序分析,也就是刚刚Generate完成后,如果时序分析的对话窗口被关闭,或者整个软件被关闭,在下次使用时,可以直接使用Launch加载之前运行的数据,并在窗口进行显示,这是由于之前运行的结果已经储存在设定的目标文件夹中,所以可以重新加载。

违反时序的故障排除

通过在组合路径中插入一些寄存器,可能会提供更好的时序分析结果,并有助于克服时序违规(如果有)。这可以通过更改组合块的延迟来完成,解决如下。

继续点击表格中第一行违反时序的那一项,也就是标红的那个,然后打开违反的地方。

双击Mult,打开它的变量窗口,然后将Basic菜单下的Latency的值由1改为2,然后点击OK保存并关闭。

然后重新打开System Generator,确定“Analyzer Type” 是 “Timing” 就点击Generate重新进行生成。

等待完成后,观察右上角的状态,此时已经变成了PASSED,代表该设计中已无违反时序的源。

通过今天简单的使用System Generator中的Timing 分析的功能找到时序错误的地方,然后通过增加寄存器,使得延迟改变,最终导致时序被纠正,但是这样会增加资源的消耗。

0 人点赞