首页> 中国专利> 采用紧凑多波形表示的电路设计评估

采用紧凑多波形表示的电路设计评估

摘要

本公开的实施方式涉及采用紧凑多波形表示的电路设计评估。一种设计工具可以实施基于相位代数的设计评估以采用大量波形的紧凑表示有效地评估电路设计,而无需对各个波形进行仿真。替代各个波形,基于相位代数的设计评估利用了波形的群组或集合的紧凑表示。基于相位代数的评估基于说明信号随时间变化的包括转换和毛刺的各个状态的函数的设计集合之间关系来构造波形集合的表示。在本文中称作M函数的存储转换函数指示了相对于时间的信号转换。

著录项

  • 公开/公告号CN104699883A

    专利类型发明专利

  • 公开/公告日2015-06-10

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201410683289.1

  • 发明设计人 G·德拉斯尼;G·B·梅尔;

    申请日2014-11-24

  • 分类号

  • 代理机构北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-18 09:18:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-01-26

    授权

    授权

  • 2015-07-08

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20141124

    实质审查的生效

  • 2015-06-10

    公开

    公开

说明书

技术领域

本发明主题的实施例总体涉及电路设计的领域,并且更具体地 涉及用于在芯片或片上系统的寄存器传输级(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操纵了包 括CWSS 516的范例的每个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以及一个或多个MIPE 544构成。

模式表达式540表现其中设计可以在多个模式之间操作的条件。 在第一信号与不同于第一信号的第二信号之间选择模式。例如,设 计可以包括双输入多路复用器。至多路复用器的第一输入可以是第 一时钟信号,而至多路复用器的第二输入可以是与第一时钟信号异 步的第二时钟信号。多路复用器可以接收选择器信号,使其在第一 信号与第二信号之间选择。在该示例中,设计可以包括多于一个模 式,其可以经由模式表达式540表示。可以通过模式运算符580对 模式表达式540执行操作。

MIPE 540由一个或多个相位标签532构成。MIPE 540表现波形 的集合528,其为由MIPE 544的构成相位标签532所表示的波形的 集合528的函数。可以通过MIPE运算符584对MIPE 544执行操作。

相位表达式548可以转换为传统MIPE配对的简化正交列表 552,标注为ROLCMP 552。ROLCMP 552是使得相位表达式556转 换为相位标识符556的数据构造。相位标识符556是与相位表达式 548相关联的数值句柄,使得相位表达式548更易于操纵。该描述的 后续部分描绘了将相位表达式548转换为ROLCMP 552,并且将 ROLCMP 552转换为相位标识符556。

相位标签532经由CWSS表示波形的集合528。在一些情形中, 相位标签532可以与虚拟时钟512相关联。依照语法,如果相位标 签532与虚拟时钟512相关联,则相位标签将遵循包括虚拟时钟512 的名称的语法。一个该语法可以表示为“Clock Name@Type of Clock Signal”。例如,相位标签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的输入网络。传播算法确 定了输出相位标识符,其将出现在网络A 712处。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。

尽管参照各个实施方式和解释说明描绘了实施例,应该理解的 是,这些实施例是示意性的,并且本发明主题的范围不限于此。通 常,用于如在本文中所描述的采用紧凑多波形表示评估寄存器级电 路设计表示的技术可以采用于任何硬件系统相容一致的工具来实 施。许多变形、修改、添加和改进是可能的。

可以对于在本文中所描述作为单个范例的部件、操作或结构提 供多个范例。最后,各个部件、操作和数据存储之间的边界稍微有 点任意的,并且在具体示意性配置结构的中解释说明了特定操作。 设想了功能的其他分配,并且可以落入本发明主题的范围内。通常, 在示例性配置结构中展示作为单独部件的结构和功能可以实施作为 组合的结构或部件。类似的,展示作为单个部件的结构和功能可以 实施作为单独部件。这些和其他变形、修改、添加和改进可以落入 本发明主题的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号