静态时序分析在数字集成电路设计中的应用
2008-08-28
作者:黎声华 邹雪城 莫 迟
摘 要: 介绍了时序分析" title="时序分析">时序分析" title="静态时序分析" title="静态时序分析">静态时序分析">静态时序分析在数字集成电路设计中的应用,并以100M以太" title="以太">以太网卡芯片设计为例,具体描述了以太网卡芯片设计中的静态时序分析流程及其时序问题。
关键词: 静态时序分析 100M以太网卡 数字电路 约束 应用
集成电路自诞生以来,正如莫尔定律所预言的一样,每隔18个月集成度就翻一番。目前的集成电路设计已经由早期的几十μm减小到0.15μm,进入到了深亚微米级。在器件的特征尺寸降到深亚微米级的同时,器件的物理特性和电学特性也发生了很大的变化。器件本身固有延迟大大减小,而互连线所引起的延迟在整个单元延迟中所占的比例越来越大,因而时序不收敛是深亚微米集成电路设计中最常见的问题。在深亚微米集成电路设计中,传统的分析方法使前端的逻辑设计与后端的物理设计很难保持一致。在逻辑设计中,仿真分析后功能和时序都正确的网表,却由于布线设计后芯片空间和连线的限制,造成互连引线延迟与逻辑设计中使用的模型不一致,使得时序不再满足约束要求,导致逻辑设计和物理设计循环不收敛,从而使设计周期大大加长。因此,传统的分析方法在复杂的SOC设计面前,显得无能为力,而成为整个设计流程中的瓶颈。
在这种情形下,静态时序分析应运而生,它不仅可以根据设计规范的要求对设计进行检查,同时还能对设计本身做全面的分析。静态时序分析是相对于动态时序分析而言的。动态时序分析时不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题;而静态时序分析,可以方便地显示出全部路径的时序关系,因此逐步成为集成电路设计签字认可的标准。
本文以100M以太网卡芯片的设计为基础,以静态时序分析工具PrimeTime为参考工具,以Verilog语言为参考硬件描述语言,探讨100M以太网卡芯片设计中的静态时序分析流程及其时序问题。
1 100M以太网卡的结构
100M以太网卡是一块高集成度的快速以太网控制器,它支持IEEE802.3和802.3u协议及PCI v2.2总线接口协议,还支持10M/100M自适应功能。此芯片包括PCI接口模块、两个2KB的FIFO模块、发送DMA控制模块、接收DMA控制模块、IEEE 802.3协议规定的MAC模块和10/100M 集成物理层(PHY)模块。此外,还提供了EEPROM接口和扩展BootROM接口。从整体来看,它是包含数字电路和模拟电路的混合型集成电路芯片。它采用的是0.25μm工艺,四层金属层。图1是该100M以太网卡的结构框架图。
2 100M以太网卡设计的静态时序分析
100M以太网卡芯片的时钟关系如图2所示。pmapmd是网卡芯片物理层的模拟电路部分,digital是网卡芯片物理层的数字电路部分,core则是指网卡芯片除物理层之外的部分。纯模拟模块pmapmd通过晶振产生五个时钟:f125m、f20m、f50m、t100rxc、t10rxc,提供给digital;digital提供PRXC、PTXC、clk_10Hz;clk_1kHz四个时钟给core模块。pci_clk是外部时钟,通过PCIPAD提供给digital和core;同时,pci_clk还通过一个PCIbuffer产生一个与pci_clk相位不同但频率相同的时钟PADCLK提供给core。
由于该100M以太网卡芯片比较复杂,同时还要满足一些特殊的功能需要,所以在该网卡的设计过程中存在许多时序分析问题需要解决。首先,该网卡的大部分PAD都是双向的。在有些模块中,外部输入输出接口的时序限制是参照内部时钟进行限定的。其次,为了省电,在该网卡内部设有许多选通时钟(Gate Clock)和内部时钟,多个时钟之间的信号连接会带来相应的麻烦。
图3是100M以太网卡静态时序分析流程图。
2.1 时钟的定义
在静态时序分析中,时钟的定义是设定限制的最重要的一个步骤,因为静态时序分析本来就是基于时序进行分析的,而绝大多数的时序路径的计算又都是以时钟为基础的。所谓时钟定义是指对于设计中所用到的时钟设定名称、周期、相位、占空比。在Primetime中用如下命令来实现:
create_clock -name [NAME] -period [P] -wave [rising_time falling_time] object_name
由于100M以太网卡芯片的门数较多,时钟关系也比较复杂,所以对不同关系的时钟,定义方法也不一样。图4给出三个不同关系的时钟。
(1)CLK1和CLK2有两种关系:一种是CLK1和 CLK2来自网卡外部毫无联系的晶振,其相位关系是不确定的。根本无法通过Primetime正确地检查它们之间的时序关系,但是可以正确地检查单独经过CLK1或是CLK2的路径的时序。另一种是CLK1和CLK2是频率不一致的时钟,例如通过RxDMA控制写RxFIFO和读RxFIFO的时钟频率是不一样的,MII通过RxDMA控制写RxFIFO的频率为25MHz,而PCI通过RxDMA控制读RxFIFO的频率是33MHz。对于这样的异步设计,一般不是通过Primetime的报告保证其时序关系,而应该在写代码时就必须保证该部分的时序关系正确。所以若碰到这种情况,做静态时序分析时一般要进行如下处理;
set_false_path -setup-from CLK1 -to CLK2
(2)CLK3是由CLK1通过组合逻辑产生的,其相移就是这些组合逻辑的延时,经过第一遍综合之后,该延时便可从时序报告中得出,这样就可以根据此延时对这两个时钟的关系给出正确的设定。在Primetime中,有以下两种方法可以设定:
一种方法是分别定义时钟CLK1和CLK3,并将其rising_time、period和占空比设为相同,然后再通过时钟延时的设定来区分两者的不同相位。当然时钟延时的差值应该由所提之的组合逻辑延时决定。
另一种方法是只定义时钟CLK1,再用如下命令定义CLK3:
create_generated_clock -name CLK3 -source P1 -
divide_by 1 DFF3/ck
这样,在布局布线" title="布局布线">布局布线之后做静态时序分析时,CLK1被设为propagated_clock, Primetime就可以根据两时钟之间的延时关系来算出CLK3的特性(包括时钟延时、时钟抖动等),无需再另行推算。而前一方法比较适用于布局布线之前的静态时序分析,因为这时所有的时钟都被设为理想的,其时钟延时、时钟抖动和时钟传输时间等都是根据实际情况来设定的。只有当源时钟为propagated_clock时,Primetime才会自动推算CLK3的特性,否则仍需要设置。
2.2 边界时钟
由于100M以太网卡某些模块涉及到边界时钟,所以必须考虑边界时钟引起的时钟延时问题。所谓边界时钟是指某模块的输入输出和时序限制是以某个特定的时钟作基准的,而该时钟是由外部时钟分频得到的。
但在布局布线之后做静态时序分析时,并不用费心去计算边界时钟引起的时钟时延,而是把它交给Primetime完成。正如前面所提到的,当源时钟为propagated_clock时,Primetime会自动计算所生成时钟的相关延时。
2.3 输入输出延时的声明
做静态时序分析时,要根据端口时序图声明输入输出延时,而不是根据内部延时确定端口时序。下面给出延时声明和端口时序声明之间的简单计算公式。假设时钟周期为T,时钟从端口到寄存器的延时是Tx,数据从端口到寄存器的延时是Ty,工艺给定的setup_time是Tsetup,hold_time是Thold,端口时序声明给出的输入数据在时钟采样沿之前保持有效的最小时间是Tsu,输入数据在采样时钟沿之后保持有效的时间是Tkeep,端口时序声明给出采样时钟沿到输出数据有效的最长时间是Tdelay。在做静态时序分析时应保证以下关系成立:
Tsu+Tx-Ty>Tsetup (1)
Tkeep-Tx+Ty>Thold (2)
根据输入延时和输出延时的定义和公式(1)和(2),可以得出最大输入延时是:
Tinput_delay=T-Tsu (3)
最大输出延时是:
Toutput_delay=T-Tdelay (4)
根据公式(3)以及图5的端口时序图可以定义图5的最大输入延时是:
Tinput_delay=Tclk-q + TM (5)
根据公式(4)以及图5的端口时序图可以定义图5的最大的输出延时是:
Toutput_delay=TS+Tsetup (6)
2.4 时序报告分析
静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间" title="保持时间">保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。因此分析静态时序分析的报告是非常必要的。
下面是以100M以太网卡地址识别逻辑模块作静态时序分析时所产生的报告的一部分。
*******************************************
Report : timing
-path full
-delay max
-max_paths 1
Design : ARLcore
Version: 2000.05-1
Date : Fri Nov 21 15:38:25 2002
*******************************************
Startpoint: ARLdp/n_DAValidsN_reg
(falling edge-triggered flip-flop clocked by TXC)
Endpoint: ARLsm/Cstate_reg[3]
(rising edge-triggered flip-flop clocked by TXC)
Path Group: TXC
Path Type: min
Point Incr Path
——————————————————————————
clock TXC (fall edge) 5.00 15.00
clock network delay
(ideal) 1.00 16.00
ARLdp/n_DAValidsN_reg
/CPN (dfpfb1) 0.00 16.00 f
ARLdp/n_DAValidsN_reg/Q
(dfpfb1) 0.56 16.56 f
ARLdp/U394/Z (an02d1) 0.25 16.80 f
ARLdp/n_DAValids (ARLdp) 0.00 16.80 f
ARLsm/n_DAValids (ARLsm) 0.00 16.80 f
ARLsm/U260/Z (an04d1) 0.27 17.08 f
ARLsm/U294/Z (aor21d1) 0.27 17.34 f
ARLsm/U291/Z (aor21d1) 0.30 17.64 f
ARLsm/Cstate_reg[3]/D
(dfcrq2) 0.00 17.64f
data arrival time 17.64
clock TXC (rise edge) 20.00 20.00
clock network delay
(ideal) 1.00 21.00
ARLsm/Cstate_reg[3]/CP
(dfcrq2) 0.00 21.00r
library hold time 0.50 21.50
data required time 21.50
........................................................
……
data required time 21.50
data arrival time -17.64
————————————————————————————
slack (MET) 3.86
从报告中可以看出它非常详细地报告了从Startpoint:ARLdp/n_DAValidsN_reg到 Endpoint:ARLsm/Cstate_reg[3]这条路径的时序关系,并且这条路径是满足保持时间的。
静态时序分析在不同阶段的侧重点是不一样的。在布局布线前,往往更重视建立时间检查,而忽视保持时间检查。如果违背了建立时间,就必须重新优化。至于违背了保持时间,可以通过在布局布线后手工加入一定的延时来解决,在布局布线后,应重点检查保持时间。
在100M以太网卡芯片设计中,通过做静态时序分析,确认了其设计的可靠性,为设计获得签字认可起到了保证性的作用。
静态时序分析是分析、诊断和确认设计的时序特性的方法。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。
参考文献
1 Barual Tuck..Deep Submicron Changes the Face of Verification[J].Computer Design, 1995(10):20
2 Musgrave G etal. User Experience with High Level Formal Verification. In:ACM Proceedings of the35th Design Automation Conference.San Francisco:ACM,1998:327