目录
9.为什么说时钟越快,时序越容易违规?为什么工艺越高,时钟就可以跑得越快?
12.为什么说阻塞赋值和非阻塞赋值最好不要混用?为什么说if嵌套不要太多?
3.已知reg的setup,hold时间,求中间组合逻辑的delay范围。
10.已知Tsetup=1ns、Thold=1ns、Tclk->q = 1ns。请回答以下问题。
时序分析概念
1.什么是建立时间和保持时间?
建立时间:指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间。如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器
保持时间:是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
(setup time不受系统时钟频率影响)
2.为什么D触发器要满足建立时间和保持时间?
因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,D触发器将进入亚稳态,亚稳态的值也并不一定是你的输入值,亚稳态传播到后面逻辑中,可能导致整个系统奔溃。
3.如何修复建立时间和保持时间
修复Tsetup
- (1)降低时钟频率;
- (2)增大时钟正偏斜;
- (3)减小时钟负偏斜;
- (4)减少组合逻辑延迟;
- (5)减少多扇出网络;
- (6)选用延时少的cell
修复Thold
- (1)减小时钟正偏斜;
- (2)增大时钟负偏斜;
- (3)增加组合逻辑延迟
4.什么是流水线?
流水线使用存储器件将时钟周期内关键路径(最大组合延迟的路径)分割开来,从而减少关键路径上各个阶段延迟并使电路能以更高的频率工作。
5.什么是流水线冒险?
冒险有结构冒险、数据冒险和控制冒险三种。解决通用办法是在流水线中插入流水线气泡直至冒险消除。
- 结构冒险:由于资源冲突而使硬件无法支持所有可能的指令组合同时执行。例如在单端口存储器执行读写操作过程,假设流水线要求同一时钟周期 内要对存储器进行访问两次,这样的话就会产生存储器读写冲突。这种情况可以再增加一个时钟周期,即将流水线停止一个周期(产生一个流水线气泡)。另一种方法就是使用不同的存储器或者多端口存储器,消耗更多的资源。(采用使能信号推迟时钟,使得流出流水线气泡时间)
- 数据冒险:指令执行需要之前指令的计算结果,而这个结果在流水线中还没有计算出来。解决办法就是使用数据/寄存器转移,进行纵向气泡延迟,从而解决问题。
- 控制冒险:分支的流水线和其他指令改变程序计数器的值。由于分支所需的数值需要后续的计算流水才可以 产生 ,这是我们需要将流水停止几个周期知道从重新获取下一条数值进行判断,使风险降低到最小。
- 其他风险:数据读取访问存储器时,地址要保持不变等等。
6.什么是关键路径?如何减小?
关键路径,即组合逻辑中延时最长的时序路径。
减小方法:
(1)优化组合逻辑代码;
(2)综合时选择延时小的单元;
(3)综合时使用set_max_delay等优化指令;
7.如何提高系统运行速度?
(1)提高系统时钟频率(前提是减少组合逻辑延时);
(2)流水线设计,例如组合逻辑中间插入流水寄存器,长路径切为短路径;
(3)并行处理,即硬件复制,并行运行,以面积换性能;
8.阐述系统最快时钟频率和流水线设计思想
同步电路的速度是指同步系统时钟的速度,同步时钟越快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就越大。时钟的延迟必须大于Tco+Tdata+Tsetup,也就是说最小的时钟周期Tmin=Tco+Tdata+Tsetup,即最快的时钟频率是Fmax = 1/Tmin。FPGA开发软件也是通过这种方法来计算系统的最高运行速度Fmax。因为Tco和Tsetup是由具体的器件工艺决定的,故设计电路时只能改变组合逻辑的延迟时间Tdelay,所以说缩短触发器间组合逻辑的延时时间是提高同步电路速度的关键所在。
流水线设计:将原本一个时钟周期完成的较大的组合逻辑通过合理的切割后分由多个时钟周期完成,采用流水线技术插入触发器后用多个时钟周期完成,该部分逻辑运行的时钟频率会有明显的提升,用面积换速度提高系统的性能。
9.为什么说时钟越快,时序越容易违规?为什么工艺越高,时钟就可以跑得越快?
寄存器的延时参数大小是固定的,而时钟越快,时钟的长度就越短,保持裕量和建立裕量就越短,当时钟快到一个周期的长度还没一个寄存器延时参数大的程度时,就没有保持裕量和建立裕量的空间了。而工艺越高就会导致寄存器延时参数越小,体积越小也会导致寄存器之间的路径延时越小。
10.时序约束的基本概念和基本策略?
时序约束主要包括周期约束,偏移约束,静态时序约束。
通过附加时序约束可以综合布线工具调整映射和布局布线,使设计达到时序要求。
附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加时序偏移约束,对全组合逻辑的 PAD to PAD 路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快慢速例外路径和周期路径,以及其他特殊路径。
11.时序约束有哪几种路径
(1)Input paths:外部引脚到内部模块路径
(2)Register-to-register paths:系统内部寄存器到寄存器路径
(3)output paths:内部模块到外部引脚的路径
(4)port to port paths:FPGA输入端口到输出端口路径(不常用,无锁存不好分析)
12.为什么说阻塞赋值和非阻塞赋值最好不要混用?为什么说if嵌套不要太多?
这属于同一个问题。阻塞赋值和if判断都是即时得到结果的,他们属于组合逻辑,他们造成的延时效果和寄存器延时效果是一样的,所以时序逻辑中如果阻塞赋值用的多或是if嵌套太多、判断时间太长,就会导致延时。如果时钟太快了,就可能导致时序违规。
时序分析计算
1.题目1
如图所示时序路径示意图,椭圆表示组合逻辑,FF1,FF2表示寄存器,A表示数据输入端口,CLK表示时钟输入端口,Z表示数据输出端口(C)
A.只要在端口CLK上创建时钟,即可约束A->Z之间的组合逻辑的延时。
B. 只要在端口Z上设置输出延时,即可约束FF2 -> Z之间的组合逻辑的延时。
C. 只要在端口CLK上创建时钟,即可约束FF1->FF2之间的组合逻辑的延时
D. 只要在端口A上设置输入延时,即可约束A->FF1之间的组合逻辑的延时
2.题目2
时钟周期为T,触发器D1时钟沿到来至触发器输出Q变化的时间为Tco(clk~Q)最大为T1max,最小为T1min,逻辑组合电路的延迟时间最大为T2max,最小为T2min,问触发器D2的建立时间和保持时间应满足什么条件。
解:其他数据都没给,所以不带入,只带入题目给了的数据。
T2 setup < T-T1max -T2max(setup找最小,自然选max)
T2hold < T1min + T2min(hold找最小,自然选min)
3.已知reg的setup,hold时间,求中间组合逻辑的delay范围。
解:Delay < period -setup-hold
4.如何计算周期T与设计频率(最大频率)Fmax。
Tclk = TCKO + TLOGIC+TNET+TSETUP-(TCD2-TCD1)
FMAX=1/TCLK
5.请计算下面逻辑中时钟clk可以达到的最小周期。
(图中0.8/0.65/0.6分别为CT1、CT2、CT3的器件延时),3.8为CK1经过combinational logic到达DL2的D端上的传播延时、0.2为D触发器建立时间。
解:Tmin =(Tco + Tdata)+Tsu-Tskew
= 3.8 + 0.2-(0.65-0.6)=4-0.05=3.95
6.题目6
如下图,有一同步电路,module A有一个信号A输出给module B。时钟周期是2ns,DFF的setup time 为0.2ns,hold time为0.18ns,DFF的clk端延时为0.12ns,D1=0.6ns。考虑clock skew = 0.05ns,计算D2的最大值为多少?
解:建立裕量:Tcyc + Tskew-(Tsu+Tco+Tdata) > 0
2 + 0.05 - (0.2+0.6+Tdata)>0
Tdata < 1.25
所以最大值为1.25ns。
7.题目7
如下图所示,假定反向器的最大/最小延迟分别为Tinv_max/Tinv_min,与门的最大/最小传输延迟时间分别为Tand_max/Tand_min,寄存器(DFF)的时序参数分别是:建立时间(Tsu),保持时间(Thold)和传输时间(Tpd)。
(1)请解释寄存器(DFF)的3个典型的时序
建立时间Tsu:在触发器的时钟上升沿到来之前,数据保持稳定不变的时间。
保持时间Th:在触发器的时钟上升沿到来之后,数据保持稳定不变的时间。
Tpd:当时钟有效沿变换后,数据从输入端到输出端的最小时间间隔。
(2)基于上述电路所给的参数,请分析该电路能正常工作的最大频率。如果需要的未给定的参数,请给自行定义并说明。
Tmin = Tco+Tsu+Tdata-Tskew
Fmax=1/(Tco+Tsu+Tdata-Tskew)=1/(Tpd+Tsu+Tand_min)这里没有给出Tskew,所以不管他。
(3)请在图上表示可能的时序关键路径,并列举至少两种可能的方法来改善其数据路径的延时。
关键路径:通常是指同步逻辑电路中,组合逻辑延时的最大的路径。也就是说关键路径是对设计性能起决定性作用的时序路径。所以从图上找组合逻辑最长的那一条。
对同步逻辑常用的时序优化方法包括(1)插入寄存器(2)并行化设计(3)逻辑展平(4)均衡设计(5)优化路径
8.题目8
.下图是某电路中的一条关键路径,其中DFF的参数如下:tco=1ns,tsu=2ns,thold = 1ns,Logic的最大延时为4ns,最小延时为3ns,clk的jitter为2ns,则电路最小的时钟周期为(A)
A、7ns B、8ns C、9ns D、
解:Tmin=Tco+Tdata+Tsu-Tskew+Tjitter = 1+3+2-1+2=7ns(注意,题目没给Tskew,但图上画出来了。)
我觉得还算按最坏情况算,即取4ns,答案为8ns。
9.题目9
如下图为某同步电路,DFF1和DFF2的setup,hold和output delay(clk->Q)时间为0.6,0.3,1.2(各时间参数均为ns),假设clk时钟频率为250MHZ,请问DFF2的setup时间和hold时间是否满足并说明其原因。
由题意可知:Tcyc=1/250M=4ns,
建立时间:Tcyc + Tskew -Tco - Tdata-Tsu = 4 + (0.8-1)-1.2-2.2-0.6=4-0.2-4=-0.2 <0,违例
保持时间:Tco+Tdata-Tskew-Th = 1.2+2.2-(0.8-1)-0.3=3.4-0.1=3.3,满足
10.已知Tsetup=1ns、Thold=1ns、Tclk->q = 1ns。请回答以下问题。
(1)假设存在positive clock skew为1ns,问最高时钟频率为多少?
(2)能容忍的最大positive clock skew为多少?(DFF2的clock比DFF1晚)
(3)能容忍的最大negative clock skew为多少?(DFF2的clock比DFF1早)
解:(1)5条路径依次分析:Tcyc >= Tco+Tdata+Tsu-Tskew
DFF1->DFF2:1+(4+3+1)+1-1=9ns
DFF1->DFF2:1+(1+2+1)+1-1=5ns
DFF2->DFF1:1+(3+1)+1+1=7ns(这是一个负的Tskew)
DFF1->DFF1:1+(4+1)+1 = 7ns(DFF1到DFF1的时钟不存在Tskew)
DFF2->DFF2:1+(2+1)+1 = 5ns(DFF2到DFF2的时钟不存在Tskew)
最高时钟周期为9ns,所以最高时钟频率是1/9ns。
(2)公式Th <= Tco + Tdata - Tskew,即Tskew <= Tco + Tdata - Th,路径代入可得答案。
DFF1->DFF2:1+(4+3+1)-1=8ns
DFF1->DFF2:1+(1+2+1)-1=4ns
DFF2->DFF1:-(1+(3+1)-1)=-4ns(这是一个负的Tskew)
DFF1->DFF1:0ns(DFF1到DFF1的时钟不存在Tskew)
DFF2->DFF2:0ns(DFF2到DFF2的时钟不存在Tskew)
出现一个负的Tskew,这是不能取的,因此最大positive clock skew答案为4ns
(3)和(2)类似,但是答案取反,因此最大negative clock skew为4ns。