赞
踩
STA不依赖输入向量,分析电路拓扑并计算不同信号到达个点的时间窗口,并和要求的时间进行比较。
STA工具会对每个触发器上数据和时钟的到达时间与该触发器要求的setup time、hold time进行比较,如果不满足,则会进行时序违例报错。
STA工具需要各种信号到达时间及其它特性,这些都需要约束来提供。
通过约束声明一些自身的输入,这些信息只用来验证时序是否满足,如:
通过约束做一些时序限制,计算时间窗口后,如果时序满足约束则通过STA,反之,STA失败,如:
有些时候,约束可作为某些工具的指令,如综合、布局布线,这些工具将约束作为它们试图满足的目标。
有一些约束用来指定时序的放宽范围。假设一些路径被约束以满足时序,但是由于特殊情况,这些路径不需要满足这些时序,这称为时序异常,具体例子后续blog会详细介绍。
在不同阶段,约束的作用是不同的,约束作用通常是根据上下文作用的,如:
STA只做时序分析,不保证功能是否正确,所以即使通过了STA,还需要进行仿真、验证、FPGA原型验证等。
由于约束都是由用户自己定义声明的,所以即使用户给出了错误的约束,STA能顺利通过,但是实际电路是不满足最初设计需求的。
时序要求应该不过严也不过松,在不确定的情况下,应该严一点点。
但是用严格的约束会有以下问题:
STA依赖与延迟计算,而延迟计算有关的数据有:
信号时序开始的点即为起点,被定时的点即为终点,所以任何点可以作为起点和终点。
严格来说,时序从时钟源开始,到达触发器的clk引脚,再进入触发器的Q端,并继续传递。所以,寄存器并不是真正起点,但是大多数分析都是以寄存器为起点。
用户可以通过指定启动条件和检查条件在电路的任何位置插入起点和终点,路径会在该点被打断,如:
如果用户约束了N1->N2的最大延迟,那么STA必须在N2处定时检查,所以N2变成了一个终点;同时也是下一个阶段的起点。
如上图的功能路径为I2->D端->Q端->N3
而时序路径则为I2->D端->clk有效时的Q端,时序逻辑中时序路径都和时钟的流动有关。
搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。