如何使用TimeQuest

如何使用timequest 用altera的话来说,timequest timing analyzer是一个功能强大的,asic-style的时序分析工具。采用工业标准--sdc(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。
timequest的基本操作流程 做为altera fpga开发流程中的一个组成部分,timequest执行从验证约束到时序仿真的所有工作。altera推荐使用下面的流程来完成timequest的操作。
1、建立项目并加入相关设计文件
不管做什么事情,都需要有一个目标或者说对象。我们用timequest做时序分析,当然也需要一个对象,这个对象实际上就是我们的设计。所以首先是建立一个quartus ii的项目,并把所有需要的设计文件都加入到项目中去。需要注意的一点是,这里的设计文件,不仅仅包含逻辑设计相关的文件,也包含已经存在的时序约束文件,当然,需要以synopsys design constraints(.sdc)的格式存在的。关于 sdc文件,可以使用quartus的向导来建立,在生成sdc文件后,你可以再在此sdc文件上进行自己的修改,如下图所示,assignments-》timequest timing analyzer wizard.。。
2、对项目进行预编译(initial compilation)
项目建立以后,如果从来没有对项目进行过编译的话,就需要对项目进行预编译。这里的预编译是对应于全编译(full compilation)来讲的,我们可以理解为预编译是对项目进行部分的编译,而全编译是对项目进行完整的编译。做预编译的目的是为了生成一个initial design database,然后我们可以根据这个database用timequest采用交互的模式生成时序约束。实际上,对于小的设计,编译时间并不是很长的话,完全可以不去区分预编译和全编译,需要编译的时候,直接做全编译就可以了,做全编译的话,可以生成一个post-fit的database,完全可以给timequest使用。
3、向设计中添加时序约束
在用timequest做时序分析之前,必须要指定出对时序的要求,也就是我们通常所说的时序约束。这些约束包括时钟,时序例外(timing exceptions)和输入/输出延时等。
默认情况下,quartus ii 软件会给所有没有被下约束的时钟都设定为1ghz。没有任何的时序例外,也就是说所有的timing path都按1t去check。所有的输入/输出的延迟都按0来计算。这显然不符合绝大多数设计的时序要求,所以有必要根据设计的特性,添加必要的时序约束。
如上所述,时序约束主要包括三类:时钟,时序例外和输入/输出延迟。其中时钟和输入/输出延迟可以认为是在某种程度上增强时序设计的要求。而时序例外可以认为是在某种程度上降低时序设计的要求。比如说,仅仅设定一个时钟的频率为100mhz的话,这个时钟域里所有timing path都需要能工作在100mhz下。这显然是增强了时序设计的要求。可是如果在这个时钟域下面,有部分timing path是不需要做1t的check的,那么就可以通过添加时序例外来避免对这些timing path做1t的check,即降低了时序设计的要求。
在用timequest做时序分析时,如果非常熟悉设计的构架和对时序的要求,又比较熟悉sdc的相关命令,那么可以直接在sdc文件里输入时序约束的命令。而通常情况下,可以利用timequest gui提供的设定时序约束的向导添加时序约束。不过要注意的是,用向导生成的时序约束,并不会被直接写到sdc文件里,所以如果要保存这些时序约束,必须在timequest用write sdc的命令来保存所生成的时序约束。
4. 执行完整的编译
在设定好时序约束以后,就需要对整个设计进行完整的编译。在编译过程中,软件会优化设计的逻辑、布局布线等来尽可能满足所有的时序约束。
如果没有添加时序约束,那么软件在编译的时候,会按照默认的时序约束对设计进行优化,对于绝大多数的设计,都会报出来时序的问题,但因为默认的时序约束与设计本身的要求在绝大多数情况下,都是不同的,所以这些时序的问题也并不是设计本身的问题,并没有太多的参考价值,而且很多初学者也不会注意到这个问题。这样就把设计中很多潜在的时序问题给隐藏起来了,最终带来的可能就是系统运行的不稳定,甚至是完全不能运行。
5. 验证时序
当完成编译以后,我们就可以用timequest来验证时序了。在时序分析的过程中,timequest会分析设计中所有的timing path,计算每一条timing path的延时,检查每一条timing path是否满足时序约束,最后按照positive slack或negative slack来报告时序分析的结果。其中negative slack就表示对应的timing path不满足时序约束的要求(timing violation)。
如果遇到有不满足时序要求的情况,则可以根据对应的时序报告分析设计,确定如何优化设计使之满足时序约束。时序约束有任何变化的话,都需要重新编译设计。这个反复的过程可以让我们解决设计中的时序问题。
dac7512控制器 dac7512是一个具有三线串行接口的dac。我们基于fpga用verilog语言实现了一个简单的dac7512的控制器。下面是控制器的结构图
dac7512控制器由三个模块组成,pll用来生成控制器所要的时钟c0(25mhz)和c1(50mhz),其lock信号用来做为控制器的异步reset。da_data模块生成要送往dac7512的数据,其中da_data为数据,da_data_en为数据有效信号,该模块使用c0时钟,整个属于c0时钟域。dac7512模块用于将da_data转换成符合dac7512接口标准的串行数据并送给dac7512,要用到c1(50mhz)和da_sclk(c1二分频,25mhz)两个时钟。
dac7512控制器一共有四个输入输出端口。clk_in为pll的基准时钟,为25mhz。da_din,da_sclk和da_sync为三线串口,都为输出端口。由于c0,c1是由同一个pll输出的,da_sclk是由c1经二分频得到的,三者之间是同步的,处于同一个clock group中。不过要注意一点的是,在串行总线上,da_din是在da_sclk的下降沿有效的。把da_din设计为c1时钟域的信号,并控制其值只在da_sclk为高电平的时候发生变化。这样可以把da_din与da_sclk之间的时序要求转换为da_din在c1时钟域的时序要求,具体的使用方法我们跟着视频一起来学习一下。

小米、字节跳动、阿里巴巴等11家企业被约谈
揭秘为何精确测量附加抖动如此重要
定子串自耦变压器降压启动控制线路(电路图)
虹膜识别技术如何在智慧公安领域应用
时刻继电器的构造原理
如何使用TimeQuest
iPhone8什么时候上市?有图有真相:iPhone8再次被确认!这才是苹果的真正水平!
什么是io多路复用?IO多路复用的优缺点
人工智能推动生产力飞速提升
编码器缩小以匹配越来越小的电机
OPC智能网关实现各行业工厂设备数据采集和通信组网
NANK南卡A2降噪耳机登场:四百内最强TWS降噪耳机?
对RyanMqtt的QOS消息质量稳定性进行测试
蓝牙无线个人局域网的组建方案解析
7月27日武汉汽车制博展,台湾高技与您武汉见!
电动汽车的高压线束焊接技术
长城汽车正式面向墨西哥市场带来首款车型哈弗H6 HEV
PVT++:通用的端对端预测性跟踪框架
九联科技LTE Cat.1模组助力公网对讲机市场蓬勃发展
ARRA高功率直接校准衰减器