CN102467583B - 追踪不确定信号的方法和装置 - Google Patents

追踪不确定信号的方法和装置 Download PDF

Info

Publication number
CN102467583B
CN102467583B CN201010532265.8A CN201010532265A CN102467583B CN 102467583 B CN102467583 B CN 102467583B CN 201010532265 A CN201010532265 A CN 201010532265A CN 102467583 B CN102467583 B CN 102467583B
Authority
CN
China
Prior art keywords
signal
digraph
logic device
sequential logic
neutral
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
Application number
CN201010532265.8A
Other languages
English (en)
Other versions
CN102467583A (zh
Inventor
潘永锋
李宇飞
陈亮
杨建�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201010532265.8A priority Critical patent/CN102467583B/zh
Priority to US13/280,853 priority patent/US8490037B2/en
Publication of CN102467583A publication Critical patent/CN102467583A/zh
Application granted granted Critical
Publication of CN102467583B publication Critical patent/CN102467583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]

Abstract

提供了在芯片设计的仿真中追踪不确定信号的方法和装置。所述方法包括:从芯片设计的网表中生成包含时序逻辑器件和IO器件的有向图,所述有向图示出所述时序逻辑器件和IO器件之间的信号关联;获取仿真结果中与所述时序逻辑器件和IO器件相关的信号,所述信号包括多个不确定信号;以及沿所述有向图,逆向回溯所述多个不确定信号中的至少一部分不确定信号,确定首先出现不确定信号的器件。还提供了与上述方法相应的装置。通过上述方法和装置,能够追踪不确定信号,确定其根源,提高调试效率。

Description

追踪不确定信号的方法和装置
技术领域
本发明涉及芯片设计领域,更具体而言,涉及在芯片设计的仿真中追踪不确定信号的方法和装置。
背景技术
在芯片设计领域中,仿真步骤是不可或缺的。通常,设计人员使用EDA工具对设计的芯片逻辑进行仿真,记录每个仿真周期中各个逻辑单元的输出值,这样的逻辑单元可以是各个连接点、逻辑门、寄存器等等。所记录的逻辑单元的输出值可以用于后续对芯片设计进行调试和除错。一般地,仿真工具会依照时钟顺序将上述逻辑单元的输出信号以波形文件的形式进行存储。
通常,在芯片结构不太复杂或者仅以抽象模块描述芯片逻辑的情况下,仿真工具生成并存储的波形文件并不太大,对芯片的调试也相对简单。然而,随着芯片的功能越来越强大,芯片的设计也越来越复杂,使得仿真过程中产生的波形文件非常巨大,通常要占用几个G的空间。并且,越来越多的设计需要进行网表仿真。网表仿真是芯片功能验证中的一个阶段,可以暴露芯片设计中的时序问题。在这个阶段,芯片的设计被制作成网表,在其中描述各元件之间的连接关系。基于这样的网表,仿真工具进行仿真测试,记录各个元件和单元的输出信号。由于芯片设计阶段中某些单元的布置可能存在问题,这些单元就会产生与常规的高电平(1)信号和低电平(0)信号不同的X信号,也就是介于高电平和低电平之间的、状态不确定的信号。一旦在芯片电路的某一单元中出现X信号,与该单元的输出有关的各种后续单元都会出现X信号。因此,仿真的结果中往往会出现成百上千甚至几万个X信号。
现有的仿真工具是依照设计人员设定的检查点开始和/或停止仿真的,既不能对出现X信号的单元进行标记,也不会在出现X信号时停止仿真。因此,在获得仿真结果之后,设计人员面对其中出现的大量X信号,无法确切知道产生这些X信号的根源,只能根据经验选择一部分X信号,人工地对这些信号进行追踪和排查。在这个过程中,设计人员需要分析仿真中产生的波形文件。然而,如上所述,在芯片比较复杂的情况下,波形文件非常庞大。这一方面使得设计人员需要分析大量的信号波形,另一方面,由于文件太大,对这些文件的操作会产生较长的延迟,进一步降低分析波形文件的效率。于是,设计人员为了对芯片进行调试,往往要花费大量时间来分析庞大的波形文件,追踪大量的X信号,过程繁琐、冗长而低效。因此,需要对现有的芯片调试方式进行改进,提高芯片设计和仿真的效率。
发明内容
鉴于以上问题,提出本发明,用以改进现有的芯片调试效率。
具体地,根据本发明的第一方面,提供了一种在芯片设计的仿真中追踪不确定信号的方法,包括:从芯片设计的网表中生成包含时序逻辑器件和IO器件的有向图,所述有向图示出所述时序逻辑器件和IO器件之间的信号关联;获取仿真结果中与所述时序逻辑器件和IO器件相关的信号,所述信号包括多个不确定信号;以及沿所述有向图,逆向回溯所述多个不确定信号中的至少一部分不确定信号,确定首先出现不确定信号的器件。
根据本发明的第二方面,提供了一种在芯片设计的仿真中追踪不确定信号的装置,包括:网表分析单元,配置为从芯片设计的网表中生成包含时序逻辑器件和IO器件的有向图,所述有向图示出所述时序逻辑器件和IO器件之间的信号关联;结果获取单元,配置为获取仿真结果中与所述时序逻辑器件和IO器件相关的信号,所述信号包括多个不确定信号;以及信号追踪单元,配置为沿所述有向图,逆向回溯所述多个不确定信号中的至少一部分不确定信号,确定首先出现不确定信号的器件。
利用本发明实施例的方法和装置,能够高效地对芯片电路中出现的X信号进行追踪,自动确定其产生根源,从而提高芯片调试的效率。
附图说明
图1示出根据本发明一个实施例的追踪X信号的方法的流程图;
图2示例性示出一个有向图的例子;
图3示出根据一个实施例在有向图中回溯X信号的具体步骤的流程图;以及
图4示出根据本发明一个实施例的用于追踪X信号的装置的结构框图。
具体实施方式
以下参照附图描述本发明的实施例。应该理解,以下对具体实施例的描述仅仅是为了解释本发明的执行方式,而不对本发明的范围进行任何限定。
图1示出根据本发明一个实施例的追踪X信号的方法的流程图。如图1所示,所述方法包括:步骤11,从网表中生成包含时序逻辑器件和IO器件有向图,以示出各器件的信号关联;步骤12,获取仿真结果中与时序逻辑器件和IO器件相关的信号,所述信号包括多个X信号;步骤13,沿有向图,逆向回溯所述多个X信号中的至少一部分,确定首先出现X信号的器件。
具体地,在步骤11中,首先对网表进行分析。一般地,网表描述了芯片电路中各种元件之间的连接关系。在这些元件之中,包括组合逻辑器件、时序逻辑器件和其他器件。组合逻辑器件可以有若干输入变量和输出变量,其中每个输出变量是相应输入变量的逻辑函数,并且每个时刻输出变量的状态仅与当时的输入变量的状态有关,而与当前时刻之前的输入或输出的状态无关。组合逻辑的例子包括各种逻辑门。与之不同地,时序逻辑器件任意时刻的输出不仅取决于该时刻的输入,还与该时刻之前器件的原始状态有关。也就是说,时序逻辑器件能够依赖于时钟周期维持和记录之前的状态,具有记忆功能,而组合逻辑器件没有这样的记忆功能。时序逻辑器件的例子包括寄存器、计数器等。此外,芯片电路以及相应的网表中还包括IO器件,用于与外部进行信号的输入和输出。
对X信号的研究表明,组合逻辑器件一般不会产生X信号。因此,在追踪X信号时,只需要将注意力集中在时序逻辑器件和IO器件上。相应地,步骤11中,通过对网表进行分析,区分其中的时序逻辑器件和组合逻辑器件,从而生成有向图,并使得该有向图示出电路中包含的时序逻辑器件和IO器件之间的信号关联,而忽略与组合逻辑器件相关的信息。
为了区分时序逻辑器件、组合逻辑器件和IO器件,可以构建时序逻辑器件列表、组合逻辑器件列表和IO器件列表,在遍历网表的器件时,通过将其中的器件与列表进行比对来判断每个器件是属于时序逻辑器件、组合逻辑器件还是IO器件。在另一实施例中,可以参考器件库中记录的器件属性来区分时序逻辑器件、组合逻辑器件或IO器件。在又一实施例中,在遍历网表时,根据器件的结构来对器件进行区分,例如,在网表中,有时钟信号连接的器件可以认为是时序逻辑器件,没有时钟信号连接的是组合逻辑器件,直接连接到外部进行信号的输入输出交互的是IO器件。
基于对时序逻辑器件、组合逻辑器件和IO器件的区分,可以生成排除了组合逻辑器件的有向图。现有技术中已经存在从网表生成有向图的工具,例如synopsys公司的Design Compiler,或ibm公司的bulldozer都可以完成此类功能。在利用上述工具生成有向图时,在一个实施例中,仅提取网表中与时序逻辑器件和IO器件相关的信息,基于这些信息,利用现有工具生成有向图。在另一实施例中,直接利用现有工具从网表生成有向图,之后从该有向图中删除组合逻辑器件,从而形成期望的有向图。
对于有向图的形式和生成过程,在一个实施例中,将时序逻辑器件和IO器件作为节点,以网表中各器件输出信号的流向为方向连接各个节点,从而形成上述有向图。
在一个具体例子中,在形成有向图时,将时序逻辑器件作为一种类型的节点,将IO器件作为另一种类型的节点,从而更加直接和直观地示出不同类型的器件。
图2示例性示出一个有向图的例子。在图示的有向图中,空心圆圈代表一种类型的节点,即,时序逻辑器件,实心圆圈代表另一种类型的节点,即,IO器件。一般地,IO器件作为整个电路的输入输出器件,出现在有向图的边沿。根据网表中各个器件之间的信号的流向,将图示的节点连接起来,以示出器件之间的信号关联。例如,在一个示例性情况下,芯片电路中的一个组合逻辑器件以时序逻辑器件1(图2中的节点1)的输出作为控制信号,对输入信号进行运算,并将运算得到的输出信号记录到时序逻辑器件2(节点2)。在省略了组合逻辑器件的有向图中,将时序逻辑器件1示出为直接连接到时序逻辑器件2。也就是说,在有向图中,节点1连接到节点2意味着,节点1的输出信号对节点2的输出有直接影响,节点1和节点2存在信号关联。但在物理上,节点1和节点2并不必然直接连接,它们之间可能存在有组合逻辑器件。此外,在有些芯片设计中,存在循环回路,其中信号在该回路中进行反馈和循环。相应地,根据网表信息产生的有向图也有可能存在相应的循环回路,如图2中虚线示出的连线。为了保持有向图的单向性,便于后续追踪X信号,在产生有向图时,切断这样的循环回路。
可以理解,有向图的形式不限于图2所示的具体样式。本领域技术人员在阅读本说明书后,能够基于网表并根据实际需要生成不同形式的有向图,例如树形结构图等,只要该图能够有方向性地示出各个器件之间的信号关联。
与网表信息的分析和有向图的生成相并行和独立地,利用仿真工具基于网表对芯片设计进行仿真。但与传统上仿真结果的记录不同的是,仅保留与时序逻辑器件和IO器件相关的信号,而忽略组合逻辑器件的输入输出信号。具体地,在一种实施方式中,通过参照前述的器件库,或参照构建的时序逻辑器件列表、组合逻辑器件列表以及IO器件列表,对于仿真工具输出的较大的仿真结果文件进行修改,从中去除与组合逻辑器件相关的仿真结果,形成缩减的结果文件。在另一种实施方式中,对仿真工具进行设定或配置,使其在仿真过程中仅记录与时序逻辑器件和IO器件相关的信号,从而直接形成缩减的结果文件。
具体地,在步骤12,获取上述缩减的结果文件,其中包含仿真结果中时序逻辑器件的输入信号、输出信号,以及与IO器件相关的输入输出信号。作为仿真结果的一部分,上述信号中通常包括大量X信号。
在获得步骤11中产生的有向图,步骤12中获取的仿真信号之后,就可以基于上述信息对X信号进行追踪,并最终确定其产生根源。也就是,在步骤13中,沿有向图,逆向回溯多个X信号中的至少一部分,确定首先产生X信号的器件。
具体地,回溯过程可以如下进行。对于获得的一部分或全部X信号,确定其关联的器件。可以将输出为X信号的器件称为X器件。对于每个X器件,将其设定为当前器件,沿着有向图进行逆向回溯,找到连接到当前器件的前一器件。通过参照仿真结果,判断该前一器件的输出是否为X信号。如果前一器件的输出不是X信号,也就是,前一器件不是X器件,则将当前器件确定为首先出现X信号的器件;如果前一器件也是X器件,则将该前一器件设定为当前器件,沿着有向图继续回溯,直到前一器件的输出不是X信号或者到达有向图边沿的IO器件。可以理解,可以使用现有的在有向图中进行回溯的方法来进行上述回溯过程。
首先出现X信号的器件可能是IO器件,也可能是时序逻辑器件,这两种情况可以分别称为IO不确定或时序逻辑器件不确定。
IO不确定是指由IO导致的X信号。IO不确定的典型表现为,沿有向图的回溯一直进行到IO器件,或者,在有向图中,某个直接连接到IO器件的时序逻辑器件的输入为X信号。在沿着有向图进行回溯时,一旦遇到IO不确定的表现情况,就可以确定,仿真结果中的X信号是由于IO器件从外部接收的信号本身不确定导致的。
时序逻辑器件不确定是指由于时序逻辑器件设置不当而在该器件处产生X信号。在时序逻辑器件不确定的情况下,在有向图中,该时序逻辑器件的输出为X信号,而输入不是X信号,或者说,该器件是X器件,而其前一器件不是X器件。这就意味着,从该时序逻辑器件的输出开始出现X信号,因此该时序逻辑器件是后续X信号产生的根本原因。
更具体而言,出现时序逻辑器件不确定的情况主要由于以下原因。一种原因是多重驱动,也就是,多根信号线连接到时序逻辑器件的同一端口。在这种情况下,时序逻辑器件无法确定应该依据哪根信号线来产生输出,因此会出现X信号。可以通过检查芯片电路中时序逻辑器件的连接线来确定这一原因。另一原因是时序问题,也就是,时序逻辑器件的数据输入和时钟输入未能保持应有的关系。一般来说,为了产生确定的输出,时序逻辑器件要求在时钟上升沿到来前的一段时间内,数据输入保持稳定。相反,如果在上述时间段内,数据输入发生改变,时序逻辑器件就会产生不确定的输出信号。可以通过检查数据输入和时钟之间的关系来确定这一原因。时序逻辑器件不确定的其他原因还包括时钟域问题,也就是,数据从一个时钟传递到另一时钟时,由于两个时钟脉冲的交叠不当而引起的数据不确定。可以通过检查两个不同时钟脉冲的交叠来确定这一原因。
由此,通过沿有向图回溯X信号,确定首先出现X信号的器件,可以确定X信号产生的根源。
在一些电路设计中,还会包括独立于IO器件、组合逻辑器件、时序逻辑器件的另一种类型的器件,即存储器器件,用于对电路中涉及的信号和数据进行存储和记录。在这种情况下,在分析网表从而生成有向图的过程中,还需要提取与存储器器件相关的信息,并在有向图中包含存储器器件。在一个有向图的例子中,将存储器器件示出为与时序逻辑器件不同类型的节点,并通过节点之间的有向连接示出存储器器件和其他器件之间的信号关联。
相应地,在一个实施例中,与步骤12并行地,记录仿真过程中与存储器器件相关的存取历史,也就是,对存储器器件的写入、读取操作的历史。
结合记录的存储器存取历史,在沿着包含存储器器件的有向图回溯X信号时,可以确定出现的存储器不确定的情况及其原因。
存储器不确定是指由于存储器配置不当而导致的X信号。存储器不确定的表现为,存储器器件的读出信号为X信号。在沿着有向图进行回溯时,一旦遇到存储器不确定的表现情况,就可以确定,仿真结果中X信号的根源是存储器配置不当。出现这种情况的原因主要是由于存储器器件没有得到适当地初始化。例如,在将数据写入存储器特定地址之前就从该地址读出数据,未适当地设置地址指针等。通过核查对存储器的存取历史可以验证这一原因。
仿真结果中通常包含大量的X信号,可以对全部X信号逐一进行回溯,确定其产生根源。或者,为加速回溯过程,在一个实施例中,首先从仿真结果中的大量X信号中选择部分X信号进行回溯。
进一步地,在沿着有向图进行回溯时,在一个实施例中,可以分阶段地进行回溯。
在芯片设计和仿真中,在有些情况下,允许某些单元、器件产生X信号,或者希望暂时地忽略某些X信号。这时,可以设置一个配置文件,在其中列出允许出现X信号的单元、器件。
图3示出根据一个实施例在有向图中回溯X信号的具体步骤的流程图,也就是图1中步骤13的子步骤。在图3的实施例中,首先在步骤301,对获取的仿真结果中的X信号进行分类;在步骤302,基于信号的分类,选择一部分X信号。信号的分类可以基于信号的名称、向量、层级等信息。例如,信号的名称可以反映信号的来源。来源相似的信号,例如来自同一总线的信号,可以构成一个向量。此外,在芯片电路设计时,经常采用层级结构,这时可以核查信号所涉及的层级。可以理解,本领域技术人员有可能采用信号的其他属性进行分类。基于对信号的分类,可以选择一部分有代表性的X信号进行后续回溯,例如,对于来自同一总线的多个X信号,选择其中一个进行回溯即可。由此,可以使得要回溯的X信号的数量大大缩减,简化回溯过程,还可以使得回溯过程更有针对性。
接着,对选择的X信号进行回溯。具体地,首先在步骤303,进行广度优先的回溯。在这个步骤中,将所选择的多个X信号定位到关联的X器件,从每个X器件开始,沿着有向图,逆向回溯预定的步数,例如向前回溯3个节点。对于回溯中经历的X器件,为其设置计数器。每当回溯过程经过某个X器件,就使得该X器件的计数器加1。由此,X器件的计数值反映了经过X信号回溯的次数。例如,在图2所示的有向图中,假定节点1,节点2,节点3都是X器件,那么从每个X器件向前回溯3个节点的回溯过程使得节点1,2,3的计数值分别为3,1,1,因为从节点2,3的回溯都会经过节点1。
接着,在步骤304,进行深度优先的回溯。在这个步骤中,从有向图的X器件中选择计数值最大的X器件,从该X器件开始进行回溯,直到遇到首次出现X信号的器件。
然后,在步骤305,判断首次出现X信号的器件是否包含在配置文件中。如果包含,则在步骤306中过滤掉与该器件相关的X信号,并在步骤307中判断仿真结果中是否还存在其他X信号。
如果在步骤305中,首次出现X信号的器件没有包含在配置文件中,则在步骤308中,根据该器件的表现,和/或参照存储器器件的存取历史,将出现X信号的根源确定为IO不确定,时序逻辑器件不确定,或存储器不确定。在一个实施例中,对于时序逻辑器件不确定,进一步确定其具体原因,例如多重驱动,时序问题或者时钟域问题。接着,跳到步骤306,过滤掉已经分析和回溯的X信号,然后在步骤307,判断是否还有其他X信号。
如果不存在其他X信号,则回溯过程结束;如果还存在其他X信号,那么在电路中可能存在多个导致X信号的根源,这时返回到步骤303,对剩余信号重新进行回溯,以确定其他根源。
通过上述过程,可以快速、自动地对仿真结果中的大量X信号进行追踪,确定其产生的根源。
可以理解,虽然图3示出了沿有向图回溯X信号的具体步骤和流程,但是该回溯过程并不限于图3所示,而是可以由本领域技术人员在阅读本说明书的基础上以各种方式实现,例如,选择性地省略分类和/或选择步骤,或采用不同的分类基准,使用不同的回溯阶段,等等,从而以其他方式执行图1的步骤103。
在回溯过程之后,本发明的实施例还可选地包含输出追踪结果的步骤。可以理解,能够以各种形式输出追踪结果,例如,直接示出导致X信号的器件,示出X信号产生的过程等等。在一个实施例中,还输出与有向图中各个器件相关的波形文件。
概括来说,通过采用图1的实施例所示的方法,可以省略掉与组合逻辑器件相关的信息,大大缩减要追踪的X信号和要核查的器件。通过有向图的形式,器件之间的信号关联更加直接,从而可以直接在该有向图上进行X信号的追踪。除此之外,由于图1的实施例仅记录与时序逻辑器件和IO器件相关的信号,因此可以极大地缩减仿真工具存储的波形文件的大小,为后续操作带来便利。
基于同一发明构思,本发明的实施例还提供了追踪X信号的装置。
图4示出根据本发明一个实施例的用于追踪X信号的装置的结构框图,该装置是基于现有的仿真工具的一般架构。如图所示,在现有架构中,仿真工具20获取网表10的数据,基于网表10进行仿真,并输出仿真结果。在此基础上,本发明一个实施例的追踪X信号的装置40包括:网表分析单元41,配置为从网表中生成包含时序逻辑器件和IO器件的有向图,以示出各器件的信号关联;结果获取单元42,配置为获取仿真结果中与时序逻辑器件和IO器件相关的信号,所述信号包括多个X信号;信号追踪单元43,配置为沿所述有向图,逆向回溯所述多个X信号中的至少一部分,确定首先出现X信号的器件。
具体地,网表分析单元41从网表10读取数据,对网表进行分析。由于组合逻辑器件一般不会产生X信号,因此,网表分析单元41仅关注网表中与时序逻辑器件和IO器件相关的信息,而忽略与组合逻辑器件相关的信息。具体地,网表分析单元41通过参考器件库、器件列表或器件结构来区分时序逻辑器件和组合逻辑器件,并基于网表生成包含时序逻辑器件和IO器件的有向图,用于示出电路中包含的时序逻辑器件和IO器件之间的信号关联。
具体地,在一个实施例中,网表分析单元41将时序逻辑器件和IO器件作为节点,以各器件输出信号的流向为方向连接各个节点,从而形成上述有向图。在一个具体例子中,在形成有向图时,网表分析单元41将时序逻辑器件作为一种类型的节点,将IO器件作为另一种类型的节点,从而更加直接和直观地示出不同类型的器件。有向图的具体实例如参照图2的描述,不再赘述。进一步地,网表分析单元41将产生的有向图传送给信号追踪单元43。
另一方面,结果获取单元42从仿真工具20获取与时序逻辑器件和IO器件相关的仿真结果。
在现有的仿真工具20中,通常存在一些接口,用来与用户进行交互。通过这些接口,可以对仿真工具进行设定、配置或修改,使其根据用户的定制进行仿真以及输出结果。相应地,在一个实施例中,结果获取单元42与仿真工具20进行交互,将其设置为仅记录与时序逻辑器件和IO器件相关的信号,而忽略组合逻辑器件的输入输出信号。
或者,在另一种实施方式中,结果获取单元42只是连接到仿真工具20,读取其仿真结果。但是,结果获取单元42可以通过参照前述的器件库,或参照构建的时序逻辑器件列表、组合逻辑器件列表以及IO器件列表,对于仿真工具20输出的较大的仿真结果文件进行修改,从中去除与组合逻辑器件相关的仿真结果,形成缩减的结果文件,在其中仅保留时序逻辑器件和IO器件的信号。
通过以上方式,在仿真工具基于网表对芯片设计进行仿真之后,结果获取单元42获取到仿真结果中时序逻辑器件的输入信号、输出信号,以及与IO器件相关的输入输出信号。作为仿真结果的一部分,上述信号中通常包括大量X信号。进一步地,结果获取单元42将获得的结果信号传送给信号追踪单元43。
于是,信号追踪单元43从网表分析单元41获得产生的有向图,从结果获取单元42获得仿真的结果信号,从而可以基于上述信息对X信号进行追踪,并最终确定其产生根源。具体地,信号追踪单元43沿有向图,逆向回溯多个X信号中的至少一部分,确定首先出现X信号的器件。回溯过程可以如下进行。对于获得的一部分或全部X信号,确定其关联的X器件。对于每个X器件,将其设定为当前器件,沿着有向图进行逆向回溯,找到连接到当前器件的前一器件。通过参照仿真结果,判断该前一器件的输出是否为X信号。如果前一器件不是X器件,则将当前器件确定为首先出现X信号的器件;如果前一器件也是X器件,则将该前一器件设定为当前器件,沿着有向图继续回溯,直到前一器件的输出不是X信号或者到达有向图边沿的IO器件。
首先出现X信号的器件可能是IO器件,也可能是时序逻辑器件,这两种情况可以分别称为IO不确定或时序逻辑器件不确定。更具体而言,时序逻辑器件不确定的原因包括多重驱动,时序问题,以及时钟域问题。
在一些电路设计中,还会包括存储器器件,用于对电路中涉及的信号和数据进行存储和记录。在这种情况下,网表分析单元41在分析网表时,还从中提取与存储器器件相关的信息,并在有向图中包含存储器器件。
相应地,在一个实施例中,结果获取单元42通过设定仿真工具20,使其记录仿真过程中与存储器器件相关的存取历史,也就是,对存储器器件的写入、读取操作的历史。进一步地,结果获取单元42也将如此获得的存取历史传送到信号追踪单元43。
结合所记录的存储器存取历史,信号追踪单元43在沿着包含存储器器件的有向图回溯X信号时,就可以验证出现存储器不确定的情况及其原因。
在一种实施方式中,为加速回溯过程,信号追踪单元43配置为从仿真结果中的大量X信号中选择部分X信号进行回溯。在一个实施例中,为了选择出具有代表性的X信号,信号追踪单元43还配置为,首先对获取的X信号进行分类,例如基于名称、矢量、层级等信息进行分类,并基于上述分类来选择部分X信号进行追踪。
进一步地,在沿着有向图进行回溯时,在一个实施例中,信号追踪单元43可以分阶段地进行回溯,例如首先进行广度优先的回溯,接着进行深度优先的回溯,从而回溯到首次出现X信号的器件。
在芯片设计和仿真中,在有些情况下,允许某些单元、器件产生X信号,或者希望暂时地忽略某些X信号。相应地,装置40可以包含一个配置文件设定单元(未示出),该单元作为一个接口,接收用户的设置,形成一个配置文件,在其中列出允许出现X信号的单元、器件。相应地,信号追踪单元43在进行回溯时要参考该配置文件,判断出现的X器件是否为配置文件中排除的器件。
由此,通过上述装置,能够实现对X信号的自动追踪,确定X信号产生的根源。各个单元的具体操作实例如上文参照方法流程所述,在此不再赘述。
本领域技术人员可以理解,上述追踪X信号的方法和装置可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的装置及其单元可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。用于执行本发明的操作的软件和程序代码,可以用一种或多种程序设计语言的组合来编写,包括但不限于,面向对象的程序设计语言,诸如Java,Smalltalk,C++之类,以及常规的过程式程序设计语言,诸如C程序设计语言或类似的程序设计语言。程序代码可以本地地或远程地在计算机上执行,以完成设定的操作。
虽然以上结合具体实施例,对追踪X信号的方法和装置进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。

Claims (18)

1.一种在芯片设计的仿真中追踪不确定信号的方法,包括:
从芯片设计的网表中生成包含时序逻辑器件和IO器件的有向图,所述有向图示出所述时序逻辑器件和IO器件之间的信号关联;
获取仿真结果中与所述时序逻辑器件和IO器件相关的信号,所述信号包括多个不确定信号;以及
沿所述有向图,逆向回溯所述多个不确定信号中的至少一部分不确定信号,确定首先出现不确定信号的器件。
2.根据权利要求1的方法,其中,生成包含时序逻辑器件和IO器件的有向图的步骤包括,通过以下中的至少一项来区分时序逻辑器件、组合逻辑器件和IO器件:
建立时序逻辑器件列表、组合逻辑器件列表和IO器件列表;
参照器件库;以及
参照网表中器件的连接结构。
3.根据权利要求1的方法,其中,在所述有向图中,所述时序逻辑器件和IO器件被示出为不同类型的节点。
4.根据权利要求1的方法,其中逆向回溯所述多个不确定信号中的至少一部分不确定信号包括,对所述多个不确定信号进行分类,根据分类结果从所述多个不确定信号中选择部分不确定信号进行逆向回溯。
5.根据权利要求1-4中任一项的方法,其中逆向回溯所述多个不确定信号中的至少一部分不确定信号包括,将所述至少一部分不确定信号定位到关联的不确定器件,从每个不确定器件开始,沿着所述有向图,逆向回溯预定的步数,并为每个不确定器件设置计数器,使其计数值反映该不确定器件经历回溯的次数。
6.根据权利要求5的方法,其中逆向回溯所述多个不确定信号中的至少一部分不确定信号还包括,从计数值最高的不确定器件开始进行回溯,直到遇到首次出现不确定信号的器件。
7.根据权利要求1的方法,还包括,读取配置文件,所述配置文件包含允许出现不确定信号的器件列表,并判断所确定的首先出现不确定信号的器件是否包含在所述配置文件中,如果包含,则排除该首先出现不确定信号的器件。
8.根据权利要求1-4中任一项的方法,其中所述网表中还包含存储器器件,所述方法还包括,从所述网表中提取与存储器器件相关的信息,并使得所述有向图包含与存储器器件相关的信息。
9.根据权利要求8的方法,还包括,记录存储器器件的存取历史,当首先出现不确定信号的器件为存储器器件时,参照所述存取历史,确定存储器器件出现不确定信号的原因。
10.一种在芯片设计的仿真中追踪不确定信号的装置,包括:
网表分析单元,配置为从芯片设计的网表中生成包含时序逻辑器件和IO器件的有向图,所述有向图示出所述时序逻辑器件和IO器件之间的信号关联;
结果获取单元,配置为获取仿真结果中与所述时序逻辑器件和IO器件相关的信号,所述信号包括多个不确定信号;以及
信号追踪单元,配置为沿所述有向图,逆向回溯所述多个不确定信号中的至少一部分不确定信号,确定首先出现不确定信号的器件。
11.根据权利要求10的装置,其中,所述网表分析单元配置为,通过以下中的至少一项来区分时序逻辑器件和组合逻辑器件:
建立时序逻辑器件列表和组合逻辑器件列表;
参照器件库;以及
参照网表中器件的连接结构。
12.根据权利要求10的装置,其中,在所述有向图中,所述时序逻辑器件和IO器件被示出为不同类型的节点。
13.根据权利要求10的装置,其中所述信号追踪单元还配置为,对所述多个不确定信号进行分类,根据分类结果从所述多个不确定信号中选择部分不确定信号进行逆向回溯。
14.根据权利要求10-13中任一项的装置,其中所述信号追踪单元配置为,将所述至少一部分不确定信号定位到关联的不确定器件,从每个不确定器件开始,沿着所述有向图,逆向回溯预定的步数,并为每个不确定器件设置计数器,使其计数值反映该不确定器件经历回溯的次数。
15.根据权利要求13的装置,其中所述信号追踪单元还配置为,从计数值最高的不确定器件开始进行回溯,直到遇到首次出现不确定信号的器件。
16.根据权利要求10的装置,还包括,配置文件设定单元,用于接收配置文件,所述配置文件包含允许出现不确定信号的器件列表,所述信号追踪单元还配置为,判断所确定的首先出现不确定信号的器件是否包含在所述配置文件中,如果包含,则排除该首先出现不确定信号的器件。
17.根据权利要求10-13中任一项的装置,其中所述网表中还包含存储器器件,所述网表分析单元还配置为,从所述网表中提取与存储器器件相关的信息,并使得所述有向图包含与存储器器件相关的信息。
18.根据权利要求17的装置,其中,所述结果获取单元还配置为,记录存储器器件的存取历史,所述信号追踪单元还配置为,当首先出现不确定信号的器件为存储器器件时,参照所述存取历史,确定存储器器件出现不确定信号的原因。
CN201010532265.8A 2010-10-29 2010-10-29 追踪不确定信号的方法和装置 Active CN102467583B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010532265.8A CN102467583B (zh) 2010-10-29 2010-10-29 追踪不确定信号的方法和装置
US13/280,853 US8490037B2 (en) 2010-10-29 2011-10-25 Method and apparatus for tracking uncertain signals

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010532265.8A CN102467583B (zh) 2010-10-29 2010-10-29 追踪不确定信号的方法和装置

Publications (2)

Publication Number Publication Date
CN102467583A CN102467583A (zh) 2012-05-23
CN102467583B true CN102467583B (zh) 2014-07-23

Family

ID=45998080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010532265.8A Active CN102467583B (zh) 2010-10-29 2010-10-29 追踪不确定信号的方法和装置

Country Status (2)

Country Link
US (1) US8490037B2 (zh)
CN (1) CN102467583B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141738B2 (en) * 2012-06-04 2015-09-22 Reveal Design Automation Sequential non-deterministic detection in hardware design
CN104636509B (zh) * 2013-11-08 2019-05-28 恩智浦美国有限公司 门级仿真中验证时序问题的系统及方法
CN114510866B (zh) * 2021-12-08 2023-04-18 芯华章科技股份有限公司 用于追踪逻辑系统设计的错误的方法及相关设备
CN114692551A (zh) * 2022-03-22 2022-07-01 中国科学院大学 一种Verilog设计文件安全关键信号的检测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1399724A (zh) * 1999-09-24 2003-02-26 明导公司 仿真系统中使用的具有集成调试功能的可重构集成电路
US7184936B1 (en) * 2004-07-12 2007-02-27 Cisco Technology, Inc. Timing variation measurement system and method
CN101165694A (zh) * 2006-10-20 2008-04-23 国际商业机器公司 专用集成电路中i/o块的优化布置和验证的方法和装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000057317A1 (en) * 1999-03-19 2000-09-28 Moscape, Inc. System and method for performing assertion-based analysis of circuit designs
US6415430B1 (en) * 1999-07-01 2002-07-02 Nec Usa, Inc. Method and apparatus for SAT solver architecture with very low synthesis and layout overhead
US6536019B1 (en) * 2000-09-28 2003-03-18 Verisity Design, Inc. Race condition detection and expression
US20020178427A1 (en) * 2001-05-25 2002-11-28 Cheng-Liang Ding Method for improving timing behavior in a hardware logic emulation system
US7356689B2 (en) * 2001-07-09 2008-04-08 Lucent Technologies Inc. Method and apparatus for tracing packets in a communications network
US7224689B2 (en) * 2001-08-17 2007-05-29 Sun Microsystems, Inc. Method and apparatus for routing of messages in a cycle-based system
US6810507B2 (en) 2002-01-17 2004-10-26 Sun Microsystems, Inc. Method and apparatus for isolating the root of indeterminate logic values in an HDL simulation
US20040093198A1 (en) * 2002-11-08 2004-05-13 Carbon Design Systems Hardware simulation with access restrictions
US7237214B1 (en) * 2003-03-04 2007-06-26 Synplicity, Inc. Method and apparatus for circuit partitioning and trace assignment in circuit design
US7742907B2 (en) * 2003-04-15 2010-06-22 Nec Laboratories America, Inc. Iterative abstraction using SAT-based BMC with proof analysis
US7356672B2 (en) * 2004-05-28 2008-04-08 The Regents Of The University Of California Warp processor for dynamic hardware/software partitioning
US7146583B1 (en) * 2004-08-06 2006-12-05 Xilinx, Inc. Method and system for implementing a circuit design in a tree representation
US7398494B2 (en) 2005-08-30 2008-07-08 International Business Machines Corporation Method for performing verification of logic circuits
US20070088717A1 (en) * 2005-10-13 2007-04-19 International Business Machines Corporation Back-tracking decision tree classifier for large reference data set
US20080072182A1 (en) * 2006-09-19 2008-03-20 The Regents Of The University Of California Structured and parameterized model order reduction
US20080115099A1 (en) * 2006-11-15 2008-05-15 Priyadarsan Patra Spatial curvature for multiple objective routing
US7543266B2 (en) * 2006-11-20 2009-06-02 Microsoft Corporation Lock-free state merging in parallelized constraint satisfaction problem solvers
US7725863B2 (en) * 2007-02-27 2010-05-25 Agate Logic, Inc. Reverse routing methods for integrated circuits having a hierarchical interconnect architecture
US8839218B2 (en) * 2007-06-04 2014-09-16 International Business Machines Corporation Diagnosing alias violations in memory access commands in source code
US7707530B2 (en) * 2007-11-16 2010-04-27 International Business Machines Corporation Incremental timing-driven, physical-synthesis using discrete optimization
US7934183B2 (en) 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values
US8024168B2 (en) 2008-06-13 2011-09-20 International Business Machines Corporation Detecting X state transitions and storing compressed debug information
US7958472B2 (en) 2008-09-30 2011-06-07 Synopsys, Inc. Increasing scan compression by using X-chains
US8484590B2 (en) * 2009-06-02 2013-07-09 Jesse Conrad Newcomb Method of predicting electronic circuit floating gates
US8200693B2 (en) * 2009-06-26 2012-06-12 Fair Isaac Corporation Decision logic comparison and review
CN102169515B (zh) * 2010-02-26 2014-04-16 国际商业机器公司 一种专用集成电路中时钟树延迟时间的估计方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1399724A (zh) * 1999-09-24 2003-02-26 明导公司 仿真系统中使用的具有集成调试功能的可重构集成电路
US7184936B1 (en) * 2004-07-12 2007-02-27 Cisco Technology, Inc. Timing variation measurement system and method
CN101165694A (zh) * 2006-10-20 2008-04-23 国际商业机器公司 专用集成电路中i/o块的优化布置和验证的方法和装置

Also Published As

Publication number Publication date
US8490037B2 (en) 2013-07-16
US20120110526A1 (en) 2012-05-03
CN102467583A (zh) 2012-05-23

Similar Documents

Publication Publication Date Title
US7779374B1 (en) Generating self-checking test cases from reduced case analysis graphs
US7404160B2 (en) Method and system for hardware based reporting of assertion information for emulation and hardware acceleration
US7162706B2 (en) Method for analyzing and validating clock integration properties in circuit systems
CN100573537C (zh) 一种soc芯片系统级验证系统及方法
US8639487B1 (en) Method for multiple processor system-on-a-chip hardware and software cogeneration
US20130080993A1 (en) Embedded system performance
US7584456B1 (en) Method and apparatus for debugging embedded systems having read only memory
US9594543B2 (en) Activity diagram model-based system behavior simulation method
JPH10232890A (ja) プログラマブル論理回路のための組み込み式論理アナライザー
AU2006200640A1 (en) System for designing re-programmable digital hardware platforms
Liu et al. Automatic generation of assertions from system level design using data mining
CN102467583B (zh) 追踪不确定信号的方法和装置
US8265918B1 (en) Simulation and emulation of a circuit design
Kundu et al. Partial order reduction for scalable testing of SystemC TLM designs
US9626468B2 (en) Assertion extraction from design and its signal traces
Liu et al. Automatic generation of system level assertions from transaction level models
Bunker et al. Formal hardware specification languages for protocol compliance verification
Lagadec et al. Smalltalk debug lives in the matrix
CN104636509A (zh) 门级仿真中验证时序问题的方法
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
Developers Verilog-to-routing documentation
Bartsch et al. Efficient SAT/simulation-based model generation for low-level embedded software.
Mathaikutty et al. SML-Sys: a functional framework with multiple models of computation for modeling heterogeneous system
Goli et al. Design Understanding Methodology
Piziali Coverage-driven verification

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171024

Address after: American New York

Patentee after: Core USA second LLC

Address before: American New York

Patentee before: International Business Machines Corp.

Effective date of registration: 20171024

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES INC.

Address before: American New York

Patentee before: Core USA second LLC

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230804

Address after: Taiwan, Hsinchu, China

Patentee after: Taiwan Semiconductor Manufacturing Co.,Ltd.

Address before: Grand Cayman, Cayman Islands

Patentee before: GLOBALFOUNDRIES INC.