CN104699883B - 采用紧凑多波形表示的电路设计评估 - Google Patents
采用紧凑多波形表示的电路设计评估 Download PDFInfo
- Publication number
- CN104699883B CN104699883B CN201410683289.1A CN201410683289A CN104699883B CN 104699883 B CN104699883 B CN 104699883B CN 201410683289 A CN201410683289 A CN 201410683289A CN 104699883 B CN104699883 B CN 104699883B
- Authority
- CN
- China
- Prior art keywords
- sequence
- signal conversion
- conversion table
- phase
- output
- 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.)
- Active
Links
- 238000013461 design Methods 0.000 title claims abstract description 116
- 238000006243 chemical reaction Methods 0.000 claims abstract description 111
- 230000014509 gene expression Effects 0.000 claims abstract description 109
- 238000003860 storage Methods 0.000 claims abstract description 24
- 238000012546 transfer Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 27
- 230000008859 change Effects 0.000 claims description 13
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 6
- 238000011156 evaluation Methods 0.000 abstract description 4
- 102400000267 Rhomboid-related protein 2, N-terminal fragment Human genes 0.000 description 131
- 230000006870 function Effects 0.000 description 69
- 238000004422 calculation algorithm Methods 0.000 description 52
- 238000007689 inspection Methods 0.000 description 16
- 230000006399 behavior Effects 0.000 description 13
- 238000009826 distribution Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 9
- 239000000470 constituent Substances 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 7
- 230000007547 defect Effects 0.000 description 6
- 235000013399 edible fruits Nutrition 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000000630 rising effect Effects 0.000 description 5
- 101000648503 Homo sapiens Tumor necrosis factor receptor superfamily member 11A Proteins 0.000 description 4
- 102100028787 Tumor necrosis factor receptor superfamily member 11A Human genes 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006854 communication Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 101150008465 pdb1 gene Proteins 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000009790 rate-determining step (RDS) Methods 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000018199 S phase Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000032361 posttranscriptional gene silencing Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000009131 signaling function Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
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/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- 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
-
- 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
-
- 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/3315—Design verification, e.g. functional simulation or model checking using static timing analysis [STA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/35—Delay-insensitive circuit design, e.g. asynchronous or self-timed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/396—Clock trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/04—Constraint-based CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/04—Clock gating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Abstract
本公开的实施方式涉及采用紧凑多波形表示的电路设计评估。一种设计工具可以实施基于相位代数的设计评估以采用大量波形的紧凑表示有效地评估电路设计,而无需对各个波形进行仿真。替代各个波形,基于相位代数的设计评估利用了波形的群组或集合的紧凑表示。基于相位代数的评估基于说明信号随时间变化的包括转换和毛刺的各个状态的函数的设计集合之间关系来构造波形集合的表示。在本文中称作M函数的存储转换函数指示了相对于时间的信号转换。
Description
技术领域
本发明主题的实施例总体涉及电路设计的领域,并且更具体地涉及用于在芯片或片上系统的寄存器传输级(RTL)设计中标识潜在缺陷的电子设计自动化(EDA)工具。
背景技术
EDA工具用于在制造之前评估芯片设计。EDA过程广义上由两个步骤构成。第一步骤是RTL设计逻辑的检查。第二步骤是从RTL设计创建物理电路设计。检查设计逻辑的第一步骤可以称作RTL设计检查。在RTL设计检查中,诸如VHDL(超高速集成电路硬件描述语言)或Verilog之类的语言可以用于描述并且建模电路的功能行为。RTL设计检查自身可以分解为两个步骤。第一步骤是静态检查,而第二步骤是验证(也通常称作动态检查)。在静态检查中,分析设计的结构而并未对设计的行为进行仿真。相反地,在验证中,通过向设计的输入施加测试图形或激励来对设计进行仿真,以尝试穷举地标识可能的错误。验证对于复杂芯片或片上系统而言可能是昂贵的过程。验证也可能是非决定性的,因为将所有可能的测试图形施加至复杂设计的输入通常是不可行的。
芯片和片上系统复杂度继续增加,包括许多系统和子系统。这些系统和子系统可以包括多个时钟域。时钟域是时序逻辑元件(诸如透明锁存器和触发器)和与这些时序逻辑元件相关联的组合逻辑的集合,这些时序逻辑元件由共同时钟或者由具有共同频率以及固定相位关系的时钟进行时控。时钟信号引起了诸如触发器或透明锁存器之类的时序逻辑的状态改变。异步时钟域跨越是从第一时钟域中的设计中的时序逻辑元件或其他状态转换源至第二时钟域中的时序元件的路径,当第一时钟域相对于第二时钟域异步操作时,可以通过该路径发生转换。当数据信号从第一时钟域跨越至第二时钟域并且第一时钟域与第二时钟域异步时,跨越称作异步时钟域跨越。
发明内容
本发明主题的实施例包括确定与寄存器传输级电路设计中的指示部件的输入网络相关联的信号转换表示的序列。信号转换表示的序列中的每个信号转换表示表现从之前信号状态至一个或多个可能信号状态的集合的非确定性转换。基于指示部件确定从与输入网络相关联的信号转换表示的序列得到的信号转换表示的输出序列。确定信号转换表示的输出序列是否符合限制了哪个信号转换表示能够与其他信号转换表示相邻的限制。如果信号转换表示的输出序列符合限制,则将信号转换表示的输出序列与指示部件的输出网络相关联。如果信号转换表示的输出序列不符合限制,则修改信号转换表示的输出序列以符合限制。此外,将修改的信号转换表示的输出序列与输出网络相关联。
附图说明
通过参照附图可以更好地理解本实施例,并且很多目的、特征和优点可以对于本领域技术人员而言更明显。
图1是描绘了采用紧凑多波形表示的示例性基于相位代数的电路设计评估的概念图。
图2示出了在G函数、波形与M函数之间的关系。
图3描绘了多波形中的转换至NTF的示例性概念映射。
图4A至图4B描绘了示例性NTF序列以及被编码在序列中的信息。
图5是描绘了在数据结构之间关系的示例性层次的概念图。
图6是用于初始化基于相位代数的评估的RTL电路设计表示并且遍及设计表示传播紧凑多波形表示的示例性操作的流程图。
图7示出了与示例性传播算法相关联的术语以及待描述的伪代码。
图8是用于针对基于相位代数评估来初始化电路设计表示的示例性操作的流程图。
图9是用于基于非确定性转换表示的输入序列确定输出多波形表示的示例性操作的流程图。
图10是用于在RTL电路设计表示的初始化之后传播多波形表示的示例性操作的流程图。
图11和图12是用于将基于电路部件的操作应用于信号转换表示的序列的示例性操作的流程图。
图13是用于实施cwss_fix_latch运算符的示例性操作的流程图。
图14是用于实施cwss_path_delay运算符的示例性操作的流程图。
图15A至图15B描绘了用于实施cwss_is_subset运算符的示例性操作的流程图。
图16至图24是采用示例性相位标签的电路设计评估的概念描述。
图25描绘了示例性的基于计算机系统紧凑多波形的电路设计评估器。
具体实施方式
以下描述包括体现了本公开的技术的示例性系统、方法、技术、指令序列和计算机程序产品。然而应该理解的是,所描述的实施例可以不采用这些特定细节而实施。例如,可以改变用于实施本公开的语法。此外,尽管图表说明涉及触发器作为基础电路部件,但是实施例无需包括触发器。例如,电路模型可以包括透明锁存器和反相器以取代触发器作为基础电路部件。此外,实施例可以实施比在本文中所描述的操作更少的操作,而其他实施例可以实施比在本文中所描述的操作更多的操作。在其他情形中,并未详细示出已知的指令范例、协议、结构和技术,以便于避免使得描述模糊。
现代的处理器或片上系统包括多个部件。在RTL设计检查的静态检查阶段标识尽可能多的设计缺陷提高了验证方法的效率,由此节省了时间和金钱。设计工具可以实施如在本文中所描述的基于相位代数(phase algebra)的设计评估,以采用大量波形的紧凑表示来有效地评估电路设计而不对各个波形进行仿真。替代了各个波形,基于相位代数的设计评估采用了波形的群组或集合的紧凑表示。
基于相位代数的评估基于在说明信号随时间变化的各个状态(包括转换和毛刺)的函数的设计集合之间的关系来构建波形集合的表示。存储转换函数(在本文中称作M函数)指示了相对于时间的信号转换。M函数的输出数值指示了转换正在发生/已经发生(例如采用数值1指示),或者相对于给定时间间隔没有发生转换(例如采用数值0指示)。M函数也可以指示(例如采用数值0)给定时间间隔在感兴趣的范围之外。毛刺感知函数(在本文中称作G函数)说明发生了毛刺。通常,由于在电路部件的输入中的延迟、在改变其输出以反映其输入改变的电路部件中的固有延迟、或者由于两者而发生毛刺。例如,考虑了AND门的第一输入和第二输入。假设在时间t=1处第一输入预期转换为1,并且在时间t=1处第二输入预期转换为0。然而,如果第二输入被延迟,使得在时间t=1处,第二输入是1而不是0,则AND门的输出将是1而不是如预期的0。G函数针对在感兴趣确定是否可能发生毛刺期间的所有时间假设数值1。这些函数之间的关系稍后描述在图2中。
图1是描绘了采用紧凑多波形表示的示例性基于相位代数的电路设计评估的概念图。电路设计工具对RTL电路设计128的机器可读表示执行基于相位代数的电路设计评估。RTL电路设计表示128至少包括主电路输入112和时钟发生器116。主输入112是至电路自身的输入。主输入112并未由电路内的任何部件驱动。时钟发生器116是产生时钟信号的电路部件。为了便于理解,图1仅描绘了单个主输入116作为遍及电路设计表示128的主输入的代表,以及时钟发生器输出116作为遍及电路设计表示128的时钟发生器的代表。使用基于相位代数的评估的设计工具不限于这两种类型的部件。以下表1描绘了可以在由基于相位代数的评估工具所评估的RTL电路设计中进行建模的示例性RTL电路设计部件。
表1:示例性RTL电路设计部件
紧凑多波形表示104提供用于RTL电路设计108。例如,多波形表示104使用属性被提供在RTL描述中或者文档(被供应作为至电路设计工具的输入)中。电路设计工具取决于由紧凑多波形表示遍历的部件而确定在遍及RTL电路设计的网络上产生的紧凑多波形表示。描绘了用于紧凑多波形表示的示例性符号“A”120和“A@L”124。这些符号在本文中称作“相位标签”。该示例使用该相位标签以示出对标识为“A”的虚拟时钟的处理。在本说明书中,区分了相位标签和相位类型。相位类型是表现通用虚拟时钟的构造(例如变量或符号)。相位类型的使用在预期单个虚拟时钟的设计中是足够的。相位标签是标识虚拟时钟的构造。尽管相位标签可以用于预期单个虚拟时钟的设计中,但是当考虑多个虚拟时钟时,相位标签的实用性变得明显。此外,与相位标签相关联的运算符(“相位标签运算符”)操纵了对于多个虚拟时钟合适的相位类型运算符的结果。用于区分这些构造的特定术语不应用于限定权利要求范围。对于该说明,符号“A”表示具有对应于虚拟时钟A的时钟信号行为的信号或波形的集合。符号“A@L”表示对应于由标识为A的虚拟时钟的上升沿来时控的锁存器的信号或波形的集合。对于相位类型的表格使用符号“C”作为任何虚拟时钟的一般化标识符。该描述的大部分关注于相位类型和相位类型运算符的使用。
电路设计表示128也包括反相器132和与门140。网络148图形地被描绘为将时钟发生器116的输出连接至反相器132的输入。网络131图形地被描绘为将反相器132的输出连接至与门140的第一输入。网络152图形地被描绘为将主输入元件112的输出连接至与门140的第二输入。基于相位代数的评估工具确定了由符号120标注的紧凑多波形表示输入到反相器132中将产生具有符号“~A”126的紧凑多波形表示,其表现具有反相时钟信号行为的信号或波形的集合。基于相位代数的评估工具确定将由符号124标注的紧凑多波形表示以及由符号126标注的紧凑多波形表示输入到与门140中将产生具有基本相位代数的符号“*”的紧凑多波形表示,因为基本相位代数并未具有被限定为处理门控时钟的数值。如果利用了时钟门控代数,则产生的符号将是“(~A)%*”126。符号“*”表示波形的所有集合。符号(~A)%*表示特征为低门控反相时钟的波形的集合。基于相位代数的评估工具使用至少部分地基于可能波形状态的集合而构造的查找表贯穿电路设计表示128的网络传播紧凑多波形表示。在实施毛刺感知时,基于相位代数的评估工具将使用基于可能波形状态的集合、以及M函数和G函数构造的查找表而在贯穿设计表示的网络上传播紧凑多波形表示。稍后讨论查找表以及用于查找表的基础。
当已经确定了紧凑多波形表示时,评估工具的检查单元172分析与设计表示128的网络相关联的紧凑多波形表示。检查单元172可以使用这些紧凑多波形表示来标识设计中的缺陷。例如,检查单元172将评估由与违反规则的网络或者网络的约束相关联的紧凑多波形表示所表示的转换行为。网络的规则或约束可以是明确的(例如直接限定为与网络相关联)或隐含的(例如经由网络的特性或者网络的至少一个转接器而间接地相关联)。
返回参照表1,表1的第一列包括用于示例部件的通用名称,并且表1的第二列包括通常表现示例性电路部件的符号。表1的第三列指示了至电路部件的输入与电路部件基于供应至电路部件的输入而产生的输出之间的关系。表1的第六行的透明锁存器是示例性的电路部件。表1的第六行、第三列规定了至透明锁存器的输入与透明锁存器产生的输出之间的关系。透明锁存器采取了两个输入:由D表示的数据信号,以及由C表示的时钟信号。时钟信号可以由表1的行12中列出的时钟发生器或者其他谐波振荡器所产生。当时钟信号等于1时透明锁存器取样数据信号D。因此,当时间t-1处时钟取数值1(标记为C(t-1)=1)时,透明锁存器在时间t的输出Q(标记为Q(t))等于在时间t-1处的数据数值D(标记为D(t-1))。另外,透明锁存器的输出Q并未改变。在另一实施例中,在时钟信号假设了数值0而不是数值1期间所有时间透明锁存器取样数据信号D。如表1的第七行所示的触发器是另一电路部件。与透明锁存器类似,触发器接收两个输入,数据信号D和时钟信号C。触发器的输出Q等于数据信号的数值。触发器仅当时钟信号从0转变为1时在小时间间隔期间取样数据信号,不同于当时钟信号等于1时连续取样数据信号的透明锁存器。因此,如果在时钟从0转变为1的时间处数据信号是0,则触发器的输出将成为0。另外,如果在时钟从0转变至1时间处数据信号是1,则触发器的输出将变为1。表1的第三列规定了该关系。如果时间t-1处时钟信号标注为C(t-1)=1而时间t-2处时钟信号标注为C(t-2)=0,则在时间t处触发器的输出Q(t)等于时间t-1处标记为D(t-1)的数据信号的数值,由此简化了时钟信号从0至1的转换。触发器可以由两个透明锁存器建模得到。透明的锁存器和触发器均被建模以包括单位延迟,以使得透明锁存器和触发器在从引起输出状态改变的接收输入的时间起已经消逝单位时间之后之后表现图1的第三列中所示的输出。对表1中所示的组合逻辑部件(诸如第三行中所示的与门)进行建模以在部件接收输入的时间与部件基于接收到的输入产生输出的时间之间不具有延迟。然而,组合逻辑电路部件将可能显示出在接收输入和产生输出之间的延
迟。为了对该延迟建模,路径延迟组块(PDB)可以实施。PDB(表1中第九行)表现在组合电路部件基于接收到的输入产生输出所需的时间的非确定性、受限延迟。与电路部件相关联的前述时序假设避免了建模物理时间,并且允许对提取时间建模。这保存了计算资源。
图2示出了在G函数、波形与M函数之间的关系。G函数(g(t))、M函数(m(t))与波形(w(t))之间的关系由以下表达式给出:如果g(t)=0,则m(t)=0;另外,如果g(t)=1,则如果并且仅当w(t)并不等于w(t-1)或m(t-1)=1,则m(t)=1,其中g(t)是在时间t处G函数的数值,m(t)是M函数在时间t处的数值,以及w(t)是波形在时间t处的数值。如所示,对于M函数等于1的条件是w(t)并不等于w(t-1),或者m(t-1)等于一。这些条件对应于建模的波形w(t)的转换。采用M函数和G函数,信号的之前状态可以与采用紧凑表示的多个可能下一个信号状态相关。这些关系的每一个在本文中称作非确定性转换函数(“NTF”)。图3提供了图以帮助示出NTF的序列如何以紧凑方式表现多个波形。
图3示出了多波形中的转换至NTF的示例性概念映射。时间至NTF的映射称作波形集合函数(WSF)。WSF 304指定了波形312、316、320和324的集合。波形312、316、320和324中的每个波形假设在每个时刻具有数值0或者1。例如,波形312假设在时间t=0之前的所有时间、以及在时间t=0至t=6具有数值0,但是在时间t=7转换为1,并且在时间t=7和t=9之间以及在时间t=9之后所有时间具有数值1。这些波形可以集合起来以形成单个波形集合(紧凑多波形),由波形集合图308示出。波形集合图308编码了关于波形312、316、320和324的集合行为的信息。波形集合函数(WSF)304与波形集合图308相关联。WSF 304将每个时间单位映射至NTF。每个NTF将波形的之前状态或者波形的集合与成组可能的下一个状态相关联。尽管由少数几层构造分隔,但是之前所述的紧凑多波形表示基于这些NTF的序列。将首先描述可以考虑构建组块的NTF。随后将描述构建在这些NTF上的构造。图5示出了构建在NTF上的数据构造/对象的示例性层次关系,揭示了之前所述相位标签与NTF之间的关系。在单独描述数据构造之后将更详细研究图5。
表2标识了基于相位代数的RTL设计评估所采用的NTF。
表2:非确定性转换函数
表2的第一列是给予每个NTF的标记。表2的第一列中的标记是任意的。表2的第二列规定了至NTF的输入与NTF基于提供至NTF的输入所产生的输出之间的关系。至每个NTF的输入包括标注为wp的之前波形状态以及标注为mp的之前M函数状态。每个NTF的输出是标注为WN的可能下一个波形状态的集合。每个NTF规定了G函数的等于0或1的一个数值,如表2的第三列处所标注。表2的第四至第八列包括一个或多个相邻限制。相邻限制规定了如果NTF在时间t-1处出现,则基于在时间t-1处出现的NTF,在时间t处禁止某些NTF。例如,NTF FF在时间t处禁止,如果NTF在时间t-1处已经是F0或FL。此外,每个NTF与波形集合图符号相关联,如表2的第四至第八列所示,其可以根据在时间t-1的NTF而在时间t出现。例如,如表2的第一行所示,如果在时间t-1处领先F0的NTF是FG,则NTF F0在时间t处展现了在第六列中所示的波形集合图符号。然而,如果在时间t-1处领先F0的NTF是FF、FR、FS或FX,则F0的波形集合图符号被描绘在表2的第八列中。波形集合图符号示出了在时间t处可能的波形状态的集合,包括这些状态是否可以不同于由垂直线所示的时间t-1处的状态,这表现了在时间t处的转换或者可能的转换。这些NTF依次组合以形成遵守如上所限定的相邻限制的紧凑多波形表示。当贯穿设计传播紧凑多波形表示时,紧凑多波形表示分解为NTF以便于将合适的NTF运算符应用于构成的NTF上。
表3标识了NTF运算符。
表3:NTF运算符
NTF运算符对应于电路部件的操作(例如ntf_and)以及为了一致性采用的一些操作(例如ntf_fix_adjacent和ntf_is_subset)。可以采用查找法实施操作,因为基于由NTF表示的信号行为以及捕捉了转换行为的功能函数而构建查找表。表格3标识了八个NTF运算符。ntf_not运算符基于向反相器的输入提供的NTF来确定在反相器的输出处产生的NTF。ntf_and操作根据在与门的输入处提供的NTF而在与门输出处产生的NTF。ntf_xor运算符根据在异或门的输入处提供的NTF而在异或门输出处产生的NTF。ntf_trans_latch运算符基于在零延迟透明锁存器的输入处提供的NTF来确定在零延迟透明锁存器输出处的NTF。ntf_trans_latch_const运算符根据对应于至零延迟透明锁存器的恒定数据输入的第一NTF以及对应于至零延迟透明锁存器的时钟输入的第二NTF输入而确定在零延迟透明锁存器的输出处的NTF。ntf_unit_delay_range运算符基于至单位延迟部件的NTF输入来确定单位延迟部件的NTF输出。ntf_is_subset运算符确定了第一NTF是否是第二NTF的子集,如果第一NTF是第二NTF的子集则返回逻辑真的数值。ntf_fix_adjacent运算符当第二NTF即时跟随第一NTF时对于第二NTF返回等价但是有效的数值。因此,ntf_fix_adjacent运算符确保了观测与NTF相关联的相邻限制。表格3的第四列包括类似于之前的描述。表格3的第二列指示了可以采用以调用表格3的第一列中列出的对应运算符的示例性语法。表格3采用语法ntf_output=ntf_operator(ntf input1,ntf input2)以用于双输入运算符,以及ntf_output=ntf_operator(ntf input)以用于单输入。表格3的第三列指示了与表格3的第一列的每一个NTF运算符相关联的查找表。表格3的第三列的查找表指示了基于向表格3的第一列中列出的每个NTF运算符提供的NTF输入而产生的NTF输出。
图4A至图4B示出了示例性的NTF序列以及编码在序列中的信息。在该描述中,NTF的序列称作时控波形集合规范(CWSS)。图4A描绘了相对于虚拟时钟404A的NTF序列。虚拟时钟是由可以在被评估的电路设计外部的源所产生的时钟信号。三个时序参数限定了任何虚拟时钟:tP,表示时钟的周期,其是从任何上升沿至下一个上升沿的时间间隔;tD,表示时钟的占空比,其是从任何上升沿至下一个下降沿的时间间隔;以及tO,表示时钟的偏移,其是在时钟发起处最早的非负时间。每个CWSS由八个NTF构成。每个NTF与范围从0至7的数值相关联,称作CWSS时间片(slot)。CWSS时间片标识了CWSS内一个NTF。每个时间片与WSF内某时间相关联。表格4指示了虚拟时钟的时序参数如何与CWSS的构成NTF相关联。
表格4:虚拟时钟信息
特别地,表格4将如第一列中所示的每个CWSS时间片与在第三列中指示的虚拟时钟时序参数相关的时间的集合相关联,这接着与在第四列中指示的NTF和WSF相关。图4B示出了波形416C的集合图,其可以表示为CWSS 404C,由CWSS时间片408C构成,每个CWSS时间片408C对应于NTF 412C。在图4B中,符号tR涉及与CWSS相关联的虚拟时钟的上升沿的时间,其在该描述中也对应于CWSS的时间片1。符号tF涉及相同虚拟时钟的下降沿的时间,其也对应于该CWSS的第五时间片。
CWSS构造具有作为NTF运算符的抽象概念的运算符。表格5标识了CWSS运算符。
表格5:CWSS运算符
CWSS运算符对应于电路部件的操作(例如cwss_and)以及为了一致性采取的一些操作(例如cwss_is_subset)。如通过实施方式定义列所见,这些运算符依赖于算法(称作“单独算法”和“通用算法”)。这些算法包括用于构成了CWSS的每个NTF的NTF运算符。稍后讨论这些算法。存在九种CWSS运算符。这些包括cwss_not、cwss_and、cwss_xor、cwss_trans_latch、cwss_trans_latch、cwss_is_subset、以及cess_unit_delay,它们对应于副本NTF运算符但是执行对CWSS的操作。CWSS运算符cwss_fix_latch对应于NTF运算符ntf_fix_adjacent,但是用于与透明锁存器相关的特殊用途。CWSS运算符cwss_path_delay确定了由路径延迟组块产生的CWSS。表格5的第一列列出了CWSS运算符。表格5的第二列指示了示例性CWSS运算符语法。表格5的第四列描绘了每个CWSS运算符的功能。表格5的第三列涉及实施了九个CWSS运算符中的七个的算法。在一个实施例中,cwss_not运算符可以实施在for循环中,其通过CWSS的每一个时间片进行迭代,包括用于每个CWSS时间片的ntf_not运算符。因为CWSS的时间片对应于NTF,所以通常通过调用NTF运算符来实施CWSS运算符,从而操纵包括CWSS的八个NTF的每一个。cwss_unit_delay运算符通过表格5的第三列、第七行中列出的方程式来实施。
表格6标识了55种相位类型以及与CWSS和相位类型群组的关系。每个相位类型可以视作为构造(例如变量或符号),其表现如上所述的作为非特定虚拟时钟的函数的波形的集合。
表格6:相位类型
表格6的第一列是分配至每个相位类型的编号。分配的编号可以称作相位类型顺序号。相位类型的选择作为对电路部件(例如与门或反相器)建模的操作的结果,符合该相位类型的限定顺序。稍后所述的算法将返回参照该顺序。表格6的第二列包括分配至每个相位类型的示例符号。表格6的第三列指示了为了便于参考而分配至每个相位类型的名称。表格6的第四列包括示出了由相位类型指示的波形的集合的波形集合图。波形集合图是虚拟时钟的函数,该时钟如由表格6的第四列中的标记tR和tF所示,其分别指示了虚拟时钟的上升时间和下降时间,并且可以因此从一个虚拟时钟改变至另一个。因此,每个相位类型符号对应于波形集合图。因此,对相位类型执行的操作是对波形的集合执行的操作,每一个示出在表格6的第四列中。表格6的第五列指示了与每个相位类型相关联的CWSS。每个CWSS由八个NTF构成,其共同地表示表格6的第四列的波形集合图。第六列是分配至每个相位类型的群组名称,在本文中称作相位类型群组。
表格7标识了相位类型群组(PTGS)。
表格7:相位类型群组
相位类型群组表示一个或多个相位类型。例如,相位类型群组GCE表示两个相位类型的群组。相位类型群组可以用于在具有相同CWS的相位类型之间进行区分。基于相位类型的有意使用而将相位类型分配至相位类型群组。例如,实施某些相位类型以指示时钟信号,而实施其他相位类型以指示数据信号或者恒定数值信号。表格7的第一列指示了示例性标识符以指示每一个相位类型群组。表格7的第二列指示了作为每个相位类型群组的组元的相位类型。表格7的第三列提供了对每个相位类型群组的描述。
相位类型和相位类型群组的组合允许基于NTF以及布置在NTF上的相邻限制的多波形的紧凑表示。换言之,相位类型是CWSS的表示,并且相位类型群组允许过载CWSS。表格8和表格9标识了用于相位类型和相位类型群组的运算符。这些运算符包括之前定义的CWSS和NTF运算符。
表格8:相位类型运算符
表格8中包括的相位类型运算符对应于电路部件以及对应于NTF和CWSS运算符。相位类型运算符通过包括较低层次构造的运算符而对相位类型的较高层次构造进行操作。因为相位类型对应于波形的集合,所以相位类型运算符表现对波形集合的操作。在表格8中,在第一列中列出了七个示例性相位类型运算符:pt_not,pt_and,pt_xor,pt_latch,pt_flipflop,pt_unit_delay以及pt_path_delay。pt_not运算符根据相位类型输入确定反相器的相位类型输出。pt_and运算符根据至少两个相位类型输入而确定与门的相位类型输出。pt_xor运算符根据至少两个相位类型输入而确定XOR异或门的相位类型输出。pt_latch运算符根据时钟信号相位类型输入和数据信号相位类型输入而确定透明锁存器的相位类型输出。pt_flipflop运算符根据时钟信号相位类型输入和数据信号相位类型输入而确定触发器的相位类型输出。pt_unit_delay运算符根据相位类型输入而确定单位延迟的相位类型输出。pt_path_delay运算符根据相位类型输入而确定路径的相位类型输出。前述描述包括在表格8的第四列中,其也描绘了每个相位类型运算符的目的。表格8的第二列提供了用于相位类型运算符的示例语法。示例性的相位类型运算符语法如下:pt_y=pt_operator(pt_input)用于单输入相位类型运算符,而pt_y=pt_operator(pt_input1,pt_input2)用于双输入相位类型运算符。表格8的第三列包括用于实施相位类型运算符的伪代码。每个相位类型运算符调用被标识为first_matching_pt函数的函数,其依赖于表格6中相位类型的顺序。表格8中列出的相位类型运算符均由对于对应的CWSS运算符和相位类型群组运算符的调用构成。例如,pt_xor运算符调用了first_matching_pt函数。对于first_matching_pt函数的自变量包括CWSS运算符cwss_xor和相位类型运算符ptg_xor。对于cwss_xor运算符的自变量包括pt_to_cwss函数的运算符,对于每个相位类型输入调用。pt_to_cwss函数将相位类型转换为CWSS。对于ptg_xor运算符的自变量包括pt_to_ptg函数,对于每个相位类型输入调用。pt_to_ptg函数将相位类型转换为相位类型群组。这些转换基于表格6中标识的关系,其可以根据各个数据结构而编码。每种相位类型与CWSS和相位类型群组相关联。每个CWSS由NTF构成。每个NTF基于WSF,这接着表示多个波形。
表格9标识了相位类型群组运算符。
表格9:相位类型群组运算符
表格9由1列中示例性函数名称标识了五个相位类型群组运算符:ptg_not,ptg_and,ptg_xor,ptg_latch,和ptg_unit_delay。这些相位类型群组运算符对应于反相器、与门、异或门、透明锁存器、以及单位延迟电路部件。表格9的第二列指示了可以用于相位类型群组运算符的示例性语法。表格9的第二列中示出的相位类型群组运算符语法通常遵循在本文中所描述的其他语法。对于单输入相位类型群组运算符,语法是ptg_y=ptg_operator(ptg_input)。对于双输入相位类型群组运算符,语法是ptg_y=ptg_operator(ptg_input1,ptg_input2)。表格9的第三列是根据相位类型群组输入的集合而规定得到的相位类型群组输出的表格。这些表格类似于针对NTF运算符的表格3中规定的那些。
表格9中标识的相位类型群组运算符指示了在本文中称作元相位类型群组(元PTG)的可能的输出。元相位类型群组是相位类型群组的集聚。表格9中的相位类型群组运算符提供了三个元PTG的可能性。这些在此标注为GXC、GXL和GXT。表格10标识了每个元PTG的相位类型群组组元。元相位类型群组实施用以规定符合在本文中规定的规则的相位类型群组操作的结果。相位类型群组允许多个波形的紧凑表示,因为群组标识符可以用于消除映射至不同相位类型的非确定性信号转换表示的序列的歧义。
表格10:元相位类型群组
图5是示出了在数据构造之间的关系的示例性层次的概念图。取决于编程语言和特定文献,数据构造可以称作类、对象、结构等。该示例性数据构造500包括限定了类结构和类行为的数个元件或组元。该数据构造500的结构由以下组元限定:NTF 508,CWSS 516,相位类型群组520,元相位类型群组524,相位标签532,相位类型536,模式表达式540,模式独立相位表达式(MIPE)544,相位表达式548,传统MIPE配对的简化正交列表(ROLCMP)522,以及相位标识符556。数据构造500的行为由对于所示组元操作的函数或运算符限定:NTF运算符560,CWSS运算符564,相位类型群组运算符568,相位标签运算符572,相位类型运算符576,模式运算符580,MIPE运算符584,相位表达式运算符588,以及相位标识运算符592。后续附图提供了关于每个所示组元和运算符的额外的细节。
图5示出了作为支持NTF数据构造508的波形集合函数(WSF)504。WSF 504采用虚线表示,因为WSF 504可以不明确限定在数据构造中。NTF数据构造可以限定在类中,例如基于依赖于WSF并未明确指示从每个时间单位映射至NTF的假设。但是NTF数据构造508将表达了表格2中指出的定义。
CWSS 516是NTF 508的序列。与虚拟时钟512一起,CWSS 516限定了波形的集合528。虚拟时钟512也采用虚线示出,因为其可以不明确限定在数据构造中。用于虚拟时钟的信息(例如时序参数)可以由CWSS数据构造516假设或暗示。NTF运算符560操纵了包括CWSS516的范例的每个NTF 508,由此操纵了CWSS 516范例。
用户将相位标签532或相位表达式548施加至电路设计中的时钟发生器的主输入和输出。对于这些相位标签532或相位表达式548执行操作。当执行操作时,相位标签532或相位表达式548遍及设计传播,并且可以分析的得到的相位标签532或相位表达式548以标识可能的设计缺陷或特定的设计特性。通过之前所述的查找表转换在电路设计中时钟发生器的主输入和输出处接收的输入相位标签或输入相位表达式,相位标签532或相位表达式548遍及电路设计传播,以使得电路设计的每个输出网络包括相位标签532或相位表达式548。
相位类型536是相位标签532的一般化版本。当相位标签532可以与特定虚拟时钟512相关联时,相位类型536是表现波形的集合528的一般化表达式。如与其他变量类型一样,可以通过相位类型运算符576操纵相位类型536。相位类型536与时控的波形集合规范(CWSS)516和相位类型群组520相关联。
如前所述,多个相位类型536可以与相同的CWSS 516相关联。相位类型群组520区分了这些相位类型536,并且可以区分由相位类型536表示的信号的特性,诸如与数据信号相比的时钟信号。某些相位类型群组520可以是元相位类型群组524的构成元件。相位类型群组520和元相位类型群组524可以通过相位类型群组运算符568操纵。
相位标签532和相位表达式548自身由较低层次的数据构造(例如CWSS)构成,并且也可以转换为对其执行操作的不同数据构造。相位表达式548由零个或多个模式表达式540以及一个或多个MIPE544构成。
模式表达式540表现其中设计可以在多个模式之间操作的条件。在第一信号与不同于第一信号的第二信号之间选择模式。例如,设计可以包括双输入多路复用器。至多路复用器的第一输入可以是第一时钟信号,而至多路复用器的第二输入可以是与第一时钟信号异步的第二时钟信号。多路复用器可以接收选择器信号,使其在第一信号与第二信号之间选择。在该示例中,设计可以包括多于一个模式,其可以经由模式表达式540表示。可以通过模式运算符580对模式表达式540执行操作。
MIPE 540由一个或多个相位标签532构成。MIPE 540表现波形的集合528,其为由MIPE 544的构成相位标签532所表示的波形的集合528的函数。可以通过MIPE运算符584对MIPE 544执行操作。
相位表达式548可以转换为传统MIPE配对的简化正交列表552,标注为ROLCMP552。ROLCMP 552是使得相位表达式556转换为相位标识符556的数据构造。相位标识符556是与相位表达式548相关联的数值句柄,使得相位表达式548更易于操纵。该描述的后续部分描绘了将相位表达式548转换为ROLCMP 552,并且将ROLCMP 552转换为相位标识符556。
相位标签532经由CWSS表示波形的集合528。在一些情形中,相位标签532可以与虚拟时钟512相关联。依照语法,如果相位标签532与虚拟时钟512相关联,则相位标签将遵循包括虚拟时钟512的名称的语法。一个该语法可以表示为“Clock Name@Type ofClockSignal”。例如,相位标签532“A@L”指示与由虚拟时钟“A”的前沿相位时控的锁存器相关联的波形集合528。然而在其他情形中,相位标签532可以不与虚拟时钟512相关联。例如,相位标签“*”指示了所有可能波形的集合528。可以经由相位标签运算符572操纵相位标签532。相位标签运算符572实施对相位标签532的操作。可以采用相位标签532以区分信号的类型,诸如信号是否是时钟信号、数据信号(例如锁存器驱动信号)、或恒定常数;时钟的类型,诸如水平、脉冲或延迟时钟以及每种时钟的反相版本;以及数据的相位,例如前沿、后沿或组合。
如前所述,相位类型536是表现波形的集合528的一般化表达。例如,诸如“A@L”的相位标签532可以一般化为相位类型“C@L”,其表现与由任何时钟C时控的前沿相位时控锁存器相关联的波形的集合528。在一些情形中,相位标签532与相位类型536的概念合并。
如上所述,可以由等同的CWSS 516表示多于一个的相位类型536。相位类型群组520可以区分由等同的CWSS 516表示的相位类型536。相位类型群组520也可以实施用以区分信号的类别,诸如时钟信号、数据信号以及时钟和数据信号的组合。
相位表达式548可以由模式表达式540和MIPE 544构成。模式表达式540是采用模式作为其自变量的布尔函数。如上所述,模式是设计中的信号的数值的布尔函数。例如,如果设计包括双输入多路复用器,其中第一输入是第一时钟信号,而第二输入是第二时钟信号,并且至多路复用器的选择器信号使得多路复用器选择第一或第二时钟信号,则模式表达式540可以表示多路复用器输出的受限性-也即-其取决于在多路复用器处接收的选择器信号而为第一时钟信号或第二时钟信号。按照语法,模式表达式540可以被规定为
Backus-Naur形式:
<mode_expression>::=<mode_and_expression>|<mode_expression>"|"
<mode_and_expression>
<mode_and_expression>::=<mode_prefix_expression>|
<mode_and_expression>"&"<mode_prefix_expression>
<mode_prefix_expression>::=<mode_primary_expression>|"~"
<mode_prefix_expression>
<mode_primary_expression>::=<mode>|"0"|"1"|
"("mode_expression>")".
模式运算符580包括逻辑函数NOT、AND、OR和XOR,它们可以采用模式表达式540作为输入以产生已经经由逻辑函数之一的操作而操纵的输出模式表达式540。
MIPE 544是由单个相位标签532或多个相位标签532构成的字符串。特别地,多相位标签532MIPE 544是其中由转换联合运算符结合两个或多个相位标签532的表达式,采用符号^标注。MIPE 544表现波形的集合528,其为由构成相位标签532表示的波形的集合528的函数。具体地,MIPE 544表示所有波形的集合528,其仅在与由构成相位标签532所表示的波形的集合528中的波形的转换时间重合的时间具有转换。根据语法,MIPE 544可以表达为
Backus-Naur形式:
<mode_independent_phase_expression>::=<phase_tag>|
<mode_independent_phase_expression>"^"<phase_tag>.
例如,MIPE“A@L^B@L”意味着可以从时钟A或时钟B的前沿转换的波形的集合。MIPE运算符584允许对MIPES 544执行操作。
相位表达式548对其中至少一个电路部件接收第一时钟信号和第二时钟信号的设计的行为建模,其中第一时钟信号与第二时钟信号异步。此外,相位表达式548对其中至少一个电路部件能够选择第一信号或第二信号的设计的行为进行建模。
按照语法,相位表达式548可以表示为如下的Backus-Naur形式:
<phase_expression>::=<mode_independent_phase expression>|
<conditional_phase_expression>
<conditional_phase_expression>::=<mode_expression>“->”
<mode_independent_phase_expression>“:”<phase_expression>.
相位表达式548与相位表达式548所表示的波形的集合528之间的关系最好通过示例理解。考虑示例性的相位表达式548pe3=m->pe1:pe2,其中m是模式表达式540,pe1是MIPE 544,pe2是相位表达式548。相位表达式pe3规定的波形的集合是波形w3的集合,以使得对于pe1中的一些w1波形和pe2中一些w2波形,如果m在时间t处为真,则w3(t)=w1(t)。如果每个相位表达式548规定的波形集合528是相同的,则两个表达式548是相等的。在一些情形中,相位表达式548可以任选地表示为简化的正交形式。例如,如果满足四个条件,则相位表达式548pe=m_1->p_1:m2->p_2:…:p_k是简化正交形式:m_i模式表达式540是成双正交,意味着m_i&m_j=0,无论何时i不等于j;没有任何一个m_i模式表达式540是恒定为假的布尔函数,意味着不存在等于0的m_i;由m_k=~m_1&~m_2&.....&~m_{k-1}限定的模式表达式540不是恒定为假的布尔函数,意味着m_k不等于0;并且p_i MIPE 544相互不同。
这些表达式运算符588对相位表达式548实施数学操作(也即逻辑操作)。例如,相位表达式运算符388可以用于找到第一相位表达式548与第二相位表达式348的逻辑与(AND)。通常,相位表达式运算符588对相位表达式548执行操作。
两种数据类型可以用于提高采用相位表达式548执行计算的计算效率。一种该数据类型是相位标识符556。第二种该数据类型是条件-MIPE配对的简化正交列表(ROLCMP)552。相位标识符556是与相位表达式548相关联的唯一非负整数句柄。相互等价的相位表达式548可以分配至相同的相位标识符556。在一个实施例种,当遇到相位表达式548时,相位表达式548依次分配至相位标识符556。可以实施ROLCMP 552数据类型以将相位表达式548转换为相位标识符556,反之亦然。例如,rolcmp_to_id数据结构可以将每个相位表达式548的规范ROLCMP形式映射至分配至其的相位标识符556,并且时序外壳id_to_rolcmp可以存储规范的ROLCMP 552数据结构以用于每个之前遇到的相位表达式348,由相位标识符556索引。可以通过相位标识符运算符592对相位标识符556执行操作。
以下流程图和伪代码提供了采用紧凑多波形表达式操作的基于相位代数的设计工具的示例性操作。这些示例性操作将返回引用在之前表格中引入的运算符和数据构造。
图6是用于初始化基于相位代数评估的RTL电路设计表示以及遍及设计表示传播紧凑多波形表示的示例性操作的流程图。在步骤604处,在RTL电路设计表示的每个时钟发生器的每个主输入以及在每个输出处接收多个波形的表示。例如,相位标签或相位表达式与RTL电路设计表示的主输入相关联。在步骤608处,初始化RTL电路设计表达以准备RTL电路设计表示以接受传播的多波形表示。初始化标记了用于传播操作的网络。在步骤612处,针对从所接收到的多波形表示得到的RTL电路设计种每个网路而确定多波形表示。例如,施加运算符以基于在RTL电路设计表示中建模的各个电路部件而确定输出相位标签。在步骤616处,确定的多波形表示适用于评估RTL电路设计。
图7示出了与将要描述的示例性传播算法和伪代码相关联的术语。触发器708和路径延迟组块(PDB)716称作逻辑框。连接器704、712表示网络。逻辑框708、716也可以称作节点。连接器704是至触发器708的输入网络,并且连接器712(“网络A”)是从触发器708的输出网络并且也是至PDB 708的输入网络。传播算法确定了输出相位标识符,其将出现在网络A712处。PDB 716可以称作网络A 712的汇集逻辑框。在一个实施例中,可以建立源集合和更新集合。源集合和更新集合可以是存储了关于电路设计表达中每个逻辑框的状态的信息的数据结构。例如,源集合可以包括与输入多波形表示相关联、但是缺乏输出多波形表示的逻辑框。更新集合可以包括与输入多波形表示以及输出多波形表示相关联的逻辑框。
图8是用于针对相位代数的评估来初始化电路设计表示的示例性操作的流程图。在步骤804处,对于RTL电路设计表示中每个网络开始操作的循环。循环中的操作由步骤808、812、816、820和824表示。步骤828是对于循环终止条件的检查。在步骤808处,确定多波形表示是否已经分配至网络。如果多波形表示并未已经分配至网络,流程进至步骤812。否则,流程进至步骤824。在步骤812处,确定网络是否表示电路输入或者时钟发生器输出。如果网络表示电路输入或者时钟发生器输出,则流程进至步骤816。否则,流程进至步骤820。在步骤816处,空指示分配至网络,并且流程进至步骤824。在步骤824处,与网络相关联的每个汇集节点添加至待处理的汇集节点的集合。在步骤820处,未知的指示分配至网络。流程进至步骤828。在步骤828处,确定电路设计表示中是否存在任何额外的网络。如果在电路设计表示中存在额外的网络,则流程返回至步骤804。否则,流程进至步骤832。在步骤832,产生了初始化完成的指示。
以下所述的示例性初始化和传播操作涉及三个示例性数据对象:1)source_set,2)update_set,和3)phase_expr_conflicts。source_set可以指示尚未通过传播算法的当前迭代处理的网表的节点。
update_set可以指示将要由传播算法的下一迭代处理的网表的节点。当来自source_set的节点通过传播算法处理时,这些节点从source_set移除,而其他节点可以移入update_set中。
phase_expr_conflicts指示与错误相关联的信息,例如由不一致指示的相位属性所引起。
以下是用于初始化用于基于相位代数评估的RTL电路设计的示例性伪代码。术语汇集逻辑框涉及具有连接至给定网络的输入管脚的网表的节点。执行初始化算法,直至初始化算法已经迭代了网表中所有网络。如果网络已经接收了相位表达式,则初始化算法将相位表达式转换为相位标识符,将相位标识符分配至网络,并且将与网络相关联的每一个汇集逻辑框分配至source_set。否则,如果网络是至网表的主输入或者网络与时钟发生器的输出相关联,则相位标识符对应于与网络相关联的空相位标记<>,并且附属于网络的汇集逻辑框存储在source_set中。因为网表的每个主输入或者时钟发生器的每个输出预期已经分配了相位表达式,算法的该方面说明用户省略的可能性。最终,如果没有相位表达式已经分配至网络,则未知的相位标签“-”分配至网络。
如前所述,较高层次的数据构造(例如相位标签)分解为较低层次的数据构造(例如NTF)以便于应用在电路设计表达中建模的电路部件的操作。这些操作通常产生了NTF的序列或CWSS,其被转换回相位类型,以便于传播以继续或者确定输出与用于稍后缺陷分析的网络相关联。图9是用于基于非确定性转换表示的输入序列而确定输出多波形表示的示例性操作的流程图。在步骤904处,接收非确定性转换表示的输入序列以及用于输入序列的相位类型群组标识符。在步骤908处,选择在有序的相位类型结构中的第一入口,将相位类型与相位类型群组相关联。在步骤912处,确定入口的相位类型群组是否与接收到的相位类型群组标识符匹配。如果前述为逻辑假,则流程进至步骤920。否则,流程进至步骤916。在步骤920处,选择有序相位类型结构中的下一个入口,并且流程返回至步骤912。在步骤916处,确定与入口的相位类型相关联的非确定性转换表示的序列。流程从步骤916进至步骤924。在步骤924处,确定输入序列是否是相位类型序列的子集。如果前述为逻辑假,则流程返回至步骤920。否则,流程进至步骤928。在步骤928处,返回在入口中指示的相位类型。实施例可以利用额外的逻辑构造以用于基于各个群组的分析。例如,额外的逻辑构造可以用于与某些相位类型群组分组在一起。以下伪代码采用了该构造并将其称作元相位类型群组。
以下是确定了基于接收到的输入CWSS和接收到的输入相位标签群组或元相位标签群组而确定输出相位类型的示例性伪代码。相位类型输出伪代码实施了称作first_matching_pt函数的函数。
first_matching_pt函数通过在相位类型顺序编号中的相位类型的表格进行迭代。当first_matching_pt函数通过相位类型列表进行迭代时,first_matching_pt函数调用了称作pt_to_ptg函数的函数。pt_to_ptg函数采用相位类型作为输入,并且返回了与相位类型相关联的相位类型群组作为输出。对于每个相位类型,first_matching_pt函数检查由pt_to_ptg函数返回的相位类型群组是否等于输入相位类型群组,或者是否是输入元相位类型群组的组元。此外,first_matching_pt函数检查输入CWSS是否是在相位类型表格中与相位类型相关联的CWSS的子集,调用了称作pt_to_cwss(pt)的函数。pt_to_cwss函数采取了相位类型作为输入,并且将与相位类型相关联的CWSS返回作为输出。如果前述两个条件满足,则返回相位类型作为输出。相位类型运算符调用first_matching_pt函数。
图10是用于在初始化RTL电路设计表示之后传播多波形表示的示例性操作的流程图。在步骤1004处,如上所述初始化电路设计表示。在一些情形中,初始化算法经由phase_expr_to_id函数将所有相位表达式转换为相位标识符。在步骤1008处,检查源集合以确定其是否为空集。如果源集合为空集,则完成了传播过程,并且流程进至步骤1036。在步骤1036处,检查应用于贯穿设计传播而得到的多波形表示。检查算法使用所产生的相位标识符以标识与设计相关联的特定特征,其中一些可以是潜在的缺陷。如果源集合在步骤1008处不是空集,流程进至步骤1012。
在步骤1012处,输入多波形表示传播通过源集合中的下一个逻辑框,并且从源集合移除已处理的逻辑框。例如,输入相位标识符用于在查找表中搜索结果相位标识符。如果在查找表中找到结果相位标识符,则返回了结果相位标识符,并且过程进至步骤1016。所访问存取的特定的查找表将取决于相位标识符以及由逻辑框表示的操作(例如逻辑与AND、逻辑或OR等)而改变。更多细节由图11和图12提供。图11展示了用于特定逻辑的示例性操作,而图12展示了用于增强相邻限制的示例性操作。然而,如果在查找表中未找到结果相位标识符,则输入相位标识符根据相位标识符查找算法而转换为ROLCMP。随后可以对ROLCMP执行操作。可以从ROLCMP操作得到相位表达式。相位表达式可以转换为相位标识符。过程进至步骤1016。
在步骤1016处,从步骤1012得到的多波形表示与当前与已处理逻辑框的输出网络相关联的多波形表示作比较。如果得到的多波形表示不同于当前多波形表示,流程进至步骤1020。否则,过程进至步骤1028。
在步骤1020处,从步骤1012得到的多波形表示分配至与已处理逻辑框相关联的输出网络。在步骤1024处,网络的汇集逻辑框放置在更新集合中。
在步骤1028处,检查源集合以确定其是否为空集。如果源集合不是空集,则流程再次进至步骤1012,在此处多波形表示传播通过源集合中的下一个逻辑框,并且流程继续。否则,流程进至步骤1032。在步骤1032处,采用更新集合的内容改写源集合。流程进至步骤1008。
以下是用于传播算法的示例性伪代码。伪代码迭代直至source_set为空集。在一次迭代内,传播算法清除update_set。传播算法中引用的术语“逻辑框”意味着连接至输入和输出网络的、网表中的节点。对于源集合类中每个逻辑框以及对于连接至该逻辑框的输出的每个网络,传播伪代码评估对应于由逻辑框表示的电路部件的相位标识符运算符,产生了确定的相位标识符,在传播伪代码中其称作new_phase_id。传播伪代码确定分配至每个逻辑框的输出网络的所确定的相位标识符是否不同于之前分配至网络的相位标识符。如果确定的相位标识符不同于之前分配至网络的相位标识符,则伪代码检查以确定网络是否除外对应于空相位类型的“<>”或者未知相位类型的“-”之外给定了初始数值。如果网络除了与相位类型<>或-相关联的之外已经给出了初始数值,则传播伪代码在phase_expr_confict_set中存储计算得到的数值。否则,传播伪代码将所确定的相位标识符分配至输出网络,并且将与输出网络相关联的每个汇集逻辑框存储至update_set。在迭代的末尾,传播伪代码采用存储在update_set中的逻辑框重写source_set。因此,source_set随后包括逻辑框,其输入网络利用最近计算的相位标识符更新。
图11和图12是用于将基于电路部件的操作应用于信号转换表示的序列的示例性操作的流程图。例如,工具应用用于与门部件的操作,用于异或门部件的操作等等。基于部件的运算符的示例包括CWSS运算符cwss_and,cwss_xor,cwss_trans_latch,和cwss_trans_latch_const。当工具分析了电路设计表示的每一个电路部件表示时,工具调用对应于电路部件表示的程序代码。当调用了程序代码时,操作开始于步骤1108。
在步骤1108处,对应于电路部件表示的操作应用于电路部件表示的每一个输入网络的信号转换表示的每一个序列的第一信号转换表示。应用对应于部件的操作的结果分配至输出序列的第一时间片。例如,如果电路部件是与门,可以调用NTF运算符ntf_and。ntf_and运算符接收与作为与门的输入网络的输入的每一个CWSS的第一时间片相关联的第一NTF和第二NTF。应用前述的结果可以分配至输出序列的第一时间片。例如,应用ntf_and和运算符至与每个输入CWSS相关联的第一NTF得到的结果可以应用于输出CWSS序列的第一时间片。流程进至步骤1112。
在步骤1112处,通过每个输入网络的每个序列的每个后续信号转换表示进行迭代的过程开始。
在步骤1116处,操作应用于信号转换表示以产生结果。例如并且继续与门的示例,过程通过施加至与门的每个输入CWSS的第二至第八个时间片进行迭代,调用了ntf_and运算符。流程进至步骤1120。
在步骤1120处,以相邻限制验证步骤1116的结果。例如,可以验证每个输出NTF以确认该输出NTF遵循NTF相邻限制。如果其不遵循,则调整NTF。
在步骤1124处,验证的结果分配至输出序列的下一个时间片。例如,验证的输出NTF可以分配至合适的输出CWSS时间片。
在步骤1128处,确定是否存在额外的后续信号转换表示待处理。如果仍有额外的后续信号转换表示,则过程返回至步骤1112。
否则,流程进至图12中的步骤1201。在步骤1201处,以相邻限制验证输出序列的第一元件和最后元件。流程进至步骤1203。
在步骤1203处,验证的结果分配至验证变量,并且索引X设置等于0。索引X用于传播通过输出序列的每一个元件。
在步骤1205处,确定验证变量是否等于对应于索引X的位置的输出序列的元件。如果验证变量等于对应于索引X的位置的输出序列的元件,则流程进至步骤1219,在此指示了输出序列。否则,流程进至步骤1207。
在步骤1207处,验证变量分配至对应于索引X的位置的输出序列的元件。流程进至步骤1209。
在步骤1209处,索引X递增。流程进至步骤1211。
在步骤1211处,通过测试X是否等于时间片的编号而确定索引是否已经达到输出序列的末尾。如果前述是逻辑真,则流程进至步骤1219,在此指示了输出序列。否则,流程进至步骤1213。
在步骤1213处,验证变量以及对应于索引X的位置的输出序列的时间片采用相邻限制而验证。流程进至步骤1215。
在步骤1215处,验证结果分配至验证变量。流程从步骤1215返回至步骤1205。
通过操作输入CWSS的每个NTF、利用CWSS由NTF构成的特性,除了对应于cwss_is_subst之外的每个CWSS示例伪代码产生了输出CWSS,并且对应于cwss_is_subset的伪代码产生了布尔结果。因此,CWSS伪代码调用了NTF运算符,转换包括CWSS的每一个NTF以产生输出CWSS。在全部所提供的示例性伪代码中,符号“==”意味着“等于”,并且符号“!=”意味着“不等于”。如下所述称作cwss_bias_operator的CWSS伪代码是实施了CWSS运算符cwss_and,cwss_xor,cwss_trans_latch,和cwss_trans_latch_const的通用算法。CWSS伪代码cwss_bias_operator对于标注为cwss_a[0]和cwss_b[0]的两个输入CWSS时间片应用了对应于所需CWSS操作的NTF操作,在伪代码中标注为ntf_op_function。CWSS时间片cwss_a[0]和cwss_b[0]对应于NTF。cwss_basic_operator伪代码通过从范围1至7的每个时间片进行迭代,将ntf_fix_adjacent运算符应用至紧贴在前的标注为cwss_y[i-1]的CWSS时间片,以及将对应于所需CWSS运算符的NTF运算符应用至标注为cwss_a[i]和cwss_b[i]的每一个CWSS的时间片的结果。ntf_fix_adjacent运算符确保了可应用于NTF的相邻限制满足。cwss_basic_operator伪代码确定了将ntf_fix_adjacent运算符应用于已计算的CWSS的第一和最后CWSS时间片的结果,将确定的结果存储在标注为fixed_ntf的变量中。cwss_basic_operator伪代码通过将其设置等于0而重置了迭代次数。cwss_basic_operator伪代码将计算得到的CWSS中每个时间片设置等于变量fixed_ntf,以只要在计算得到的CWSS中任何时间片不等于变量fixed_ntf的数值,迭代次数每次递增。如果迭代次数等于8(意味着已经对于CWSS中每个时间片执行了计算),则cwss_basic_operator伪代码结束。否则,cwss_basic_operator伪代码对于计算得到的NTF中每个时间片以及对于变量fixed_ntf计算ntf_fix_adjacent的结果,将计算的结果存储在变量fixed_ntf中。
图13是用于实施cwss_fix_latch运算符的示例性操作的流程图。在步骤1304处,之前的变量设置至信号转换表示的第一输入序列的最后一个时间片。
在步骤1308处,控制组块通过序列的每个时间片进行迭代。
在步骤1312处,确定当前时间片是否不是中间时间片或最后时间片。如果当前时间片既不是中间时间片又不是最后时间片,流程进至步骤1316。否则,流程进至步骤1324。
在步骤1316处,确定第一序列的当前时间片是否指示了完全非确定信号的表示。如果前述为逻辑真,则流程进至步骤1320。否则,流程进至步骤1324。
在步骤1320处,确定第一输入序列的下一个时间片是否指示了稳定信号的表示。如果前述为逻辑真,则流程进至步骤1328。否则,流程进至步骤1324。
在步骤1328处,确定之前变量是否指示了无毛刺的信号的表示。如果前述为逻辑真,则流程进至步骤1324。否则,流程进至步骤1332。
在步骤1324处,设置输出序列的当前时间片以指示第一输入序列的当前时间片。
如果确定了之前变量并未指示无毛刺的信号,则设置输出序列的当前时间片以在步骤1332处指示无毛刺的信号的表示。从步骤1324或者步骤1332,流程进至步骤1325。
在步骤1325处,设置之前变量以指示第一输入序列的当前时间片,并且当前时间片更新为下一个时间片。控制从步骤1325进至步骤1326。
在步骤1336处,确定是否存在额外的时间片。如果不存在额外的时间片,则流程进至步骤1340,并且指示了输出序列。否则,流程返回至步骤1308。
称作cwss_fix_latch的伪代码是用于CWSS运算符cwss_fix_latch的示例。cwss_fix_latch伪代码将标注为cwss_a[7]的CWSS中的最后一个NTF存储在标注为ntf_prev的变量中。伪代码通过CWSS中每一个时间片进行迭代。伪代码检查是否满足五个条件:1)迭代次数不等于三,2)迭代次数不等于7,3)在CWSS时间片处NTF等于NTF FX,在后续CWSS时间片处NTF等于NTF FS,并且变量ntf_prev的数值不等于NTF FG。如果前述条件满足,则CWSS时间片设置等于NTF FG。否则,CWSS时间片简单的等于原始CWSS时间片的数值。变量ntf_prev随后设置等于CWSS时间片。
图14是用于实施cwss_path_delay运算符的示例性操作的流程图。在步骤1404处,设置延迟变量以指示稳定的信号表示。流程进至步骤1408。
在步骤1408处,控制步骤开始以通过信号转换表示的序列中每一个时间片进行迭代。
在步骤1410处,确定多波形表达式是否指示了前沿相位时钟。如果前述为逻辑假,则流程进至步骤1412。否则,控制流程进至步骤1416。
在步骤1412处,变量J设置为(I+((时间片的总数目))2)以时间片的总数目为模的结果。I是迭代次数变量,其参考引用了序列的时间片。
如果在步骤1410处确定多波形表达式并未指示前沿相位时钟,则变量J设置等于在步骤1416处的迭代次数I。
在步骤1420处,确定I是否等于零。如果I等于零,则流程进至步骤1428。在步骤1428处,输出序列的第J个时间片设置等于第一输入序列的第J个时间片。
在步骤1424处,确定输入序列的第J个时间片是否规定了由延迟变量所规定的波形转换的子集。如果前述为逻辑真,则流程进至步骤1436。否则,控制流程进至步骤1432。
在步骤1432处,设置延迟变量以指示在第一输入序列的第J个时间片处指示的表示。流程进至步骤1436。
在步骤1436处,输出序列的第J个时间片设置等于延迟变量。
在步骤1440处,确定是否存在额外的时间片。如果存在额外的时间片,则流程返回至步骤1408。否则,流程进至步骤1444以指示输出序列。
称作cwss_patch_delay的CWSS伪代码是CWSS运算符cwss_pach_delay的示例。伪代码设置标注为delay_ntf的等于NTF FS的变量。伪代码通过CWSS中每个时间片进行迭代。如果类型自变量指示了前沿时钟,则标注为i的迭代次数存储在标注为j的变量中。否则,采用数目4逐位对迭代次数i进行异或逻辑,并且存储在变量j中。如果迭代次数i等于0,则得到的CWSS的第i个时间片替换为原始CWSS的第j个时间片。否则,通过应用ntf_is_subset运算符,伪代码确定与CWSS时间片a[j]相关联的NTF是否是变量delay_ntf的子集。如果CWSS时间片不是子集,则在变量delay_ntf中存储时间片。随后由在变量delay_ntf中的数值改写CWSS时间片。
图15A至图15B示出了用于实施cwss_is_subset运算符的示例性操作的流程图。在步骤1501处,确定在信号转换表示的输入序列中的最后一个时间片是否指示了无毛刺的信号。如果前述是逻辑假,则流程进至步骤1505。否则,控制流程进至步骤1503。
在步骤1505处,无毛刺范围变量设置为标注为OUT的数值,其指示了迭代次数在时间片的范围之外,其中信号转换表示的第一输入序列与信号转换表示的第二序列均指示了对应时间片中无毛刺的范围变量。
在步骤1501处,如果确定了在信号转换表示的输入序列中最后时间片均指示了无毛刺的信号,则流程进至步骤1503。
在步骤1503处,无毛刺的范围变量设置为标注MATCH的数值,其指示了信号转换表示的第一序列和信号转换表示的第二序列均指示了对应时间片中的无毛刺的信号。流程进至步骤1507。
步骤1507是控制步骤,其开始了通过信号转换表示的第一和第二序列的每一个时间片进行迭代的操作循环。
在步骤1509处,确定由第一输入序列的当前时间片的信号转换表示所表示的波形是否是由第二输入序列的当前时间片的信号转换表示所表示的波形的子集。如果前述结果为逻辑假,则流程进至步骤1513,在此返回了逻辑假的数值。相反地,如果步骤1509评估为逻辑真,则流程进至步骤1515。
在步骤1515处,确定无毛刺的范围变量是否设置为OUT的数值。如果前述为逻辑真,则流程进至步骤1517。否则,流程进至步骤1536。
在步骤1517处,确定两个输入序列中当前时间片是否指示了无毛刺的信号。如果前述是逻辑真,则流程进至步骤1519,此处无毛刺的范围变量设置为MATCH的数值,并且流程进至步骤1521,在该步骤处确定是否仍有待处理的额外时间片。否则,流程进至步骤1521。
在步骤1536处,确定在第二输入序列中的当前时间片是否并未指示无毛刺的信号。如果前述为逻辑真,则流程进至步骤1538。否则,流程进至步骤1540。
在步骤1538处,无毛刺的范围变量设置为OUT的数值,并且流程进至步骤1521。在步骤1521处,确定是否仍然有额外的时间片。如果有额外的时间片,则过程返回至步骤1507。否则,流程进至步骤1523,在此处返回了逻辑真的数值。
在步骤1540处,确定在第一输入序列中的当前时间片是否并未指示无毛刺的信号。如果前述是逻辑真,则流程进至步骤1544。否则,流程进至步骤1542。在步骤1544处,无毛刺的范围变量设置为SUB的数值。数值SUB指示了,在其中信号转换表示的第一输入序列和信号转换表示的第二输入序列均初始地包含无毛刺的信号的时间片范围内,存在其中仅信号转换表示的第二输入序列包含无毛刺的信号的子范围。如果步骤1540处的陈述评估为逻辑假,则流程进至步骤1542。
在步骤1542处,确定无毛刺的范围变量是否指示了SUB的数值。如果前述为逻辑真,则在步骤1546处返回逻辑假的数值。否则,流程进至步骤1521。
称作cwss_is_sbuset的伪代码实施了CWSS运算符cwss_is_sbuset,运算符确定了第一CWSS是否是第二CWSS的子集。伪代码引入了变量fg_range_state,其可以假设标注为MATCH、OUT、或SUB的三个数值的一个。数值MATCH指示了第一CWSS和第二CWSS均包含在对应的时间片中的FG。数值OUT指示了迭代次数在时间片的范围之外,其中第一CWSS和第二CWSS均包含在对应的时间片中的FG。数值SUB指示了在以均包含FG的第一CWS和第二CWSS开始的时间片的范围内,存在其中仅第二CWSS包含FG的子范围。包含FG的时间片的范围用于规定在与CWSS相关联的时间片相关联的时间范围期间不包含毛刺的波形的集合。对于作为第二CWSS子集的第一CWSS,第一CWSS无需包含在对于第二CWSS包含FG的单个范围的时间片中FG的多个不相交范围,因为这将允许有第一CWSS表示的波形在对应的时间范围期间具有多个转换,这些波形排除在由第二CWSS表示的波形的集合之外,这允许了在对应的时间范围期间至多一个转换。伪代码确定了在第一CWSS和第二CWSS中的最后时间片是否等于NTF FG。如果前述条件满足,则伪代码在变量fg_range_state中存储了数值MATCH。否则,伪代码在变量fg_range_state中存储数值OUT。伪代码迭代遍历了每个CWSS中的每个时间片,通过应用ntf_is_subset运算符,确定第一CWSS的每个NTF是否是第二CWSS的对应NTF的子集。如果第一CWSS中的任何NTF不是第二CWSS的对应NTF的子集,则伪代码返回假。否则,伪代码确定变量fg_range_state是否等于数值OT。如果变量fg_range_state等于数值OUT,则伪代码检查第一CWSS和第二CWSS的每个NTF是否等于NTF FG。如果前述是逻辑真,则fg_range_state的数值设置等于MATCH。如果变量fg_range_state不等于OUT,伪代码检查第二CWSS中任何NTF的数值是否不等于FG,在该情形中fg_range_state设置等于OUT。否则,伪代码确定在第一CWSS中的NTF不等于FG。如果前述为逻辑真,则fg_range_state设置等于SUB。否则,如果变量fg_range_state等于SUB,随后伪代码范围逻辑假。
26Return true
图16至图24是采用示例性相位标签的电路设计评估的概念说明。图16示出了示例性设计的拓扑结构。设计包括两个时钟信号1602、1606,其是至设计的主输入。时钟信号1602、1606可以由分别称作CLKA和CLKB的外部时钟产生。设计包括三个触发器1622、1626和1642。每个触发器1622、1626和1642由如插图中所示的两个透明锁存器与反相器1646构成。设计包括两个路径延迟组块1630、1634以对信号传播延迟建模。设计也包括与门1638。设计可以提供至通用计算机作为输入。例如,在一个实施例中,类似图16中所示的示意框图可以提供作为至实施了本公开的计算机程序的图形用户界面的输入。可以配置通用计算机以将示意框图转换为网表。网表的节点对应于电路部件1602-1642。网表的网络对应于信号1610-1666。在一个实施例中,用户可以在1610、1618和1674处将相位标签作为主输入提供至执行了本公开的软件实施例的通用计算机。
图17示出了在应用初始化算法之后的设计。实施了初始化算法的计算机程序可以将相位标签“-”分配至网络1704、1708、1712、1716、1720、1724。实施了初始化算法的计算机程序也可以举例说明了源集合1728和更新集合1732。计算机程序可以采用对应于触发器1736、1740、1744的逻辑框1736、1740和1744增殖源集合。源集合中的逻辑框是网络的汇聚逻辑框,为此根据初始化算法提供了相位标签。计算机程序可以采用空集增值更新集合1732。
图18示出了在执行传播算法的一次迭代之后的设计。在图16中,相位标签提供用于至通用计算机的电路设计的主输入。相位标签是相位表达式的子集。因此,传播过程开始于应用相位标签运算符。因为与逻辑框1836相关联的电路部件是触发器,在一个实施例中,调用了触发器相位标签运算符。触发器相位标签运算符采取两个相位标签输入,“A@L”和“A”。与触发器相关联的相位标签运算符调用了与触发器相关联的相位类型运算符。与触发器相关联的相位类型运算符pt_flipflop调用了与锁存器相关联的相位类型运算符pt_latch。与锁存器相关联的相位类型运算符调用了相位类型群组运算符和CWSS运算符,,每一个均与锁存器相关联。相位类型运算符调用了第一匹配相位类型算法,向第一匹配相位类型算法传递了相位类型群组运算符和CWSS运算符的结果。与锁存器相关联的CWSS运算符调用了与CWSS相关联的NTF运算符。前述操作的结果是在与触发器相关联的输出网络1804处的相位标签“A@LPGF”。传播算法随后将输出网络的汇集逻辑框PDB1放入更新集合中,从源集合1828移除了触发器1836。
图19示出了传播算法的第二次迭代。如图19所示以及在一个实施方式中,实施了传播算法的通用计算机施加传播算法至触发器1940。因此,执行与图18所述相同的操作。实施了本公开中所述算法的计算机程序使得通用计算机从源集合移除了触发器1940、以及将PDB2 1948放入更新集合1932中,因为PDB2 1948是与输出网络1908相关联的汇集逻辑框。因此,源集合1928包括一个元件,触发器1944,如图19所示。
图20示出了传播算法的第三次迭代。传播算法更新了在触发器2044的输出网络处的数值,源集合中的最后元件。前述的结果是在输出网络2024处示出的相位类型。如在2060处所示,触发器2044从源集合移除,因为已经计算了如在输出网络2024处示出的输出相位类型以用于与触发器2044相关联的输出网络2024。检查源集合2028以确定源集合2028是否为空集。因为源集合2028是空集,更新集合2032移动至如在2064处所示的源集合,并且清除了更新集合2056。确定源集合是否现在为空集。
图21示出了传播算法的第四次迭代。传播算法在输出网络2108的PDB1 2104处更新数值。如之前附图所述,传播算法采用那个与PDB电路部件相关联的运算符在输出网络2108处产生数值。最初,源集合2120和更新集合2124如在2116处所示。然而,在产生了输出相位类型之后,传播算法从源集合2132移除了PDB1 2104,并且包括在更新集合2136中的与门2112,因为与门2112是输出网络2108的汇集逻辑框。因为源集合并非空集,传播算法继续至第五次迭代。
图22示出了传播算法的第五次迭代。传播算法允许与如图21中所述的类似的操作,在PDB2 2204的输出网络处产生输出相位标签。在第五次迭代之前,源集合2216和更新集合2220包括了在2212处所示的内容。在第五次迭代完成之后,如在2224处所示从源集合2216移除PDB2。在步骤2228处,源集合是空集。因此,更新集合移动至源集合,导致在2236处所述的内容,源集合2240包含了与门2248,并且更新集合2244包含空集。
图23示出了传播算法的第六次迭代。传播算法施加至与门电路部件2304。因此,调用的运算符与与门电路部件2304相关联。通过应用传播算法,在与门2304的输出网络2306处确定输出相位标签。在开始第六次迭代之前,源集合2312和更新集合2316如在2308处所示。在第六次迭代结束之后,源集合2324和更新集合2328如在2320处所示。更新集合随后重写为源集合并且示出在2332处。
图24示出了传播算法的第七次迭代。传播算法施加至触发器2408,并且触发器2408从源集合移除。得到的相位表达式等同于当前分配至触发器2408的输出网络2410的相位表达式。更新集合相对于之前的迭代没有改变;因此,更新集合保持为空集。更新集合移动至源集合,如在2424处所示。因为源集合是空集,传播算法一就能够完成了其任务,并且流程进至检查算法。
如本领域技术人员将要知晓的,本公开的特征方面可以实施作为系统、方法或计算机程序产品。因此,本发明主题的方面可以采取完全硬件实施例、软件实施例(包括固件、驻留软件、微代码等等)或组合了软件和硬件特征方面的实施例的形式,通常均可以在本文中称作“电路”、“模块”或“系统”。此外,本发明主题的特征方面可以采取实施在具有实施于其上的计算机可读程序代码的一个或多个计算机可读媒介中的计算机程序产品的形式。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使得处理器执行本发明特征方面的计算机可读程度指令的计算机可读存储媒介(或媒体)。
计算机可读存储媒介可以是有形装置,其可以保留并且存储由指令执行装置所使用的指令。计算机可读存储媒介可以是例如但不限于,电子存储装置,磁性存储装置,光学存储装置,电磁存储装置,半导体存储装置,或者前述的任意合适的组合。计算机可读存储媒介的多个具体示例的非穷举列表包括以下:便携式计算机软盘,硬盘,随机访问存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存),静态随机访问存储器(SRAM),便携式小型盘只读存储器(CD-ROM),数字通用盘(DVD),存储棒,软盘,诸如穿孔卡片的机械编码的装置,或者其上具有记录的指令的沟槽中的凸起结构,以及前述的任意合适的组合。如在此使用的计算机可读存储媒介不应构造为本质上是临时信号,诸如无线电波或其他自由传播的电磁波,传播通过波导或其他传输媒介的电磁波(例如穿过光纤光缆的光脉冲),或者通过引线发射的电信号。
在本文中所描述的计算机可读程序指令可以从计算机可读存储媒介下载至各自的计算/处理装置,或者经由例如互联网、局域网、广域网和/或无线网络的网络而下载至外部计算机或外部存储装置。网络可以包括铜传输电缆,光传输纤维,无线传输,路由器,防火墙,接线器,网间连接计算机和/或边沿服务器。每个计算/处理装置中的网络适配卡或网络接口从网络接收计算机可读程序指令,并且向前传播计算机可读程序指令以用于存储在各自计算/处理装置内的计算机可读存储媒介中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集体系架构(ISA)指令,机器指令,机器相关指令,微代码,固件指令,状态设置数据,或者以一个或多个编程语言的任何组合编写的源代码或者目标代码,包括诸如Java、Smalltalk、C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的传统过程编程语言。计算机可读程序指令可以完全执行在用户的计算机上,部分地执行在用户的计算机上,作为独立软件封装,部分地执行在用户的计算机上,以及部分地执行在远程计算机上,或者完全执行在远程计算机或服务器上。在后者情形中,远程计算机可以通过任何网络连接至用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以做出连接至外部计算机(例如通过使用互联网服务提供商的互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令以个性化电子电路而执行计算机可读程序指令,以便于执行本发明的特征方面。
在此参照根据本发明实施例的流程图说明和/或方法的框图、设备(系统)和计算机程序产品描绘了本发明的特征方面。应该理解的是,可以由计算机可读程序指令实施流程图说明和/或框图的每个步骤,以及流程图说明和/或框图中步骤的组合。
这些计算机可读程序指令可以提供至通用计算机、专用计算机的处理器或其他可编程数据处理设备以产生机器,以使得经由计算机的处理器或其他可编程数据处理设备执行的指令形成了用于实施在流程图中规定的功能/动作或者框图步骤的机制。这些计算机可读程序指令也可以存储在计算机可读存储媒介中,其可以引导计算机、可编程数据处理设备和/或其他装置以特定方式实现功能,以使得具有存储其中的指令的计算机可读存储媒介包括制造商品,包括实施了在流程图中规定的功能/动作和/或框图步骤的特征方面的指令。
计算机可读程序指令也可以载入计算机、其他可编程数据处理设备或其他装置之上,以引起将要在计算机、其他可编程设备或其他装置上执行的一系列操作以产生计算机实施的过程,以使得在计算机、其他可编程设备或其他装置上执行的指令实施了在流程图中规定的功能/动作和/或框图步骤。
附图中的流程图和框图示出了根据本发明各个实施例的系统、方法和计算机程序产品的可能实施方式的体系架构、功能和操作。在这点上,流程图或框图中的每个步骤可以代表模块、区段或一部分指令,其包括用于实施具体逻辑功能的一个或多个可执行指令。在一些备选实施方式中,步骤中标注的功能可以以图中所示不同的顺序发生。例如,连续示出的两个步骤可以实际上基本上同时执行,或者步骤可以有时以相反顺序执行,取决于所包括的功能。也应该注意的是,框图和/或流程图的每个步骤、以及框图和/或流程图中步骤的组合可以由执行了具体功能或动作、或者执行了专用硬件和计算机指令的组合的专用基于硬件的系统实施。
图25示出了示例性的基于计算机系统紧凑多波形的电路设计评估器。计算机系统包括处理器单元2504(可能包括多个处理器,多个内核,多个节点,和/或实施了多个线程等等)。计算机系统包括存储器单元2508。存储器单元2508可以是系统存储器(例如高速缓存、SRAM、DRAM、零电容器RAM、双晶体管Ram、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM、SONOS、PRAM等等),或者机器可读媒介的如上所述可能实现方式的任何一个或多个。计算机系统也包括总线2512(例如PCI总线、ISA总线、PCI-快速总线,总线,总线、网络用户总线等等。)。计算机系统也包括基于紧凑多波形的电路设计评估器(“评估器”)2521。评估器在如前所述寄存器级电路设计表示的整个网路之上传播了多波形的紧凑表示。存储器单元2508包括一个或多个功能,促进了存储查找表或其他数据结构以用于基于多波形表示评估电路设计表示以及将紧凑多波形表示分解为非确定性信号转换表示的序列。这些功能的任何一个可以部分地(或者全部的)实施在硬件中和/或处理器单元2504上。例如,可以采用专用集成电路实施功能,在实施在处理器单元2504中的逻辑器件中,在外围装置或卡上的协处理器中,等等。处理器单元2504和存储器单元2508耦合至总线2512。尽管示出作为耦合至总线2512,存储器单元2508可以耦合至处理器单元2504。
尽管参照各个实施方式和解释说明描绘了实施例,应该理解的是,这些实施例是示意性的,并且本发明主题的范围不限于此。通常,用于如在本文中所描述的采用紧凑多波形表示评估寄存器级电路设计表示的技术可以采用于任何硬件系统相容一致的工具来实施。许多变形、修改、添加和改进是可能的。
可以对于在本文中所描述作为单个范例的部件、操作或结构提供多个范例。最后,各个部件、操作和数据存储之间的边界稍微有点任意的,并且在具体示意性配置结构的中解释说明了特定操作。设想了功能的其他分配,并且可以落入本发明主题的范围内。通常,在示例性配置结构中展示作为单独部件的结构和功能可以实施作为组合的结构或部件。类似的,展示作为单个部件的结构和功能可以实施作为单独部件。这些和其他变形、修改、添加和改进可以落入本发明主题的范围内。
Claims (16)
1.一种方法,包括:
确定与寄存器传输级电路设计中的指示部件的输入网络相关联的信号转换表示的序列,其中所述信号转换表示的序列中的每个信号转换表示表现从之前信号状态至一个或多个可能信号状态的集合的非确定性转换;
基于所述指示部件确定从与所述输入网络相关联的所述信号转换表示的序列得到的信号转换表示的输出序列;
确定所述信号转换表示的输出序列是否符合相邻限制,所述相邻限制即限制哪个信号转换表示能够与其他信号转换表示相邻;
如果所述信号转换表示的输出序列符合所述限制,则将所述信号转换表示的输出序列与所述指示部件的输出网络相关联;以及
如果所述信号转换表示的输出序列不符合所述限制,则修改所述信号转换表示的输出序列以符合所述限制,并且将修改的所述信号转换表示的输出序列与所述输出网络相关联。
2.根据权利要求1所述的方法,其中所述确定与指示部件的输入网络相关联的信号转换表示的序列包括:确定所述信号转换表示的序列被指定用于被分配至所述输入网络的任意数目的波形的表示。
3.根据权利要求2所述的方法,进一步包括:确定被指定用于所述任意数目的波形的表示的群组标识符,其中所述群组标识符消除了被指定用于任意数目的波形的多于一个表示的所述信号转换表示的序列的歧义。
4.根据权利要求3所述的方法,进一步包括:
如果所述指示部件具有作为所述输入网络的单个输入网络,
则基于所述指示部件,确定从被指定用于与所述输入网络相关联的所述任意数目的波形的表示的所述群组标识符得到的第一输出群组标识符;
如果所述指示部件具有多个输入网络,
则基于所述指示部件,确定从被指定用于与所述多个输入网络相关联的所述任意数目的波形的表示的所述群组标识符得到的第一输出群组标识符,其中所述多个输入网络包括所述单个输入网络。
5.根据权利要求4所述的方法,进一步包括:遍历任意数目的波形的表示的有序结构,直至找到入口,所述入口指示表现与波形集合有关的波形的超集的信号转换表示的序列,所述波形集合由所述信号转换表示的第一输出序列或修改的所述信号转换表示的序列表现,并且所述入口指示与第一输出群组标识符匹配的群组标识符。
6.根据权利要求1所述的方法,其中,所述基于指示部件确定从与输入网络相关联的信号转换表示的序列得到的信号转换表示的第一输出序列包括,应用表现所述指示部件的行为的操作。
7.根据权利要求1所述的方法,进一步包括:初始化所述寄存器传输级电路设计表示的网络,以标识那些与主输入或者时钟信号发生器相关联的网络,并且以标识并未与任意数目的波形的表示相关联的那些网络。
8.根据权利要求1所述的方法,其中,所述确定从与输入网络相关联的信号转换表示的序列得到的信号转换表示的输出序列包括,确定从与所述输入网络相关联的所述信号转换表示的序列以及从与第二输入网络相关联的信号转换表示的另一序列得到的所述信号转换表示的输出序列。
9.一种装置,包括:
处理器;以及
计算机可读存储媒介,具有存储在其上的可由所述处理器执行的指令,以使得所述装置,
确定与寄存器传输级电路设计中的指示部件的输入网络相关联的信号转换表示的序列,其中所述信号转换表示的序列中的每个信号转换表示表现从之前信号状态至一个或多个可能信号状态的集合的非确定性转换;
基于所述指示部件确定从与所述输入网络相关联的所述信号转换表示的序列得到的信号转换表示的输出序列;
确定所述信号转换表示的输出序列是否符合相邻限制,所述相邻限制即限制哪个信号转换表示能够与其他信号转换表示相邻的限制;
如果所述信号转换表示的输出序列符合所述相邻限制,则将所述信号转换表示的输出序列与所述指示部件的输出网络相关联;以及如果所述信号转换表示的输出序列不符合所述相邻限制,则修改所述信号转换表示的输出序列以符合所述相邻限制,并且将修改的所述信号转换表示的输出序列与所述输出网络相关联。
10.根据权利要求9所述的装置,其中,所述可由所述处理器执行以使得所述装置确定与指示部件的输入网络相关联的信号转换表示的序列的程序指令包括:可由所述处理器执行以使得所述装置确定所述信号转换表示的序列被指定用于被分配至所述输入网络的任意数目的波形的表示的程序指令。
11.根据权利要求10所述的装置,进一步包括,可由所述处理器执行以使得所述装置确定被指定用于所述任意数目的波形的表示的群组标识符的程序指令,其中所述群组标识符消除了被指定用于任意数目的波形的多于一个表示的所述信号转换表示的序列的歧义。
12.根据权利要求11所述的装置,进一步包括,可由所述处理器执行以进行如下步骤的程序指令:
如果所述指示部件具有作为所述输入网络的单个输入网络,
则基于所述指示部件,确定从被指定用于与所述输入网络相关联的所述任意数目的波形的表示的所述群组标识符得到的第一输出群组标识符;
如果所述指示部件具有多个输入网络,
则基于所述指示部件,确定从被指定用于与所述多个输入网络相关联的所述任意数目的波形的表示的所述群组标识符得到的第一输出群组标识符,其中所述多个输入网络包括所述单个输入网络。
13.根据权利要求12所述的装置,进一步包括程序指令以遍历任意数目的波形的表示的有序结构,直至找到入口,所述入口指示表现与波形集合有关的波形的超集的信号转换表示的序列,所述波形集合由所述信号转换表示的第一输出序列或修改的所述信号转换表示的序列表现,并且所述入口指示与第一输出群组标识符匹配的群组标识符。
14.根据权利要求9所述的装置,其中,用于基于所述指示部件确定从与所述输入网络相关联的所述信号转换表示的序列得到的信号转换表示的第一输出序列的程序指令包括,用于应用表现指示部件的行为的操作的程序指令。
15.根据权利要求9所述的装置,进一步包括用于初始化所述寄存器传输级电路设计表示的网络的程序指令,以标识那些与主输入或者时钟信号发生器相关联的网络,并且以标识并未与任意数目的波形的表示相关联的那些网络。
16.根据权利要求9所述的装置,其中,用于确定从与输入网络相关联的信号转换表示的序列得到的信号转换表示的输出序列的程序指令包括:用于确定从与所述输入网络相关联的所述信号转换表示的序列以及从与第二输入网络相关联的信号转换表示的另一序列得到的所述信号转换表示的输出序列的程序指令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361912345P | 2013-12-05 | 2013-12-05 | |
US61/912,345 | 2013-12-05 | ||
US14/327,658 US9251304B2 (en) | 2013-12-05 | 2014-07-10 | Circuit design evaluation with compact multi-waveform representations |
US14/327,658 | 2014-07-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699883A CN104699883A (zh) | 2015-06-10 |
CN104699883B true CN104699883B (zh) | 2018-01-26 |
Family
ID=53271432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410683289.1A Active CN104699883B (zh) | 2013-12-05 | 2014-11-24 | 采用紧凑多波形表示的电路设计评估 |
Country Status (2)
Country | Link |
---|---|
US (13) | US9268889B2 (zh) |
CN (1) | CN104699883B (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678114B (zh) * | 2012-09-07 | 2018-11-02 | 三星电子株式会社 | 产生断言的设备和方法以及验证处理器的设备和方法 |
US10503856B2 (en) | 2013-12-05 | 2019-12-10 | International Business Machines Corporation | Phase algebra for specifying clocks and modes in hierarchical designs |
US10318695B2 (en) | 2013-12-05 | 2019-06-11 | International Business Machines Corporation | Phase algebra for virtual clock and mode extraction in hierarchical designs |
US9268889B2 (en) | 2013-12-05 | 2016-02-23 | International Business Machines Corporation | Verification of asynchronous clock domain crossings |
US9916407B2 (en) | 2013-12-05 | 2018-03-13 | International Business Machines Corporation | Phase algebra for analysis of hierarchical designs |
GB2519181B (en) | 2014-03-31 | 2015-09-09 | Imagination Tech Ltd | Clock verification |
GB201522216D0 (en) * | 2015-12-16 | 2016-01-27 | Lambda Logic Ltd | System and method for the design of digital hardware |
US10031987B2 (en) | 2016-06-15 | 2018-07-24 | International Business Machines Corporation | Verification of untimed nets |
US10204201B1 (en) * | 2016-06-30 | 2019-02-12 | Cadence Design Systems, Inc. | Methods, systems, and articles of manufacture for verifying an electronic design using hierarchical clock domain crossing verification techniques |
US9922163B2 (en) * | 2016-07-07 | 2018-03-20 | International Business Machines Corporation | Physically aware test patterns in semiconductor fabrication |
US10325046B2 (en) * | 2016-09-20 | 2019-06-18 | Synopsys, Inc. | Formal method for clock tree analysis and optimization |
US10025732B2 (en) | 2016-10-01 | 2018-07-17 | Intel Corporation | Preserving deterministic early valid across a clock domain crossing |
US10635767B2 (en) * | 2017-01-31 | 2020-04-28 | Mentor Graphics Corporation | Glitch detection at clock domain crossing |
JP2019036199A (ja) * | 2017-08-18 | 2019-03-07 | 富士通株式会社 | 情報処理装置、タイミングエラー解析プログラム及びタイミングエラー解析方法 |
US10606971B2 (en) * | 2017-11-29 | 2020-03-31 | International Business Machines Corporation | Testing netlists based on singular independent signals |
US10936774B1 (en) * | 2018-02-15 | 2021-03-02 | Real Intent, Inc. | Methods for identifying integrated circuit failures caused by reset-domain interactions |
US10885248B1 (en) * | 2018-03-15 | 2021-01-05 | Synopsys, Inc. | Method for modeling glitches during circuit simulation |
US10935595B1 (en) * | 2018-05-04 | 2021-03-02 | Real Intent, Inc. | Methods for identifying integrated circuit failures caused by asynchronous clock-domain crossings in the presence of multiple modes |
CN109165171B (zh) * | 2018-08-10 | 2022-12-23 | 电子科技大学 | 自适应的快速数字波形成像方法 |
US10755010B2 (en) * | 2018-09-24 | 2020-08-25 | Advanced Micro Devices, Inc. | Metastability insertion using the X-state |
US11087059B2 (en) * | 2019-06-22 | 2021-08-10 | Synopsys, Inc. | Clock domain crossing verification of integrated circuit design using parameter inference |
US11429768B2 (en) * | 2019-07-18 | 2022-08-30 | Synopsys, Inc. | Register transfer level (RTL) image recognition |
CN111399829B (zh) * | 2020-03-13 | 2021-02-02 | 上海介方信息技术有限公司 | 一种基于模型驱动的波形建模方法及终端 |
US11347917B2 (en) * | 2020-05-11 | 2022-05-31 | Synopsys, Inc. | Determining and verifying metastability in clock domain crossings |
KR20220121632A (ko) | 2021-02-25 | 2022-09-01 | 삼성전자주식회사 | 집적회로 및 집적회로 동작 방법 |
CN117634426B (zh) * | 2024-01-24 | 2024-04-05 | 上海合见工业软件集团有限公司 | 一种电路设计的缺陷标记生成方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101842789A (zh) * | 2008-10-27 | 2010-09-22 | 新思科技有限公司 | 用于存储器抽象和使用该存储器抽象来验证的方法和装置 |
CN102598001A (zh) * | 2009-10-16 | 2012-07-18 | 国际商业机器公司 | 用于分析具有瞬时逻辑的逻辑设计的技术 |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210700A (en) | 1990-02-20 | 1993-05-11 | International Business Machines Corporation | Automatic delay adjustment for static timing analysis |
US5452239A (en) | 1993-01-29 | 1995-09-19 | Quickturn Design Systems, Inc. | Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system |
US5862149A (en) | 1995-08-29 | 1999-01-19 | Unisys Corporation | Method of partitioning logic designs for automatic test pattern generation based on logical registers |
US5835380A (en) * | 1996-06-11 | 1998-11-10 | Lsi Logic Corporation | Simulation based extractor of expected waveforms for gate-level power analysis tool |
US6083269A (en) * | 1997-08-19 | 2000-07-04 | Lsi Logic Corporation | Digital integrated circuit design system and methodology with hardware |
US6175946B1 (en) | 1997-10-20 | 2001-01-16 | O-In Design Automation | Method for automatically generating checkers for finding functional defects in a description of a circuit |
US20020152060A1 (en) | 1998-08-31 | 2002-10-17 | Tseng Ping-Sheng | Inter-chip communication system |
JP3663067B2 (ja) | 1998-12-17 | 2005-06-22 | 富士通株式会社 | 論理装置の検証方法、検証装置及び記録媒体 |
US6952825B1 (en) | 1999-01-14 | 2005-10-04 | Interuniversitaire Micro-Elektronica Centrum (Imec) | Concurrent timed digital system design method and environment |
WO2001013285A2 (en) * | 1999-08-19 | 2001-02-22 | Massachusetts Institute Of Technology | Synchronous circuit synthesis using an asynchronous specification |
US6597664B1 (en) | 1999-08-19 | 2003-07-22 | Massachusetts Institute Of Technology | Digital circuit synthesis system |
JP2001147948A (ja) | 1999-11-19 | 2001-05-29 | Matsushita Electric Ind Co Ltd | セルの遅延時間計算方法及び半導体集積回路のレイアウト最適化方法 |
US6377094B1 (en) | 2002-03-25 | 2002-04-23 | Oak Technology, Inc. | Arbitrary waveform synthesizer using a free-running ring oscillator |
US7106115B2 (en) | 2000-06-29 | 2006-09-12 | Timelab Corporation | Arbitrary waveform synthesizer to generate one or more arbitrary waveforms |
US6742165B2 (en) * | 2001-03-28 | 2004-05-25 | Mips Technologies, Inc. | System, method and computer program product for web-based integrated circuit design |
US6957403B2 (en) | 2001-03-30 | 2005-10-18 | Syntest Technologies, Inc. | Computer-aided design system to automate scan synthesis at register-transfer level |
US7103863B2 (en) | 2001-06-08 | 2006-09-05 | Magma Design Automation, Inc. | Representing the design of a sub-module in a hierarchical integrated circuit design and analysis system |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7080365B2 (en) | 2001-08-17 | 2006-07-18 | Sun Microsystems, Inc. | Method and apparatus for simulation system compiler |
US6763505B2 (en) * | 2002-04-04 | 2004-07-13 | International Business Machines Corporation | Apparatus and method for automated use of phase abstraction for enhanced verification of circuit designs |
US6779163B2 (en) | 2002-09-25 | 2004-08-17 | International Business Machines Corporation | Voltage island design planning |
WO2004100000A1 (en) | 2003-05-09 | 2004-11-18 | Koninklijke Philips Electronics N.V. | Method for data signal transfer across different clock-domains |
US7124342B2 (en) | 2004-05-21 | 2006-10-17 | Syntest Technologies, Inc. | Smart capture for ATPG (automatic test pattern generation) and fault simulation of scan-based integrated circuits |
US7073146B2 (en) | 2003-10-30 | 2006-07-04 | Atrenta Inc. | Method for clock synchronization validation in integrated circuit design |
US7283944B2 (en) | 2003-12-15 | 2007-10-16 | Springsoft, Inc. | Circuit simulation bus transaction analysis |
US7139988B2 (en) | 2004-05-04 | 2006-11-21 | Texas Instruments Incorporated | Modeling metastability in circuit design |
US7089518B2 (en) | 2004-05-08 | 2006-08-08 | International Business Machines Corporation | Method and program product for modelling behavior of asynchronous clocks in a system having multiple clocks |
US7243322B1 (en) | 2004-06-01 | 2007-07-10 | Tai An Ly | Metastability injector for a circuit description |
US20050268269A1 (en) | 2004-06-01 | 2005-12-01 | Tera Systems, Inc. | Methods and systems for cross-probing in integrated circuit design |
US7356789B2 (en) | 2004-06-01 | 2008-04-08 | Tai An Ly | Metastability effects simulation for a circuit description |
US7278120B2 (en) | 2004-07-23 | 2007-10-02 | Synplicity, Inc. | Methods and apparatuses for transient analyses of circuits |
US8015533B1 (en) | 2004-09-21 | 2011-09-06 | Golden Gate Technology, Inc. | Method for matching timing on high fanout signal paths using routing guides |
US7251794B2 (en) | 2004-10-21 | 2007-07-31 | International Business Machines Corporation | Simulation testing of digital logic circuit designs |
US7181706B2 (en) * | 2004-12-16 | 2007-02-20 | Greenberg Steven S | Selectively reducing the number of cell evaluations in a hardware simulation |
US7299436B2 (en) | 2005-02-10 | 2007-11-20 | International Business Machines Corporation | System and method for accurately modeling an asynchronous interface using expanded logic elements |
US7333926B2 (en) | 2005-06-09 | 2008-02-19 | International Business Machines Corporation | Method, apparatus, and computer program product for facilitating modeling of a combinatorial logic glitch at an asynchronous clock domain crossing |
US8464188B1 (en) * | 2005-08-23 | 2013-06-11 | The Mathworks, Inc. | Multi-rate hierarchical state diagrams |
US7979820B1 (en) * | 2005-10-24 | 2011-07-12 | Cadence Design Systems, Inc. | Temporal replicant simulation |
US8069024B1 (en) | 2005-10-24 | 2011-11-29 | Cadence Design Systems, Inc. | Replicant simulation |
US7594200B2 (en) | 2005-12-19 | 2009-09-22 | International Business Machines Corporation | Method for finding multi-cycle clock gating |
US7472361B2 (en) | 2005-12-30 | 2008-12-30 | Cadence Design Systems, Inc. | System and method for generating a plurality of models at different levels of abstraction from a single master model |
US7478346B2 (en) | 2006-01-26 | 2009-01-13 | Springsoft Usa, Inc. | Debugging system for gate level IC designs |
US7646177B2 (en) * | 2006-05-01 | 2010-01-12 | International Business Machines Corporation | Design structure for a duty cycle measurement apparatus that operates in a calibration mode and a test mode |
US7437701B1 (en) * | 2006-07-17 | 2008-10-14 | Xilinx, Inc. | Simulation of a programming language specification of a circuit design |
US7484196B2 (en) * | 2006-09-18 | 2009-01-27 | International Business Machines Corporation | Method for asynchronous clock modeling in an integrated circuit simulation |
US7484192B2 (en) * | 2006-09-18 | 2009-01-27 | International Business Machines Corporation | Method for modeling metastability decay through latches in an integrated circuit model |
US8365113B1 (en) | 2007-01-10 | 2013-01-29 | Cadence Design Systems, Inc. | Flow methodology for single pass parallel hierarchical timing closure of integrated circuit designs |
US8977995B1 (en) | 2007-01-10 | 2015-03-10 | Cadence Design Systems, Inc. | Timing budgeting of nested partitions for hierarchical integrated circuit designs |
US7962434B2 (en) * | 2007-02-15 | 2011-06-14 | Wisconsin Alumni Research Foundation | Extended finite state automata and systems and methods for recognizing patterns in a data stream using extended finite state automata |
US7930673B2 (en) | 2007-05-29 | 2011-04-19 | Magma Design Automation, Inc. | Method for automatic clock gating to save power |
US8073669B2 (en) * | 2007-08-21 | 2011-12-06 | International Business Machines Corporation | Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design |
US8352235B1 (en) | 2007-10-31 | 2013-01-08 | Cadence Design Systems, Inc. | Emulation of power shutoff behavior for integrated circuits |
US7882473B2 (en) | 2007-11-27 | 2011-02-01 | International Business Machines Corporation | Sequential equivalence checking for asynchronous verification |
US8364456B2 (en) | 2008-01-10 | 2013-01-29 | The Mathworks, Inc. | Conditionally executed states |
US8108194B2 (en) * | 2008-04-25 | 2012-01-31 | Cadence Design Systems, Inc. | Peak power detection in digital designs using emulation systems |
US7941774B2 (en) | 2008-08-04 | 2011-05-10 | Texas Instruments Incorporated | Partial timing modeling for gate level simulation |
US8819599B2 (en) | 2008-11-07 | 2014-08-26 | Mentor Graphics Corporation | Hierarchical verification of clock domain crossings |
US9262303B2 (en) * | 2008-12-05 | 2016-02-16 | Altera Corporation | Automated semiconductor design flaw detection system |
US8271918B2 (en) | 2009-01-31 | 2012-09-18 | Mentor Graphics Corporation | Formal verification of clock domain crossings |
US8181145B2 (en) | 2009-03-11 | 2012-05-15 | Synopsys, Inc. | Method and apparatus for generating a floorplan using a reduced netlist |
US8402401B2 (en) | 2009-11-09 | 2013-03-19 | Case Western University | Protection of intellectual property cores through a design flow |
US9018995B2 (en) | 2009-12-03 | 2015-04-28 | Cadence Design Systems, Inc. | Integrated clock gating cell for circuits with double edge triggered flip-flops |
JP5471432B2 (ja) | 2009-12-25 | 2014-04-16 | 富士通株式会社 | 検証支援プログラム、および検証支援装置 |
US9081501B2 (en) | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US20110197172A1 (en) | 2010-02-09 | 2011-08-11 | Fujitsu Limited | Design verification apparatus and design verification program |
JP5445358B2 (ja) | 2010-07-02 | 2014-03-19 | 富士通株式会社 | 検証支援プログラム、検証支援装置および検証支援方法 |
US8438517B2 (en) | 2010-12-13 | 2013-05-07 | Ausdia, Inc. | System and method for automatically managing clock relationships in integrated circuit designs |
US8448111B2 (en) | 2011-01-07 | 2013-05-21 | Atrenta, Inc. | System and method for metastability verification of circuits of an integrated circuit |
US20130107651A1 (en) * | 2011-10-27 | 2013-05-02 | Cold Brick Semiconductor, Inc. | Semiconductor device with reduced leakage current and method for manufacture the same |
US9817433B2 (en) | 2011-11-22 | 2017-11-14 | Arm Finance Overseas Limited | Apparatus and method for achieving glitch-free clock domain crossing signals |
US9106401B2 (en) | 2012-06-21 | 2015-08-11 | Nvidia Corporation | Deterministic synchronization for transmitting signals between different clock domains |
US9189582B2 (en) | 2013-08-23 | 2015-11-17 | Mentor Graphics Corporation | Programmable pattern aware voltage analysis |
US9026978B1 (en) | 2013-10-24 | 2015-05-05 | Cadence Design Systems, Inc. | Reverse interface logic model for optimizing physical hierarchy under full chip constraint |
US10318695B2 (en) | 2013-12-05 | 2019-06-11 | International Business Machines Corporation | Phase algebra for virtual clock and mode extraction in hierarchical designs |
US10503856B2 (en) | 2013-12-05 | 2019-12-10 | International Business Machines Corporation | Phase algebra for specifying clocks and modes in hierarchical designs |
US9268889B2 (en) | 2013-12-05 | 2016-02-23 | International Business Machines Corporation | Verification of asynchronous clock domain crossings |
US9916407B2 (en) | 2013-12-05 | 2018-03-13 | International Business Machines Corporation | Phase algebra for analysis of hierarchical designs |
US9223916B2 (en) * | 2014-05-30 | 2015-12-29 | International Business Machines Corporation | Timing analysis of asynchronous clock domain crossings |
US10235485B1 (en) * | 2016-09-27 | 2019-03-19 | Altera Corporation | Partial reconfiguration debugging using hybrid models |
US10831956B2 (en) | 2016-12-02 | 2020-11-10 | Synopsys, Inc. | Efficient execution of alternating automaton representing a safety assertion for a circuit |
-
2014
- 2014-05-12 US US14/274,956 patent/US9268889B2/en not_active Expired - Fee Related
- 2014-07-10 US US14/327,658 patent/US9251304B2/en not_active Expired - Fee Related
- 2014-11-19 US US14/547,820 patent/US10515164B2/en not_active Expired - Fee Related
- 2014-11-19 US US14/547,953 patent/US10325040B2/en not_active Expired - Fee Related
- 2014-11-19 US US14/547,532 patent/US9830412B2/en not_active Expired - Fee Related
- 2014-11-24 CN CN201410683289.1A patent/CN104699883B/zh active Active
- 2014-12-04 US US14/560,599 patent/US9547732B2/en active Active
-
2015
- 2015-06-09 US US14/734,877 patent/US9536024B2/en not_active Expired - Fee Related
- 2015-08-31 US US14/840,774 patent/US10552558B2/en not_active Expired - Fee Related
- 2015-08-31 US US14/840,372 patent/US10325041B2/en not_active Expired - Fee Related
- 2015-08-31 US US14/840,517 patent/US10331822B2/en not_active Expired - Fee Related
-
2017
- 2017-11-20 US US15/818,144 patent/US10552559B2/en not_active Expired - Fee Related
- 2017-11-27 US US15/822,668 patent/US10599792B2/en not_active Expired - Fee Related
-
2019
- 2019-05-14 US US16/412,186 patent/US10990725B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101842789A (zh) * | 2008-10-27 | 2010-09-22 | 新思科技有限公司 | 用于存储器抽象和使用该存储器抽象来验证的方法和装置 |
CN102598001A (zh) * | 2009-10-16 | 2012-07-18 | 国际商业机器公司 | 用于分析具有瞬时逻辑的逻辑设计的技术 |
Also Published As
Publication number | Publication date |
---|---|
US10325040B2 (en) | 2019-06-18 |
US10515164B2 (en) | 2019-12-24 |
US20150370939A1 (en) | 2015-12-24 |
US20150161310A1 (en) | 2015-06-11 |
US10552558B2 (en) | 2020-02-04 |
US20180075178A1 (en) | 2018-03-15 |
US20150161313A1 (en) | 2015-06-11 |
US10599792B2 (en) | 2020-03-24 |
US9536024B2 (en) | 2017-01-03 |
US20160078162A1 (en) | 2016-03-17 |
US9830412B2 (en) | 2017-11-28 |
US9547732B2 (en) | 2017-01-17 |
US9251304B2 (en) | 2016-02-02 |
US10325041B2 (en) | 2019-06-18 |
US10552559B2 (en) | 2020-02-04 |
US10990725B2 (en) | 2021-04-27 |
US20180082003A1 (en) | 2018-03-22 |
US20150161311A1 (en) | 2015-06-11 |
US20150370940A1 (en) | 2015-12-24 |
US20190266302A1 (en) | 2019-08-29 |
US20150161315A1 (en) | 2015-06-11 |
CN104699883A (zh) | 2015-06-10 |
US20150161312A1 (en) | 2015-06-11 |
US9268889B2 (en) | 2016-02-23 |
US20150161309A1 (en) | 2015-06-11 |
US20150269296A1 (en) | 2015-09-24 |
US10331822B2 (en) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699883B (zh) | 采用紧凑多波形表示的电路设计评估 | |
Khomenko et al. | Logic synthesis for asynchronous circuits based on STG unfoldings and incremental SAT | |
CN106682343B (zh) | 一种基于图的邻接矩阵的形式化验证方法 | |
CN106716342A (zh) | 数据沿袭概括 | |
Cortadella et al. | A region-based theory for state assignment in speed-independent circuits | |
Khomenko et al. | Detecting state encoding conflicts in STG unfoldings using SAT | |
CN107251018A (zh) | 用于基于组合超图形的数据表示和操作的装置和方法 | |
US20200074019A1 (en) | Scalable boolean methods in a modern synthesis flow | |
JP2000181939A (ja) | 論理装置の検証方法、検証装置及び記録媒体 | |
CN113220901A (zh) | 基于增强智能的写作构思辅助系统、网路系统 | |
TaŞiran et al. | Language containment of non-deterministic ω-automata | |
Habibi et al. | Towards an efficient assertion based verification of SystemC designs | |
US20120290282A1 (en) | Reachability analysis by logical circuit simulation for providing output sets containing symbolic values | |
CN104899283A (zh) | 一种针对单个不确定图的频繁子图挖掘与优化方法 | |
KR20220017993A (ko) | 플랫 넷리스트로부터 동작 디자인 복구 | |
CN110659029B (zh) | 生成表示计算机程序的语义流图 | |
Lamperti et al. | Determinization and minimization of finite acyclic automata by incremental techniques | |
Innab et al. | An ontology for software requirements modelling | |
Wynn et al. | The P3 Platform: An approach and software system for developing diagrammatic model-based methods in design research | |
Lehmann et al. | VyZX: Formal Verification of a Graphical Quantum Language | |
Daems et al. | Circuit complexity reduction for symbolic analysis of analog integrated circuits | |
US7562055B2 (en) | Resolve trace minimization | |
Rasmussen et al. | A deductive system for proving workflow models from operational procedures | |
Chouksey et al. | Counter‐example generation procedure for path‐based equivalence checkers | |
Haga et al. | Using the Structure-Behavior Coalescence Method to Formalize the Action Flow Semantics of UML 2.0 Activity Diagrams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |