大家好,欢迎来到IT知识分享网。
1、同步电路与异步电路
(2)当不是来自同一个时钟源时,只要CLOCK的周期有倍数关系并且相互之间的相位关系是固定的就可以算同步电路,比如,电路中用了10ns、5ns、2.5ns三个时钟,这三个时钟不是由同一个时钟源分频来的,但是这三个时钟的周期有倍数关系并且相位关系固定:10ns是5ns的2倍,是2.5ns的4倍,之间是整数倍关系,相位关系是固定的,因此也算是同步电路。
clcok之间没有倍数关系或者相互之间的相位关系不是固定的,比如电路中的5ns、3ns两个CLOCK,这两个时钟不是来自同一个时钟源,两者之间没有周期关系,因此是异步电路。
同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路。同步时序逻辑电路的特点是各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲带来时,电路的状态才能改变,改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态表中的每个状态都是稳定的。
2、时钟/时钟树的属性
一般的时钟,指的是全局时钟,全局时钟在芯片中的体现形式是时钟树。
时钟树,是由许多缓冲单元(buffer cell)平衡搭建的时钟网状结构,如下图:
实际的时钟除了周期/频率、相位、沿、电平属性外,还有其他属性,也就是说:不是下面这样子规整的:
时钟有以下属性:
(1)时钟的偏移(skew): 时钟分支信号在到达寄存器的时钟端口的过程中,都存在有线网等延时,到达寄存器时钟端口的时钟信号存在有相位差,不能保证每一个沿都对齐,这种差异称为时钟偏移(clock skew)。
时钟偏移与时钟频率并没有直接关系,skew与时钟线的长度及被时钟线驱动的时序单元的负载电容个数有关。
(2)时钟抖动(jitter): 相对于理想时钟沿,实际时钟存在不随时间积累的、时而超前、时而滞后的偏移称为时钟抖动,简称抖动,如下图所示:
时钟的抖动可以分为随机抖动(Random jitter)和固有抖动(Deterministic jitter)。
随机抖动的来源为热噪声、shot noise和flick noise,与电子器件和半导体器件的电子和空穴特性有关,比如ECL工艺的PLL比TTL和CMOS工艺的PLL有更小的随机抖动。
固定抖动的来源为:开关噪声源、串扰、电磁干扰等,与电路的设计有关,可以通过优化设计来改善,比如选择合适的电源滤波方案、合理的PCB布局和布线。
即,jitter与时钟频率无直接关系。
时钟的偏移和时钟的抖动都会影响着时钟网络分支的延迟差异(相位差异),在Design Compiler中,用时钟的不确定性(uncertainly) 来表示这两种情况的影响。
(3)时钟的转换时间(transition): 时钟的上升沿跳变到下降沿或者时钟下降沿跳变到上升沿的时间,这个时间并不是如下图那个样完全没有跳变时钟的,时钟沿的跳变时间就是时钟的转换时间。
时钟的转换时间与单元的延时时间(器件特性)还有电容负载有关。
(4)时钟的延时(latency): 时钟从时钟源(晶振)出发到触发器的时钟端口的延时,称为时钟的延时,包含时钟源延时(source latency)和时钟网络的延迟(network latency)。
时钟源延迟(clock sourcw latency),也称为插入延迟(insertion delay),是时钟信号从其实际时钟原点到设计中时钟定义点(时钟输入引脚)的传输时间。上图是3ns。
时钟网络延迟(clock network latency)是时钟信号从起定义端(端口或引脚)到寄存器时钟引脚的传输,经过缓冲器和连线产生的延迟(latency),上图是1ns。
3、内部时钟
4、多路复用时钟
5、门控时钟
门控时钟就是在使能信号有效的时候,把时钟打开,使能信号无效的时候,时钟关闭。时钟关闭之后,它所驱动的寄存器就不会有翻转,因此也就是降低了动态功耗。
这样的门控时钟bug多,门控使能信号如果在时钟的高电平的时候开启或者关闭,就会导致产生的门控时钟高电平被截断,变成毛刺;门控使能信号对在时钟低电平时跳变对产生的门控时钟没有影响。
当门控使能信号是低电平有效的时候,要换成:高电平触发的锁存器+或门
6、行波时钟
7、双边沿时钟
8、Design Compiler中的时钟约束
对实际的时钟进行建模/约束了,实际上就是对这几个属性进行设置。
时钟偏差的建模:
set_clock_uncertainty:对时钟的偏移和抖动进行建模,也就是对时钟的偏差进行建模,具体使用为:
假设时钟周期是10ns,时钟的建立偏差为0.5ns。用以下命令来定义进行约束:
creat_clock -period 10 [get_ports CLK]
set_clock_uncertainty -setup 0.5 [get_clocks CLK]
理想的时钟:
只对建立时间的偏差时钟建模:
如果对建立时间和保持时间都进行偏差建模,则有:
在默认情况下,“set_clcok_uncertainty”命令如果不加开关选项,“-setup”或“-hold”,那么该命令给时钟赋予相同的建立和保持偏差值。
时钟转换时间的建模
由于时钟并不是理想的方波,用set_clock_transition来模拟时钟的转换(transtion)时间。默认的上升转换时间从电压的20%上升至80%的时间,下降的转换时间为从电压的80%下降至20%的时间。如果set_clock_transition命令中不加开关选项“-setup”或“-hold”,那么该命令给时钟赋予相同的上升和下降转换时间。一般情况下,我们只约束最大的转换时间,如最大转换是啊金是0.2ns。那么就加上-max选项
set_clock_transition – max 0.2 [get_clocks CLK]
时钟延迟的建模
时钟从时钟源出发到达触发器时钟端口的延时,称为时钟的延时,包含时钟源延迟(source latency)和时钟网络的延迟(network latency),我们使用set_clcok_latency进行时钟延时的建模。一般情况下,我们把时钟源延迟(source latency)和时钟网络的延时(network latency)分开来,因为时钟源延时需要建模,是因为DC不知道延时有多爱大,对于时钟网络的延迟,DC在布局布线之前不知道,但是在布局布线这会就可以计算出来时钟网络的延时了,因此在布局布线之后进行综合时,就每页必须对是时钟网络继续延时,印象要把这两个延时分开约束。
先说布局布线之前:时钟周期为10ns,时钟源到芯片的时钟端口时间是3ns,时钟端口都内部触发器的时间是1ns,如下图所示,
那么就用下面的命令进行建模:
create_clock -period 10 [get-ports CLK]
set_clock_latency -source 3 [get_clocks CLK]
set_clock_latency 1 [get_clocks CLK]
通常情况下,我们约束最大的延时,也就是加上-max的选项,表示最大延时是多少(如set_clock_latency -source -max 3 [get_clocks CLK] 就是时钟源到芯片时钟端口最大的时间是3ns)。
时钟分配策略
时钟的分配从规划初始就应该考虑,也就是从系统层面上去考虑。不是等到后端设计时再考虑。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133800.html