专利名称:提高ic设计仿真速度并测试扫描电路的制作方法
技术领域:
本发明的实施例涉及用于对测试图样进行测试的集成电路(IC)芯片的仿真,该 测试图样由自动测试图样生成(ATPG)创建,用于物理IC芯片中的扫描电路。
背景技术:
今天的电子装置包含数百万的单片的电路或“单元”。为了使这种装置的设计和制 造自动化,已经开发了电子设计自动化(EDA)系统。EDA系统包括一个或多个被编程的计算 机,由芯片设计者使用以设计可以包括一个或多个IC芯片的电子装置。EDA系统通常容纳 将被置入IC芯片的电路的一个或多个高级动作描述(例如,以如VHDL、Verilog等的硬件 描述语言(HDL)),并将这种动作描述转换成抽象的多级网表(netlist)。网表通常存储在 EDA系统中的计算机可读介质中,并使用多种公知技术进行处理和验证。EDA系统使用网表 以便最终产生掩模形式的物理装置布局,用于在制造物理IC芯片时使用。测试用设计(DFT)流程可以(例如)以网表形式设计IC芯片(其实现期望的行 为,例如数字信号处理(DSP)),并且用称为“扫描单元”21 22(图1B)的特殊单元代替一 个或多个触发器11 12 (图1A),扫描单元被设计为从IC芯片10 (图1B)的主输入端31 向一个或多个部分13提供测试向量。最初的IC芯片设计的部分13通常包括连接触发器 11和12的组合逻辑。在刚刚描述的用扫描单元代替触发器期间,部分13通常保持不变。 这种修改的设计具有两种操作模式,一种是任务模式,其执行IC芯片10被设计用于的预定 功能(例如,DSP),一种是测试模式,其测试IC芯片10中的电路元件是否被正确地制造。通常,IC芯片10的这种修改设计中的扫描单元21 (图1B)包括由复用器21M驱 动的触发器21F ;如果以测试模式运行(在此期间扫描使能信号SE是激活的),则复用器 21M向触发器21F的数据输入(D输入)引脚提供信号Si,并且可选地,如果以任务模式运 行(在此期间信号SE是未激活的),则提供另一信号Ml。在图IB中示出了输入至触发器 21F的信号作为复用器的输出信号M0。在扫描设计期间,芯片设计者可以识别出扫描单元 21和22,由于它们想连接至扫描链,这涉及通过连接扫描单元21和22 (例如,单元22的输 入引脚SI连接至单元21中的触发器21F的输出引脚Q)来创建扫描路径23 (见图1B)。扫 描路径23对于通过部分13的任务路径13P而言是可选的,并且复用器22M基于其扫描使 能信号选择来自这两条路径之一的信号。芯片设计者可以指定共同的扫描使能信号SE或 指定不同的扫描使能信号,以运行复用器21M和22M。开发IC芯片设计中的附加步骤包括生成应用于IC芯片10的测试图样。用ATGP 软件编程的计算机可以以网表的形式分析一个或多个IC设计的表述,并且可以自动生成 测试图样。这种测试图样(也称为测试向量)由硬件装置(称为“测试器”)应用于物理IC 芯片中的扫描单元,以测试(例如)是否正确地制造了电路的特定选择部分。更具体地,测试器(未示出)通过在转移(shifting)操作(也称为“加载操作”) 期间,从IC芯片10的主输入端31连续向一个或多个扫描单元21 (也称为“输入扫描单 元”)中加载一个或多个测试图样,同时激活扫描使能信号,来测试IC芯片10。IC芯片10的主输入端31和主输出端32是可以从芯片10的外部接入(例如至任意测试器)的外部 引脚。在这种转移操作后,测试器可以去激活(deactivate)扫描使能信号,并用应用于部 分13 (处于“测试操作”)的测试图样运行IC芯片10 —个时钟周期。测试操作后有处于另一转移操作(也称为“卸载操作”)的激活的(多个)扫描使 能信号的一个或多个周期,其中,由输出扫描单元22锁存的测试操作的结果被转移到IC芯 片10的主输出端32。本发明人注意到,现有技术中,在加载操作和卸载操作期间,源扫描单 元21和宿扫描单元22之间的电路的选择部分13继续正常运行,即,这些部分中的所有门 均会被评估。在制造物理IC芯片之前,测试图样通常应用于IC芯片的门级计算机模型。例如, 通过将以HDL表述的IC设计转换成在计算机中执行(编译之后)或解释(不编译)的软 件源代码(例如,以编程语言C或C++)来获得计算机指令40 (图1C)。如在图IC中所示, 计算机指令40包括三种函数,第一函数“Evaluate_Flipfl0p”仿真在扫描单元21 (图1B) 中的触发器21F的输出引脚Q处的信号,第二函数“propagate”仿真这个信号穿过组合逻 辑13经由任务路径13P到扫描单元22的MI输入引脚的传播。最后,第三函数“Evaluate Multiplexer”仿真由复用器22M向触发器22F的输入引脚D提供的信号。编译后的计算机 指令40的执行比解释(interpreted)的执行更快,因此,通常将这种软件源代码编译成编 译代码。在上述段落中描述的函数“propagate”可以根据配置仿真或不仿真扫描路径23 上的信号传播。例如,触发器通常具有称为Q-引脚(除Q引脚之外)的另一输出引脚,并 且在一些配置中,Q-引脚用在扫描链中,在这种情况下,函数“propagate”不进行任何额外 的仿真。在其他配置中,不使用Q-引脚,相反地,在单元实例中产生路径分叉。在这种配置 中,可以仿真Q-引脚,以驱动扫描路径23上的信号。例如,在1994年3月由密歇根州大学出版的Michael A. Ri印e等人的“Ravel-XL A Hardware Accelerator for Assigned-DelayCompiled-Code Logic Gate Simulation,, 中描述了基于编译代码的仿真,其全部内容通过引用结合于此作为背景技术。此外,在2001 年4月24日授予Ashar的第6,223,141号美国专利中也描述了现有技术的一些编译代码 仿真器,该专利的全部内容也通过引用结合于此作为背景技术。Ashar描述了使用网表转 换来加快平准化编译代码仿真。特别地,具有平准化编译代码仿真的同步数字电路的基于 时延独立周期的逻辑仿真能极大地提高速度。清除、消除、和要素减少了文字数量。特别 地,消除功能去除了由于其存在而增加了文字数量的门的网表,即,将这些门分解为其及时 扇出(immediatefanout),减小了文字数量。在将门分解为其扇出之前,该功能估计新开端 (onset)的大小。如果估计的大小大于预设界限,则不执行该分解。大多数的文字量减少是 通过消除功能进行的。本发明人相信,编译代码仿真器能够变得过于缓慢。特别地,实现高故障覆盖率 (high fault coverage)所需的测试图样数量随电路大小增加。此外,深亚微米技术在更多 失败机制和更多缺陷类型的可能性方面对现有故障模型提出了挑战。更多故障模型又要求 对于同一故障覆盖率和质量级别的更多的测试图样,这增加了仿真测试图样的测试所需的 时间。因此,本发明人相信需要进一步提高编译代码仿真的速度。
发明内容
本文公开的本发明的实施例提供了一种配置计算机程序的计算机实施方法、设备 及计算机可读介质,该计算机程序用于仿真集成电路(IC)芯片的操作,以测试其中的扫描 电路。本发明的示例性实施例提供了一种用于配置计算机程序的计算机实施方法,该计 算机程序用于仿真IC芯片的操作,以测试扫描电路。该方法追踪穿过IC芯片设计中的组 合逻辑的路径,创建第一指令集以仿真穿过该路径的信号传播;修改第一指令集以创建第 二指令集,第二指令集要求满足预定条件以执行第一指令集;以及将第一指令集和第二指 令集存储在存储器中。本发明的示例性实施例提供了一种用于配置计算机程序的设备,该计算机程序用 于仿真IC芯片的操作,以测试扫描电路。该设备包括存储器,编码有描述IC芯片的设计; 追踪装置,用于追踪穿过设计中的组合逻辑的路径;检查装置,用于检查第一扫描单元和第 二扫描单元是否接收到共同的扫描使能信号;生成装置,用于生成计算机程序的至少一部 分,以在共同的扫描使能信号未激活时有条件地穿过路径传播信号,并在共同的扫描使能 信号激活时不穿过路径传播信号;以及存储装置,用于将计算机程序的一部分存储在存储器中。本发明的示例性实施例提供了一种用于配置计算机程序的计算机可读介质,该计 算机程序用于仿真集成电路(IC)芯片的操作,以测试扫描电路。该计算机可读介质包括 追踪指令,用于追踪穿过IC芯片的设计中的组合逻辑的路径;创建指令,用于创建第一指 令集,以仿真穿过该路径的信号传播;修改指令,用于修改第一指令集以获得第二指令集, 第二指令集要求满足预定条件以执行第一指令集;以及存储指令,用于将第一指令集和第 二指令集作为计算机程序的一部分存储在计算机的存储器中。
图IA和图IB示出了插入扫描电路之前和之后的现有技术IC芯片设计。图IC示出了用于仿真图IB的设计以测试扫描电路的现有技术的计算机程序的一 部分。图2A以流程图的形式示出了根据本发明的实施例的用于配置提高仿真速度的计 算机程序的方法。图2B示出了根据本发明的实施例生成的、通过执行图2A的方法来包括条件语句 的计算机程序的一部分。图3以流程图的形式示出了在本发明的示例性实施例中执行的、用于实施图2A的 方法的动作。图4A 图4C以流程图的形式示出了在本发明的实施例的实施中执行的动作。图5在框图中示出了根据本发明的实施例编程的计算机。图6示出了根据本发明的实施例的示例性数字专用IC(ASIC)设计流程的简化表述。
具体实施例方式计算机150 (图5)根据本发明实施例编程来执行方法200 (图2A),以创建提高IC芯片的仿真速度从而测试扫描电路的计算机程序。特别地,本专利申请的发明人注意到,当 扫描使能信号SE (图1B)激活时,组合逻辑13的输出端的复用器22M选择经由扫描路径23 传输的信号。相应地,发明人设想(当扫描使能信号激活时)这种复用器的操作使得没有 必要仿真经由任务路径13P穿过部分13的信号传播。基于这个设想,如同在下一段中所描 述的,发明人构想了方法200,其通过当扫描使能信号激活时避免路径13P上的不必要仿真 来提高仿真速度。根据实施例,扫描使能信号可以是激活的高信号(即,当信号为高或者值 为“1”时激活),或者备选地是激活的低信号(即,当信号为低或者值为“0”时激活),这对 本领域技术人员是显而易见的。如图2A中所示,在第一操作201中,计算机150首先确定IC芯片的哪个部件形成 扫描单元。在该操作中,对于每个扫描单元,计算机150还确定其引脚中的哪一个分别承载 (1)扫描数据信号,(2)从任务模式的操作产生的数据信号,(3)扫描使能信号,以及(4)时 钟信号。计算机150进一步被编程以执行追踪操作202,例如,以识别穿过组合逻辑13的路 径13P。如图1B中所示,任务路径13P从源扫描单元21中的触发器21F的输出引脚Q开 始,并在宿扫描单元22的复用器22M的输入引脚Ml结束。计算机150还被编程为执行操 作203,以创建软件指令来仿真穿过任务路径13P的信号传播。注意,通过图1C中的现有技术计算机指令40示出了操作203的结果。还要注意, 计算机150可被编程为以对本领域技术人员显而易见的任何方式实施操作201 203。因 此,计算机150执行操作201、202和203的方式的特定细节对于实践本发明实施例而言不重要。计算机150被进一步编程为检查一个或多个条件(在操作204中),并且如果条件 满足了,则计算机150执行操作205 (该操作在条件不满足时跳过)。在操作204中使用的 条件997 (图5)是预定的,并存储在计算机150的存储器中。操作204的特定条件用于确 保路径13P的非仿真不会改变对自动测试图样生成(ATGP)创建的用于扫描电路的一个或 多个测试图样进行测试的结果。如果条件满足了,则确定路径13是“可优化的”,从而将其 作为非仿真的候选。例如,本发明的一些实施例支持使用多个扫描使能信号。相应地,这种实施例检查 操作204中的如下预定条件源扫描单元21提供给路径13P的信号和宿扫描单元22从路 径13P接收的信号是否被同步地使用(或不使用),即,各扫描单元21和22中的复用器21M 和22M是否由相同的扫描使能信号操作。如果结果为真,则确定路径13P是可优化的。在 本发明一些实施例的操作204中检查的另一个这种预定条件是,路径13P是否包含任意时 序元件(sequential element),并且仅当结果为否时,计算机150将路径13P标记为“可优 化的”。注意,在本发明的一些实施例中,如果路径从扫描单元的数据引脚开始并最终在扫 描单元的数据引脚结束,则认为该路径是可优化的。在追踪这种路径时,一个示例性实施例 穿过组合元件而不是穿过其他电路元件进行追踪。组合元件的输出状态从其输入端的状态 可以立即确定。如果如本文中所描述的路径追踪期间遇到了不同于组合元件的任何电路元 件,则示例性实施例将该路径标记为不可优化的。如上面提到的,如果操作204发现路径13P不是可优化的,则计算机150仅仅转到 操作206,在该操作中,操作203创建的计算机指令40(图1C)作为计算机程序的一部分被 存储到存储器中,用于其他这种部分(例如,由操作203重复生成)。注意,指令40(即,软件)包括语句42,从而路径13P上的信号传播被无条件地仿真。如果操作204发现路径13P 是可优化的,则如接下来所描述的,计算机150执行可选操作205。在操作205中,计算机150通过向操作203中创建的计算机指令40中增加待检查 的一个或多个条件来修该指令,以获得修改的计算机指令,该修改的计算机指令在没有必 要时避免了沿优化路径13P的信号传播的仿真。例如,如图2B中示出的修改的计算机指 令250中的语句252示出的,检查扫描使能信号,并且如果该信号是激活的,则不执行函数 "propagate",除非路径13P不是可优化的。特别地,软件语句252检查路径13P是否不是 可优化的,并且如果不是可优化的,则执行函数“propagate”。另一方面,不管路径13P是不 是可优化的,如果扫描使能信号是非激活的(例如,当仿真任务模式时),则再次执行函数 propagate。注意,指令250包括语句252,从而有条件地执行信号传播的仿真。更特别地, 语句252以扫描使能信号的状态以及路径13P是否是优化的为条件。相应地,通过检查这种修改的计算机指令250中的一个或多个条件,消除了穿过 任务路径13P的信号传播的仿真,这又加快了加载和卸载操作,也就是从主输入端移入测 试图样或从主输出端移出测试图样的操作,这对本公开的技术人员是显而易见的。因此,通 过如图2B中示出的修改的计算机指令250,加快了在对IC设计中的扫描电路进行测试期间 的IC设计的仿真。因此,在操作205之后,计算机150执行操作206,其中,修改的计算机 指令250存储在存储器中作为用于其他这种部分的计算机程序部分(即,软件)。在操作 206之后,计算机150转到操作207,并检查是否已经追踪了从IC芯片设计(例如,门级网 表的形式,见图5)中的所有扫描单元开始的所有路径。如果没有,则计算机150返回到操 作202 (如上所述)。如果操作207中发现已经追踪了所有路径,则计算机150已经完成了 该方法,并因此退出(见操作208)。如在图1C中所示,从操作203得到的计算机指令已被无条件地执行(与扫描使能 信号有关)。根据本发明,如在语句252 (图2B)中所示,操作205 (图2A)对这些计算机指 令进行修改,以使其可以有条件地执行。虽然语句252中示出了条件的特定实例,但在其他 实施例中可以检查其他条件,这对了解了本公开的技术人员是显而易见的。在本发明的一些实施例中,基于图2A的方法200中的操作201,计算机150实施 图3中示出的类型的处理。特别地,在动作301中,计算机150识别IC芯片10设计中的一 个或多个用户定义原语(UDP)作为触发器。特定UDP根据多种因素来使用,例如,由制造厂 (fabrication facility)提供的单元技术库。接下来,在动作302中,计算机150识别设计 中的附加UDP作为复用器。注意,可以以对了解了本公开的技术人员是显而易见的任意方 式实施动作301和302。之后,在动作303中,计算机150从IC芯片设计的数据模型中获得对在动作301 中识别的触发器进行实现(instantiate)的所有模块的列表。接下来,在动作304中,计算 机150从数据模型获得在动作303中识别的每个模块(当单独处理时,在下文中称为“当前 模块”)的所有端口的列表。在动作304中,计算机150还获得至数据模型中的每个触发器 的输入引脚的所有连接。然后,在动作305中,计算机150从数据模型获得将数据信号驱动 到各触发器的所有驱动器的列表。在动作306中,计算机150检查在动作305中获得的列 表中的任意驱动器,是否已在动作302中被识别为复用器。如果是,则计算机150转到动作 307,以进一步处理复用器(称为“当前”复用器),或者转到动作310。在动作310中,计算机150将至触发器的数据引脚D的路径标记为不可优化的,并前进至动作311。在动作307中,计算机150识别当前复用器的哪个引脚接收扫描数据(即,识别 SI引脚),以及哪个引脚接收任务数据(即,识别Ml引脚)。接下来,在动作308中,计算 机150将来自当前复用器的这两个输入引脚(S卩,SI引脚和Ml引脚)的信号向回追踪到 当前模块的输入端口。然后,在动作309中,计算机150将来自当前触发器的Q引脚的信号 向前追踪到当前模块的输出端口。接下来,计算机150转到动作311,其中,例如,如果在扫 描单元间存在未被访问且被标记为可优化或不可优化的路径,则重复上述的一个或多个动 作。如果不存在未访问的路径,则计算机150在动作312中退出该方法。根据本发明的一些示例性实施例执行如下描述的图4A中示出的动作。特别地,一 些实施例进入执行动作401 404,其中,动作401进行“for”循环,其中,计算机150分别 选择表示IC设计的“网表”中的每个模块“m”。在动作402中,计算机150检查在模块“m” 中是否存在扫描单元。如果答案为“是”,则计算机150转到动作403,并存储关于扫描单元 的信息,诸如其标识和其中的诸如复用器和触发器的部件。在动作403之后,计算机150转 到动作404。如果动作402中的答案为否,则计算机150也转到动作404。动作404通过检 查是否已经访问了网表中的所有模块来执行动作401的循环终止,在该情况下,计算机150 转到操作405,而如果否,则返回到动作401。注意,虽然以上参照图3进行了描述,一些实 施例基于UDP的识别,但是根据实施例,对扫描单元(及其一个或多个部件,诸如复用器和 触发器)进行识别的特定方式不同。在操作405中,计算机150检查每对扫描单元实例(例如,在动作403中识别的), 以确定一对中的两个实例是否由相同的扫描使能信号驱动,如果是,则这种对的标识存储 在数据结构中(例如,根据实施例,可以使用二维表)。如接下来描述的,在操作405之后, 计算机150转到动作406。动作406进行另一“for”循环,其中,计算机150分别选择在动作403中识别的每 个扫描单元实例,并转到动作407。在动作407中,计算机150例如通过追踪扇出来检查来 自当前扫描单元实例的所有路径是否都是可优化的。如果答案为“是”,则计算机150转到 动作408,并将所有这种路径标记为可优化的。在动作408之后,计算机150转到动作409。 如果动作407中的答案为否,则计算机150也转到动作409。动作409通过检查是否已经访 问了在动作403中识别的所有扫描单元实例来进行动作406的循环终止,如果是,则转到操 作410,否则返回到动作406。在操作410中,计算机150生成软件指令,以仿真通过组合逻辑的信号传播,该组 合逻辑包括条件(具有图2B的语句252中示出的类型)或者是无条件的。如上面提到的, 在软件指令中使用的条件基于扫描使能信号。此外,所生成的软件指令是否包含这种条件 取决于路径的可优化性。如果路径是可优化的,则软件指令是有条件的。如果路径是不可 优化的,则软件指令是无条件的。图4A的操作405可以以对了解了本公开的技术人员显而易见的任意方式来执行, 操作405的详细实施并不是本发明的重要方面。尽管如此,为了说明的目的,应注意,一些 实施例执行图4B中示出的动作411 418,以实施操作405。特别地,在动作411中,计算机 150通过分别选择在动作403(图4A)中识别的每个扫描单元实例来实施“for”循环,并转 到动作412。在动作412中,计算机150向回追踪以识别扫描使能信号的根网(root net),并保存所识别的当前单元实例的根网。然后,计算机150转到动作413,其中,其检查是否已 经访问了所有单元实例,并且如果否,则返回到动作411。如果已经访问了所有单元实例,则 计算机150转到接下来描述的动作414。在动作414中,计算机150通过分别选择一对扫描单元实例来实施另一 “for”循 环,并转到动作415。在动作415中,计算机150检查当前选择的对中的每个扫描单元实例 的扫描使能信号的根网是否一致。如果动作415中的答案为“是”,则计算机150转到动作 416,否则,转到动作417。在动作416和417中,计算机150存储为真或假的标志,以分别指 示扫描使能信号一致或不一致。在动作416和417之后,计算机150转到动作418,该动作 通过检查是否已经访问了所有对的扫描单元实例来执行动作414的循环终止,如果否,则 返回到动作414。图4A的动作407还可以以对了解了本公开的技术人员显而易见的任意方式来执 行,并且操作407的详细实施不是本发明的重要方面。尽管如此,为了说明的目的,应注意, 一些实施例执行图4C中示出的动作421 427来执行动作407。特别地,在动作421中,计 算机150通过分别选择其扇出将被追踪的扫描单元的Q引脚的每个扇出f来实施“for”循 环。接下来,在动作422中,计算机150检查该扇出f是否是单向的简单组合元件,诸如AND 门或OR门或反向器。如果动作422中的答案为“否”,则计算机150转到动作424,并检查扇 出f是否是推断的扫描单元实例,如果不是,则返回“假”,表示该路径不是可优化的。如果 动作424中的答案为“是”,则计算机150转到动作425,检查扇出f 和扫描单元是否具有相 同的扫描使能信号,如果否,则再次返回“假”,表示该路径不是可优化的。如果动作425中 的答案为“是”,则计算机150转到动作426,以检查扇出f是否与扫描单元dataNet相同, 如果否,则再次返回“假”,即,路径是不可优化的。如果动作426中的答案为“是”,则计算 机150返回“真”,表示该路径是可优化的。在动作422中,如果答案为“是”,则计算机150转到动作423,并进行递归调用以返 回到动作422,但其具有新“f ”,该新“f ”是通过其输入了动作423的旧“f ”的扇出。当在 动作423中无法到达其他扇出时,例如,如果到达了主输出端,则计算机150转到动作427, 通过检查是否已经访问了所有对的扫描单元来进行动作421的循环终止,而如果否,则返 回到动作421。如果已经访问了所有对的扫描单元,则计算机150从该方法返回,S卩,完成了 动作407 (图4A)。应注意,在数字ASIC设计流程(在图6中以简单地示例性表示而示出)中,可以 使用执行方法200以如上所述(例如,参照图2A)实现仿真速度提高的任何适当编程的计 算机(下文中的“编译代码仿真器”)。在较高水平上,设计芯片的过程以产品构思(900)开 始,并在EDA软件设计处理(910)中实现。当设计完成时,其可以试产(taped-out)(事件 940)。在试产之后,进行制造处理(950)以及包装和装配处理(960),并最终产生完成的芯 片(结果990)。EDA软件设计处理(910)实际上有多个阶段912 930组成,为了简化,以线性方 式示出。在实际ASIC设计处理中,特定设计可能必须通过步骤返回,直到通过特定测试。类 似地,在任何实际设计处理中,这些步骤可以以不同顺序及组合进行。因此,本说明书通过 上下文和一般解释的方式来提供,而不是特定的或推荐的用于特殊ASIC的设计流程。现在 将提供EDA软件设计处理(阶段910)的组成部分的主要描述。
系统设计(阶段912)电路设计者描述他们想要实现的功能,他们可以执行“如
果......怎样”(what-if)计划,以改进功能、检查成本等。在这个阶段可出现硬件-软
件结构划分。可以在该阶段使用的Synopsys 公司的示例性EDA软件产品,包括Model Architect、Saber、System Studio 禾口 Design Ware 产品°逻辑设计和功能验证(阶段914)在该阶段,写入用于系统模块的VHDL或 Verilog代码,并出于功能的准确性对设计(可以具有混合时钟域)进行检查。可以在该阶 段使用的来自Synopsys 公司的示例性EDA软件产品,包括vcs、VERA、Design Ware 、 Mage 11 an、Formal ity、ESP 和 LEDA 产品。测试的综合和设计(阶段916)这里,VHDL/Verilog被翻译成网表。该网表对于 目标技术而言可以是最优的。另外,测试的设计和实施允许对完成的芯片进行检查。可以 在该阶段使用的来自Synopsys 公司的示例性EDA软件产品包括Design Compiler 、 Physical Compiler、Test Compiler、Power Compiler、FPGA Compiler、Tetramax 禾口
Design Ware 产品。设计计划(阶段918)这里,构造并分析芯片的总体平面规划,用于定时和顶级定 线。可以在该阶段使用的来自Synopsys 公司的示例性EDA软件产品包括Jupiter和 Floorplan Compiler 产品。网表验证(阶段920)在该阶段,为了符合时间约束并与VHDL/Verilog源代码一 致,检查网表。可以在该阶段使用的来自Synopsys 公司的示例性EDA软件产品,包括 VCS、VERA、Formality 以及 Prime Time 产品。注意,如图6所示,在该阶段920期间可以使用编译代码仿真器999 (具有上述的 执行图2A的方法的类型)。如果显示的结果不满足,则芯片设计者可以返回到阶段916以 对如图5所示的IC设计进行修改。物理实施(阶段922)在该阶段进行放置(定位电路元件,诸如上述的连续单元 和组合单元)和定线(连接电路元件,诸如上述的连续单元和组合单元)。可以在该阶段使 用的来自Synopsys 公司的示例性EDA软件产品包括Astro产品。虽然在该阶段可以认 为其电路和部分(例如矩形)存在于现实世界,但是应当理解,在该阶段,在计算机150中 仅存在布局。在下述的阶段之后生成现实世界中的实际电路。分析和提取(阶段924):在该步骤,在晶体管级验证电路功能,这又允许对“如 果...怎样”进行改进。可以在该阶段使用的来自Synopsys 公司的示例性eda软件产 品包括 Star RC/XT、Raphael 以及 Aurora 产品。物理验证(阶段926)在该阶段,执行各种检查功能,以确保制造、电力问题、平版 问题以及电路的准确。可以在该阶段使用的来自Synopsys 公司的示例性EDA软件产品 包括Hercules产品。分辨率增强(阶段928)这涉及布局的几何操作以改善设计的可制造性。可以在 该阶段使用的来自Synopsys 公司的示例性EDA软件产品,包括iN-Phase、Proteus和 AFGen产品。掩模数据配置(阶段930)这提供了用于掩模制造的“试产”数据,掩模用于平版 用途,以制造完成的芯片。可以在该阶段使用的来自Synopsys 公司的示例性EDA软件产品包括CATS(R)系列产品。在该阶段之后,在晶片制造厂(也称为“工厂”)中创建现实 世界的实际电路。用于实施在这个详细的描述中(例如,图2A、图3、图4A 图4C和/或下面的子 部分A)的一个或多个动作的数据结构和软件代码可以编码到计算机可读介质中,计算机 可读介质可以是能够保存计算机使用的代码和/或数据的任意存储介质和/或任意传输介 质。存储介质包括但不限于诸如磁盘驱动、磁带、CD (光盘)、和DVD (数码影像光碟)的磁 和光存储装置。传输介质(具有或不具有在其上调制信号的载波)包括但不限于诸如因特 网的有线或无线通信网络。在一个实施例中,传输介质使用包括计算机指令信号的载波,该 计算机指令信号用于完成由图2A中示出的方法执行的一个或多个步骤。另一实施例使用 包括执行图2A示出的方法的指令的载波。注意,在一些实施例中使用以实施在本文中所描述的类型的仿真速度增加器的计 算机系统,使用一个或多个linux 操作系统工作站(基于IBM 可兼容的PC)和/或 Unix 操作系统工作站(例如,SUN Ultrasparc.HP PA-RISC或等同产品),其每个都包含 经由局域网(以太网)互连的2GHz的CPU和1GB的存储器。在下文中,这个详细描述部分的位于权利要求之前的子部分A是这个详细描述 的不可分割的一部分,其全部内容通过引用结合于此。子部分A包括用于实施根据本发 明的仿真速度增加器的一个示例性实施例的伪码和相关信息,例如,用于通过使用可从 Synopsys 公司购买的称为“vcs”的软件产品来实施在图4A 图4C中示出的动作。本文描述的实施例的多种修改和变形对了解了本公开的技术人员将显而易见。因 此,本文描述的实施例的多种修改和变形也涵盖于本发明的范围之内。子部分A/*用于本发明的示例性实施例的伪码如下*//* 顶级入 口 */doScanOpt(netlist){/**推断哪个HDL模块匹配Mux-DFF扫描单元的模板*如果成功推断,则相关D/SI/SE/Q网络位于该模块中。*/foreach modules "m,,in the ‘netlist,{If (isScanCell (m, &DataNet, &ScanDataNet, &ScanEnableNet,&Qnet) = = true){scanCellModuleTable. append ({m, DataNet, ScanDataNet,ScanEnableNetQnet});}}/*在充分扩展的HDL描述中收集扫描单元的实例*/
scanCelllnstanceTable = {instances of all scan cell modules in‘scanCellModuleTable’ };/**创建SE等价表以答复扫描单元实例对是否*取决于相同的扫描使能(ScanEnable)根信号。*/SEEquivTable = createSEEquivTabel(scanCelllnstanceTable,netlist);/*识别可优化扫描单元输出(Q)信号并且对他们作标记用于在代码产 生时进行特定处理*/foreach instance 'fi' in 'scanCelllnstanceTable'{if (allPathsFormQAreOptimizable(fi, netlist)){markOutputAsOptimized(fi);}}}/*程序至创建SE根网等价表*/Table createSEEquivTable(celllnstTable, netlist){foreach instance 'if' in 'celllnstTable'{fi. rootSENet = traceBackAndFindRootNet(fi. ScanEnableNet);}foreach pair<fil, fi2>{if (fil. rootSENet ! = fi2. rootSENet)SEEquivTable[<fi 1,fi2>] = false ;elseSEEquivTable[<fi 1, fi2>] = true}reture SEEquivTable ;}/*程序至检查这个实例是否可具有其优化的传播输出*/ScanCe11Instance currentSourcelnst ;bool traceFanouts(signal,netlist){foreach fanout ‘f,of signal
{if( 'f' is a simple combination gate){return traceFanouts (f- > fanOut) ;/* 扇出的递归调用 */} else if ( 'f' is an inferred scanCell Instance) {if (SQEquivTabel [<currentSourceInst, f>] = = false)return false ;else if (signal == f. DataNet)return true ;elsereturn false ;}else{return false ;}}}bool allPathsFormQAreOptimizable(SourceScanCe11Instance, netlist){currentSourcelnst = SourceScanCel1Instance ;/* 向前追踪 scanCelllnstance. Q 的扇出 */If (traceFanouts (Q, netlist) = = true) {return ture ;}else{return false ;}/*扫描单元模板匹配的程序*/bool isScanCell (m, pD, pSI, pSE, pQ){if (m- > hasOneSequentialUDP() == false)return false ;pQ = udp. Q ;/*向回追踪穿过简单门(如果有的话)的UDP的数据pport 氺/if ((muxFound = traceBackTi 1 lMux (udp. D)) = = false)return false ;else{D = mux. A ;SI = mux. B ;SE = mux. C ;}/*向回追踪D/SI/SE信号直到模块端口边界。如果在路径中发现任何循环、
复杂门则返回假*/0156]if ((traceBackTillPort(D, pD, SI, pSI, SE, dSE) == false) 0157]Return false ;
0158]/*模板匹配成功则返回真;*/
0159]return true ;
0160]}
0161 ]/*改变至代码产生程序*/
0162]doCodeGen(netlist)
0163]{
0164]......
0165]/*
0166]*当产生了 celllnstance. Q的传播程序,检查其是否
0167]*由doScanOptO标记为可优化。如果是,则产生监视代码。
0168]*/
0169]if(isMarkedAsOptimized(celllnstance. Q))
0170]{
0171]codeGenIfCheck( " if (celllnstance. SE = = 0)");
0172]}
0173]codeGenPropagate ( "propagate (Q);,,);
0174]......
0175]}
权利要求
一种用于配置计算机程序的计算机实施方法,所述计算机程序用于仿真集成电路(IC)芯片的操作,以测试包括在所述IC芯片中的扫描单元,所述方法包括追踪穿过所述IC芯片的设计中的组合逻辑的路径,所述路径从所述设计中的第一扫描单元的输出端口开始,并且所述路径在所述设计中的第二扫描单元的输入端口结束;创建第一指令集,以仿真穿过所述路径的信号传播;修改所述第一指令集以创建第二指令集,所述第二指令集要求满足预定条件来执行所述第一指令集;将所述第一指令集和所述第二指令集作为所述计算机程序的一部分存储在存储器中。
2.根据权利要求1所述的方法,其中修改所述第一指令集包括当共同的扫描使能信号被提供给所述第一扫描单元和所述 第二扫描单元中的每一个时,修改所述第一指令集;以及存储所述第一指令集和所述第二指令集包括当所述第一扫描单元和所述第二扫描单 元中的每一个接收不同的扫描使能信号时,存储所述第一指令集和所述第二指令集。
3.根据权利要求1所述的方法,其中存储所述第一指令集和所述第二指令集包括当共同的扫描使能信号被提供给所述第 一扫描单元和所述第二扫描单元中的每一个时,存储所述第二指令集。
4.根据权利要求3所述的方法,其中所述预定条件包括所述共同的扫描使能信号未激活。
5.根据权利要求1所述的方法,进一步包括,在所述追踪之前根据所述设计确定至少包括所述第一扫描单元和所述第二扫描单元的多个扫描单元。
6.根据权利要求5所述的方法,其中,所述确定包括对于所述多个扫描单元中的每个扫描单元,识别触发器和在所述触发器之前的复用器。
7.根据权利要求6所述的方法,其中,所述确定进一步包括基于所述设计,识别用于实现所述触发器和所述复用器的至少一个模块。
8.根据权利要求7所述的方法,其中,所述确定包括识别由所述模块使用以表示所述复用器的用户定义原语。
9.一种用于配置计算机程序的设备,所述计算机程序用于仿真集成电路(IC)芯片的 操作,以测试包括在所述IC芯片中的扫描单元,所述设备包括存储器,编码有描述所述IC芯片的设计;追踪装置,用于追踪穿过所述设计中的组合逻辑的路径,所述路径从所述设计中的第 一扫描单元的输出端口开始,并且所述路径在所述设计中的第二扫描单元的输入端口结 束;检查装置,用于检查所述第一扫描单元和所述第二扫描单元是否接收到共同的扫描使 能信号;生成装置,用于生成所述计算机程序的至少一部分,以在所述共同的扫描使能信号未 激活时有条件地穿过所述路径传播信号,并在所述共同的扫描使能信号激活时不穿过所述 路径传播所述信号;以及存储装置,用于将所述计算机程序的所述一部分存储在所述存储器中。
10.根据权利要求9所述的设备,进一步包括确定装置,用于根据所述设计确定至少包括所述第一扫描单元和所述第二扫描单元的 多个扫描单元。
11.根据权利要求10所述的设备,其中,所述确定装置包括识别装置,对于所述多个扫描单元中的每个扫描单元,所述识别装置用于识别触发器 和在所述触发器之前的复用器。
12.根据权利要求10所述的设备,其中,所述确定装置包括用于基于所述设计识别用于实现所述触发器和所述复用器的至少一个模块的装置。
13.根据权利要求12所述的设备,其中,所述确定装置包括用于识别由所述至少一个模块使用以表示所述复用器的用户定义原语的装置。
14.一种编码有用于配置计算机程序的指令的计算机可读介质,所述计算机程序用于 仿真集成电路(IC)芯片的操作,以测试包括在所述IC芯片中的扫描单元,所述介质包括追踪指令,用于追踪穿过所述IC芯片的设计中的组合逻辑的路径,所述路径从所述设 计中的第一扫描单元的输出端口开始,并且所述路径在所述设计中的第二扫描单元的输入 端口结束;创建指令,用于创建第一指令集,以仿真穿过所述路径的信号传播;修改指令,用于修改所述第一指令集以获得第二指令集,所述第二指令集要求满足预 定条件来执行所述第一指令集;存储指令,用于将所述第一指令集和所述第二指令集作为所述计算机程序的一部分存 储在计算机的存储器中。
15.根据权利要求14所述的介质,进一步包括确定指令,用于根据所述设计确定至少包括所述第一扫描单元和所述第二扫描单元的 多个扫描单元。
16.根据权利要求14所述的介质,进一步包括识别指令,对于所述多个扫描单元中的每个扫描单元,所述识别指令用于识别触发器 和在所述触发器之前的复用器。
17.根据权利要求14所述的介质,进一步包括用于基于所述设计识别用于实现触发器和在所述触发器之前的复用器的至少一个模 块的指令。
18.根据权利要求14所述的介质,进一步包括用于识别由所述设计中的至少一个模块使用以表示复用器的用户定义原语的指令。
全文摘要
一种计算机被编程为配置计算机程序,该计算机程序用于仿真集成电路(IC)芯片的操作,以测试其中的扫描电路。该计算机被编程为追踪穿过IC芯片的设计中的组合逻辑的路径,该路径从第一扫描单元的输出端口开始并在第二扫描单元的输入端口结束。如果第一扫描单元和第二扫描单元接收共同的扫描使能信号,则计算机生成计算机程序的至少一部分,即,例如当共同的扫描使能信号未激活时,有条件地执行仿真穿过路径的信号传播,并且当共同的扫描使能信号激活时,跳过执行仿真的软件。计算机在存储器中存储计算机程序的一部分,用于计算机程序的其他这种部分。
文档编号G01R31/28GK101828120SQ200880112144
公开日2010年9月8日 申请日期2008年7月18日 优先权日2007年10月17日
发明者约格什·潘迪, 维贾伊·桑卡尔, 马尼什·简因 申请人:新思科技有限公司