Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1166657
  • 博文数量: 173
  • 博客积分: 4048
  • 博客等级:
  • 技术积分: 2679
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-12 18:53
文章分类

全部博文(173)

文章存档

2018年(1)

2016年(1)

2013年(1)

2012年(118)

2011年(52)

分类: 嵌入式

2012-10-03 10:41:50

对于Altera FPGA芯片,静态时序分析工具为Timequest。
       Timequest静态时序分析的对象包括: 
     (1)寄存器和寄存器之间的路径; 
     (2)I/O之间; 
     (3)I/O和寄存器之间的路径; 
     (4)异步复位和寄存器之间的路径。 
       Timequest 根据 Data Arrival Time 和 Data Required Time 计算出时序余量(Slack)。当时序余量为负值时,发生时序违规(Timing Violation)。 
       由于时序分析是针对时钟驱动的电路进行的,所以分析的对象一定是“寄存器-寄存器对”。在分析涉及到I/O的时序关系对时,看似缺少一个寄存器分析对象, 构不成“寄存器-寄存器对”,其实是穿过 FPGA的 I/O引脚,在FPGA外部虚拟了一个寄存器作为分析对象。
       在建立、保持时间检查中,都假设数据从launch edge开始发送,在latch edge被捕获;launch edge和latch edge是相邻最近的一对时钟沿。在多周期路径检查中,仍然采用launch edge和latch edge的概念,但是launch edge和latch edge不再是相邻的一对时钟沿,而是间隔一定时钟周期的一对时钟沿,间隔的时钟周期个数由用户指定。 
       在同步逻辑设计中,通常都是按照单周期关系考虑数据路径的。但是往往存在这样的情况:一些数据不需要在下一个时钟周期就稳定下来,可能在数据发送后几个时 钟周期之后才起作用;一些数据经过的路径太复杂,延时太大,不可能在下一个时钟周期稳定下来,必须要在数据发送后数个时钟周期之后才能被采用。针对这两种 情况,设计者的设计意图都是:数据的有效期在以launch edge为起始到数个时钟周期之后的latch edge。这一设计意图不能够被时序分析工具猜度出来,必须由设计者在时序约束中指定;否则,时序约束工具会按照单周期路径检查的方式执行,往往会误报出时序违规。 
       不设置多周期路径约束的后果有两种:一是按照单周期路径检查的结果,虚报时序违规;二是导致布局布线工具按照单周期路径的方式执行,虽然满足了时序规范, 但是过分优化了本应该多个周期完成的操作,造成过约束。过约束会侵占本应该让位于其他逻辑的布局布线资源,有可能造成其他关键路径的时序违规或时序余量变 小。 
       在多周期路径的建立时间(Setup Time)检查中,Timequest会按照用户指定的周期数延长Data Required Time,放松对相应数据路径的时序约束,从而得到正确的时序余量计算结果;在保持时间(Hold Time)检查中,Timequest也会相应地延长Data Required Time,不再按照单周期路径的分析方式执行(不再采用launch edge最近的时钟沿,而是采用latch edge最近的时钟沿),这就需要用户指定保持时间对应的多周期个数。 
       Timequest缺省的Hold Time检查公式是需要用户修改的——针对Setup Time多周期路径的设置也会影响到Hold Time的检查。究其原因,多周期路径是为了解决信号传播太慢的问题,慢到一个周期都不够,所以要把Setup Time的检查往后推几个周期——扩大Setup Time检查的时间窗口。而Hold Time检查信号是否传播得太快,如果把检查时刻往后推,就缩小了Hold Time检查的时间窗口。 
       “信号跳变抵达窗口”:对latch寄存器来说,从previous时钟对应的Hold Time开始,到current时钟对应的Setup Time结束。
       “信号电平采样窗口”:对latch寄存器来说,从current时钟对应的 Setup Time 开始,到current时钟对应的Hold Time结束。
         launch寄存器必须保证驱动的信号跳变到达latch寄存器的时刻恰好处于 “信号跳变抵达窗口”内,才能保证不破坏latch寄存器的“信号电平采样窗口”。 
    时序检查的目的就是确认信号跳变发生在“信号跳变抵达窗口”内,而不会发生在“信号电平采样窗口”内。 多周期路径的设置是通过延后Setup Time检查的时刻,扩大了“信号跳变抵达窗口”,放松了时序约束。因此,延后Hold Time,就会缩小“信号跳变抵达窗口”。
阅读(8186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~