一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

确定和验证时钟域交叉中的亚稳态的制作方法

2021-11-15 18:37:00 来源:中国专利 TAG:

确定和验证时钟域交叉中的亚稳态
1.相关申请
2.本技术要求于2020年5月11日提交的标题为“verifying metastability in clock domain crossing”的美国临时申请第63/023,230号的优先权(律师卷宗号:synp 3443

1)。
技术领域
3.本发明涉及验证电子电路中的时钟域交叉中的亚稳态。具体地,本发明涉及验证是否由于从一个时钟域到另一时钟域的信号交叉而在电路的逻辑组件中存在亚稳态。


背景技术:

4.随着电子电路设计尺寸和复杂性的增加,电路中多个独立时钟的数量也随之增加。在数字电子学中,时钟域交叉(cdc)是同步数字电路中的信号从一个时钟域到另一时钟域的遍历。就电子元件而言,时钟域交叉是从第一时钟域中的电路设计中的时序逻辑元件或其他状态转换源到第二时钟域中的时序元件的路径。如果一个信号的断言(或称为“激活”,assert)时间不够长并且没有被一个元件注册,则该信号可在进入的时钟边界上表现为异步。例如,第一时钟域中的时钟可相对于第二时钟域中的时钟异步操作。在这种情况下,当数据信号路径从第一时钟域交叉到第二时钟域时,这种交叉被称为异步时钟域交叉。测试和验证与这种异步相关联的电子电路的信号传送交叉部分的处理(已知为时钟域交叉(cdc)验证)会在电路的各种组件中引起亚稳态。cdc验证可用于电路设计流程,以确定cdc是否同步。下面描述的结构验证和功能验证技术已被用于cdc验证。
5.如果数字电子系统在不稳定的平衡或亚稳状态下持续无限长的时间,就会产生亚稳态。在数字逻辑电路中,要求数字信号在特定电压或电流限值内,以对于正确的电路操作表示“0”或“1”的逻辑电平。如果信号在禁止的中间范围内,则会导致施加该信号的逻辑门中的故障行为。在亚稳状态中,电路可能无法在正确电路操作所需的时间内固定到稳定的“0”或“1”逻辑电平。因此,电路会以不可预知的方式动作,并且可能导致系统故障。
6.cdc的结构验证可分为两类,即,控制路径cdc和数据路径cdc。控制路径cdc的结构被很好地限定,以确定它们是否会引起亚稳态。数据路径cdc的亚稳态分析基于设计结构分析,其可以是依赖于协议的(例如,fifo/握手)或与协议无关的(例如,控制路径cdc和数据路径cdc之间的交互的结构分析)。
7.上述这些方法的挑战可包括假性违例/噪声、可调试性和可扩展性。如果存在大量的cdc并且没有任何实质性的设计问题,则可能出现与cdc有关的假性违例/噪声问题。实际cdc问题在所报告的cdc问题中所占比例非常小,设计变化无法确定或修复这些问题。如果设计工具没有向用户提供cdc问题的根本原因并因此使得用户无法修复cdc问题,则会出现可调试性挑战。如果具有多种方法来实现相同或类似的功能(例如,fifo实施),则会出现可扩展性问题。因此,即使不断进行研究和开发,解决cdc问题仍然存在挑战。
8.使用验证引擎执行功能验证,以验证属性和cdc问题。功能验证方法可能会带来挑
战,因为功能验证工具会报告大量不确定的属性或者以执行抽象而结束,导致设计意图被抽象。


技术实现要素:

9.在一些实施例中,一种在电路设计中确定或验证cdc的亚稳态的方法包括:将电路设计中的第一元件识别为cdc的源;选择电路设计中的第二元件作为与源相对应的限定符(qualifier);以及确定限定符的阻塞值,其可以功能性地阻塞源。由于确定了阻塞值,该方法进一步包括:将cdc识别为同步交叉,其中由于cdc而不产生亚稳态;以及向用户界面提供关于至少一个限定符的信息。这些信息可包括限定符的阻塞值、cdc和源的信息。该信息可允许用户将源被阻塞的电路设计与源没有被阻塞的电路设计进行比较。
10.该方法还可以包括:将电路设计中的第三元件识别为第二cdc的第二源;以及搜索可功能性地阻塞第二源的候选限定符。由于未找到候选限定符,该方法可包括:将第二cdc识别为具有非同步交叉,其中在电路设计中的第四元件中,由于第二cdc而产生亚稳态。
11.cdc包括由第一时钟操作的第一元件与由第二时钟操作的电路元件之间的信号路径,第二时钟相对于第一时钟是异步的。
12.在一些实施例中,一种在电路设计中验证时钟域交叉(cdc)的亚稳态的方法可包括:对于电路设计中的目的地时钟域,至少部分地基于电路设计创建电路图(例如,强连通分量图)。电路图包括起始点和停止点。起始点可以是数据输入、时钟和目的地时钟域的使能。停止点可以是目的地时钟域和电路设计中的源时钟域的同步器输出。该方法还可以包括:遍历电路图,以标记驻留在cdc的源

目的地路径中的所有电路节点。基于标记的电路节点、起始点和停止点,该方法还可以包括在允许的顺序深度内在电路图上传播目的地域限定符。在一些实施例中,该方法可进一步包括:在传播所有目的地域限定符之后,针对每个限定符在电路图的组件上执行限定符阻塞值的值传播。
13.在一些实施例中,该方法可进一步包括:对于每个目的地域限定符,通过分析门结构和输入信号,对每个确定性门(例如,and、or、nand、nor等)执行动态同步分析,输入信号可以是(i)源,(ii)限定符,(iii)目的地域信号,(iv)无约束的端口信号,或(v)目的地时钟域的另一限定符。还分析了该门上的输入信号之间的相互作用。该分析可以确定源是否能够通过限定符或通过限定符的传播阻塞值直接阻塞。另一方面,如果通过限定符的阻塞值驱动门的输入并且通过(i)目的地域信号,(ii)无限制的端口信号,或(iii)目的地时钟的另一限定符驱动门的其他输入,则限定符阻止值的传播可能涉及允许阻止值通过门。
14.在一些实施例中,该方法可进一步包括对于多路复用器门(mux)的每一个目的地域限定符执行动态同步分析,使得如果mux的一个输入是源输入且mux的另一输入是(i)目的地域信号、(ii)无约束端口信号或者(iii)目的地时钟域的另一限定符,并且mux的选择引脚通过限定符或通过限定符的阻塞值被驱动,则使得mux阻塞源输入。另一方面,传播限定符阻塞值可包括:如果mux的一个输入是限定符与另一输入的阻塞值,并且mux的选择引脚由(i)目的地域信号、(ii)无约束端口信号或者(iii)目的地时钟域的另一限定符来驱动,则允许块值通过mux。
15.在一些实施例中,该方法可进一步包括跨scc图传播多个源,以确定未被限定符阻塞的源。如果从限定符值传播获得的恒定值被传播到目的地输入图节点,则该方法可包括
将针对其中特定限定符有效的目的地的所有交叉标记为同步。在某些实施例中,该方法可以进一步包括执行深度优先搜索(dfs)以确定恒定值是否在各个图节点上传播。如果恒定值在各个图节点上传播,则该方法可包括阻塞所有源通过其中特定限定符有效的各个图节点。
16.在一些实施例中,如上述方法所述,该方法还可以包括:如果恒定值未在各个图节点上传播,或者该源未被限定符或限定符的传播值阻塞,则通过将所有源从各个图节点的输入传播到当前节点来确定非同步源。
附图说明
17.将从下面给出的详细描述和本公开实施例的附图中更充分地理解本发明。附图用于提供对本公开实施例的知识和理解,并且不将本公开的范围限于这些特定实施例。此外,附图不需要按比例绘制。
18.图1示出了包括异步时钟域交叉的示例电子电路。
19.图2示出了根据实施例的电路的各种电子组件和应用于电子组件的各种阻塞源。
20.图3是根据本公开的一些实施例的用于确定阻塞值的图2的电路的目的地时钟域的电路图。
21.图4示出了根据实施例的电路的各种电子组件和应用于电子组件的各种阻塞源。
22.图5示出了根据本公开的一些实施例的在集成电路的设计和制造期间使用的各种处理的流程图。
23.图6示出了本公开的实施例可进行操作的示例计算机系统的抽象图。
具体实施方式
24.本文描述的实施例涉及验证时钟域交叉中的亚稳态。
25.许多数字集成电路设计通常使用通用时钟信号来同步它们的操作,以确保变化逻辑信号的状态只有在稳定到其新值后才被采样。然而,各种电路设计可包括多个独立的时钟。此外,芯片和芯片上的系统的复杂性继续增加,包括可具有多个时钟域的许多系统和子系统。时钟域是时序逻辑元件(例如,电路元件,诸如透明锁存器和触发器)以及与这些时序逻辑元件相关联的组合逻辑的集合,这些时序逻辑元件由公共时钟或具有公共频率和固定相位关系的时钟计时。时钟信号通常引起时序逻辑(诸如触发器或透明锁存器)的状态的变化。时钟域交叉是从第一时钟域中的电路设计中的时序逻辑元件或其他状态转换源到第二时钟域中的时序元件的路径。第一域中的时钟可相对于第二时钟域异步地操作。如果两个时钟域各自的时钟信号彼此之间不具有固定的相位和频率关系并且这两个时钟域都不处于保持状态,则这两个时钟域相对于彼此异步地操作。在这种情况下,当数据信号路径从第一时钟域交叉到第二时钟域时,该交叉被称为异步时钟域交叉。
26.时钟域交叉处的异步时钟信号可在每个周期中稍微不同的时间处到达不同的逻辑元件,导致定时不确定性,这会引起电路设计中的随机设置和保持时间违例。这样的定时不确定性又会导致亚稳态,从而导致功能故障。例如,如果信号存在于不确定范围(预期范围之外),则可能发生亚稳态,这会导致逻辑组件处于0到1之间的状态。由于逻辑组件不为0或1,电路(包括逻辑组件)通常将以不可预测的方式执行。因此,例如,异步时钟域交叉可以
是芯片操作中的错误源。
27.对于现代处理器和片上系统(soc)设计,异步时钟域交叉的数量持续增长。例如,现代设计可具有超过100000个单独的异步交叉端点。例如,这使得任何需要人工干预的方法都很昂贵,并且可能影响项目进度。
28.电子设计自动化(eda)工具可用于在制造前评估芯片设计。eda处理大致包括两个步骤。第一步是检查寄存器传送级(rtl)设计逻辑。第二步是根据rtl设计创建物理电路设计。第一步(检查设计逻辑)可被称为rtl设计检查,其可使用诸如vhdl(非常高速集成电路硬件描述语言)或verilog的语言来描述和建模电路的逻辑行为。rtl设计检查本身可分解为两个步骤:静态检查,其中在没有模拟其行为的情况下分析设计的结构;以及动态检查,也称为验证,其中使用形式验证技术来模拟或分析设计的行为。
29.异步时钟域交叉(cdc)在硬件设计中引起错误和验证逃逸是臭名昭著的,因为它们在验证硅前时带来了困难。cdc通常很难验证,因为它们的行为基本上是不确定的,并且受到物理延迟、时钟相位关系以及可能的综合优化的影响,而这些通常在功能模拟环境中无法精确建模。
30.由于这些问题,已经开发了专门的工具来分析rtl设计,识别异步交叉,对其进行表征,并且有时用图形来说明它们。这使得设计师能够检查设计中的交叉,以确定它们是否是有意的。这些工具也可以尝试验证交叉的正确性。例如,工具可执行静态检查,这些检查可由工具本身通过仅分析设计的结构来执行。
31.然而,一般来说,传统工具需要人工干预,以检查和批准或不批准所报告的交叉,并过滤出错误的故障。这是因为当前的方法通常试图从普遍接受的“拇指规则”中推断要检查的属性,或者通过尝试识别设计中的“设计模式”来确定设计者的意图。然而,在实际设计中,这些共同的规则或模式往往有合法的例外。
32.作为电路验证处理的一部分,可通过使用自动确定限定符的阻塞值来检查由时钟域交叉引起的亚稳态来克服上述挑战。具体地,本文公开的技术可自动确定限定符的阻塞值,限定符可功能地阻塞导致例如电子电路中的交叉的数据路径的源。这样的技术可提供以下优点:它们可以独立于协议、独立于设计结构,并且可以执行类似于存储器/运行时间的结构分析。
33.当限定符可阻塞数据路径的源时,数据路径交叉可以被认为具有同步交叉,使得亚稳态将不存在。这里,限定符是控制或限定数据路径交叉到数据路径交叉不创建亚稳态的状态的信号。限定符可以是用户指定信号或双触发/同步单元的单位或多位信号(目的地时钟域中),其中,源时钟域的时钟域cdc交叉的时钟域相同。具体地,限定符是可阻塞源的潜在信号。该方法分析交叉路径之间的交互,诸如设计中的限定符路径和合并路径(例如,交叉路径和限定符路径)交互。因此,分析从源到目的地的交叉路径以基于门类型和信号类型来确定操作值。
34.本文描述的实施例通常涉及电路设计领域,更具体地,涉及在芯片或芯片上系统的rtl设计中执行异步时钟域交叉的静态检查的eda工具。
35.图1示出了包括异步时钟域交叉102的示例电子电路100。电子电路100的一部分是源时钟域104,另一部分是目的地时钟域106。源时钟域104用时钟信号clka 108进行操作,而目的地时钟域106用时钟信号clkb 110进行操作。源时钟域104中的触发器112被称为发
射元件,因为它是异步时钟域交叉102的源时钟域104处的信号的源。clka 108被称为发送时钟,因为clka 108管理与触发器112相关联的状态变化。发射时钟(例如,clka 108)、发射元件(例如,触发器112)和组合逻辑114均属于源时钟域104。线116上的信号(其是源于源时钟域104的可引起状态转换的第一信号)被称为发射数据信号。
36.目的地时钟域106中的触发器118是接收元件,因为它是异步时钟域交叉102的接收端处的时序逻辑元件。也在目的地时钟域106中的触发器120可被称为二级元件。触发器118也可以被称为一级元件,因为它是来自源时钟域104的路径到达目的地时钟域106中的第一触发器。例如,如果电子电路100包括触发器120之后的后续触发器,则这些触发器可分别称为三级、四级和n级元件。由于接收元件(例如,触发器118)被clkb 110计时,因此clkb 110被称为接收时钟。元件110、118和120在目的地时钟域106中。
37.组合逻辑114可至少部分地基于线116上的信号在线122上产生输出信号。线122上的信号被称为接收数据信号,因为接收元件118对接收数据信号进行采样。换言之,接收数据信号是接收元件(例如,触发器118)在其时钟输入有效或者(如果边沿触发的话)具有有效边沿时采样的信号。触发器118和120构成同步器并构成亚稳态路径,其是从接收元件(例如,触发器118)到二级元件并且可能到附加级的路径,这取决于亚稳态在路径中传播的概率。
38.在第一时钟域(例如,104)和异步于第一时钟域操作的第二时钟域(例如,106)之间的接口被称为异步接口。异步接口是一个或多个异步交叉,它们共同实施一协议以将信息从一个时钟域传输到另一个时钟域。这种接口通常包括一个或多个控制交叉以及可选的一个或多个数据交叉。异步控制交叉涉及信号从第一时钟域跨越到第二时钟域,其中该信号被提供给逻辑(例如,触发器),该逻辑可立即对来自第一时钟域的转换作出反应。异步数据交叉是信号被提供给可能不会立即对通过发射路径的转换作出反应的逻辑的异步交叉。例如,如果信号从第一时钟域发射到第二时钟域,其中该信号被不会立即对所接收的信号作出反应的逻辑组件(例如,多路复用器)接收,因为逻辑组件在其从另一逻辑组件接收到选择信号时对接收到的信号进行采样,则交叉是异步数据交叉。
39.图2示出了根据实施例的电路200,其包括各种电子组件和应用于电子组件的各种阻塞源。具体地,电路200包括触发器src1、sync1、src2、src3和out1。例如,src1、src2和src3在电路200中充当源。电路200还包括and门rtlc1、rtlc2、rtlc3、rtlc5和rtlc7。最后,电路200包括not门rtlc6和多路复用器rtlc4。触发器src1用应用于触发器的时钟输入cp的时钟clk1进行操作。触发器src2用应用于触发器的时钟输入cp的时钟clk2进行操作。触发器out1用应用于触发器的时钟输入cp的时钟clk3进行操作。触发器sync1用应用于触发器的时钟输入cp的时钟clk_q进行操作。sync1可产生具有三个数据路径交叉的限定符。如上所解释的,限定符是将数据路径交叉控制或限定到数据路径交叉不创建亚稳态的状态的信号。如果限定符可阻塞数据路径的源,则数据路径交叉可以被认为具有同步交叉,使得亚稳态将不存在。在某种程度上,由于该特征,同步器可称为限定符。对于电路200,sync1可在and门rtlc1处阻塞src1,以控制触发器out1上的d输入。这对应于从src1到out1的路径中的数据路径交叉。sync1还可以在and门rtlc2处阻塞src2,以控制触发器out1上的d输入。这对应于从src2到out1的路径中的数据路径交叉。sync1还可以在and门rtlc3和多路复用器rtlc4处阻塞src3,以控制触发器out1上的d输入。这对应于从src3到out1的路径中的数据
路径交叉。例如,如图2所示,来自sync1的逻辑0的阻塞值导致and门rtlc1阻塞源src1,and门rtlc2和and门rtlc5阻塞源src2,并且and门rtlc5和多路复用器rtlc4阻塞源src3到达out1的目的地。
40.门型电路元件(例如,确定性门)可以阻塞源,而信号型电路元件的功能可基于确定性门的输入而变化。例如,and门可以在and门的输入处阻塞源,而不考虑and门的其他输入端的逻辑值。因此,如果确定性门的输入是限定符,则确定性门的输出是阻塞值(例如,如果确定性门的输入只是限定符,则阻塞值在门的输出上)。相反,源是否被mux(例如,信号型电路元件)阻塞通常取决于mux的选择输入(例如,引脚)的逻辑值,而不直接取决于mux的任何数据输入。在另一示例中,如果确定性门的一个输入是限定符,而另一个输入是源,则就从本质上确定了限定符的阻塞值,从而在特定的门处阻塞了源。该确定的值将被传播到确定性门的输出。在另一示例中,如果确定性门的输入是目的地域信号,则该门可以用作通过逻辑,以使其余输入通过该门传播。因此,在每个门处分析限定符的传播阻塞值,以确定在所有路径上是否都阻塞了源,从而确保了交叉的安全性/同步性。
41.在各种实施例中,处理器可执行rtl设计检查,该检查通常可分解为两部分,第一部分是静态检查,其中处理器分析设计的结构而不模拟其行为。第二部分可以是动态检查(例如,验证),其中处理器使用形式验证技术来模拟或分析设计的行为。因此,用于确定限定符的阻塞值的处理可分为两部分,即限定符阻塞值传播和源传播。
42.图3是电路200的目的地时钟域的电路图300的示例。根据一些实施例,电路图300可用于确定阻塞值。例如,限定符阻塞值传播的处理可涉及模拟电路的功能以确定电路的限定符的阻塞值。电路图300的圆圈中的符号包括数字1

22,其指示图的拓扑排序索引。拓扑索引用于电路图300的源和限定符的拓扑排序传播。符号的格式包括电路元件id,后跟该元件的输入或输出连接。在实施例中,所公开的技术可以为用于确定阻塞值的电路的每个目的地时钟域(例如,106)创建电路图300。所公开的技术可使用kosaraju算法、tarjan算法或例如另一种技术来创建这种基于电路200的scc图。电路图的起始点(由双圈表示)可以是数据输入、时钟输入和目的地时钟域中的电路元件的使能输入。例如,电路200的数据输入是and门rtlc1、rtlc2、rtlc3、rtlc5和rtlc7的输入a和b。电路200的时钟输入是out1的输入cp。电路图300的停止点(由虚线权表示)可以是源时钟域和目的地时钟域的同步器输出。例如,电路200的源时钟域的同步器输出主要是触发器src1的输出q。电路200的目的地时钟域的同步器输出是触发器src2的输出q。如上所述,同步器可以是目的地时钟域中的一系列两个或更多触发器。例如,触发器118和触发器120构成同步器。同步器可以是限定符。因此,触发器sync1也是同步器。同步器(例如,限定符)的目的是降低来自同步器的输出信号变为亚稳态的概率。换言之,同步器可产生一个输出,其成为亚稳态(这可能引起下游逻辑发生故障)的概率可以忽略不计。
43.在创建电路图300之后,所公开的技术可在允许的顺序深度内在电路图上传播限定符。允许的顺序深度是目的地时钟域中可以在限定符信号和目的地之间出现的顺序元素的数目。在一些实施方式中,它可以由用户使用约束来指定。对于每个目的地时钟域限定符,所公开的技术可对确定性门执行多个操作。以一个这样的操作为例,对于确定性门(例如,and门),如果未合并限定符正在与任何源合并,则所公开的技术可以在确定性门的输出上放置阻塞值(例如,对于and门来说为0)。例如,在电路200中,从sync1的引脚q输出的限定
符与来自触发器src1的源合并(例如,src1的输出引脚q产生and门rtlc1的输入引脚a的源)。因此,在sync1是非合并限定符的情况下(例如,sync1的输入d不直接连接到源),所公开的技术可在rtlc1的输出z上放置阻塞值。以另一个这样的操作为例,如果合并限定符与任何目的地域信号(例如,在目的地时钟域中的电路元件的输入处的逻辑值)、无约束端口(例如,没有关联时钟的输入)或确定性门上的另一限定符合并,则所公开的技术可以将其视为一个通过门,以便允许合并的值传播。
44.如上所述,对于每个目的地时钟域限定符,所公开的技术可以对确定性门执行许多操作。另外,对于每个目的地时钟域限定符,所公开的技术可以对信号型电路元件执行多种操作。以一个这样的操作为例,对于多路复用器门(mux),如果mux的一个输入是源,而mux的另一输入是目的地时钟域信号、无约束端口或另一限定符,并且mux的选择引脚由非合并限定符驱动,则所公开的技术可以在mux的选择引脚上放置值,使得mux阻塞源输入。例如,mux rtlc4的输入引脚“1”是在触发器src3的输出q处产生的源。mux的另一输入(输入引脚“0”)是目的地时钟域信号(也是无约束端口)。mux的选择引脚由非合并限定符驱动(例如,来自rtlc3的输出引脚z)。因此,所公开的技术可以在mux的选择引脚上放置值,使得mux阻塞源输入(例如,在引脚“1”处)。
45.对于另一个这种操作的示例,如果mux的一个输入是合并限定符,并且mux的另一输入和选择线由目的地时钟域信号、无约束端口或另一限定符驱动,则所公开的技术可以将mux视为通过逻辑,以便允许合并的限定符通过mux传播。一旦确定了限定符的阻塞值并通过逻辑/mux,则阻塞值将在电路图上传播。
46.在限定符阻塞值传播之后,所公开的技术可以在用于确定限定符的阻塞值的处理中继续源传播。所公开的技术可以沿着电路图300传播源,以确定该源没有被限定符阻塞。本公开的技术还基于以下准则在电路图的每个节点上阻塞源。如果来自限定符模拟的恒定值传播到电路图的目的地时钟域的输入节点,则所公开的技术可将该目的地的所有交叉(其中特定限定符有效)标记为正在同步。
47.所公开的技术可从每个目的地开始(例如,作为电路图的起始点的目的地信号的数据输入)对电路图300执行深度优先搜索(dfs)。然后,在电路图的每个节点上,所公开的技术可检查恒值(例如,阻塞值)是否在该节点上传播。如果在该节点上传播恒值,则所公开的技术可阻塞通过该节点的所有源(其中特定限定符有效)。如果常量没有在各个图节点上传播,或者源没有被限定符或限定符的传播值阻止,则所公开的技术可包括通过将所有源从各个图节点的输入传播至当前节点来确定未同步的源。
48.如果节点是mux(例如,或产生mux型输出的元件),则所公开的技术可检查恒定值是否在mux选择引脚上传播,并且检查mux是否可以阻塞源到达mux输入(例如,除选择引脚之外的输入)。如果是,则所公开的技术可阻塞到该节点的所有源。如果否,则所公开的技术可传播来自mux输入的所有源。例如,假设mux rtlc4的输入引脚“0”是不受约束的信号(例如,图2中的值=1)。另一输入(引脚“1”)由源极(例如,触发器src3的输出q)驱动,而mux的选择引脚由合并的限定符(例如,and门rtlc3的输出z)驱动。因此,如果在mux的选择线上传播的值选择mux rtlc4的输入引脚“0”,则所公开的技术可能会阻塞多路复用器输入的源。
49.所公开的技术可将到达目的地的所有源标记(例如,标签或识别)为非同步,并将未到达目的地的所有源(例如,作为电路图的起始点的目的地信号的数据输入)标记为已同
步。在一些实施中,所公开的技术可以向存储器提供关于这种标记源的信息。在其它实施中,所公开的技术可以向诸如显示器的用户界面提供信息。在非同步源的情况下,信息可描述关于cdc的细节。例如,这些细节可以考虑源时钟域中的源以及目的地时钟域中的各种路径和元件。在同步源的情况下,信息可描述关于限定符、限定符的阻塞值、与cdc相关联的路径和电路元件以及源时钟域中的源的细节。这样的信息可允许用户将源被阻塞的电路设计与源未被阻塞的电路设计进行比较。例如,用户可以检查结果以手动分析不同步的交叉违规,从而基于设计知识修改电路的正确性或放弃(例如接受)违规。
50.图4示出了根据实施例的电路400,其包括各种电子组件和应用于电子组件的各种阻塞源。电路400与图2所示的电路200相同,除了电路200的and门rtlc3被电路400的与非门rtlc3’替换。在电路200的情况下,sync1在and门rtlc3处阻塞src2,并且限定符的合并值被传播至多路复用器rtlc4的选择线,以控制触发器out1上的d输入。这对应于从src2到out1的路径中的数据路径交叉。例如,如图2所示,来自sync1的逻辑0的阻塞值导致and门rtlc5和多路复用器rtlc4阻塞源src3到达out1的目的地。另一方面,在电路400的情况下,虽然sync1在nand门rtlc3’处阻塞src3,但是源src3在多路复用器rtlc4处不被阻塞(例如,因为合并的限定符的传播值允许src3传播到mux的输出)。因此,触发器out1上的d输入不受从src3到out1的数据路径交叉中的限定符控制。因此,由于不存在可阻塞源src3的限定符和伴随的限定符值,因此在该数据路径中可发生亚稳态。
51.图5示出了在诸如集成电路的制造品的设计、验证和制造期间使用以转换和验证表示集成电路的设计数据和指令的处理500的示例集。这些处理中的每一个都可作为多个模块或操作来构造和启用。术语“eda”表示术语“电子设计自动化”。这些处理从利用设计师提供的信息创建产品创意510开始。这些信息被转换以创建使用eda处理512的集合的制造品。例如,处理512可包括上面描述的那些,诸如在图2中描述的。当设计完成时,设计下线534,这是集成电路的原图(例如,几何图案)被送到制造厂来制造掩模集,然后被用于制造集成电路。在下线之后,制造半导体管芯536,并且执行封装和组装处理538以产生成品集成电路540。
52.电路或电子结构的规范可从低级晶体管材料布局到高级描述语言。使用硬件描述语言(hdl)(诸如vhdl、verilog、systemverilog、systemc、myhdl或openvera),高级抽象可用于设计电路和系统。hdl描述可转换为逻辑级寄存器传送级(“rtl”)描述、门级描述、布局级描述或掩模级描述。每个较低的抽象级(即,不太抽象的描述)都会向设计描述添加更多有用的细节(例如,包括描述的模块的更多细节)。包括较少抽象描述的较低抽象级可由计算机生成、从设计库派生或者由另一设计自动化处理创建。用于指定更详细描述的较低抽象级别的规范语言的示例是spice,其用于具有许多模拟组件的电路的详细描述。每个抽象级的描述都由该层的相应工具(例如,形式验证工具)使用。设计处理可使用图5示出的序列。所描述的处理可由eda产品(或工具)使能。
53.在系统设计514期间,指定将被制造的集成电路的功能。可针对期望特性(诸如功耗、性能、面积(物理和/或代码行)和成本降低等)优化设计。可在此阶段将设计划分为不同类型的模块或组件。
54.在逻辑设计和功能验证516期间,用一种或多种描述语言指定电路中的模块或组件,并检查规范的功能准确性。例如,可验证电路的组件以生成与所设计的电路或系统的规
范的要求相匹配的输出。功能验证可使用模拟器和其他程序,诸如测试平台发生器、静态hdl检查器和形式验证器。在一些实施例中,使用称为“模拟器”或“原型系统”的组件的特殊系统来加速功能验证。在这一阶段或者通常在此之后,如上所述,处理500可包括使用限定符的阻塞值的自动确定来验证时钟域交叉中的亚稳态。
55.在测试的合成和设计518期间,hdl代码被转换为网表。在一些实施例中,网表可以是图形结构,其中图形结构的边缘表示电路的组件,并且图形结构的节点表示组件如何互连。hdl代码和网表都是层次化制品,eda产品可以使用它们来验证集成电路在制造时是否按照指定设计执行。网表可针对目标半导体制造技术进行优化。此外,可以对完成的集成电路进行测试,以验证集成电路满足规范要求。
56.在网表验证520期间,检查网表是否符合定时约束以及是否与hdl代码对应。在设计规划522期间,构建集成电路的总体平面图,并对定时和顶层布线进行分析。
57.在布局或物理实施524期间,发生物理放置(诸如晶体管或电容器的电路组件的定位)和布线(通过多个导体连接电路组件),并且可以从库中选择单元以能够执行特定逻辑功能。如本文所使用的,术语“单元”可指定晶体管、其它组件和互连(其提供布尔逻辑功能(例如,and、or、not、xor)或存储功能(诸如触发器或锁存器))的集合。如本文所使用的,电路“块”可指两个或多个单元。单元和电路块都可以称为模块或组件,并且在物理结构和模拟中都可以启用。为所选单元指定(基于“标准单元”)参数(诸如大小),并在数据库中可供eda产品访问。
58.在分析和提取526期间,以布局级验证电路功能,这允许布局设计的细化。在物理验证528期间,检查布局设计以确保制造约束是正确的,诸如drc约束、电气约束、光刻约束,并且电路功能匹配hdl设计规范。在分辨率增强530期间,转换布局的几何形状以改进电路设计的制造方式。
59.在下线期间,创建数据以用于(在应用光刻增强后,如果合适的话)光刻掩模的生产。在掩模数据准备532期间,“下线”数据用于产生光刻掩模,其用于制造成品集成电路。
60.计算机系统的存储子系统(诸如图6的计算机系统600)可用于存储本文所述的一些或所有eda产品使用的程序和数据结构,以及用于库单元的开发和使用库的物理和逻辑设计的产品。
61.图6示出了计算机系统600的示例机器,利用其可执行用于使机器执行本文讨论的任何一种或多种技术或方法的指令集合。在备选实施方式中,机器可连接(例如,联网)到lan、内联网、外联网和/或因特网中的其他机器。机器可在客户机

服务器网络环境中以服务器或客户机的身份操作,作为对等(或分布式)网络环境中的对等机或者作为云计算架构或环境中的服务器或客户机。
62.机器可以是个人计算机(pc)、平板电脑、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或者任何能够执行指定将由该机器执行的动作的指令集(顺序或其他)的机器。此外,虽然示出了单个机器,但是术语“机器”还应被视为包括单独或联合执行指令集(或多个集合)以执行本文所讨论的任何一种或多种方法的任何机器集合。
63.示例计算机系统600包括处理设备602、主存储器604(例如,只读存储器(rom)、闪存、动态随机存取存储器(dram)(诸如同步dram(sdram))、静态存储器606(例如,闪存、静态
随机存取存储器(sram)等)和数据存储设备618,它们经由总线630相互通信。
64.处理设备602表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或者实施其他指令集的处理器或者实施指令集组合的处理器。处理设备602还可以是一个或多个专用处理设备,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理设备602可被配置为执行用于执行本文所述的操作和步骤的指令626。例如,指令626可引导处理设备602执行上面诸如在图2的描述中所述的处理。
65.计算机系统600还可以包括网络接口设备608,以通过网络620进行通信。计算机系统600还可以包括视频显示单元610(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标)、图形处理单元622、信号生成设备616(例如,扬声器)、图形处理单元622,视频处理单元628和音频处理单元632。
66.视频显示单元610可以是向视频显示单元的用户提供信息的用户接口。例如,在如上所述的非同步源的情况下,信息可描述关于cdc的细节。例如,这些细节可考虑源时钟域中的源以及目的地时钟域中的各种路径和元件。例如,在同步源的情况下,信息可描述关于限定符、限定符的阻塞值、与cdc相关联的路径和电路元件以及源时钟域中的源的细节。这样的信息可允许用户将源被阻塞的电路设计与源未被阻塞的电路设计进行比较。
67.数据存储设备618可包括机器可读存储介质624(也已知为非暂态计算机可读介质),其上存储一个或多个集合的指令626或软件,用于实施本文所述的任何一种或多种方法或功能。在计算机系统600、主存储器604和处理设备602执行指令626期间,指令626还可以全部或至少部分地驻留在主存储器604和/或处理设备602内,并且还构成机器可读存储介质。
68.在一些实施方式中,指令626包括实施与本公开相对应的功能的指令。尽管机器可读存储介质624在示例实施方式中被示出为单个介质,但是术语“机器可读存储介质”应当被视为包括存储一个或多个指令集合的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被视为包括能够存储或编码由机器执行的指令集并且使机器和处理设备602执行本公开的任何一种或多种方法的任何介质。术语“机器可读存储介质”应相应地被视为包括但不限于固态存储器、光学介质和磁性介质。
69.前面的详细描述的一些部分已经在计算机存储器内的数据位操作的算法和符号表示方面给出。这些算法描述和表示是所属数据处理领域的技术人员用来最有效地将其工作的实质传达给所属领域的其他技术人员的方法。算法可以是导致期望结果的一系列操作。这些操作需要对物理量进行物理操作。这些量可以采取能够被存储、组合、比较和以其他方式处理的电信号或磁信号的形式。这种信号可以被称为位、值、元件、符号、字符、术语、数字等。
70.然而,应该记住,所有这些和类似术语都与适当的物理量相关联,并且只是应用于这些量的方便标签。除非另有明确指定,否则从本公开明显看出,应理解,在整个描述中,特定术语指计算机系统或类似电子计算设备的动作和处理,将计算机系统的寄存器和存储器内表示为物理(电子)量的数据处理并转换为计算机系统的存储器或寄存器或其它这种信
息存储设备内类似地表示为物理量的其它数据。
71.本发明还涉及一种用于执行本文中的操作的装置。该装置可针对预期目的而特别构造,或者可包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘,包括软盘、光盘、cd

rom和磁光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡、或者任何类型的适合于存储电子指令的介质,每一个都连接到计算机系统总线。
72.本文提出的算法和显示与任何特定的计算机或其他装置没有内在联系。各种其它系统可使用根据本文的教导的程序,或者可证明构造更专用的装置来执行该方法是方便的。另外,本公开不参考任何特定编程语言来描述。应当理解,可以使用各种编程语言来实施本文所述的本发明的教导。
73.本公开可作为计算机程序产品或软件提供,其可包括其上存储有指令的机器可读介质,指令可用于编程计算机系统(或其他电子设备)以执行根据本公开的处理。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器可读(例如,计算机)存储介质,诸如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光存储介质、闪存设备等。
74.在前述公开中,已参考具体示例实施描述了本公开的实施。显而易见,可以对其进行各种修改,而不脱离如以下权利要求所阐述的本公开实施的更广泛的精神和实现范围。在本公开涉及单数时态的一些元件的情况下,可以在附图中示出一个以上的元件,并且用相同的数字标记相同的元件。因此,应在说明性意义而非限制性意义上看待公开和附图。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献