//来源于微信公众号 "数字芯片试验室"
应用create_clock指令建立的钟表全是ideal的,忽视了钟表互联网的延迟时间。要开展精准的时钟频率剖析,还可以叙述钟表互联网的一些关键特点(例如,latency和uncertainty)
Latency(延迟时间)包含钟表源延迟时间(clock source latency)和钟表网络延时(clock network latency)。
钟表源延迟时间是时钟信号从其钟表源散播到钟表界**需要的時间。
钟表网络延时是时钟信号从设计中的钟表界**推广到存储器钟表管脚的時间。
Clock uncertainty(钟表可变性)是存储器中时钟信号抵达時间的较大差别。Clock uncertainty设定了另外的 ** rgin来更为严苛setup和hold时钟频率查验,我们可以为同一途径上的setup和hold时钟频率查验特定不一样的uncertainty。
设定Clock Latency
•根据钟表互联网的散播延迟时间来测算Latency。这类方式十分精确,但只有在CTS以后应用。
•确立可能和特定每一个钟表的延迟时间。 通常这类方式在CTS以前应用。
设定散播延迟时间(Propagated Latency)
EDA**工具可以在CTS以后根据散播延迟时间来全自动明确钟表互联网的延迟时间。这时造成的結果比较精准,钟表互联网中的模块和网络延时都被反标(back-annotated)。从钟表源到存储器钟表管脚的途径延迟时间会使钟表偏位(skew)。因此当设计方案具备具体的钟表树时,应当应用散播延迟时间:
set_propagated_clock [get_clocks CLK]删除当前钟表的散播延迟时间特性,应用remove_propagated_clock指令。
特定钟表源延迟时间(Clock Source Latency)
我们可以为ideal或是propagated钟表特定钟表源延迟时间。钟表源延迟时间是以钟表源到时钟界**(端口号、管脚)的延迟时间。存储器钟表管脚的延迟时间是钟表源延迟时间(clock source latency)和钟表网络延时(clock network latency)的总数。
针对內部转化成钟表(generated clocks),EDA**工具可以全自动测算钟表源延迟时间。
针对prelayout设计方案,散播延迟时间通常都是精确的,由于寄生参数不清楚。针对prelayout设计方案,可以可能每一个钟表的延迟时间并应用set_clock_latency指令立即设定该预测值。
要特定外界钟表源延迟时间的可变性,可以应用-early和-late选择项。例如,考虑到很有可能从1.5到2.5 ns转变的源延迟时间。
要特定图中的钟表源延迟时间,可以采用下列指令:
create_clock -period 10 [get_ports CLK]set_clock_latency 1.5 -source -early [get_clocks CLK]set_clock_latency 2.5 -source -late [get_clocks CLK]针对setup剖析,它应用late值。 针对hold剖析,它应用early值。
下列实例了怎样为上升沿和降低沿设定不一样的源钟表延迟时间值。
要将CLK的上升沿延迟设定为1.2并将降低沿延迟时间设定为0.9
set_clock_latency -rise 1.2 [get_clocks CLK]set_clock_latency -fall 0.9 [get_clocks CLK]可以应用remove_clock_latency指令用以删掉特定的钟表网络延时或钟表源延迟时间。
设定钟表可变性(Clock Uncertainty)
在**工具中,应用set_clock_uncertainty指令特定钟表的可变性。
可以应用Clock Uncertainty来模型pre layout设计方案的钟表可预测性。EDA**工具会依据调节钟表可变性后的时钟频率查验较烂状况,查验setup時间( ** ximum paths)的时候会从required time中减掉Clock Uncertainty值,查验hold時间(minimum paths)的时候会在required time中提升Clock Uncertainty值。假如特定单独一个Clock Uncertainty值,**工具会将其与此同时用以setup和hold查验。
例如:
set_clock_uncertainty 5 [get_clocks CLKA]大家还能够为setup和hold剖析设定不一样的钟表可变性:
set_clock_uncertainty -setup 0.21 [get_clocks CLK1]set_clock_uncertainty -hold 0.33 [get_clocks CLK1]应用remove_clock_uncertainty指令扇出钟表可变性设定。
可能钟表管脚变换時间(Transition Time)
当并未搭建钟表树时,时钟互联网上单独一个油压缓冲器很有可能会推动10,000个存储器钟表管脚。 这也许会造成存储器的Transition Time过大,进而危害钟表网络延时,及其setup和hold時间查验。
可以应用set_clock_transition指令可能全部钟表互联网的Transition Time。
例如:
set_clock_transition 0. ** -fall [get_clocks CLK1]应用指令的-rise或-fall选择项仅特定钟表的升高或降低沿的变换時间。
应用remove_clock_transition指令删掉可能的钟表管脚变换時间。
西安伟洲电子科技有限公司专注于网络同步时钟,NTP时间服务器,时间源卡,同步时钟系统,数字时钟功系统等