CN1985257B - 用于修改电路设计中的保持时间违反的方法和设备 - Google Patents
用于修改电路设计中的保持时间违反的方法和设备 Download PDFInfo
- Publication number
- CN1985257B CN1985257B CN200580023493XA CN200580023493A CN1985257B CN 1985257 B CN1985257 B CN 1985257B CN 200580023493X A CN200580023493X A CN 200580023493XA CN 200580023493 A CN200580023493 A CN 200580023493A CN 1985257 B CN1985257 B CN 1985257B
- Authority
- CN
- China
- Prior art keywords
- retention time
- path
- signal path
- circuit design
- lax
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
Abstract
为了修改保持时间违反,最初针对每组时序约束对一电路设计执行时序分析,以针对所述组时序约束确定每个信号路径的一建立松弛和一保持松弛。一信号路径的松弛指示所述信号路径的时序裕度量或时序违反量。识别并保留具有保持时间违反的信号路径(或“保持路径”),且废弃其它不具有保持时间违反的信号路径。对于每个保持路径,识别并保留具有至少一个与所述保持路径共同的节点的信号路径(或“相关建立路径”)。可删除具有大建立松弛的相关建立路径。接着基于所述保持路径的所述保持松弛和所述相关建立路径的所述建立松弛来修改所述保持路径的所述保持时间违反。
Description
本专利申请案主张基于2004年5月28日申请的题为“Hold time Fixing for MultimodeDesign”的临时申请案第60/575,263号的优先权,所述临时申请案转让给本文的受让人且以引用的方式清楚地并入本文中。
技术领域
本发明大体上涉及电子电路,且更详细地说,涉及用于修改电路设计中的时序违反的技术。
背景技术
数字电路设计通常包括大量顺序单元和组合单元。顺序单元是由时钟信号触发的电路元件,例如寄存器或锁存器。组合单元是不由时钟信号触发的电路元件,例如与门、或门、某种其它类型的门、反相器等等。顺序单元通常具有各种时序要求,例如建立时间和保持时间要求。建立时间是在时钟边沿到达之前信号需要在顺序单元的数据输入端处保持稳定的时间量。保持时间是在时钟边沿到达之后信号需要在顺序单元输入端处保持稳定的时间量。
组合单元通常在电路设计中分散在同步单元之间。组合单元对在顺序单元之间发送的信号引入延迟。如果经由组合单元的延迟太长,那么信号可违反顺序单元的建立时间要求。相反,如果经由组合单元的延迟太短,那么信号可违反保持时间要求。建立和保持时间违反还可由时钟相位差或(更一般地)时钟边沿对准引起。修改保持时间违反尤其在高速电路设计中有时可引起建立时间违反,在所述高速电路设计中因为高时钟频率导致在顺序单元各级之间具有较少时间而难以修改建立和保持时间违反。
多种常规电路设计工具不能有效处理保持时间违反。举例来说,这些工具可仅在具有保持时间违反的信号路径的起点或终点处添加一延迟缓冲器。此限制使得难以在不违反建立时间要求的情况下修改许多保持时间违反。插入在起点或终点处以修改信号路径的保持时间违反的延迟缓冲器可在同一信号路径或另一信号路径中引起建立时间违反。
因此,在此项技术中需要用以更有效修改电路设计中的保持时间违反的技术。
发明内容
本文描述用于修改电路设计中的保持时间违反的技术。这些技术可在不引起建立时间违反的情况下针对一个或一个以上操作模式修改保持时间违反。每个操作模式可对电路设计强加一组不同的时序约束。
为了修改保持时间违反,最初针对每组时序约束对电路设计执行时序分析,以针对所述组时序约束确定每个相干信号路径的建立松弛和保持松弛,如下文所述。术语“信号路径”和“时序路径”是同义的,且在本文中可替换使用。相干信号路径是具有保持时间违反的信号路径加上经使用或考虑以修改保持时间违反的信号路径。信号路径的松弛是(1)信号实际上到达信号路径终点的时间,与(2)信号需要到达所述终点的时间之间的差。信号路径的松弛指示所述信号路径的时序裕度量或时序违反量。
识别并保留具有保持时间违反的信号路径(其被称为“保持路径”),且废弃或删除其它不具有保持时间违反的信号路径。对于每个保持路径,识别并保留具有至少一个与保持路径共同的节点的信号路径(其被称为“相关建立路径”)。可删除具有大建立松弛的相关建立路径。接着基于保持路径的保持松弛和相关建立路径的建立松弛来修改保持路径的保持时间违反。可在每个保持路径的一个或一个以上节点中插入一个或一个以上延迟缓冲器来修改保持时间违反。每个保持路径的节点和待插入在每个节点处的延迟量均可基于相关建立路径的建立松弛来选择,使得插入在节点处的延迟不违反建立时间要求。
下文更详细地描述本发明的各方面和实施例。
附图说明
结合附图来阅读时,从下文陈述的详细描述中将更易了解本发明的特征和本质,其中在整个附图中类似参考符号进行对应识别。
图1展示简单电路设计的示意图。
图2展示用于图1中的电路设计的电路模型。
图3展示图2中的电路模型中的两个时序路径。
图4展示图2中的电路模型中的三个时序路径。
图5展示冗余路径插入的一实例。
图6展示用于修改电路设计中的保持时间违反的过程。
图7展示具有保持时间修改的电路设计流程。
图8展示用于为保持路径和建立路径创建数据库的过程。
图9展示用于插入延迟以修改保持时间违反的过程。
图10展示用于插入冗余路径的过程。
图11展示用于产生并分析电路设计且用于修改保持时间违反的建立过程。
具体实施方式
词汇“示范性”在本文中用于意指“充当一实例、例子或说明”。不必将本文中描述为“示范性”的任何实施例或设计理解为相对于其它实施例或设计为优选的或有优势的。
本文所描述的保持时间修改技术可用于修改具有一个或多个操作模式的电路设计的保持时间违反。所述操作模式可包括功能模式和/或测试模式。每个操作模式可与用于电路设计的一组特定时序约束相关联。由于(例如)电路设计针对不同操作模式以不同时钟频率操作,因而可出现不同组时序约束。针对多个操作模式的不同组时序约束可对相同信号路径强加不同时序要求。保持时间修改技术可针对所有操作模式修改保持时间违反同时确保针对所有操作模式不违反建立时间要求。
图1展示用于描述保持时间修改技术的简单电路设计100的示意图。电路设计100包括六个寄存器110到120(其分别被标注为R1到R6)和四个与门122到128(其分别被标注为U1到U4)。每个寄存器是一D触发器,其具有一数据(D)输入端、一时钟输入端和一数据(Q)输出端。寄存器110、112和114的D输入端分别耦合到电路设计100的输入口In1、In2和In3。寄存器110和112的Q输出端耦合到与门122的两个输入端。寄存器112和114的Q输出端耦合到与门124的两个输入端。与门122的输出端耦合到与门126的单个输入端。与门122和124的输出端耦合到与门128的两个输入端。与门126的输出端耦合到寄存器116的D输入端。与门128的输出端耦合到寄存器118和120的D输入端。寄存器116、118和120的Q输出端分别耦合到电路设计100的输出口Out1、Out2和Out3。
图1展示简单电路设计。大多数电路设计包括更多寄存器、门且可能包括其它电路元件。保持时间修改技术可用于各种具有不同复杂水平的电路设计。
电路设计可由用于修改保持时间违反的电路模型来表示。电路模型含有用以修改保持时间违反的足够信息且不必含有来自电路设计的所有信息。可废弃修改保持时间违反所不需要的信息,以降低电路模型的复杂性,且也降低对于修改保持时间违反的硬件要求(例如存储器要求和CPU时间)。不建模产生用于电路设计中顺序单元的时钟信号的时钟分布网络,因为改变时钟分布网络中的延迟可改变不被建模的电路设计的一部分的时序,这可引起未检测到的时序违反。
在一实施例中,电路模型代表作为节点和连接的网络的电路设计。一般来说,每个节点可代表电路单元、模块、电路块等的一输入端或一输出端,这取决于电路设计所要的抽象水平。电路单元可为一顺序单元或一组合单元。模块可为一组单元,其具有某种功能性且为容易复制而设计。电路块可为一较大集合的电路单元。为清楚起见,下文所述的电路模型中的每个节点代表电路单元或电路设计的一输入端或一输出端。
图2展示用于图1的电路设计100的电路模型200的图。对于电路模型200来说,寄存器110到120分别由顺序单元210到220建模。每个顺序单元具有一D输入口和一Q输出口。为简单起见,不建模寄存器的时钟输入端。与门122到128分别由组合单元222到228建模。每个组合单元与被建模的与门具有相同数目的输入引脚和输出引脚。组合单元经建模而具有输入引脚和输出引脚以允许在这些单元的输入端或输出端处插入延迟缓冲器。不同时序结果可通过在不同位置处插入延迟缓冲器来实现,如下文所述。电路模型200的输入口和输出口以及顺序单元的输入引脚和输出引脚由正方形框表示。组合单元的输入引脚和输出引脚由圆表示。各电路单元之间的连接和组合单元内部的时序弧由实线表示。
电路模型含有节点和连接。节点对应于正方形框和圆。节点之间的连接和组合单元内的时序弧由实线表示。电路模型中的正方形代表时序路径的起点和终点。时序路径是具有建立和/或保持时间要求的两个点之间的信号路径。每个时序路径由两个正方形框界定,其中一个正方形框用于时序路径的起点且另一正方形框用于终点。用于每个时序路径的两个正方形框通过零个或零个以上内部节点或圆连接。每个时序路径可经建模而具有一路径对象,所述路径对象包括所述时序路径的所有节点(即正方形框或圆)。
可针对电路设计所支持的所有操作模式来分析电路模型中的时序路径。针对每个操作模式的时序分析向电路模型中的每个时序路径提供一建立松弛和一保持松弛。可以不同方式来计算针对每个时序路径的建立松弛和保持松弛。
每个顺序单元具有从时钟输入端到数据输出端的特定传播延迟,其被称为时钟到输出端延迟。每个组合单元具有从输入端到输出端的特定传播延迟。在两个节点之间的每个信号迹线还具有由于寄生加载等引起的某一传播延迟。通常利用从设计库中采取的电路单元来产生电路设计。此设计库可向库中的每个顺序单元和每个组合单元提供一最有利(最短)延迟和一最不利(最长)延迟。设计库可进一步对每个顺序单元规定某些建立和保持时间要求。不同设计库可对于给定电路单元具有不同的最有利和最不利延迟且对于给定顺序单元具有不同的建立和保持时间要求。
为了满足建立时间要求,信号应在某指定时间之前到达时序路径的终点。经由时序路径中电路单元的较长延迟对于满足建立时间要求通常是有害的。通常通过对于时序路径中的所有电路单元使用最不利(最长)延迟来执行针对每个时序路径的建立时间分析。相反,为了满足保持时间要求,信号应在不早于某指定时间时到达终点(即,应在时钟边沿之后在时序路径的终点处保持稳定持续某时间量)。经由时序路径中电路单元的较短延迟对于满足保持时间要求通常是有害的。通常通过对于时序路径中的所有电路单元使用最有利(最短)延迟来执行针对每个时序路径的保持时间分析。
对于每个操作模式,可针对电路设计中的每个时序路径执行时序分析,以获得所述操作模式中所述时序路径的建立松弛和保持松弛。建立松弛是对于电路单元具有最不利(最长)延迟的时序路径的实际信号到达时间与所需信号到达时间之间的差。保持松弛是对于电路单元具有最有利(最短)延迟的时序路径的实际信号到达时间与所需信号到达时间之间的差。正建立/保持松弛值指示符合建立/保持时间要求。负建立/保持松弛值指示违反建立/保持时间要求。
时序分析为每个操作模式提供一组时序结果(或时序信息)。每组时序结果含有针对一个操作模式的电路设计中所有时序路径的建立松弛和保持松弛。可为多个操作模式获得多组时序结果。一些时序路径可具有保持时间违反。
保持时间修改技术试图修改具有保持时间违反的时序路径,同时确保不违反对于由保持时间修改影响的时序路径的建立时间要求。可通过在时序路径内一个或一个以上位置处插入延迟来修改具有保持时间违反的时序路径。然而,插入在给定节点处的延迟影响含有所述节点的所有时序路径的建立时间。所述技术选择恰当位置以便在具有保持时间违反的时序路径中插入延迟,使得不违反相关时序路径的建立时间要求。为了清楚起见,下文针对若干简单实例来描述所述技术。
图3展示用于使用图2的电路模型200中的两个时序路径来修改保持时间违反的实例。第一时序路径是从寄存器R2的Q输出端到寄存器R5的D输入端,且由粗实线展示。第一时序路径横穿与门U1和U4。第二时序路径是从寄存器R3的Q输出端到寄存器R5的D输入端,且由粗虚线展示。第二时序路径横穿与门U2和U4。第一和第二时序路径共享从与门U4的Z输出端到寄存器R5的D输入端的支线。从寄存器R2的Q输出端经由与门U2和U4到寄存器R5的D输入端的时序路径不同于第一时序路径,即使两者具有相同的起点和终点。
表1给出用于第一和第二时序路径的时序信息。表1中的所有时序值以毫微秒(nsec)为单位给出。表1假设以3.0nsec的时钟周期来对寄存器进行时钟控制。
表1
从寄存器R2到R5的第一时序路径 | ||
节点 | Incr | 路径 |
R2-时钟输入端 | 0.0 | 0.0 |
R2-Q输出端 | 0.3 | 0.3 |
U1-B输入端 | 0.05 | 0.35 |
U1-Z输出端 | 0.1 | 0.45 |
U4-A输入端 | 0.05 | 0.5 |
U4-Z输出端 | 0.15 | 0.65 |
R5-D输入端 | 0.05 | 0.7 |
实际到达时间 | 0.7 | |
时钟网络延迟 | 0.3 | |
R5-时钟输入端 | 0.0 | 0.3 |
库保持时间 | 0.55 | 0.85 |
在R5-D输入端处的所需到达时间(不早于) | 0.85 | |
松弛(违反) | -0.15 |
从寄存器R3到R5的第二时序路径 | ||
节点 | Incr | 路径 |
R3-时钟输入端 | 0.0 | 0.0 |
R3-Q输出端 | 1.0 | 1.0 |
U2-B输入端 | 0.1 | 1.1 |
U2-Z输出端 | 0.5 | 1.6 |
U4-B输入端 | 0.1 | 1.7 |
U4-Z输出端 | 0.5 | 2.2 |
R5-D输入端 | 0.1 | 2.3 |
实际到达时间 | 2.3 | |
时钟网络延迟 | 0.1 | |
R5-时钟输入端 | 3.0 | 3.1 |
库建立时间 | -0.45 | 2.65 |
在R5-D输入端处的所需到达时间(不迟于) | 2.65 | |
松弛(满足) | 0.35 |
对于每个时序路径,“节点”列列举了所述时序路径中的所有节点,其从图2中的电路模型200处获得。这些节点包括用于时序路径的起点和终点的正方形框以及用于时序路径的内部节点的圆。“Incr”列展示所述时序路径中两个节点之间的每个支线的传播延迟。举例来说,对于第一时序路径,从时钟输入端到寄存器R2的Q输出端的传播延迟为0.3nsec,从寄存器R2的Q输出端到与门U1的B输入端的传播延迟是0.05nsec,从B输入端到与门U1的Z输出端的传播延迟是0.1nsec,等等。“路径”列展示经由时序路径的积累延迟。举例来说,对于第一时序路径,信号在寄存器R2的Q输出端处延迟0.3nsec,在与门U1的B输入端处延迟0.35nsec,在与门U1的Z输出端处延迟0.45nsec,等等。给定节点的积累延迟等于前一节点的积累延迟加上所述两个节点之间的支线的传播延迟。
表1还展示每个时序路径的其它相干时序信息。时钟网络延迟表示由用于一寄存器的时钟信号观测得到的延迟,即从时钟进入点到寄存器时钟输入端的延迟。库建立时间和库保持时间分别表示设计库针对寄存器所需的建立和保持时间。所需到达时间表示信号需要到达寄存器的D输入端以便满足寄存器的建立/保持时间的时间。信号需要在所需到达时间之前到达终点以便满足建立时间要求。相反,信号需要在不早于所需到达时间时到达终点以便满足保持时间要求。每个时序路径的松弛等于实际到达时间与所需到达时间之间的差。正松弛值表示所述时序路径满足建立或保持时间要求,且负松弛值表示违反建立或保持时间要求。
对于第一时序路径,信号从寄存器R2的时钟输入端到寄存器R5的D输入端经历了0.7nsec的总延迟。因此,信号在寄存器R2的时钟边沿之后0.7nsec时到达寄存器R5的D输入端。寄存器R5的时钟边沿发生在寄存器R2的时钟边沿之后0.3nsec时。如果寄存器R5的所需保持时间为0.55nsec,那么信号需要在不早于寄存器R5的时钟边沿之后0.55nsec(寄存器R2的时钟边沿之后0.85nsec)时到达寄存器R5的D输入端。然而,由于信号的总延迟从寄存器R2的时钟边沿开始仅为0.7nsec,因而信号在所需到达时间之前0.15nsec时到达。此-0.15nsec是负保持松弛,其意味着信号需要延迟至少0.15nsec以便满足保持时间要求。因此,第一时序路径具有保持时间违反。
对于第二时序路径,信号从寄存器R3的时钟输入端到寄存器R5的D输入端经历了2.3nsec的总延迟。寄存器R5的下一时钟边沿发生在寄存器R3的时钟边沿之后3.1nsec时。因此,信号在寄存器R5的下一时钟边沿之前0.8nsec时到达寄存器R5的D输入端。如果寄存器R5的所需建立时间是0.45nsec,那么信号在所需到达时间之前0.35nsec时到达D输入端。此0.35nsec是正建立松弛,其意味着信号可延迟至多达0.35nsec且仍满足建立时间要求。
可通过使此时序路径变长(时间方面)来修改第一时序路径的保持时间违反。此等效于在第一时序路径中延迟信号,使得信号在先前级的信号被完全锁存之后到达。可通过在第一时序路径内在一个或一个以上恰当位置处插入一个或一个以上延迟缓冲器来获得额外延迟。可在电路模型的输入口之后、电路模型的输出口之前、电路单元的输入端之前或电路单元的输出端之后插入延迟缓冲器。
延迟缓冲器提供属于可能延迟范围内的延迟。此延迟范围说明了由于不同操作条件(例如不同温度、电源电压等)引起的不确定性。延迟范围还取决于从中获得延迟缓冲器的设计库、用于制作延迟缓冲器的IC工艺等。延迟范围的最长延迟与最短延迟的比率被称为延迟比率。举例来说,如果延迟缓冲器针对最不利操作条件提供0.3nsec的延迟,且针对最有利操作条件提供0.1nsec的延迟,那么延迟比率为3,或0.3/0.1=3。延迟比率可针对延迟缓冲器的不同输入转换速率、不同输出负载等而变化。使用强延迟缓冲器可减少延迟速率中由输入转换和输出负载引起的变化。对于具有保持时间违反的时序路径,电路单元通常定位成彼此接近。这是因为时序路径中的大输出负载会增加单元延迟,单元延迟接着会帮助保持时间,使得时序路径不太可能违反保持时间要求。延迟比率的变化因此对于保持时间临界路径来说通常较小。在任何情况下,在修改保持时间违反时考虑延迟比率以确保保持时间修改不引起建立时间违反。
可通过插入具有满足寄存器R5的保持时间要求所需的总延迟量的一个或一个以上延迟缓冲器来修改图3中第一时序路径的保持时间违反。此总延迟被假定为插入的延迟缓冲器的最小(最有利)延迟。可通过将最有利延迟乘以延迟缓冲器的延迟比率来计算每个插入的延迟缓冲器的最长(最不利)延迟。接着使用具有最不利延迟的插入的延迟缓冲器来重新评估第二时序路径,以确保仍满足建立时间要求。
对于图3所示的实例,可在第一时序路径内插入0.2nsec的延迟以补救0.15nsec的保持时间违反且提供0.05nsec的安全裕度。如果延迟比率为3,那么xnsec的最有利延迟对应于3xnsec的最不利延迟。由于第一和第二时序路径共享从与门U4的Z输出端到寄存器R5的D输入端的支线,因而可在此支线中插入不大于0.1nsec以实现第二时序路径的至少0.05nsec的建立松弛,其中假定延迟比率为3。
以下解决方案可用于修改延迟比率为3的第一时序路径的保持时间违反:
1.在与门U4的Z输出端之前的任一点处插入0.2nsec或更大的(最有利)延迟;或
2.在与门U4的Z输出端处插入0.1nsec或更小的(最有利)延迟,且在与门U4的Z输出端之前在第二时序路径中的任一点处插入剩余(最有利)延迟。
对于第一解决方案,在与门U4的Z输出端之前插入延迟不影响第二时序路径。对于第二解决方案,在与门U4的Z输出端处插入0.1nsec的最有利延迟对应于为第二时序路径插入0.3nsec的最不利延迟。这进而会将第二时序路径的建立松弛从0.35nsec减少到0.05nsec。在与门U4的Z输出端之前插入剩余延迟量不影响第二时序路径。所述两种解决方案满足第一和第二时序路径的建立和保持时间两者。
图3所示的实例假定第一时序路径不具有任何其它具有较差建立松弛的相关建立路径。如果存在额外相关建立路径,那么可以一确保满足所有时序路径的建立和保持时间要求的方式来插入延迟缓冲器。
图4展示用于使用图2的电路模型200中的三个时序路径来修改保持时间违反的实例。此实例中的第一和第二时序路径如同上文在图3中所描述。第三时序路径是从寄存器R2的Q输出端到寄存器R4的D输入端,且由粗虚线展示。第三时序路径横穿与门U1和U3。以上表1给出第一和第二时序路径的时序信息。以下表2给出第三时序路径的时序信息。
表2
从寄存器R1到R4的第三时序路径 | ||
节点 | Incr | 路径 |
R2-时钟输入端 | 0.0 | 0.0 |
R2-Q输出端 | 1.3 | 1.3 |
U1-B输入端 | 0.15 | 1.45 |
U1-Z输出端 | 0.4 | 1.85 |
U3-A输入端 | 0.15 | 2.0 |
U3-Z输出端 | 0.35 | 2.35 |
R4-D输入端 | 0.1 | 2.45 |
实际到达时间 | 2.45 |
时钟网络延迟 | 0.2 | |
R4-时钟输入端 | 3.0 | 3.2 |
库建立时间 | -0.35 | 2.85 |
R4-D输入端处所需到达时间(不迟于) | 2.85 | |
松弛(满足) | 0.40 |
对于第三时序路径,信号从寄存器R2的时钟输入端到寄存器R4的D输入端经历了2.45nsec的总延迟。寄存器R4的下一时钟边沿发生在寄存器R2的时钟边沿之后3.2nsec时。因此,信号在寄存器R4的下一时钟边沿之前0.75nsec时到达寄存器R4的D输入端。如果寄存器R4的所需建立时间为0.35nsec,那么信号在所需到达时间之前0.4nsec时到达D输入端。此0.4nsec是正建立松弛,其意味着信号可延迟至多达0.4nsec且仍满足建立时间要求。
对于图4所示的实例,0.2nsec的延迟可插入在第一时序路径内以补救0.15nsec的保持时间违反且提供0.05nsec的安全裕度。由于第一和第二时序路径共享从与门U4的Z输出端到寄存器R5的D输入端的支线,因而可在此支线中插入不大于0.1nsec以实现第二时序路径的至少0.05nsec的建立松弛,其中假定延迟比率为3。由于第一和第三时序路径共享从寄存器R2的Q输出端到与门U1的Z输出端的支线,因而可在这些支线中插入不大于0.1nsec以实现第三时序路径的至少0.1nsec的建立松弛,其中再次假定延迟比率为3。
以下解决方案可用于修改延迟比率为3的第一时序路径的保持时间违反:
1.在与门U4的A输入端处插入0.2nsec的最有利延迟;或
2.在与门U4的Z输出端处插入0.1nsec的最有利延迟,且在以下节点中的一者处插入0.1nsec的最有利延迟:与门U1的Z输出端、与门U1的B输入端或寄存器R2的Q输出端。
对于第一解决方案,在与门U4的A输入端处插入0.2nsec的最有利延迟不影响第二或第三时序路径。对于第二方案,在与门U4的Z输出端处插入0.1nsec的最有利延迟对应于针对第二时序路径插入0.3nsec的最不利延迟。这进而会将第二时序路径的建立松弛从0.35nsec减少到0.05nsec。在与门U1的Z输出端、与门U1的B输入端或寄存器R2的Q输出端处插入0.1nsec的最有利延迟对应于针对第三时序路径插入0.3nsec的最不利延迟。这进而会将第三时序路径的建立松弛从0.4nsec减少到0.1nsec。所述两种解决方案满足第一时序路径的保持时间要求以及第二和第三时序路径的建立时间要求两者。
如图3和4中的实例所示,用以修改保持时间违反的额外延迟可插入在单个节点处或分布在多个节点之间。在许多情况下,可通过在所述时序路径中的单个位置处插入一延迟缓冲器来修改保持时间违反。可使用各种标准来确定延迟缓冲器的位置。在一实施例中,延迟缓冲器插入在具有最大建立松弛的位置处。此实施例可向时序路径提供较多安全裕度。在另一实施例中,延迟缓冲器插入在尽可能多的具有保持时间违反的时序路径的共同的位置处。此实施例可减少插入的延迟缓冲器的数目。也可基于其它标准(例如负载考虑)或不同标准的组合来插入延迟缓冲器。
电路设计可不对某些节点进行延迟插入,且可将这些受保护节点标记为“禁止接触”属性。可以避免干扰这些受保护节点的方式来插入延迟。
在某些情况下,可能不能在不违反另一时序路径的建立时间的情况下修改一时序路径的保持时间违反。举例来说,如果经由图4中的与门U3的传播延迟为0.7nsec而并非0.4nsec,那么第三时序路径的建立松弛会从0.4nsec减少到0.1nsec。此外,可保护与门U1的Z输出端与与门U4的A输入端之间的支线,使得不可将延迟缓冲器插入在这两个节点处。在此情况下,对于图4所示的实例,在一个或一个以上节点中插入充足延迟量以修改第一时序路径的保持时间违反会造成第二和/或第三时序路径的建立时间违反。一般来说,如果具有保持时间违反的时序路径的相关建立路径具有零或较小建立松弛,那么可能不能在所述时序路径中插入延迟。
当不可能在时序路径的现存节点中插入延迟时,可使用冗余路径插入(RPI)来修改时序路径的保持时间违反。RPI为具有保持时间违反的时序路径的全部或一部分创建冗余路径。接着可在冗余路径中插入充足延迟量以在不影响其它相关建立路径的建立时间的情况下修改保持时间违反。
图5展示通过使用冗余路径插入来修改保持时间违反的实例。图5展示图4所示的所有寄存器和与门。另外,图5展示已被添加以为第一时序路径的一部分创建冗余路径的与门(U5)230。与门U5将其A和B输入端分别耦合到寄存器R1和R2的Q输出端,类似于与门U1。与门U5的Z输出端耦合到与门U4的A输入端。与门U1的Z输出端仅耦合到与门U3的A输入端。与门U5形成冗余路径,且与门U5的Z输出端逻辑上等效于与门U1的Z输出端。因此可移除与门U1的Z输出端与与门U4的A输入端之间的连接。
可在与门U5的B输入端或Z输出端处插入延迟,以在不影响第二和第三时序路径的建立时间的情况下修改第一时序路径的保持时间违反。对于此实例,可在与门U5的输入端和/或输出端处添加充足延迟量,而不必在与门U4的A输入端的受保护节点处插入延迟。
图3到5展示说明保持时间修改技术的三个简单实例。电路设计通常含有许多时序路径和节点。可设计过程/程序来系统地识别并修改具有保持时间违反的时序路径。
图6展示用于修改电路设计的保持时间违反的过程600。针对每组时序约束对电路设计执行时序分析,以针对所述组时序约束获得每个时序路径的建立松弛和保持松弛(方框610)。不同时序约束(例如,针对不同操作模式)以及不同设计库通常对电路设计强加不同建立和保持时间要求。使用由设计库和一给定组时序约束强加的时序要求来执行时序分析。仅使用每个时序路径的建立松弛和保持松弛来修改保持时间违反。不需要个别节点的时序信息(例如,作为时序路径的中间级的节点处的信号到达时间)。对于每个时序路径,可针对不同组时序约束获得不同建立松弛和保持松弛。可将每个时序路径的针对不同组时序约束的多个例子处理为用于保持时间修改的单独时序路径。或者,可为每个时序路径保持针对所有组时序约束获得的最不利建立松弛和最不利保持松弛。在任一情况下,方框610中的时序分析针对所有组时序约束向所有时序路径提供时序信息。此时序信息可采取第一组具有保持松弛的时序路径和第二组具有建立松弛的时序路径的形式,其中所述第一和第二组每一者含有电路设计中的所有时序路径。时序信息宏观地展现了针对所有操作模式的电路设计,且可用于修改保持时间违反。
识别并保留具有保持时间违反的时序路径(即,保持路径),且废弃或删除其它不具有保持时间违反的时序路径(方框612)。保持路径是第一组中保持松弛小于预定值(例如,零)的时序路径。对于每个保持路径,识别并保留第二组中具有至少一个与保持路径共同的节点的时序路径(即,相关建立路径),且废弃第二组中的其它时序路径(方框614)。废弃具有大建立松弛的相关建立路径(方框616)。如果相关建立路径的建立松弛大于延迟比率乘以保持时间违反量,那么可认为其较大。举例来说,如果保持路径具有0.2nsec的保持时间违反且延迟比率是3,那么可废弃所有建立松弛大于0.6nsec的相关建立路径。接着基于相关建立路径的建立松弛来修改保持路径的保持时间违反(方框618)。
如图6所示,在方框612中仅保留具有保持时间违反的时序路径,且在方框614和616中仅保留具有建立时间违反或小正建立松弛的时序路径。删除修改保持时间违反所不需要的所有其它时序路径以降低复杂性和硬件要求。方框614中第二组中的时序路径也可通过关联性选择,而并非由建立松弛删除,在此情况下可省略方框616。
为了促进保持时间修改,保持路径可存储在第一数据库中,且相关建立路径可存储在第二数据库中。方框618中可在不同时间更新保持路径的保持松弛和相关建立路径的建立松弛以修改保持时间违反。使用单独数据库可简化保持路径和相关建立路径的更新。
图7展示具有保持时间修改的电路设计流程700。最初,(例如)通过使用静态时序分析(STA)工具来针对每组时序约束为电路设计产生时序报告(方框7lO)。这些时序报告可包括保持时间报告和建立时间报告。可针对每组时序约束产生一个保持时间报告和一个建立时间报告。针对每组时序约束的保持时间报告可含有针对所述组时序约束的所有保持路径和每个保持路径的保持松弛的列表。针对每组时序约束的建立时间报告可含有针对所述组时序约束的所有相关建立路径和每个相关建立路径的建立松弛。一般来说,STA工具可经编程以提供:(1)电路设计的建立和保持时间信息的共同或单独时序报告;(2)所有时序路径或仅某些时序路径(例如保持路径和相关建立路径)的时序信息;和(3)仅每个时序路径的建立松弛和保持松弛,或还有内部节点的时序信息。可通过STA工具或通过随后处理来执行时序路径的删除。STA工具可以是来自Synopsys公司的PrimeTime或来自某其它厂家的某其它设计工具。
基于时序报告和电路模型来创建用于保持路径和相关建立路径的数据库(方框720)。电路模型包括节点和连接,如上文所述。用于保持路径的数据库含有针对所有组时序约束的来自保持时间报告的这些路径的保持松弛。用于相关建立路径的数据库含有针对所有组时序约束的来自建立时间报告的这些路径的建立松弛。方框720因此针对所有组时序约束执行时序信息的串接或组合。方框720也可废弃具有大建立松弛的相关建立路径。对于被废弃的每个建立路径,如果所述建立路径中的一节点存在于保持路径数据库中而并不在建立路径数据库中,那么向保持路径数据库中的节点分配所废弃的建立路径的建立松弛(例如,对于上文方框616的实例为0.6nsec),所述建立松弛是考虑范围内的最大建立松弛。这避免了向所废弃的建立路径过度借用松弛。
在可能的情况下,为每个具有保持时间违反的时序路径插入延迟(方框730)。延迟的插入改变了一个或一个以上时序路径的时序。可以重复方式来执行方框730,藉此在修改每个保持路径之后更新用于保持路径的数据库和用于相关建立路径的数据库,如下文所述。接着确定是否修改了所有具有保持时间违反的时序路径(方框740)。如果答案为“否”,那么在可能的情况下,为每个具有保持时间违反且不可能进行延迟插入的时序路径插入冗余路径(方框750)。接着确定是否已插入了任何冗余路径(方框760)。如果答案为“是”,那么过程返回到方框730以为每个仍具有保持时间违反的时序路径插入延迟。另外,如果已修改所有保持时间违反且对于方框740答案为“是”,或如果没有插入任何冗余路径且对于方框760的答案为“否”,那么过程终止。
过程700可产生一个或一个以上输出文件,所述输出文件可被称为命令文件或指令码。所述输出文件可由一个或一个以上电路设计工具(例如,布局和布线工具)使用以对用于电路设计的电路单元或插入的延迟缓冲器进行布局和布线。
图8展示用于创建用于保持路径和相关建立路径的数据库的方框720的一实施例。最初读取每个保持时间报告(方框810)。创建具有保持路径中所有节点的表,且将来自所有保持时间报告的每个保持路径的最差保持松弛存储在表中(方框812)。将表中的节点初始化为预定较大值(例如,一个时钟周期)。接着读取每个建立时间报告(方框814)。将来自所有建立时间报告的每个相关建立路径的最差建立松弛存储在表中(方框816)。
对于每个保持路径中的每个节点,确定所有含有所述节点的建立路径的最佳建立松弛(方框818)。这可通过使用从建立时间报告中读取的每个相关建立路径来更新表而实现。举例来说,当读取了每个相关建立路径时,在表中识别所述建立路径中的所有节点,且当所述建立路径的建立松弛小于表中为所述节点存储的当前值时,使用此建立松弛来更新每个经识别的节点。在已读取了所有建立路径之后,所述表为所有保持路径存储与每个节点相关联的最差建立松弛。
通过组合或串接来自所有保持时间报告的保持路径来创建用于保持路径的数据库(方框820)。此数据库可含有:(1)针对多组时序约束的每个保持路径的多个例子,其中每个保持路径例子与针对一组时序约束的保持松弛相关联;或(2)针对所有组时序约束的每个保持路径的一个例子,其中所述单个保持路径例子与所有组时序约束的最差保持松弛相关联。通过组合或串接来自所有建立时间报告的相关建立路径来创建用于建立路径的数据库(方框822)。此数据库可同样含有每个相关建立路径的一个或多个例子。
图9展示用于插入延迟以修改保持时间违反的方框730的一实施例。选择一保持路径以用于修改保持时间违反(方框910)。为选定的保持路径识别具有最大建立松弛的节点,且在选定的节点处插入一延迟(方框912)。在此节点处插入的延迟量(1)足以为选定的保持路径修改保持时间违反或(2)是在不违反含有此节点的相关建立路径的建立时间的情况下可能的最大量。更新受插入的延迟影响的所有保持路径和所有建立路径的松弛(方框914)。为了更新建立路径,识别所有含有选定的节点的建立路径,且使用插入在所述节点处的延迟量乘以延迟比率来更新(或减小)这些建立路径的松弛。此更新确保了不过度使用这些建立路径以便为其它保持路径修改保持时间违反。为了更新保持路径,识别所有含有选定的节点的保持路径,且使用插入在所述节点处的延迟量来更新(或增加)这些保持路径的松弛。此更新确保了不过度修改这些保持路径。接着基于所更新的建立路径来更新表中的节点(方框916)。对于方框914中更新的每个建立路径,在表中识别所述建立路径的所有节点,且当此建立路径的松弛小于当前为这些节点存储的值时,使用此松弛来更新这些节点的松弛。接着确定是否已修改选定的保持路径的保持时间违反(方框918)。如果答案为“是”,那么将选定的保持路径标记为已修改(方框920)。另外,如果对于方框918的答案为“否”,那么确定大于预定阈值(例如,以上实例的0.1nsec)的建立松弛是否在选定的保持路径的另一节点中可用(方框922)。如果答案为“是”,那么过程返回到方框912以在具有最大建立松弛的节点处插入另一延迟。另外,如果对于方框922的答案为“否”,那么将选定的保持路径标记为未修改(方框924)。
在方框920和924之后,确定是否存在任何未标记的保持路径(即尚未选定以用于修改保持时间违反的保持路径)(方框926)。如果答案为“是”,那么选择另一未标记的保持路径以用于修改保持时间违反(方框928)。接着过程返回到方框912以试图修改此新选定的保持路径的保持时间违反。如果所有保持路径已被选定且对于方框926的答案为“否”,那么产生未修改的保持路径的列表(方框930),且为已修改的保持路径产生输出文件(方框932)。
图10展示用于为具有未修改的保持时间违反的保持路径插入冗余路径的方框750的一实施例。获得未修改的保持路径的列表(方框1010)。每个未修改的保持路径对应于来自电路设计的一列电路单元。在可能的情况下,通过在未修改的保持路径中复制至少一个电路单元来为每个未修改的保持路径创建一冗余路径(方框1012)。在一实施例中,通过从未修改的保持路径的终点处向后追踪且复制具有多于一的扇出的第一组合单元并以具有至少为二的扇进的未修改的保持路径中的最后组合单元结束来创建冗余路径。对于图4所示的实例,此实施例会为第一时序路径复制与门U1和U4。也可以其它方式来创建冗余路径。举例来说,可通过仅复制含有具有最小建立松弛的节点的电路单元、含有包括在多个未修改的保持路径中的节点的电路单元等来创建冗余路径。在任何情况下,连接每个未修改的保持路径的冗余路径的经复制的电路单元,且重新连接原始保持路径,(例如)如图5所示(方框1014)。具有冗余路径的新保持路径被提供到图7中的方框730以用于修改保持时间违反。对于每个新保持路径,通常可通过在冗余路径中最靠近起始节点的第一节点(例如,图5中所复制的与门U5的B输入端)处插入延迟来修改保持时间违反。
图11展示用于产生并分析电路设计且用于修改保持时间违反的建立过程1100的方框图。使用例如Verilog、HDL(硬件描述语言)、VHDL(极高速IC硬件描述语言)或某其它电子设计自动化(EDA)工具的电路设计工具1120来产生电路设计。电路设计由用户输入1110创建并存储在存储单元1122中。时序分析工具1130使用来自存储单元1132的时序约束对电路设计执行时序分析,且将时序报告提供到存储单元1134。处理器1140基于电路设计的时序报告和电路模型来创建用于保持路径和相关建立路径的数据库,且将数据库存储在存储单元1134中。处理器1140还修改保持时间违反且产生输出文件,所述输出文件存储在存储单元1136中。可基于用户输入1150来修改保持时间违反。存储器单元1142存储程序代码(例如,针对图6到10所示的过程)和由处理器1140使用的其它数据。处理器1140可执行图6到10所示的过程。
只要需要修改保持时间违反时,例如在时钟树合成(CTS)之前或之后、布线之前或之后等,保持时间修改技术就可在电路设计流程的任一级中使用。在需要的情况下,CTS为每个时钟建置一缓冲树,以满足最大过渡时间和最大负载约束且平衡连接到所述时钟的时钟引脚的到达时间。IC设计者通常试图在CTS之前或之后满足时序要求。可不管对于每一时钟是否存在一时钟树而使用本文所描述的技术。
电路设计工具可用于在应用保持时间修改技术之前修改保持时间违反。这可能是有优势的,因为插入延迟缓冲器以修改保持时间违反可能影响时序。电路设计工具可更准确地确定电路设计的时序。保持时间修改技术基于典型输入转换和输出负载来估计延迟,且忽略由缓冲器插入引起的所插入的延迟缓冲器之前和之后的电路单元的负载变化。然而,所述技术可通过施加时序裕度以确保不违反建立时间和保持时间两者而获得良好结果。时序裕度可被明确地指定并用于修改保持时间违反。比所需大的延迟比率也留下某裕度。所述技术也可应用于整个电路设计或电路设计的一部分。举例来说,所述技术可用于或不用于电路设计的高度密集且高度被利用的区域。
保持时间修改技术可通过在时序路径中在恰当位置处插入延迟来修改保持时间违反。与仅在时序路径的起点或终点处插入延迟的某些常规工具不同,所述技术也可在内部节点处插入延迟。所述技术也可根据需要来插入电路单元以便修改否则无法修改的保持时间违反。
保持时间修改技术可用于为具有一个或多个操作模式的电路设计修改保持时间违反。不同操作模式可具有不同时序约束,所述不同时序约束可对相同时序路径强加不同时序要求。对于建立时间,电路设计可由所有操作模式的最紧建立时间要求约束,这进而确保将满足所有操作模式的建立时间要求。对于保持时间,在意识到所有操作模式的建立时间的情况下修改电路设计中的保持时间违反。为多个操作模式修改保持时间违反对于不能为这些多个操作模式组合时序信息的常规工具是具有挑战性的。这是因为在没有意识到其它操作模式的时序的情况下为一个操作模式修改保持时间违反可引起其它操作模式中的建立时间违反。常规工具一次仅可处理一组时序约束且可需要多个耗时重复来修改不同操作模式中的保持和建立时间违反两者。
本文所述的技术也可检测以下情形:时序路径违反建立时间和保持时间(或处于两者的临界状态),不能在不影响另一者的情况下修改所述两个违反中的至少一者,且所述两个违反处于不同操作模式中。可识别此时序路径以便进行重新设计,或可使用冗余路径插入来补救所述两个违反。
本文所述的技术可用于例如无线通信、连网、计算等各种终端应用的电路设计。举例来说,这些技术可用于无线通信系统的希望以一个或多个操作模式来操作的电路设计,所述无线通信系统例如码分多址(CDMA)系统、全球移动通信系统(GSM)等。CDMA系统可实施来自名为“第三代合作伙伴计划2”(3GPP2)的社团的IS-95、IS-2000和IS-856标准和/或来自名为“第三代合作伙伴计划”(3GPP)的社团的宽带CDMA(W-CDMA)标准。不同通信系统可要求相同电路设计以不同时钟频率操作,这进而导致电路设计的不同时序约束。
可通过多种方法来实施本文所述的保持时间修改技术。举例来说,可以硬件、软件或其组合来实施这些技术。对于硬件实施,用于修改保持时间违反的处理单元可实施在一个或一个以上专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器,其它经设计以执行本文所述功能的电子单元或其组合内。
对于软件实施,可使用执行本文所述功能的模块(例如,程序、功能等)来实施所述保持时间修改技术。软件代码可存储在处理器可读媒体(例如CD ROM)或存储器单元(例如,图11中存储器单元1142)中且由处理器(例如,处理器1140)来执行。可在处理器内或在处理器外部实施存储器单元。
提供所揭示的实施例的先前描述使所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将容易了解对这些实施例所作的各种修改,且本文所界定的一般原理可在不脱离本发明精神或范围的情况下应用于其它实施例。因此,本发明不希望限于本文所示的实施例,而是符合与本文所揭示的原理和新颖特征一致的最广范围。
Claims (37)
1.一种修改一电路设计中的保持时间违反的方法,其包含:
获得所述电路设计的时序信息;
基于所述时序信息识别所述电路设计中具有保持时间违反的信号路径;
在所述具有保持时间违反的信号路径中,在由所述时序信息确定的位置处插入延迟;和
为具有保持时间违反且不可能进行延迟插入的信号路径插入冗余路径。
2.根据权利要求1所述的方法,其中所述获得所述电路设计的所述时序信息包含
获得所述电路设计中复数个信号路径的保持时间信息和建立时间信息。
3.根据权利要求1所述的方法,其中所述获得所述电路设计的所述时序信息包含
获得所述电路设计的复数个操作模式的时序信息,每个操作模式与所述电路设计的一个别组时序约束相关联。
4.根据权利要求1所述的方法,其中:
在获得所述电路设计的所述时序信息之后,基于所述电路设计的一电路模型和所述电路设计的所述时序信息来产生至少一个数据库;
使用所述至少一个数据库在所述具有保持时间违反的信号路径中插入所述延迟以及为所述具有保持时间违反且不可能进行延迟插入的信号路径插入所述冗余路径。
5.根据权利要求1所述的方法,其中所述在所述具有保持时间违反的信号路径中插入延迟包含
在所述具有保持时间违反的信号路径中,在由所述时序信息确定且进一步避免违反对所述电路设计的建立时间要求的位置处插入延迟。
6.根据权利要求1所述的方法,其中所述在所述具有保持时间违反的信号路径中插入延迟包含
对于每个具有保持时间违反的信号路径,
识别所述信号路径中的至少一个节点以用于插入延迟,且
在所述信号路径的所识别的所述至少一个节点的每一者处插入一延迟。
7.根据权利要求6所述的方法,其中所述在所述具有保持时间违反的信号路径中插入延迟进一步包含
对于每个具有保持时间违反的信号路径,
确定在所述信号路径的所识别的所述至少一个节点的每一者处允许的一最大延迟量,且其中在所述至少一个节点的每一者处插入的所述延迟受到所述节点处所允许的所述最大延迟量限制。
8.根据权利要求7所述的方法,其中每个节点处所允许的所述最大延迟量是基于对所述电路设计的建立时间要求确定的。
9.根据权利要求1所述的方法,其中所述在所述具有保持时间违反的信号路径中插入延迟包含
识别出现在具有保持时间违反的多个信号路径中的节点;和
在所述识别的节点处插入延迟。
10.根据权利要求1所述的方法,其进一步包含:
更新受到所述延迟的所述插入影响的信号路径的时序。
11.根据权利要求1所述的方法,其中所述为所述具有保持时间违反且不可能进行延迟插入的信号路径插入所述冗余路径包含
对于每个所述具有保持时间违反且不可能进行延迟插入的信号路径,
基于所述至少一个电路单元的特征来识别所述具有保持时间违反且不可能进行延迟插入的信号路径中的至少一个电路单元,且
复制所述至少一个电路单元以形成用于所述具有保持时间违反且不可能进行延迟插入的信号路径的一冗余路径。
12.根据权利要求11所述的方法,其中所述至少一个电路单元是基于扇进和扇出特征来识别的。
13.根据权利要求1所述的方法,其进一步包含:
在所述冗余路径中插入延迟以修改所述含有所述冗余路径的信号路径的保持时间违反。
14.一种修改一电路设计中的保持时间违反的方法,其包含:
获得所述电路设计中的第一复数个具有保持时间违反的信号路径的每一者的一保持松弛;
获得所述电路设计中的第二复数个信号路径的每一者的一建立松弛,所述第二复数个信号路径中的每一信号路径具有至少一个与所述第一复数个信号路径中的至少一个信号路径共同的节点;和
在所述第一复数个信号路径中的由所述第一复数个信号路径的保持松弛和所述第二复数个信号路径的建立松弛确定的位置处插入延迟。
15.根据权利要求14所述的方法,其进一步包含:
基于所述第二复数个信号路径的所述建立松弛,为所述第一复数个信号路径中的每一信号路径的节点确定建立松弛。
16.根据权利要求14所述的方法,其中所述获得所述第一复数个信号路径中的每一者的所述保持松弛包含:对于所述第一复数个信号路径中的每一者,获得所述电路设计的复数个操作模式中的每一者的所述信号路径的一保持松弛,且
其中所述获得所述第二复数个信号路径中的每一者的所述建立松弛包含:对于所述第二复数个信号路径中的每一者,获得所述复数个操作模式中的每一者的所述信号路径的一建立松弛。
17.根据权利要求14所述的方法,其进一步包含:
基于所述电路设计的一电路模型、所述第一复数个信号路径的所述保持松弛和所述第二复数个信号路径的所述建立松弛而产生至少一个数据库;和
使用所述至少一个数据库在所述第一复数个信号路径中插入所述延迟。
18.根据权利要求14所述的方法,其中所述在所述第一复数个信号路径中插入延迟包含
在所述第一复数个信号路径中的每一信号路径中的所有节点之间的与一最大建立松弛相关联的一节点处插入一延迟。
19.根据权利要求14所述的方法,其进一步包含:
更新受到所述第一复数个信号路径的所述延迟的所述插入影响的信号路径的建立松弛和保持松弛。
20.一种修改一电路设计中的保持时间违反的设备,其包含:
用于获得所述电路设计中第一复数个具有保持时间违反的信号路径的每一者的一保持松弛的装置;
用于获得所述电路设计中的第二复数个信号路径的每一者的一建立松弛的装置,所述第二复数个信号路径中的每一信号路径具有至少一个与所述第一复数个信号路径中的至少一个信号路径共同的节点;和
用于在所述第一复数个信号路径中的由所述第一复数个信号路径的保持松弛和所述第二复数个信号路径的建立松弛确定的位置处插入延迟的装置。
21.根据权利要求20所述的设备,其中所述用于获得所述电路设计中第一复数个具有保持时间违反的信号路径的每一者的一保持松弛的装置包含:
用于基于所述第一复数个信号路径的保持松弛识别所述电路设计中具有保持时间违反的信号路径的装置。
22.根据权利要求20所述的设备,其进一步包含:
用于基于所述电路设计的一电路模型、所述第一复数个信号路径的保持松弛和所述第二复数个信号路径的建立松弛而产生至少一个数据库的装置;和
用于使用所述至少一个数据库为所述具有保持时间违反的信号路径插入所述延迟的装置。
23.根据权利要求20所述的设备,其中所述用于在所述具有保持时间违反的信号路径中插入延迟的装置包含
用于基于所述第一复数个信号路径的保持松弛和所述第二复数个信号路径的建立松弛而在所述具有保持时间违反的信号路径中插入延迟的装置。
24.根据权利要求20所述的设备,其进一步包含:
用于更新受到所述具有保持时间违反的信号路径中的所述延迟的所述插入影响的信号路径的建立松弛和保持松弛的装置。
25.一种修改一电路设计中的保持时间违反的设备,其包含:
用于获得所述电路设计的时序信息的装置;
用于基于所述时序信息识别所述电路设计中具有保持时间违反的信号路径的装置;
用于在所述具有保持时间违反的信号路径中的由所述时序信息确定的位置处插入延迟的装置;和
用于为具有保持时间违反且不可能进行延迟插入的信号路径插入冗余路径的装置。
26.根据权利要求25所述的设备,其进一步包含:
用于在所述冗余路径中插入延迟以修改所述含有所述冗余路径的信号路径的保持时间违反的装置。
27.根据权利要求25所述的设备,其中所述用于获得所述电路设计的所述时序信息的装置包含
用于获得所述电路设计中复数个信号路径的保持时间信息和建立时间信息的装置。
28.根据权利要求25所述的设备,其中所述用于获得所述电路设计的所述时序信息的装置包含
用于获得所述电路设计的复数个操作模式的时序信息,每个操作模式与所述电路设计的一个别组时序约束相关联。
29.根据权利要求25所述的设备,其进一步包含:
用于在获得所述电路设计的所述时序信息之后基于所述电路设计的一电路模型和所述电路设计的所述时序信息来产生至少一个数据库的装置;
用于使用所述至少一个数据库在所述具有保持时间违反的信号路径中插入所述延迟以及为所述具有保持时间违反且不可能进行延迟插入的信号路径插入所述冗余路径的装置。
30.根据权利要求25所述的设备,其中所述用于在所述具有保持时间违反的信号路径中插入延迟的装置包含
用于在所述具有保持时间违反的信号路径中的由所述时序信息确定且进一步避免违反对所述电路设计的建立时间要求的位置处插入延迟的装置。
31.根据权利要求25所述的设备,其中所述用于在所述具有保持时间违反的信号路径中插入延迟的装置包含:
用于对于每个具有保持时间违反的信号路径识别所述信号路径中的至少一个节点以用于插入延迟的装置;和
用于在所述信号路径的所识别的所述至少一个节点的每一者处插入一延迟的装置。
32.根据权利要求31所述的设备,其中所述用于在所述具有保持时间违反的信号路径中插入延迟的装置进一步包含
用于对于每个具有保持时间违反的信号路径确定在所述信号路径的所识别的所述至少一个节点的每一者处允许的一最大延迟量的装置,且其中在所述至少一个节点的每一者处插入的所述延迟受到所述节点处所允许的所述最大延迟量限制。
33.根据权利要求32所述的设备,其中每个节点处所允许的所述最大延迟量是基于对所述电路设计的建立时间要求确定的。
34.根据权利要求25所述的设备,其中所述用于在所述具有保持时间违反的信号路径中插入延迟的装置包含
用于识别出现在具有保持时间违反的多个信号路径中的节点的装置;和
用于在所述识别的节点处插入延迟的装置。
35.根据权利要求25所述的设备,其进一步包含
用于更新受到所述延迟的所述插入影响的信号路径的时序的装置。
36.根据权利要求25所述的设备,其中所述用于为所述具有保持时间违反且不可能进行延迟插入的信号路径插入所述冗余路径的装置包含:
用于对于每个所述具有保持时间违反且不可能进行延迟插入的信号路径基于所述至少一个电路单元的特征来识别所述具有保持时间违反且不可能进行延迟插入的信号路径中的至少一个电路单元的装置;和
用于复制所述至少一个电路单元以形成用于所述具有保持时间违反且不可能进行延迟插入的信号路径的一冗余路径的装置。
37.根据权利要求36所述的设备,其中所述用于识别所述至少一个电路单元的装置包含
用于基于扇进和扇出特征来识别所述至少一个电路单元的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US57526304P | 2004-05-28 | 2004-05-28 | |
US60/575,263 | 2004-05-28 | ||
US11/030,352 US7278126B2 (en) | 2004-05-28 | 2005-01-05 | Method and apparatus for fixing hold time violations in a circuit design |
US11/030,352 | 2005-01-05 | ||
PCT/US2005/018832 WO2005119530A2 (en) | 2004-05-28 | 2005-05-27 | Method and apparatus for fixing hold time violations in a circuit design |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1985257A CN1985257A (zh) | 2007-06-20 |
CN1985257B true CN1985257B (zh) | 2011-03-30 |
Family
ID=34971410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200580023493XA Expired - Fee Related CN1985257B (zh) | 2004-05-28 | 2005-05-27 | 用于修改电路设计中的保持时间违反的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7278126B2 (zh) |
CN (1) | CN1985257B (zh) |
MX (1) | MX2007000249A (zh) |
TW (1) | TWI372999B (zh) |
WO (1) | WO2005119530A2 (zh) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191416B2 (en) * | 2003-01-27 | 2007-03-13 | Stmicroelectronics Limited | System and method for modifying integrated circuit hold times |
US20060026543A1 (en) * | 2004-07-29 | 2006-02-02 | Texas Instruments Incorporated | Accurate timing analysis of integrated circuits when combinatorial logic offers a load |
US7810061B2 (en) * | 2004-09-17 | 2010-10-05 | Cadence Design Systems, Inc. | Method and system for creating a useful skew for an electronic circuit |
JP2006155056A (ja) * | 2004-11-26 | 2006-06-15 | Fujitsu Ltd | タイミングエラー修正方法 |
US7325211B1 (en) * | 2005-09-02 | 2008-01-29 | Sun Microsystems, Inc. | Clock skew modelling using delay stamping |
US8065646B2 (en) * | 2005-09-07 | 2011-11-22 | Freescale Semiconductor, Inc. | Method and a computer readable medium for performing static timing analysis of a design of an integrated circuit |
US7424693B2 (en) * | 2005-10-20 | 2008-09-09 | Agere Systems Inc. | Methods for measurement and prediction of hold-time and exceeding hold time limits due to cells with tied input pins |
US7406669B2 (en) * | 2005-12-06 | 2008-07-29 | Lsi Corporation | Timing constraints methodology for enabling clock reconvergence pessimism removal in extracted timing models |
US7506293B2 (en) * | 2006-03-22 | 2009-03-17 | Synopsys, Inc. | Characterizing sequential cells using interdependent setup and hold times, and utilizing the sequential cell characterizations in static timing analysis |
US8051352B2 (en) * | 2006-04-27 | 2011-11-01 | Mentor Graphics Corporation | Timing-aware test generation and fault simulation |
US7590957B2 (en) * | 2006-08-24 | 2009-09-15 | Lsi Corporation | Method and apparatus for fixing best case hold time violations in an integrated circuit design |
US7886245B2 (en) | 2007-03-01 | 2011-02-08 | International Business Machines Corporation | Structure for optimizing the signal time behavior of an electronic circuit design |
JP4993362B2 (ja) * | 2007-06-26 | 2012-08-08 | ルネサスエレクトロニクス株式会社 | 半導体集積回路の自動遅延調整方法 |
US7761832B2 (en) * | 2007-11-16 | 2010-07-20 | International Business Machines Corporation | Method for incremental, timing-driven, physical-synthesis optimization under a linear delay model |
US7966592B2 (en) * | 2007-11-29 | 2011-06-21 | Lsi Corporation | Dual path static timing analysis |
US7913213B2 (en) * | 2008-04-10 | 2011-03-22 | Oracle America, Inc. | Tool and method for automatically identifying minimum timing violation corrections in an integrated circuit design |
US8255851B1 (en) * | 2008-06-24 | 2012-08-28 | Marvell Israel (M.I.S.L) Ltd. | Method and system for timing design |
US7996812B2 (en) * | 2008-08-14 | 2011-08-09 | International Business Machines Corporation | Method of minimizing early-mode violations causing minimum impact to a chip design |
US8079004B2 (en) * | 2009-04-30 | 2011-12-13 | Synopsys, Inc. | Efficient exhaustive path-based static timing analysis using a fast estimation technique |
US8549448B2 (en) * | 2009-07-09 | 2013-10-01 | Synopsys, Inc. | Delay optimization during circuit design at layout level |
US8316340B2 (en) * | 2009-07-13 | 2012-11-20 | Taiwan Semiconductor Manufacturing Company, Ltd. | Fixing full-chip violations using flip-flops |
US8316334B2 (en) * | 2010-02-04 | 2012-11-20 | Qualcomm Incorporated | Segment and bipartite graph based apparatus and method to address hold violations in static timing |
CN102456087B (zh) * | 2010-11-03 | 2013-12-04 | 上海华虹集成电路有限责任公司 | 一种建立时序修复方法 |
US8347250B2 (en) * | 2010-12-22 | 2013-01-01 | Advanced Micro Devices, Inc. | Method and apparatus for addressing and improving holds in logic networks |
US8448124B2 (en) * | 2011-09-20 | 2013-05-21 | International Business Machines Corporation | Post timing layout modification for performance |
US8468483B2 (en) | 2011-10-24 | 2013-06-18 | International Business Machines Corporation | Method, system and program storage device for performing a parameterized statistical static timing analysis (SSTA) of an integrated circuit taking into account setup and hold margin interdependence |
CN102332048B (zh) * | 2011-10-27 | 2013-03-20 | 山东华芯半导体有限公司 | 集成电路设计过程中单节点并行自动修复保持时间违例的方法 |
CN102436525B (zh) * | 2011-10-27 | 2014-10-15 | 西安华芯半导体有限公司 | 一种集成电路设计过程中多节点并行自动修复保持时间违例的方法 |
JP2013175029A (ja) * | 2012-02-24 | 2013-09-05 | Fujitsu Semiconductor Ltd | 半導体集積回路のレイアウト設計装置、レイアウト設計方法およびレイアウト設計プログラム |
US9058456B2 (en) | 2012-09-25 | 2015-06-16 | International Business Machines Corporation | Method and system to fix early mode slacks in a circuit design |
CN104969226B (zh) * | 2012-12-26 | 2018-08-28 | 美商新思科技有限公司 | 跨管线的时序瓶颈分析以利用有用偏差引导优化 |
US10810790B1 (en) * | 2013-02-28 | 2020-10-20 | TheMathWorks, Inc. | Identification and correction of temporal ages in separate signal paths of a graphical model |
TWI493370B (zh) * | 2013-03-05 | 2015-07-21 | Univ Nat Chiao Tung | 工程變更之保持時間修復方法 |
US9122823B2 (en) | 2013-12-20 | 2015-09-01 | International Business Machines Corporation | Stacked multiple-input delay gates |
US9607122B2 (en) * | 2014-01-30 | 2017-03-28 | Mentor Graphics Corporation | Timing driven clock tree synthesis |
CN104881507B (zh) * | 2014-02-28 | 2018-01-19 | 格芯公司 | 修复电路中的保持时间违例的方法和装置 |
US9280630B1 (en) | 2014-11-07 | 2016-03-08 | International Business Machines Corporation | Modified standard cells to address fast paths |
CN105701266B (zh) | 2014-11-28 | 2019-05-07 | 国际商业机器公司 | 用于电路设计中的静态时序分析的方法和系统 |
US9519746B1 (en) | 2015-06-11 | 2016-12-13 | International Business Machines Corporation | Addressing early mode slack fails by book decomposition |
CN106777441B (zh) * | 2015-11-24 | 2020-04-21 | 龙芯中科技术有限公司 | 时序约束管理方法及装置 |
US10002225B2 (en) * | 2016-02-12 | 2018-06-19 | Synopsys, Inc. | Static timing analysis with improved accuracy and efficiency |
CN105787213B (zh) * | 2016-04-01 | 2019-02-05 | 中国人民解放军国防科学技术大学 | 一种保持时间违反的修复方法 |
US10089194B2 (en) * | 2016-06-08 | 2018-10-02 | Qualcomm Incorporated | System and method for false pass detection in lockstep dual core or triple modular redundancy (TMR) systems |
US10060971B2 (en) | 2016-08-16 | 2018-08-28 | International Business Machines Corporation | Adjusting latency in a scan cell |
US10001523B2 (en) | 2016-08-16 | 2018-06-19 | International Business Machines Corporation | Adjusting latency in a scan cell |
US10416232B1 (en) * | 2018-06-19 | 2019-09-17 | Xilinx, Inc. | Timing optimizations in circuit designs using opposite clock edge triggered flip-flops |
CN110111020B (zh) * | 2019-05-16 | 2021-03-02 | 天津飞腾信息技术有限公司 | 基于自动评估建立时间余量的保持时间修复方法、系统及介质 |
CN113626994B (zh) * | 2021-07-23 | 2022-11-22 | 东南大学 | 一种寄存器时序约束灵活建模方法 |
CN113673193B (zh) | 2021-08-09 | 2022-11-22 | 东南大学 | 一种基于寄存器灵活时序库的电路时序优化方法 |
US11947891B2 (en) * | 2021-08-20 | 2024-04-02 | International Business Machines Corporation | Balancing cycle stealing with early mode violations |
US11894845B1 (en) | 2022-08-30 | 2024-02-06 | Globalfoundries U.S. Inc. | Structure and method for delaying of data signal from pulse latch with lockup latch |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2677256B2 (ja) | 1995-06-26 | 1997-11-17 | 日本電気株式会社 | 遅延最適化方法 |
US5896299A (en) * | 1995-10-13 | 1999-04-20 | Vlsi Technology, Inc. | Method and a system for fixing hold time violations in hierarchical designs |
WO2004102657A1 (ja) * | 1998-01-26 | 2004-11-25 | Masahiro Sano | 回路内信号線の最適化方法、最適化装置および最適化プログラムを格納した記憶媒体並びに回路設計方法および回路設計用プログラムを格納した記憶媒体 |
JP2001188819A (ja) * | 2000-01-04 | 2001-07-10 | Toshiba Microelectronics Corp | ホールド違反改善方法、半導体集積回路、及びコンピュータ読み出し可能な記憶媒体 |
US6591407B1 (en) | 2000-03-01 | 2003-07-08 | Sequence Design, Inc. | Method and apparatus for interconnect-driven optimization of integrated circuit design |
JP4237434B2 (ja) | 2001-11-26 | 2009-03-11 | 富士通マイクロエレクトロニクス株式会社 | 集積回路のホールドタイムエラー修正方法及びその修正プログラム |
US6701505B1 (en) | 2001-11-30 | 2004-03-02 | Sequence Design, Inc. | Circuit optimization for minimum path timing violations |
EP1396801A1 (de) * | 2002-09-05 | 2004-03-10 | Siemens Aktiengesellschaft | Verfahren zum Entwickeln eines elektronischen Bausteins |
US6886147B2 (en) * | 2002-12-31 | 2005-04-26 | Lsi Logic Corporation | Method, system, and product for achieving optimal timing in a data path that includes variable delay lines and coupled endpoints |
US6990645B2 (en) * | 2003-04-29 | 2006-01-24 | International Business Machines Corporation | Method for static timing verification of integrated circuits having voltage islands |
-
2005
- 2005-01-05 US US11/030,352 patent/US7278126B2/en active Active
- 2005-05-27 WO PCT/US2005/018832 patent/WO2005119530A2/en active Application Filing
- 2005-05-27 MX MX2007000249A patent/MX2007000249A/es active IP Right Grant
- 2005-05-27 CN CN200580023493XA patent/CN1985257B/zh not_active Expired - Fee Related
- 2005-05-30 TW TW094117740A patent/TWI372999B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TWI372999B (en) | 2012-09-21 |
TW200620115A (en) | 2006-06-16 |
MX2007000249A (es) | 2007-04-09 |
CN1985257A (zh) | 2007-06-20 |
US7278126B2 (en) | 2007-10-02 |
WO2005119530A3 (en) | 2006-07-20 |
WO2005119530A2 (en) | 2005-12-15 |
US20050268263A1 (en) | 2005-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1985257B (zh) | 用于修改电路设计中的保持时间违反的方法和设备 | |
Tsai et al. | Statistical timing analysis driven post-silicon-tunable clock-tree synthesis | |
Khomenko et al. | Towards an efficient algorithm for unfolding Petri nets | |
US20180018417A1 (en) | Method and Apparatus for Performing Rewind Structural Verification of Retimed Circuits Driven by a Plurality of Clocks | |
Xie et al. | Bounding average time separations of events in stochastic timed Petri nets with choice | |
CN112597733B (zh) | 一种存储单元的识别方法、设备及计算机可读存储介质 | |
Gupta et al. | Analytical models for RTL power estimation of combinational and sequential circuits | |
Beraudo et al. | Timing optimization of FPGA placements by logic replication | |
US8316334B2 (en) | Segment and bipartite graph based apparatus and method to address hold violations in static timing | |
US10691854B1 (en) | Graph-based timing analysis timing calibration | |
US7047175B1 (en) | System and method for enhancing the speed of dynamic timing simulation using delay assessment at compile time | |
Albrecht et al. | On the skew-bounded minimum-buffer routing tree problem | |
Krishnan | Distributed timed automata | |
Wong et al. | A parallelism analyzer for conservative parallel simulation | |
Carmona et al. | State encoding of large asynchronous controllers | |
US7949976B2 (en) | Systematic approach for performing cell replacement in a circuit to meet timing requirements | |
Moreno et al. | Register estimation in unscheduled dataflow graphs | |
Xu et al. | Practical application of formal verification techniques on a frame mux/demux chip from Nortel Semiconductors | |
Maji et al. | A scalable buffer queue sizing algorithm for latency insensitive systems | |
CN117151015B (zh) | 集成电路布局布线方法、装置、集成电路芯片 | |
US10839126B1 (en) | Tools and methods for selection of relative timing constraints in asynchronous circuits, and asynchronous circuits made thereby | |
Papaefthymiou | On retiming synchronous circuitry and mixed-integer optimization | |
Nelson et al. | Efficient verification of hazard-freedom in gate-level timed asynchronous circuits | |
Chen et al. | Piecewise linear Lyapunov function for the stability of multiclass priority fluid networks | |
Chen et al. | MOSFET and Lossy Coupled Transmission Line Circuit Simulation Using Iterated Timing Analysis and Latency-Checking Method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1101790 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1101790 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110330 Termination date: 20210527 |
|
CF01 | Termination of patent right due to non-payment of annual fee |