CN117377961A - 用于仿真的方法、装置及设备 - Google Patents

用于仿真的方法、装置及设备 Download PDF

Info

Publication number
CN117377961A
CN117377961A CN202180098418.9A CN202180098418A CN117377961A CN 117377961 A CN117377961 A CN 117377961A CN 202180098418 A CN202180098418 A CN 202180098418A CN 117377961 A CN117377961 A CN 117377961A
Authority
CN
China
Prior art keywords
logic
circuit
simulation
fault
gates
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.)
Pending
Application number
CN202180098418.9A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN117377961A publication Critical patent/CN117377961A/zh
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本公开涉及一种用于对逻辑电路进行仿真的方法和设备。该方法包括按逻辑门的类型对逻辑电路进行分级。第一层级电路包括时序逻辑门、原始输入和原始输出。第二层级电路包括组合逻辑门。通过使用事件驱动的方式首先计算时序逻辑门的时钟端口的逻辑值,可以确定时序逻辑门是否被触发。然后使用硬编码的方式遍历包括时序逻辑门和组合逻辑门在内的所有逻辑门的输出逻辑值。由于在使用硬编码的方式进行遍历之前,时序逻辑门在各个时间帧的状态已被确定,因此可以无需重复使用硬编码的方式来计算逻辑电路的逻辑输出,从而大大节省了计算资源并且降低了仿真的时间。

Description

用于仿真的方法、装置及设备 技术领域
本公开涉及电子领域,更具体而言涉及用于集成电路的仿真的方法、装置和设备。
背景技术
已经开发出多种电子设计自动化(electronic design automation,EDA)工具来完成超大规模集成电路(very large scale integration,VLSI)芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等设计流程。在诸如数字集成电路之类的集成电路的设计过程中,一个重要的阶段是逻辑电路的仿真,其可以在流片之前验证电路设计的正确性。逻辑电路的仿真通常包括逻辑仿真和故障仿真两个阶段。在逻辑仿真中,仿真设备读取网表文件并且接收测试向量,在进行逻辑运算之后生成逻辑仿真结果。在故障仿真中,仿真设备接收故障向量集,并且使用逻辑仿真生成的逻辑仿真结果作为背景来确定检测哪些故障可以被检测到。
常规逻辑仿真例如包括基于硬编码的逻辑仿真和基于事件驱动技术的逻辑仿真。故障仿真以逻辑仿真的仿真结果作为背景。常规故障仿真例如包括基于单故障向量并行仿真技术(PPSFP)的故障仿真和基于Hope技术的故障仿真。集成电路通常包括成千上万的逻辑门,常规的逻辑仿真或故障仿真都消耗相当长的仿真时间。
发明内容
鉴于上述问题,本公开的实施例旨在提供一种用于仿真的方法、存储介质、程序产品和电子设备,用于数字电路的逻辑仿真和/或故障仿真。
根据本公开的第一方面,提供一种用于仿真的方法。该方法包括对逻辑电路进行分级以确定第一层级电路和第二层级电路,第一层级电路包括多个时序逻辑门和多个原始输入,并且第二层级电路包括多个组合逻辑门。该方法还包括基于表示多个时间帧的时间帧数据和原始时钟输入集,确定第一层级电路的多个时序逻辑门的时钟输入端口在多个时间帧中的时钟逻辑值集。该方法进一步包括基于时钟逻辑值集和原始数据输入集,确定逻辑仿真输出集。逻辑仿真输出集包括:第一层级电路中的多个时序逻辑门的输出端口在多个时间帧中的输出逻辑值,和第二层级电路中的多个组合逻辑门的输出端口在多个时间帧中的输出逻辑值。由于逻辑电路中的逻辑门按类型被分级,相同类型的逻辑门的数据因此很大程度上位于相邻或相近的存储区域,例如位于存储器中的相邻或相近的区域。处理器在将某个或某些逻辑门的数据从存储器读入高速缓存时,由于高速缓存的空间局部性设计原理,因此相邻或附近的多个逻辑门的数据会被一起读入高速缓存。在相邻或相近的多个逻辑门的数据被读入高速缓存之后,当处理器在计算完当前逻辑门的逻辑值之后计算下一逻辑门的逻辑值时,由于该下一逻辑门的相关数据已被读入高速缓存,因此无需重新寻址访问存储器。这样,可以大大减少高速缓存访问存储器的次数,从而节省了大量的仿真时间。另一方面,在一些实施例中,由于时序逻辑门的触发状态已被确定,因此在以硬编码的方式按层级电路遍历各个逻辑门(包括时序逻辑门和组合逻辑门)以计算各个逻辑门的输出逻辑值时,也无需像常规硬编码逻辑仿真那样重复遍历全部逻辑门。这可以进一步显著减少逻辑电路的逻辑仿真时间。
在第一方面的一种可能的实现方式中,对逻辑电路进行分级以确定第一层级电路和第二层级电路包括:对逻辑电路进行分级以确定第一层级电路、第一子层级电路和第二子层级电路。第一子电路层级包括第二层级电路中的多个组合逻辑门中的、与第一层级电路直接耦合的组合逻辑门。第二子电路层级包括第二层级电路中的多个组合逻辑门中的、与第一子电路层级直接耦合的组合逻辑门。通过将第二层级电路按照组合逻辑门的连接关系进一步划分,可以提高逻辑仿真的准确性和效率。
在第一方面的一种可能的实现方式中,该方法还包括接收仿真周期数据;以及基于仿真周期数据确定时间帧数据。
在第一方面的一种可能的实现方式中,基于表示多个时间帧的时间帧数据和原始时钟输入集确定第一层级电路的多个时序逻辑门的时钟输入端口在多个时间帧中的时钟逻辑值集包括:将多个时间帧中的原始时钟输入端口加入事件队列;将原始时钟输入端口与多个时序逻辑门之间的组合逻辑门加入事件队列;计算(compute)组合逻辑门的输出逻辑值;以及基于组合逻辑门的输出逻辑值确定第一层级电路中的多个时序逻辑门的时钟端口在多个时间帧中的时钟逻辑值集。由于时序逻辑门在逻辑电路中通常仅占相对少的比例,因此待计算的时序逻辑门的时钟端口也相应地较少。即使以事件驱动的方式来计算,这也对于逻辑仿真的时间总体影响不大。此外,由于逻辑电路已被分级并且原始时钟输入端口和时序逻辑门之间并无其它时序逻辑门,因此可以直接确定时钟端口的逻辑值。在以事件驱动的方式计算完第一层级电路中的所有时序逻辑门的时钟端口在各个时间帧中的时钟逻辑值之后,可以获得时序逻辑门的时钟输入端口在时间帧数据指示的多个时间帧中的时钟逻辑值集。通过使用时钟逻辑值集,可以使得时序逻辑门的输出逻辑值是确定的,并因此如上所述地进一步显著减小逻辑仿真的时间。
在第一方面的一种可能的实现方式中,基于时钟逻辑值集和原始数据输入集确定逻辑仿真输出集包括使用时钟逻辑值集和原始数据输入集来按照层级电路的顺序依次确定第一层级电路和第二层级电路中的多个逻辑门的多个输出逻辑值,逻辑仿真输出集包括多个输出逻辑值。通过依次确定逻辑门的输出逻辑值,可以进一步降低仿真时间并且提供仿真准确率。
在第一方面的一种可能的实现方式中,对逻辑电路进行分级以确定第一层级电路和第二层级电路包括按照逻辑电路的层级将第一层级电路的数据存储在存储器的第一区域并且将第二层级电路的数据存储在存储器的第二区域,第二区域不同于第一区域。通过将第一层级电路和第二层级电路分区存储,相邻的逻辑门基本上位于相邻的位置,这可以显著提供空间局部性的使用概率,进一步降低仿真的时间。
在第一方面的一种可能的实现方式中,该方法还包括接收针对逻辑电路的逻辑仿真输出集和故障输入集;至少基于逻辑仿真输出集,确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门;以及至少基于所确定的多个传输逻辑门和故障输入集,确定故障仿真输出集。通过确定在各个时间帧中可以传递信号的多个传输逻辑门,可以仅计算可传递故障信号的传递路径中的逻辑门的输出值,而不计算不可传递信号的路径中的逻辑门的输出值。这显著降低了故障仿真的计算量,大大节省了故障仿真的时间。
在第一方面的一种可能的实现方式中,至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:基于逻辑仿真输出集,按照时间帧确定逻辑电路中的时序逻辑门在多个时间帧中的至少一个时间帧中是否被相应地触发;以及响应于逻辑电路中的第一组时序逻辑门在至少一个时间帧中被触发,将与第一组时序逻辑门的输入 相关的组合逻辑门和第一组时序逻辑门确定为多个传输逻辑门。通过确定时序逻辑门在时间帧中被触发,可以以简易的方式确定该时序逻辑门是否是传输逻辑门。这可以进一步降低故障仿真的时间并且提高故障仿真的效率。
在第一方面的一种可能的实现方式中,基于逻辑仿真输出集确定逻辑电路中的各个时序逻辑门在多个时间帧中是否被相应地触发包括:基于逻辑仿真输出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定逻辑电路中的各个时序逻辑门在多个时间帧中是否被触发。
在第一方面的一种可能的实现方式中,至少基于所确定的多个传输逻辑门和故障输入集确定故障仿真输出集包括:确定待计算的逻辑门是否是传输逻辑门;以及响应于确定待计算的逻辑门是传输逻辑门,使用源自故障输入集的逻辑值来确定待计算的逻辑门的故障输出逻辑值,故障仿真输出集包括故障输出逻辑值。通过确定传输逻辑门并且计算相应的故障输出逻辑值,可以减少故障仿真的计算量,并且减少故障仿真的时间。
在第一方面的一种可能的实现方式中,至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及响应于原始故障输入在故障输入端口被激发,基于逻辑仿真输出集,确定逻辑电路中与故障输入端口相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。通过确定是否被激发,可以回溯可被观测的传输逻辑门,从而以简易的方式确定可被观测的逻辑门以减少故障仿真的计算量并且相应地减少仿真时间。
在第一方面的一种可能的实现方式中,至少基于逻辑仿真输出集,确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:至少基于逻辑仿真输出集,以多线程的方式并行地确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。由于各个逻辑门的数据在确定传输逻辑门的过程中不被修改,因此各个逻辑门的数据可以被多线程同时访问。通过使用多线程的故障方式可以进一步地减少故障仿真的时间。
根据本公开的第二方面,提供一种计算机可读存储介质,存储多个程序。多个程序被配置为一个或多个处理器执行,多个程序包括用于执行根据第一方面的方法的指令。
根据本公开的第三方面,提供一种计算机程序产品。计算机程序产品包括多个程序,多个程序被配置为一个或多个处理器执行,多个程序包括用于执行根据第一方面的方法的指令。
根据本公开的第四方面,提供一种电子设备。电子设备包括一个或多个处理器;包括计算机指令的存储器,计算机指令在由电子设备的一个或多个处理器执行时使得电子设备执行根据第一方面的方法。
根据本公开的第五方面,提供一种电子设备。电子设备包括逻辑电路分级单元,用于对逻辑电路进行分级以确定第一层级电路和第二层级电路,第一层级电路包括多个时序逻辑门和多个原始输入,并且第二层级电路包括多个组合逻辑门;时钟逻辑值确定单元,用于基于表示多个时间帧的时间帧数据和原始时钟输入集,确定第一层级电路的多个时序逻辑门的时钟输入端口在多个时间帧中的时钟逻辑值集;以及逻辑仿真输出集确定单元,用于基于时钟逻辑值集和原始数据输入集确定逻辑仿真输出集。逻辑仿真输出集包括:第一层级电路中的多个时序逻辑门的输出端口在多个时间帧中的输出逻辑值,和第二层级电路中的多个组合逻辑门的输出端口在多个时间帧中的输出逻辑值。由于逻辑电路中的逻辑门按类型被分级,相同类型的逻辑门的数据因此很大程度上位于相邻或相近的存储区域,例如位于存储器中的相 邻或相近的区域。处理器在将某个或某些逻辑门的数据从存储器读入高速缓存时,由于高速缓存的空间局部性设计原理,因此相邻或附近的多个逻辑门的数据会被一起读入高速缓存。在相邻或相近的多个逻辑门的数据被读入高速缓存之后,当处理器在计算完当前逻辑门的逻辑值之后计算下一逻辑门的逻辑值时,由于该下一逻辑门的相关数据已被读入高速缓存,因此无需重新寻址访问存储器。这样,可以大大减少高速缓存访问存储器的次数,从而节省了大量的仿真时间。另一方面,在一些实施例中,由于时序逻辑门的触发状态已被确定,因此在以硬编码的方式按层级电路遍历各个逻辑门(包括时序逻辑门和组合逻辑门)以计算各个逻辑门的输出逻辑值时,也无需像常规硬编码逻辑仿真那样重复遍历全部逻辑门。这可以进一步显著减少逻辑电路的逻辑仿真时间。
在第五方面的一种可能的实现方式中,逻辑电路分级单元进一步用于对逻辑电路进行分级以确定第一层级电路、第一子层级电路和第二子层级电路,第一子电路层级包括第二层级电路中的多个组合逻辑门中的、与第一层级电路直接耦合的组合逻辑门,并且第二子电路层级包括第二层级电路中的多个组合逻辑门中的、与第一子电路层级直接耦合的组合逻辑门。通过将第二层级电路按照组合逻辑门的连接关系进一步划分,可以提高逻辑仿真的准确性和效率。
在第五方面的一种可能的实现方式中,时钟逻辑值确定单元进一步用于将多个时间帧中的原始时钟输入端口加入事件队列;将原始时钟输入端口与多个时序逻辑门之间的组合逻辑门加入事件队列;计算组合逻辑门的输出逻辑值;以及基于组合逻辑门的输出逻辑值确定第一层级电路中的多个时序逻辑门的时钟端口在多个时间帧中的时钟逻辑值集。由于时序逻辑门在逻辑电路中通常仅占相对少的比例,因此待计算的时序逻辑门的时钟端口也相应地较少。即使以事件驱动的方式来计算,这也对于逻辑仿真的时间总体影响不大。此外,由于逻辑电路已被分级并且原始时钟输入端口和时序逻辑门之间并无其它时序逻辑门,因此可以直接确定时钟端口的逻辑值。在以事件驱动的方式计算完第一层级电路中的所有时序逻辑门的时钟端口在各个时间帧中的时钟逻辑值之后,可以获得时序逻辑门的时钟输入端口在时间帧数据指示的多个时间帧中的时钟逻辑值集。通过使用时钟逻辑值集,可以使得时序逻辑门的输出逻辑值是确定的,并因此如上所述地进一步显著减小逻辑仿真的时间。
在第五方面的一种可能的实现方式中,逻辑仿真输出集确定单元进一步用于使用时钟逻辑值集和原始数据输入集来按照层级电路的顺序依次确定第一层级电路和第二层级电路中的多个逻辑门的多个输出逻辑值,逻辑仿真输出集包括多个输出逻辑值。通过依次确定逻辑门的输出逻辑值,可以进一步降低仿真时间并且提供仿真准确率。
在第五方面的一种可能的实现方式中,逻辑电路分级单元进一步用于按照逻辑电路的层级将第一层级电路的数据存储在存储器的第一区域并且将第二层级电路的数据存储在存储器的第二区域,第二区域不同于第一区域。通过将第一层级电路和第二层级电路分区存储,相邻的逻辑门基本上位于相邻的位置,这可以显著提供空间局部性的使用概率,进一步降低仿真的时间。
在第五方面的一种可能的实现方式中,电子设备还包括:接收单元,用于接收针对逻辑电路的逻辑仿真输出集和故障输入集;传输逻辑门确定单元,用于至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门;以及故障仿真输出集确定单元,用于至少基于所确定的多个传输逻辑门和故障输入集确定故障仿真输出集。通过确定在各个时间帧中可以传递信号的多个传输逻辑门,可以仅计算可传递故障信号的传递路径 中的逻辑门的输出值,而不计算不可传递信号的路径中的逻辑门的输出值。这显著降低了故障仿真的计算量,大大节省了故障仿真的时间。
在第五方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于基于逻辑仿真输出集,按照时间帧确定逻辑电路中的时序逻辑门在多个时间帧中的至少一个时间帧中是否被相应地触发;以及响应于逻辑电路中的第一组时序逻辑门在至少一个时间帧中被触发,将与第一组时序逻辑门的输入相关的组合逻辑门和第一组时序逻辑门确定为多个传输逻辑门。通过确定时序逻辑门在时间帧中被触发,可以以简易的方式确定该时序逻辑门是否是传输逻辑门。这可以进一步降低故障仿真的时间并且提高故障仿真的效率。
在第五方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于基于逻辑仿真输出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定逻辑电路中的各个时序逻辑门在多个时间帧中是否被触发。
在第五方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于确定待计算的逻辑门是否是传输逻辑门;以及响应于确定待计算的逻辑门是传输逻辑门,使用源自故障输入集的逻辑值来确定待计算的逻辑门的故障输出逻辑值,故障仿真输出集包括故障输出逻辑值。通过确定传输逻辑门并且计算相应的故障输出逻辑值,可以减少故障仿真的计算量,并且减少故障仿真的时间。
在第五方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及响应于原始故障输入在故障输入端口被激发,基于逻辑仿真输出集,确定逻辑电路中与故障输入端口相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。通过确定是否被激发,可以回溯可被观测的传输逻辑门,从而以简易的方式确定可被观测的逻辑门以减少故障仿真的计算量并且相应地减少仿真时间。
在第五方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于至少基于逻辑仿真输出集,以多线程的方式并行地确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。由于各个逻辑门的数据在确定传输逻辑门的过程中不被修改,因此各个逻辑门的数据可以被多线程同时访问。通过使用多线程的故障方式可以进一步地减少故障仿真的时间。
根据本公开的第六方面,提供一种用于仿真的方法。该方法包括接收针对逻辑电路的逻辑仿真输出集和故障输入集;至少基于逻辑仿真输出集,确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门;以及至少基于所确定的多个传输逻辑门和故障输入集,确定故障仿真输出集。通过确定在各个时间帧中可以传递信号的多个传输逻辑门,可以仅计算可传递故障信号的传递路径中的逻辑门的输出值,而不计算不可传递信号的路径中的逻辑门的输出值。这显著降低了故障仿真的计算量,大大节省了故障仿真的时间。
在一种可能的实现方式中,至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:基于逻辑仿真输出集,按照时间帧确定逻辑电路中的时序逻辑门在多个时间帧中的至少一个时间帧中是否被相应地触发;以及响应于逻辑电路中的第一组时序逻辑门在至少一个时间帧中被触发,将与第一组时序逻辑门的输入相关的组合逻辑门和第一组时序逻辑门确定为多个传输逻辑门。通过确定时序逻辑门在时间帧中被触发,可以以简易的方式确定该时序逻辑门是否是传输逻辑门。这可以进一步降低故障仿真的时间并且提高故障仿真的效率。
在一种可能的实现方式中,基于逻辑仿真输出集确定逻辑电路中的各个时序逻辑门在多 个时间帧中是否被相应地触发包括:基于逻辑仿真输出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定逻辑电路中的各个时序逻辑门在多个时间帧中是否被触发。
在一种可能的实现方式中,至少基于所确定的多个传输逻辑门和故障输入集确定故障仿真输出集包括:确定待计算的逻辑门是否是传输逻辑门;以及响应于确定待计算的逻辑门是传输逻辑门,使用源自故障输入集的逻辑值来确定待计算的逻辑门的故障输出逻辑值,故障仿真输出集包括故障输出逻辑值。通过确定传输逻辑门并且计算相应的故障输出逻辑值,可以减少故障仿真的计算量,并且减少故障仿真的时间。
在一种可能的实现方式中,至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及响应于原始故障输入在故障输入端口被激发,基于逻辑仿真输出集,确定逻辑电路中与故障输入端口相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。通过确定是否被激发,可以回溯可被观测的传输逻辑门,从而以简易的方式确定可被观测的逻辑门以减少故障仿真的计算量并且相应地减少仿真时间。
在一种可能的实现方式中,至少基于逻辑仿真输出集,确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:至少基于逻辑仿真输出集,以多线程的方式并行地确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。由于各个逻辑门的数据在确定传输逻辑门的过程中不被修改,因此各个逻辑门的数据可以被多线程同时访问。通过使用多线程的故障方式可以进一步地减少故障仿真的时间。
根据本公开的第七方面,提供一种计算机可读存储介质,存储多个程序。多个程序被配置为一个或多个处理器执行,多个程序包括用于执行根据第七方面的方法的指令。
根据本公开的第八方面,提供一种计算机程序产品。计算机程序产品包括多个程序,多个程序被配置为一个或多个处理器执行,多个程序包括用于执行根据第七方面的方法的指令。
根据本公开的第九方面,提供一种电子设备。电子设备包括:一个或多个处理器;包括计算机指令的存储器,计算机指令在由电子设备的一个或多个处理器执行时使得电子设备执行根据第七方面的方法。
根据本公开的第十方面,提供一种电子设备。电子设备包括:接收单元,用于接收针对逻辑电路的逻辑仿真输出集和故障输入集;传输逻辑门确定单元,用于至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门;以及故障仿真输出集确定单元,用于至少基于所确定的多个传输逻辑门和故障输入集确定故障仿真输出集。通过确定在各个时间帧中可以传递信号的多个传输逻辑门,可以仅计算可传递故障信号的传递路径中的逻辑门的输出值,而不计算不可传递信号的路径中的逻辑门的输出值。这显著降低了故障仿真的计算量,大大节省了故障仿真的时间。
在第十方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于基于逻辑仿真输出集,按照时间帧确定逻辑电路中的时序逻辑门在多个时间帧中的至少一个时间帧中是否被相应地触发;以及响应于逻辑电路中的第一组时序逻辑门在至少一个时间帧中被触发,将与第一组时序逻辑门的输入相关的组合逻辑门和第一组时序逻辑门确定为多个传输逻辑门。通过确定时序逻辑门在时间帧中被触发,可以以简易的方式确定该时序逻辑门是否是传输逻辑门。这可以进一步降低故障仿真的时间并且提高故障仿真的效率。
在第十方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于基于逻辑仿真输 出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定逻辑电路中的各个时序逻辑门在多个时间帧中是否被触发。
在第十方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于确定待计算的逻辑门是否是传输逻辑门;以及响应于确定待计算的逻辑门是传输逻辑门,使用源自故障输入集的逻辑值来确定待计算的逻辑门的故障输出逻辑值,故障仿真输出集包括故障输出逻辑值。通过确定传输逻辑门并且计算相应的故障输出逻辑值,可以减少故障仿真的计算量,并且减少故障仿真的时间。
在第十方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及响应于原始故障输入在故障输入端口被激发,基于逻辑仿真输出集,确定逻辑电路中与故障输入端口相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。通过确定是否被激发,可以回溯可被观测的传输逻辑门,从而以简易的方式确定可被观测的逻辑门以减少故障仿真的计算量并且相应地减少仿真时间。
在第十方面的一种可能的实现方式中,传输逻辑门确定单元进一步用于至少基于逻辑仿真输出集,以多线程的方式并行地确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。由于各个逻辑门的数据在确定传输逻辑门的过程中不被修改,因此各个逻辑门的数据可以被多线程同时访问。通过使用多线程的故障方式可以进一步地减少故障仿真的时间。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本公开的一些实施例的逻辑电路的仿真系统100的示意图。
图2示出了根据本公开的一些实施例的逻辑电路的仿真流程的示意框图。
图3示出了根据本公开的一些实施例的示意性逻辑电路的示例电路图。
图4示出了图3中的逻辑电路的分级示意图。
图5示出了图3中的逻辑电路按时间帧展开的示意图。
图6示出了根据本公开的一些实施例的仿真方法的示意流程图。
图7示出了根据本公开的一些实施例的仿真方法的示意流程图。
图8示出了根据本公开的一些实施例的具有逻辑仿真背景值的逻辑电路的示意图。
图9示出了根据本公开的一些实施例的具有可传输标志的逻辑电路的示意图。
图10示出了根据本公开的一些实施例的用于描述故障激发的逻辑电路的示意图。
图11示出了根据本公开的一些实施例的电子设备的示意框图。
图12示出了根据本公开的另一些实施例的电子设备的示意框图。
图13示出了可以用来实施本公开的一些实施例的示例设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的 实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。术语“和/或”表示由其关联的两项的至少一项。例如“A和/或B”表示A、B、或者A和B。下文还可能包括其他明确的和隐含的定义。
应理解,本申请实施例提供的技术方案,在以下具体实施例的介绍中,某些重复之处可能不再赘述,但应视为这些具体实施例之间已有相互引用,可以相互结合。
如上所述,常规的逻辑仿真或故障仿真都消耗相当长的仿真时间。例如在常规的硬编码逻辑仿真中,硬编码从原始输入开始依次遍历计算逻辑电路中的各个逻辑门的逻辑值。然而,逻辑电路中通常包括一些时序逻辑门,时序逻辑门的逻辑值计算并不仅取决于原始输入或与时序逻辑门耦合的组合逻辑门的输出,还取决于时序逻辑门的状态,例如时序逻辑门的时钟端口的时钟输入以及时序逻辑门彼此的连接关系。因此,硬编码无法一次计算得到完整且准确的逻辑值,而是针对逻辑电路中的时序逻辑门的多个状态重复计算逻辑电路的所有逻辑门的逻辑值。这消耗了大量的计算资源和计算时间。
在常规的事件驱动逻辑仿真中,通常从原始输入进行广度优先的逻辑仿真。由于处理器在读取描述逻辑电路的网表文件时逻辑电路的各个逻辑门数据并非按照广度优先搜索的方式被存储在存储器中,因此处理器的高速缓存需要始终频繁访问存储器的不同位置以获得各个逻辑门的数据。这消耗了大量访问时间。在本文中,“时序逻辑门”表示具有时钟控制输入的逻辑门。时序逻辑门在任意时刻的输出不仅取决于当时的输入信号,而且还取决于时钟信号和时序逻辑门原来的状态,换言之,还可以与以前的输入有关。时序逻辑门例如包括触发器、寄存器和锁存器等。相对而言,“组合逻辑门”表示不具有时钟控制输入的逻辑门。组合逻辑门在任意时刻的输出仅仅取决于该时刻的输入,而与组合逻辑门原来的状态无关。组合逻辑门例如包括与门、或门、与非门、异或门、非门和缓冲器等。在逻辑电路中,通常时序逻辑门仅占少数比例,而逻辑电路的大部分逻辑门为组合逻辑门。
在本公开的一些实施例中,处理器在读取网表文件之后,将网表文件所描述的逻辑电路中的逻辑门按照逻辑门的类型分级,以将时序逻辑门、原始输入端口和原始输出端口放入第一层级电路,并且将组合逻辑门放入第二层级电路。进一步地,逻辑电路中的逻辑门的数据可以按所分级的层级被存储在存储器中。例如,各个层级电路中的逻辑门的数据可以被存储在存储器中的相邻或附近的位置。处理器可以通过寻址的方式访问存储器以获得待计算的逻辑门的数据。
处理器使用来自自动测试向量生成(automatic test pattern generation,ATPG)设备的ATPG数据,具体而言,ATPG数据中针对各个时序逻辑门的时钟端口的原始时钟输入,来确定该时序逻辑门的时钟端口在各个时间帧中的逻辑值。通过计算时序逻辑门的时钟端口的逻辑值,可以确定各个时序逻辑门在多个时间帧中的状态,例如是否被触发。在本文中,“触发”表示时序逻辑门被打开以在时序逻辑门的输出端口输出取决于时序逻辑门的输入和时序逻辑门先前状态的逻辑输出。在时序逻辑门未被触发时,时序逻辑门维持(存储)当前逻辑输出,而与时序逻辑门的逻辑输入无关。通过确定被触发的时序逻辑门,可以正确计算时序逻辑门的逻辑输出和组合逻辑门的逻辑输出,从而实现逻辑仿真。
在本公开的一些实施例中,由于逻辑电路中的逻辑门按类型被分级,相同类型的逻辑门的数据因此很大程度上位于相邻或相近的存储区域,例如位于存储器中的相邻或相近的区域。处理器在将某个或某些逻辑门的数据从存储器读入高速缓存(cache)时,由于高速缓存的空间局部性(space locality)设计原理,因此相邻或附近的多个逻辑门的数据会被一起读入高速缓存。在相邻或相近的多个逻辑门的数据被读入高速缓存之后,当处理器在计算完当前逻辑门的逻辑值之后计算下一逻辑门的逻辑值时,由于该下一逻辑门的相关数据已被读入高速缓存,因此无需重新寻址访问存储器。这样,可以大大减少高速缓存访问存储器的次数,从而节省了大量的仿真时间。另一方面,在一些实施例中,由于时序逻辑门的触发状态已被确定,因此在以硬编码的方式按层级电路遍历各个逻辑门(包括时序逻辑门和组合逻辑门)以计算各个逻辑门的输出逻辑值时,也无需像常规硬编码逻辑仿真那样重复遍历全部逻辑门。这可以进一步显著减少逻辑电路的逻辑仿真时间。
在本公开的一些实施例中,处理器首先使用事件驱动的方式计算时序逻辑门的时钟端口的逻辑值,并且随后使用硬编码的方式计算时序逻辑门和组合逻辑门的逻辑输出。由于时序逻辑门通常仅占逻辑电路的逻辑门的数量的一小部分,因此即使以事件驱动的方式计算时序逻辑门的时钟端口的逻辑值,这也不会造成高速缓存在逻辑仿真期间始终高频访问存储器,从而可以减少逻辑仿真的时间。此外,在处理器计算时序逻辑门和组合逻辑门的逻辑输出时,由于按分级电路的方式依次计算时序逻辑门和组合逻辑门的逻辑输出,并且时序逻辑门的状态通过之前的时钟端口的逻辑输出计算已经确定,因此也无需多次重复计算所有逻辑门的所有逻辑值。这进一步减少了逻辑仿真的时间。
图1示出了根据本公开的一些实施例的逻辑电路的仿真系统100的示意图。在一个实施例中,仿真系统100例如包括电子设备10和ATPG设备20。在一个实施例中,电子设备10例如是计算机。电子设备10包括处理器14和存储器12,其中处理器14包括高速缓存16。备选地,在一些实施例中,高速缓存16也可以独立于处理器14,本公开的范围对此不进行限制。ATPG设备20被配置为生成针对逻辑仿真的ATPG数据,并且将ATPG数据传输至电子设备10。虽然在图1中将电子设备10和ATPG设备20独立地限制,但是在一些实施例中,ATPG设备20可以与电子设备10集成在一起,本公开对此不进行限制。电子设备10可以包括输入装置、通信装置、显示器、音频装置等在此未被示出的其它部件。电子设备10例如可以包括台式计算机、笔记本、工作站、服务器等具有计算功能的设备。用于描述逻辑电路的网表文件可以通过各种有线或无线的方式传递至电子设备10。备选地,电子设备10还可以使用存储有网表文件的存储介质来读取该网表文件。ATPG设备20可以针对不同的逻辑电路生成不同的ATPG数据。在一个实施例中,ATPG数据例如包括仿真周期数据、原始数据输入和故障仿真数据等。仿真周期数据例如包括节拍数据,即,用于表示处理器针对逻辑仿真和/或故障仿真所执行的时间帧的数据。逻辑仿真和故障仿真的时间帧可以相同或不同,本公开对此不进行限制。原始输入例如包括在逻辑仿真中针对逻辑电路中的各个原始数据输入端口的原始数据输入和用于计算时序逻辑门的时钟端口的逻辑值的、与原始时钟端口对应的原始时钟输入。由于时间帧通常为多个时间帧,因此针对单个原始数据输入端口的原始数据输入可以是针对该多个时间帧的原始数据输入集,其包括一系列比特值,例如64位比特值。可以理解,取决于时间帧,可以有更多或更少位的比特值,例如32位或128位比特值。故障仿真数据例如包括针对故障数据输入端的故障数据输入。类似地,由于故障仿真中的时间帧通常为多个时间帧,因此针对单个故障输入端的原始故障数据输入可以是故障输入集,其包括 针对该多个时间帧的一系列比特值,例如64位比特值。可以有更多或更少位的比特值。
图2示出了根据本公开的一些实施例的仿真流程200的示意图。在一个实施例中,仿真流程200由图1的电子设备10执行,因此针对电子设备10的描述内容可以适用于仿真流程200。仿真流程例如可以包括逻辑仿真210和故障仿真220。逻辑仿真210使用来自ATPG设备20的ATPG数据202和通过无线、有线或读取存储介质方式获得的网表文件204。网表文件204包括用于描述逻辑电路中的各个逻辑门(包括时序逻辑门和组合逻辑门)、原始输入、原始输出以及各个部件之间的耦合关系等数据。电子设备10可以执行逻辑仿真210以生成逻辑仿真输出集。逻辑仿真210的具体过程可以参见下文。该逻辑仿真输出集可以用于故障仿真220。故障仿真220除了使用该逻辑仿真输出集之外,还使用来自ATPG设备20的故障输入集222。故障仿真220具有故障输入集222和逻辑仿真输出集生成故障仿真输出集224。备选地,故障仿真220还可以使用独立于逻辑仿真210的逻辑仿真输出集和故障输入集222来生成故障仿真输出集224。故障仿真220还可以生成用于自动测试设备(auto test equipment,ATE)的测试向量。在生成故障仿真输出集224之后,电子设备10可以基于故障仿真输出集224和预期故障结果生成故障覆盖包括228。故障仿真220的具体过程可以参见下文。
图3示出了根据本公开的一些实施例的示意性逻辑电路30的示例电路图。逻辑电路30仅是用于说明本公开的原理,而非对本公开的范围进行限制。可以理解,还可以有其它配置的逻辑电路。逻辑电路30例如可以包括第一原始数据输入PI1、与门31、第一触发器U1、第二原始数据输入PI2、反相器32、第二触发器U2、第一缓冲器33、第二缓冲器34和原始输出PO。与门31的输入耦合至第一原始数据输入PI1和第一触发器U1的输出。第一触发器U1的时钟端口C1被配置为接收第一时钟信号,第一触发器U1的复位端耦合至第二缓冲器34的输出,并且第一触发器U1的输出耦合至原始输出PO。反相器32的输入耦合至第二原始数据输入PI2,并且反相器32的输出耦合至第二触发器U2的输入端。第二触发器U2的时钟端口C2被配置为接收第二时钟信号,并且第二触感器U2的输出耦合至第一缓冲器33的输入,并且第一缓冲器33的输出耦合至第二缓冲器34的输入。逻辑电路30包括第一类时序逻辑门和第二类组合逻辑门。第一类时序逻辑门包括第一缓冲器U1和第二缓冲器U2,而第二类组合逻辑门包括与门31、反相器32、第一缓冲器33和第二缓冲器34。
图4示出了图3中的逻辑电路的分级示意图。在本公开的一些实施例中,处理器在逻辑仿真过程中,根据网表文件所描述的逻辑电路中各个逻辑门的耦合关系,将逻辑电路拆分为两个层级的电路,其中第一层级电路包括时序逻辑门、原始输入和原始输出,并且第二层级电路包括组合逻辑门。在另一些实施例中,还可以针对组合逻辑门与第一层级电路的关系以及组合逻辑门彼此之间的关系,进一步分级第二层级电路。例如,第二层级电路包括第一子层级电路、第二子层级电路……第N子层级电路,其中N表示大于1的整数,并且N的具体数值取决于待仿真的逻辑电路。在一个实施例中,第一子层级电路包括与第一层级电路直接耦合的组合逻辑门,第二子层级电路包括与第一子层级电路直接耦合的组合逻辑门,以此类推。
在图4所示的实施例中,逻辑电路30可以被分为3个层级,其中图4中所示的0级对应于第一层级电路,1级对应于第二层级电路的第一子层级电路,并且2级对应于第二层级电路的第二子层级电路。第一层级电路包括原始输出PO、第一原始数据输入PI1、第二原始数据输入PI2、第一触发器U1和第二触发器U2。第一子层级电路包括与门31、第一缓冲器33和反相器32。第二子层级电路包括第二缓冲器34。在一些情形下,时钟信号并未被直接施加 至时序逻辑门的时钟端口,而是经由一个或多个组合逻辑门施加至第一层级电路的时序逻辑门的时钟端口。在此情形下,第二层级电路可以不包括在原始时钟输入端口到时序逻辑门的时钟端口之间的组合逻辑门。
图5示出了图3中的逻辑电路按时间帧展开的示意图。图4示出了逻辑电路在一个时间帧中的分级示意,但是逻辑仿真通常并不针对单个时间帧,而是针对多个时间帧以仿真在不同输入下的逻辑输出。此外,对于时序逻辑门而言,通常时钟端口上的单个逻辑电平并不能反映其是否被触发,而是需要相继的多个逻辑电平来确定。例如,寄存器需要时钟端口上的从低电平(逻辑“0”)到高电平(逻辑“1”)的跳变来触发。因此,针对具有时序逻辑门的逻辑电路,需要多个时间帧来确定是否存在触发。
时钟信号通常以脉冲形式提供,并且包括例如“...10101010…”之类的一系列高低脉冲,如图5中上方所示在一个实施例中,可以采用“010”的时钟信号的片段来确定是否存在触发。例如,可以选择时钟信号为“0”(低电平)的后一半时段作为上述“010”片段的第一个“0”,使用时钟信号的相继的完整的“1”(高电平)作为上述“010”片段的“1”,并且使用时钟信号的相继的“0”的前一半时段作为上述“010”片段的第二个“0”。这样,一个时钟周期对应于用于确定触发是否存在的一个周期。该时钟周期包括三个逻辑值,因此对应于3个时间帧。备选地,也可以使用“101”的时钟信号的片段来确定是否存在触发。
图5中示出了逻辑电路30的对应于一个周期的3个时间帧的时间帧展开示意图。帧0对应于上述“010”片段的第一个“0”,帧1对应于上述“010”片段的“1”,并且帧2对应于上述“010”片段的第二个“0”。由于逻辑仿真通常包括多个原始输入集以确定逻辑电路在不同输入下的仿真结果,例如针对第一原始数据输入PI1的逻辑输入值例如为第一逻辑输入集,其例如可以包括64位比特值。因此,可以需要M个周期来进行仿真,其中M表示大于1的整数,例如64。对于图5的帧展开而言,需要将逻辑电路30展开为3M个时间帧。逻辑电路30在各个时间帧中的展开具有基本上相同的分级形式,因此在此不再重复描述。
图6示出了根据本公开的一些实施例的仿真方法600的示意流程图。仿真方法600用于逻辑仿真,例如可以是图2中的逻辑仿真210的一种实现方式,因此上面针对图1-图5所述的各个方面可以适用于仿真方法600,在此不再赘述。处理器14例如可以通过有线、无线或读取存储介质的方式接收描述逻辑电路的网表文件。网表文件包括了用于描述各个逻辑门、原始输入和原始输出、各个部件之间的连接关系等各种数据。在602,处理器14可以基于表示逻辑电路的网表文件对逻辑电路进行分级以确定第一层级电路和第二层级电路。第一层级电路包括多个时序逻辑门和多个原始输入,并且第二层级电路包括多个组合逻辑门。在一个实施例中,第一层级电路例如是图4中的0级电路,第二层级电路例如包括图4中的1级电路和2级电路。在另一实施例中,第二层级电路例如包括第一子层级电路和第二子层级电路,其中第一子层级电路包括图4中的1级电路,并且第二子层级电路包括图4中的2级电路。在一个实施例中,与第一层级电路对应的数据被存储在存储器12中的相近或相邻的第一区域,并且与第二层级电路对应的数据被存储在存储器12中的相近或相邻的第二区域。更进一步地,与第二层级电路中的第一子层级电路对应的数据被存储在第二区域中相邻或相近的第一子区域,并且与第二层级电路中的第一子层级电路对应的数据被存储在第二区域中相邻或相近的第二子区域。当处理器14对存储器12进行寻址访问以获取某个逻辑门的数据时,由于高速缓存16的空间局部性的设计原理,因此处理器14可以将该逻辑门的数据附近的数据读入高速缓存16。当处理器14对该逻辑门的数据处理完成之后需要处理下一逻辑门的数据 时,由于下一逻辑门的数据已被读入高速缓存16,因此无需再次寻址访问存储器12,这节省了大量存取访问时间。
可以理解,受限于存储器12的物理布局限制以及逻辑门的众多数量,在一些实施例中,当第一区域或第二区域无法容纳所有的对应层级电路的数据时,可以将层级电路的一部分数据存储在其它位置。这仅增加少量处理器对存储器12进行寻址访问的次数,对于逻辑仿真的总时间的影响并不显著。通过将逻辑电路分级,可以将逻辑电路中的逻辑门按照层级存储,并且在按层级电路处理逻辑门的数据时避免了处理器14频繁访问存储器12,这可以显著减少逻辑仿真的时间。
如上所述,处理器14使用时间帧数据来按照时间帧进行逻辑仿真。在一些实施例中,处理器14基于自动测试向量生成数据中的仿真周期数据,确定时间帧数据。如上所述,由于逻辑仿真通常在原始数据输入处提供多个逻辑输入值,例如64位比特值,因此需要多个周期,例如64个周期,来进行逻辑仿真。对应地,需要比周期数更多倍的时间帧(例如64*3=192个时间帧)来计算逻辑门的逻辑仿真值。处理器14从ATPG设备20接收ATPG数据。APTG数据可以包括仿真周期数据,例如表示64个测试周期的数据。备选地,APTG数据可以直接包括多个时间帧数据,例如表示192个时间帧的数据。在此情形下,处理器14可以将该数据直接确定为时间帧数据。在本公开的一个实施例中,可以按照时间帧的顺序,依次计算在每个时间帧中的各个逻辑门(包括时序逻辑门和组合逻辑门)的逻辑值,例如时钟端口的逻辑值和输出逻辑值。在计算完该时间帧之后,再计算下一时间帧中的各个逻辑门(包括时序逻辑门和组合逻辑门)的逻辑值,例如时钟端口的逻辑值和输出逻辑值。备选地,可以计算每个层级电路在所有时间帧的逻辑值之后再计算下一层级电路在所有时间帧的逻辑值。
在604,处理器14基于ATPG数据中的原始时钟输入数据集和时间帧数据确定多个时序逻辑门的时钟输入端口在多个时间帧中的时钟逻辑值集。逻辑电路通常包括针对时序逻辑门的时钟端口的原始时钟输入端口,该原始时钟输入端口例如接收来自原始数据输入集中的原始时钟输入集。在一些实施例中,逻辑电路可以在原始时钟输入端口和时序逻辑门的时钟端口之间具有一个或多个组合逻辑门(图3中未示出)。
在一个实施例中,可以从原始时钟输入端口以事件驱动的方式确定时序逻辑门的时钟端口在各个时间中的时钟逻辑值。例如,在一个时间帧中,处理器14将原始数据输入端口加入事件队列,并且将原始时钟输入端口与多个时序逻辑门之间的组合逻辑门加入事件队列。
处理器14继而按照先入先出的顺序依次计算原始时钟输入端口与多个时序逻辑门之间的组合逻辑门的输出逻辑值。在此之后,处理器14基于输出逻辑值确定第一层级电路中的多个时序逻辑门的时钟端口的时钟逻辑值集。例如,处理器14判断当前待计算的逻辑门是否是时序逻辑门。如果不是时序逻辑门,则计算该逻辑门的输出逻辑值,并且将该逻辑门的后续节点的逻辑门加入事件队列。如果是时序逻辑门,则可以确定已经从原始时钟输入端口计算到时序逻辑门。可以计算下一原始时钟输入端口到下一时序逻辑门的时钟端口的各个组合逻辑门的输出逻辑值,并且继而确定下一时序逻辑门的时钟端口的时钟逻辑值。以此类推,直至计算完成所有时序逻辑门的时钟端口的时钟逻辑值。在计算完成当前时间帧之后,再重复上述过程计算下一时间帧,直至所有时间帧中的所有时钟端口的时钟逻辑值都被计算以确定时钟逻辑值集。
由于时序逻辑门在逻辑电路中通常仅占相对少的比例,因此待计算的时序逻辑门的时钟端口也相应地较少。即使以事件驱动的方式来计算,这也对于逻辑仿真的时间总体影响不大。 此外,由于逻辑电路已被分级并且原始时钟输入端口和时序逻辑门之间并无其它时序逻辑门,因此可以直接确定时钟端口的逻辑值。在以事件驱动的方式计算完第一层级电路中的所有时序逻辑门的时钟端口在各个时间帧中的时钟逻辑值之后,可以获得时序逻辑门的时钟输入端口在时间帧数据指示的多个时间帧中的时钟逻辑值集。
在图3的实施例中,可以计算第一触发器U1和第二触发器U2的时钟端口在各个时间帧中的时钟逻辑值,并且据此可以判断第一触发器U1和第二触发器U2是否在此期间被触发。例如,如果第一触发器U1的时钟端口在帧0被确定为“0”,在帧1被确定为“1”,并且在帧“2”被确定为“0”,则可以确定第一触发器U1在包括帧0-帧2的时钟周期内被触发。如果第二触发器U2的时钟端口在帧0-帧2期间始终被确定为“0”,则可以确定第二触发器U2在包括帧0-帧2的时钟周期内未被触发。因此,处理器14可以进一步确定时序逻辑门在包括多个时间帧的时钟周期内是否被触发。
在606,处理器14基于时钟逻辑值集和原始数据输入集,确定逻辑仿真输出集。逻辑仿真输出集包括第一层级电路中的多个时序逻辑门和第二层级电路中的多个组合逻辑门的输出端口在时间帧数据指示的时间帧中的输出逻辑值。在一个实施例中,当处理器14计算完所有的时序逻辑门的时钟端口的时钟逻辑值之后,可以按层级电路的顺序将逻辑门放入待计算队列。随后处理器14以硬编码的方式遍历所有逻辑门以按序依次计算队列中各个逻辑门在各个时间帧中的输出逻辑值,从而获得针对该逻辑电路的逻辑仿真输出集。
在一个实施例中,基于时钟逻辑值集和原始数据输入集确定逻辑仿真输出集包括:使用时钟逻辑值集和原始数据输入集来按照层级电路的顺序依次确定第一层级电路和第二层级电路中的多个逻辑门的多个输出逻辑值。逻辑仿真输出集包括所述多个输出逻辑值。例如,参见图4,假设帧0为时间帧数据指示的第一帧,由于第一层级电路中包括的原始输入端口的原始数据输入在此无需被计算,因此处理器14计算与原始输入端口直接连接的第二层级电路中的第一子层级电路(即,与门31、第一缓冲器33和反相器32)。由于第一子层级电路中的各个逻辑门被相邻或相近存储,因此处理器14例如在从存储器12中将与门31的数据读入高速缓存时,可以将第一缓冲器33和反相器32的数据也一起读入高速缓存。当处理器14在计算完与门31的输出逻辑值之后计算第一缓冲器33和反相器32的输出逻辑值时,由于第一缓冲器33和反相器32的数据已被读入高速缓存,因此无需再次访问存储器,这减少了仿真时间。当逻辑电路的数量显著增大时,这带来的优势更为明显。例如,当第一子层级电路包括100个逻辑门时,假设处理器14每次从存储器12读取相邻的10个逻辑门的数据,则处理器14只需访问存储器12十次。相比于常规的事件驱动,处理器14频繁访问存储器(例如,针对100个逻辑门可能最多要访问存储器100次),可能能减少90%的访问时间。
在此之后,处理器14再计算帧0中的第二子层级电路中的逻辑门(即,第二缓冲器34)的输出逻辑值、帧1中的第一层级电路(即,第一触发器U1和第二触发器U2)的输出逻辑值、帧1中的第一子层级电路(即,与门31、第一缓冲器33和反相器32)的输出逻辑值……以此类推,直至所有时间帧中的所有逻辑门的输出逻辑值都被计算,以得到针对该逻辑电路的逻辑仿真输出集。
综上所述,通过将逻辑电路分级并且按分级存储逻辑门的数据,并且通过首先确定时序逻辑门的时钟端口的时钟逻辑值再随后遍历所有逻辑门以计算在各个时间帧中的所有逻辑门的输出逻辑值,可以显著减少逻辑仿真的时间。
在获得逻辑仿真输出集之后,处理器14可以使用该逻辑仿真输出集进行故障仿真。备选 地,也可以使用与方法600独立的逻辑仿真输出集作为故障仿真的背景来进行故障仿真。故障仿真是以逻辑仿真的结果作为背景,判断输入的故障集中哪些故障能够被检测到的技术。
常规故障仿真包括单故障向量并行仿真技术(parallel pattern single fault propagation,PPSFP)等。PPSFP是基于事件驱动和机器字并行的算法思想。在逻辑仿真时从原始输入和时序门进行广度优先的搜索,直到网表里所有门的逻辑值计算完成。在故障仿真时,在故障的对应位置激发故障,并且以此为起点进行广度优先的搜索,搜索队列里面为空时结束。由于PPSFP在故障仿真时是使用事件驱动的方法进行仿真,因此故障在从故障输入节点向后续节点传播时,所有后续节点的输出都被计算,这消耗了大量仿真时间。研究发现,实际上从故障输入节点向后传播故障的过程中,很多逻辑门的计算实际上并不需要,因为这些逻辑门的输出逻辑值并不会被故障观测节点观测到。在本公开的一些实施例中,通过确定在各个时间帧中可以传递信号的多个传输逻辑门,可以仅计算可传递故障信号的传递路径中的逻辑门的输出值,而不计算不可传递信号的路径中的逻辑门的输出值。这显著降低了故障仿真的计算量,大大节省了故障仿真的时间。
图7示出了根据本公开的一些实施例的用于对逻辑电路进行故障仿真的仿真方法700的示意流程图。仿真方法700例如可以是图2的故障仿真220的一种具体实现方式。因此针对图1-图5描述的各个方面可以适用于仿真方法700。在702,处理器14接收针对逻辑电路的逻辑仿真输出集和故障输入集。逻辑仿真输出集例如可以是方法600生成的逻辑仿真输出集。备选地,也可以使用其它逻辑仿真方法生成的逻辑仿真输出集,本公开对此不进行限制。图8示出了一种具体的逻辑仿真输出集的示意。故障输入集包括针对各个故障输入节点或端口提供的表示特定故障类型的逻辑输入值的集。常见的故障输入例如包括“固定为1故障”、“固定为0故障”、桥接故障等。故障仿真通过在故障输入节点或端口输入表示某个故障类型的逻辑输入,在下游的观测点检索对应的逻辑输出并且将该逻辑输出与预期输出进行比较来确定故障是否可以被检测到。
在704,至少基于逻辑仿真输出集,确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。如上所述,从故障输入节点向后传播故障的过程中,很多逻辑门的计算实际上并不需要,因为这些逻辑门的输出逻辑值并不会被故障观测节点观测到并且也不会具有实际意义。因此,通过排除不被观测到的逻辑门,可以减少故障仿真的计算量和仿真时间。
在一个实施例中,处理器14基于逻辑仿真输出集例如按照时间帧确定逻辑电路中的时序逻辑门在多个时间帧中的至少一个时间帧中是否被相应地触发。例如,在一个时间帧中,处理器14响应于逻辑电路中的一个或多个时序逻辑门被触发(例如,通过确定时钟端口的逻辑值,例如通过确定当前时间帧和下一时间帧是否存在从逻辑“0”到逻辑“1”的跳变),将该一个或多个时序逻辑门以及与其数据输入端口相关的一个或多个组合逻辑门确定为多个传输逻辑门。具体而言,处理器14可以向该一个或多个时序逻辑门的上游逻辑门追溯,直至在该时间帧中所有的有效的逻辑门都被标记。该有效逻辑门表示从各个时序逻辑门的数据输入端口到上游的时序逻辑门或原始输入端口之间的所有逻辑门(包括数据输入端所属的时序逻辑门)。在本文中,传输逻辑门表示在当前时间帧中可以传递信号的逻辑门,其包括被触发的时序逻辑门和具有输入的组合逻辑门,而不可传递信号的逻辑门则包括在当前时间帧中未被触发的时序逻辑门和不具有输入的组合逻辑门。
此外,处理器14还将该时间帧中的其它时序逻辑门以及与其数据输入端口相关的组合逻辑门标记为不可传输信号的逻辑门。在处理器14确定完成该时间帧之后,可以确定下一时间 帧。通过遍历每个时间帧中的每个时序逻辑门,处理器14可以确定第一组时序逻辑门,即可以传递信号的时序逻辑门,并且可以基于第一组时序逻辑门确定可传递信号的多个传输逻辑门。在一个实施例中,处理器14可以生成传输标志集来将第一组逻辑门以及与其数据输入端口所连接的一个或多个组合逻辑门标记为传输逻辑门,并且将其它的未被触发的时序逻辑门和与其耦合的有效组合逻辑门标记为不传输信号的逻辑门。
在处理器14确定完成当前时间帧的传输逻辑门之后,处理器14可以以上述方式类似地确定下一时间帧的传输逻辑门,直至所有的时间帧都已被确定完成。虽然在此以串行方式描述按时间帧确定各个时间帧中的传输逻辑门,但是这仅是示意而非对本公开的范围进行限制。由于各个逻辑门的数据在确定传输逻辑门的过程中不被修改,因此各个逻辑门的数据可以被多线程同时访问,由此也可以以多线程的方式并行地确定各个时间帧中相应多个传输门。这进一步地减少故障仿真的时间。备选地,也可以先确定时序逻辑门在各个时间帧中是否是传输逻辑门,并且在此之后确定其他有效逻辑门在各个时间帧中是否是传输逻辑门。在一个实施例中,处理器14可以针对逻辑电路中的各个有效逻辑门建立在各个时间帧中的对应的传输标志,以标记该逻辑门在某个时间帧中是否是传输逻辑门。
在706,至少基于所确定的多个传输逻辑门和故障输入集,确定故障仿真输出集。在一个实施例中,处理器14针对传输逻辑门使用故障输入集的数据以事件驱动的方式确定故障仿真输出。故障仿真输出集包括以此方式得到在多个时间帧中的多个故障的多个仿真输出。例如,针对一个时间帧中的故障输入而言,处理器14从故障输入节点开始,确定与故障输入节点相连接的逻辑门在该时间帧中是否是传输逻辑门。如果该逻辑门是传输逻辑门,则计算该逻辑门的故障逻辑输出并且确认后继的逻辑门是否是传输逻辑门,以此类推直至计算到故障观测点的故障仿真输出。在一些实施例中,故障观测点通常为某个时序逻辑门的输出。
如果处理器14发现从故障输入节点开始向下游延伸的某个逻辑门不是传输逻辑门,则处理器14跳过该故障传输路径,并开始处理下一故障输入。处理器14在计算完成一个时间帧之后,可以计算下一时间帧中针对多个故障输入的观测点的故障仿真输出,直至得到所有时间帧的故障仿真输出。由于处理器14在故障仿真过程中,放弃了不能传输故障激励信号的传输路径并且不对该传输路径中的逻辑门进行逻辑计算,因此显著减少了故障仿真的计算量并且缩短了故障仿真的时间。
在一些实施例中,处理器14还可以通过判断故障是否能够被激发来进一步降低故障仿真计算量和故障仿真时间。处理器14基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入节点处对应的多个原始故障输入是否被激发。响应于原始故障输入在故障输入节点可被激发,则处理器14基于逻辑仿真输出集确定逻辑电路中与故障输入节点相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。如果原始故障输入在故障输入节点不被激发,则处理器14跳过针对该故障的故障仿真计算。例如,如果故障是“固定为1”(stuck at 1)故障,然而该故障输入端口的逻辑背景值表示逻辑值为“0”,则这表明“固定为1”故障在此无法被激发。因此,处理器14可以跳过该故障计算,即处理器14不对该时间帧中从该故障输入端口开始的逻辑门的逻辑输出值进行计算。这样,可以进一步节省计算资源和时间。
图8示出了根据本公开的一些实施例的具有逻辑仿真背景值的逻辑电路800的示意图。可以理解,逻辑电路800仅是用于描述根据本公开的故障仿真,而非对本公开的范围进行限制。可以具有其它电路结构的逻辑电路,并且根据本公开的实施例的故障仿真方法也适用于 其它逻辑电路。逻辑电路800包括第一触发器802、第二触发器804、或门806、反相器808、缓冲器810和与门812。第一触发器802的数据输入端口连接至或门806的输出,并且或门806的两个输入端口分别连接至缓冲器810的输出端口和与门812的输出端口。第二触发器804的数据输入端口连接至反相器808的输出端口,并且反相器808的输入端口连接至与门812的输出端口。缓冲器810的输入端口和与门812的输入端口可以连接至原始输入端口。
在图8中,在各个逻辑门的输入端口以方框内的数字显示了输入端口在两个时间帧的逻辑仿真仿真值,其中右侧方框表示前一时间帧的逻辑仿真值,左侧方框表示后一时间帧的逻辑仿真值。虽然仅示出了两个时间帧的逻辑仿真值,但是这仅是示意,而非对本公开进行限制。可以具有其它数目的时间帧,例如每个输入端口可以具有相继的32位、64位或128位的比特值作为逻辑仿真值。这些逻辑仿真值例如可以是方法600得到的逻辑仿真结果。备选地,也可以通过其它逻辑仿真方法提供。
在一个实施例中,处理器14可以首先确定作为时序逻辑门的第一触发器802和第二触发器804在一个时间帧中是否被触发。由于第一触发器802的时钟端口在当前时间帧和下一时间帧均为“1”,没有从“0”到“1”的跳变,因此第一触发器802在当前时间帧中不被触发。相应地,从第一触发器802往回追溯到原始输入端口的有效逻辑门在当前时间帧中都是不可传递信号的逻辑门,其包括第一触发器802、或门806和缓冲器810。另一方面,由于第二触发器804的时钟端口在当前时间帧和下一时间帧分别为“0”和“1”,存在从“0”到“1”的跳变,因此第二触发器804在当前时间帧中被触发。相应地,从第二触发器804往回追溯到原始输入端口的有效逻辑门在当前时间帧中都是传输逻辑门,其包括第二触发器804、反相器808和与门812。
图9示出了根据本公开的一些实施例的具有可传输标志的逻辑电路的示意图。随着处理器14依次确定各个逻辑门,处理器14可以生成对应的传输标志集以表示各个逻辑门在该时间帧中是否为传输逻辑门。图9的逻辑电路900与逻辑电路800对应,但是在各个输入端口处的数字则表示该逻辑门的输入端口可以传递信号,即传递事件。如上所述,第二触发器804在第一个时间帧中是传输逻辑门,因此第二触发器804的数据输入端口和时钟端口上的传输标志以“1”示出。类似地,从第二触发器804往回追溯到原始输入端口的其它逻辑门的输入端口也相应地以传输标志“1”示出。在后一时间帧中,由于第二触发器804不被触发,因此第二触发器804往回追溯到原始输入端口的其它逻辑门的输入端口的传输标志以“0”示出。相对地,第一触发器802由于在两个时间帧中都不被触发,因此从第一触发器802回追溯到原始输入端口的其它逻辑门的输入端口的传输标志在两个时间帧中都以“0”示出。虽然以“1”和“0”示出了传输标志,但是可以理解这仅是示意,而非对本公开的范围进行限制。可以具有其它标记方式,例如“0”表示传递信号,而“1”表示不传递信号。
处理器14在进行故障仿真时,可以基于传输标志来决定是否进行后续的传输路径的计算。例如,假设缓冲器810的输入端口连接至故障输入节点,并且第一触发器802的输出端口是故障观测节点。处理器14在确定缓冲器810的输入端口的传输标志是“0”时,就可以放弃该故障的后续计算,而是转向下一故障。例如假设与门812的一个输入端口连接至故障输入节点,并且第二触发器804的输出端口是故障观测节点。处理器14确定与门812在该时间帧中的两个输入端口的传输标志都是“1”,因此处理器14计算与门812的逻辑输出,并且随后转向后续逻辑门(即,反相器808)。处理器14类似地确定反相器808的输入端口的传输标志为“1”,并且执行针对反相器808的计算。以此类推,直至计算第二触发器804的逻 辑输出,并且将该逻辑输出与预定输出进行比较,以确定该故障是否被检测到。
图10示出了根据本公开的一些实施例的用于描述故障激发的逻辑电路的示意图。图10的逻辑电路1000与逻辑电路800对应,并且各个输入端口上也类似地示出了与图8相同的逻辑仿真值。因此,关于图8所述的各个方面可以适用于图10,在此不再赘述。如上所述,处理器14还可以通过判断故障是否能够被激发来进一步降低故障仿真计算量和故障仿真时间。如图10所示,故障输入节点例如位于与门812的第一输入端口,并且待输入的故障是“固定为1”故障。然而,该输入端口在两个时间帧中的逻辑值按先后顺序依次为“1”和“0”。当逻辑值为“0”时,“固定为1”故障在此无法被激发。由于该故障无法被激发,因此后续的逻辑门的逻辑值的计算也毫无疑义。在一些实施例中,处理器14因此可以基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入节点处对应的多个原始故障输入是否被激发。响应于原始故障输入在故障输入节点可被激发,处理器14基于逻辑仿真输出集确定逻辑电路中与故障输入节点相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。如果无法被激发,则处理器14可以跳过从该故障输入点开始到观测点的逻辑门的逻辑值的计算以节省计算资源和故障仿真的时间。
图11示出了根据本公开的一些实施例的电子设备1100的示意性框图。电子设备1100可以被实现为或者被包括在图1的电子设备10中。
电子设备1100可以包括多个模块,以用于执行如图6中所讨论的方法600中的对应步骤。如图11所示,电子设备1100包括逻辑电路分级单元1102,用于对逻辑电路进行分级以确定第一层级电路和第二层级电路。第一层级电路包括多个时序逻辑门和多个原始输入,并且第二层级电路包括多个组合逻辑门。电子设备1100还包括时钟逻辑值确定单元1104,用于基于表示多个时间帧的时间帧数据和原始时钟输入集,确定第一层级电路的多个时序逻辑门的时钟输入端口在多个时间帧中的时钟逻辑值集。电子设备1100还包括逻辑仿真输出集确定单元1106,用于基于所述时钟逻辑值集和原始数据输入集确定逻辑仿真输出集。逻辑仿真输出集包括第一层级电路中的多个时序逻辑门和第二层级电路中的多个组合逻辑门的输出端口在多个时间帧中的输出逻辑值。
在一些实施例中,逻辑电路分级单元1102进一步用于对逻辑电路进行分级以确定第一层级电路、第一子层级电路和第二子层级电路,第一子电路层级包括第二层级电路中的多个组合逻辑门中的、与第一层级电路直接耦合的组合逻辑门,并且第二子电路层级包括第二层级电路中的多个组合逻辑门中的、与第一子电路层级直接耦合的组合逻辑门。
在一些实施例中,时钟逻辑值确定单元1104进一步用于将多个时间帧中的原始时钟输入端口加入事件队列;将原始时钟输入端口与多个时序逻辑门之间的组合逻辑门加入事件队列;计算组合逻辑门的输出逻辑值;以及基于组合逻辑门的输出逻辑值确定第一层级电路中的多个时序逻辑门的时钟端口在多个时间帧中的时钟逻辑值集。
在一些实施例中,逻辑仿真输出集确定单元1106进一步用于使用时钟逻辑值集和原始数据输入集来按照层级电路的顺序依次确定第一层级电路和第二层级电路中的多个逻辑门的多个输出逻辑值,逻辑仿真输出集包括多个输出逻辑值。
在一些实施例中,逻辑电路分级单元1102进一步用于按照逻辑电路的层级将第一层级电路的数据存储在存储器的第一区域并且将第二层级电路的数据存储在存储器的第二区域,第二区域不同于第一区域。
图12示出了根据本公开的一些实施例的电子设备1200的示意性框图。电子设备1200可 以被实现为或者被包括在图1的电子设备10中。
电子设备1200可以包括多个模块,以用于执行如图7中所讨论的方法700中的对应步骤。如图11所示,电子设备1200包括接收单元1202,用于接收针对逻辑电路的逻辑仿真输出集和故障输入集。电子设备1200还包括传输逻辑门确定单元1204,用于至少基于逻辑仿真输出集确定逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。电子设备1200还包括故障仿真输出集确定单元1206,用于至少基于所确定的多个传输逻辑门和故障输入集确定故障仿真输出集。
在一些实施例中,传输逻辑门确定单元1204进一步用于基于逻辑仿真输出集,按照时间帧确定逻辑电路中的时序逻辑门在多个时间帧中的至少一个时间帧中是否被相应地触发;以及响应于逻辑电路中的第一组时序逻辑门在至少一个时间帧中被触发,将与第一组时序逻辑门的输入相关的组合逻辑门和第一组时序逻辑门确定为多个传输逻辑门。
在一些实施例中,传输逻辑门确定单元1204进一步用于基于逻辑仿真输出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定逻辑电路中的各个时序逻辑门在多个时间帧中是否被触发。
在一些实施例中,传输逻辑门确定单元1204进一步用于确定待计算的逻辑门是否是传输逻辑门;以及响应于确定待计算的逻辑门是传输逻辑门,使用源自故障输入集的逻辑值来确定待计算的逻辑门的故障输出逻辑值,故障仿真输出集包括故障输出逻辑值。
在一些实施例中,传输逻辑门确定单元1204进一步用于基于逻辑仿真输出集和故障输入集,确定故障输入集中的、与逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及响应于原始故障输入在故障输入端口被激发,基于逻辑仿真输出集,确定逻辑电路中与故障输入端口相关的逻辑门中的、在多个时间帧中可传递信号的多个传输逻辑门。
图13示出了可以用来实施本公开的实施例的示例设备1300的示意性框图。设备1300可以用于实现电子设备10、1100或1200。如图所示,设备1300包括计算单元1301,其可以根据存储在随机存取存储器(RAM)和/或只读存储器(ROM)1302的计算机程序指令或者从存储单元1307加载到RAM和/或ROM 1302中的计算机程序指令,来执行各种适当的动作和处理。在RAM和/或ROM 1302中,还可存储设备1300操作所需的各种程序和数据。计算单元1301和RAM和/或ROM 1302通过总线1303彼此相连。输入/输出(I/O)接口1304也连接至总线1303。
设备1300中的多个部件连接至I/O接口1304,包括:输入单元1305,例如键盘、鼠标等;输出单元1306,例如各种类型的显示器、扬声器等;存储单元1307,例如磁盘、光盘等;以及通信单元1308,例如网卡、调制解调器、无线通信收发机等。通信单元1308允许设备1300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1301的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1301执行上文所描述的各个方法和处理,例如方法600和/或方法700。例如,在一些实施例中,方法600和/或方法700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1307。在一些实施例中,计算机程序的部分或者全部可以经由RAM和/或ROM和/或通信单元1308而被载入和/或安装到设备1300上。当计算机程序加载到RAM和/或ROM并由计算单元1301执行时,可以执 行上文描述的方法600和/或方法700的一个或多个步骤。备选地,在其他实施例中,计算单元1301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法600和/或方法700。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (28)

  1. 一种用于仿真的方法,包括:
    对逻辑电路进行分级以确定第一层级电路和第二层级电路,所述第一层级电路包括多个时序逻辑门和多个原始输入,并且所述第二层级电路包括多个组合逻辑门;
    基于表示多个时间帧的时间帧数据和原始时钟输入集,确定所述第一层级电路的多个时序逻辑门的时钟输入端口在所述多个时间帧中的时钟逻辑值集;以及
    基于所述时钟逻辑值集和原始数据输入集,确定逻辑仿真输出集,所述逻辑仿真输出集包括:所述第一层级电路中的所述多个时序逻辑门的输出端口在所述多个时间帧中的输出逻辑值,和所述第二层级电路中的所述多个组合逻辑门的输出端口在所述多个时间帧中的输出逻辑值。
  2. 根据权利要求1所述的方法,其中对逻辑电路进行分级以确定第一层级电路和第二层级电路包括:对所述逻辑电路进行分级以确定所述第一层级电路、第一子层级电路和第二子层级电路,所述第一子电路层级包括所述第二层级电路中的多个组合逻辑门中的、与所述第一层级电路直接耦合的组合逻辑门,并且所述第二子电路层级包括所述第二层级电路中的多个组合逻辑门中的、与所述第一子电路层级直接耦合的组合逻辑门。
  3. 根据权利要求1或2所述的方法,还包括:
    接收仿真周期数据;以及
    基于所述仿真周期数据确定所述时间帧数据。
  4. 根据权利要求1-3中任一项所述的方法,其中基于表示多个时间帧的时间帧数据和原始时钟输入集确定所述第一层级电路的多个时序逻辑门的时钟输入端口在所述多个时间帧中的时钟逻辑值集包括:
    将所述多个时间帧中的原始时钟输入端口加入事件队列;
    将所述原始时钟输入端口与所述多个时序逻辑门之间的组合逻辑门加入所述事件队列;
    计算所述组合逻辑门的输出逻辑值;以及
    基于所述组合逻辑门的输出逻辑值确定所述第一层级电路中的多个时序逻辑门的时钟端口在所述多个时间帧中的时钟逻辑值集。
  5. 根据权利要求1-4中任一项所述的方法,其中基于所述时钟逻辑值集和原始数据输入集确定逻辑仿真输出集包括:
    使用所述时钟逻辑值集和所述原始数据输入集来按照层级电路的顺序依次确定所述第一层级电路和所述第二层级电路中的多个逻辑门的多个输出逻辑值,所述逻辑仿真输出集包括所述多个输出逻辑值。
  6. 根据权利要求1-5中任一项所述的方法,其中对逻辑电路进行分级以确定第一层级电路和第二层级电路包括:
    按照所述逻辑电路的层级将所述第一层级电路的数据存储在存储器的第一区域并且将所述第二层级电路的数据存储在所述存储器的第二区域,所述第二区域不同于所述第一区域。
  7. 一种计算机可读存储介质,存储多个程序,所述多个程序被配置为一个或多个处理器执行,所述多个程序包括用于执行权利要求1-6中任一项所述的方法的指令。
  8. 一种计算机程序产品,所述计算机程序产品包括多个程序,所述多个程序被配置为一个或多个处理器执行,所述多个程序包括用于执行权利要求1-6中任一项所述的方法的指令。
  9. 一种电子设备,包括:
    一个或多个处理器;
    包括计算机指令的存储器,所述计算机指令在由所述电子设备的所述一个或多个处理器执行时使得所述电子设备执行权利要求1-6中任一项所述的方法。
  10. 一种电子设备,包括:
    逻辑电路分级单元,用于对逻辑电路进行分级以确定第一层级电路和第二层级电路,所述第一层级电路包括多个时序逻辑门和多个原始输入,并且所述第二层级电路包括多个组合逻辑门;
    时钟逻辑值确定单元,用于基于表示多个时间帧的时间帧数据和原始时钟输入集,确定所述第一层级电路的多个时序逻辑门的时钟输入端口在所述多个时间帧中的时钟逻辑值集;以及
    逻辑仿真输出集确定单元,用于基于所述时钟逻辑值集和原始数据输入集确定逻辑仿真输出集,所述逻辑仿真输出集包括:所述第一层级电路中的所述多个时序逻辑门的输出端口在所述多个时间帧中的输出逻辑值,和所述第二层级电路中的所述多个组合逻辑门的输出端口在所述多个时间帧中的输出逻辑值。
  11. 根据权利要求10所述电子设备,其中所述逻辑电路分级单元进一步用于对所述逻辑电路进行分级以确定所述第一层级电路、第一子层级电路和第二子层级电路,所述第一子电路层级包括所述第二层级电路中的多个组合逻辑门中的、与所述第一层级电路直接耦合的组合逻辑门,并且所述第二子电路层级包括所述第二层级电路中的多个组合逻辑门中的、与所述第一子电路层级直接耦合的组合逻辑门。
  12. 根据权利要求10或11所述的电子设备,其中所述时钟逻辑值确定单元进一步用于将所述多个时间帧中的原始时钟输入端口加入事件队列;
    将所述原始时钟输入端口与所述多个时序逻辑门之间的组合逻辑门加入所述事件队列;
    计算所述组合逻辑门的输出逻辑值;以及
    基于所述组合逻辑门的输出逻辑值确定所述第一层级电路中的多个时序逻辑门的时钟端口在所述多个时间帧中的时钟逻辑值集。
  13. 根据权利要求10-12中任一项所述的电子设备,其中所述逻辑仿真输出集确定单元进一步用于使用所述时钟逻辑值集和所述原始数据输入集来按照层级电路的顺序依次确定所述第一层级电路和所述第二层级电路中的多个逻辑门的多个输出逻辑值,所述逻辑仿真输出集包括所述多个输出逻辑值。
  14. 根据权利要求10-13中任一项所述的电子设备,其中所述逻辑电路分级单元进一步用于按照所述逻辑电路的层级将所述第一层级电路的数据存储在存储器的第一区域并且将所述第二层级电路的数据存储在所述存储器的第二区域,所述第二区域不同于所述第一区域。
  15. 一种用于仿真的方法,包括:
    接收针对逻辑电路的逻辑仿真输出集和故障输入集;
    至少基于所述逻辑仿真输出集,确定所述逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门;以及
    至少基于所确定的多个传输逻辑门和所述故障输入集,确定故障仿真输出集。
  16. 根据权利要求15所述的方法,其中至少基于所述逻辑仿真输出集确定所述逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:
    基于所述逻辑仿真输出集,按照时间帧确定所述逻辑电路中的时序逻辑门在所述多个时间帧中的至少一个时间帧中是否被相应地触发;以及
    响应于所述逻辑电路中的第一组时序逻辑门在所述至少一个时间帧中被触发,将与所述第一组时序逻辑门的输入相关的组合逻辑门和所述第一组时序逻辑门确定为所述多个传输逻辑门。
  17. 根据权利要求16所述的方法,其中基于所述逻辑仿真输出集确定所述逻辑电路中的各个时序逻辑门在所述多个时间帧中是否被相应地触发包括:
    基于所述逻辑仿真输出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定所述逻辑电路中的各个时序逻辑门在所述多个时间帧中是否被触发。
  18. 根据权利要求15-17中任一项所述的方法,其中至少基于所确定的多个传输逻辑门和故障输入集确定故障仿真输出集包括:
    确定待计算的逻辑门是否是传输逻辑门;以及
    响应于确定所述待计算的逻辑门是传输逻辑门,使用源自所述故障输入集的逻辑值来确定所述待计算的逻辑门的故障输出逻辑值,所述故障仿真输出集包括所述故障输出逻辑值。
  19. 根据权利要求15-18中任一项所述的方法,其中至少基于所述逻辑仿真输出集确定所述逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:
    基于所述逻辑仿真输出集和所述故障输入集,确定所述故障输入集中的、与所述逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及
    响应于所述原始故障输入在所述故障输入端口被激发,基于所述逻辑仿真输出集,确定所述逻辑电路中与所述故障输入端口相关的逻辑门中的、在所述多个时间帧中可传递信号的多个传输逻辑门。
  20. 根据权利要求15-19中任一项所述的方法,其中至少基于所述逻辑仿真输出集,确定所述逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门包括:
    至少基于所述逻辑仿真输出集,以多线程的方式并行地确定所述逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门。
  21. 一种计算机可读存储介质,存储多个程序,所述多个程序被配置为一个或多个处理器执行,所述多个程序包括用于执行权利要求15-20中任一项所述的方法的指令。
  22. 一种计算机程序产品,所述计算机程序产品包括多个程序,所述多个程序被配置为一个或多个处理器执行,所述多个程序包括用于执行权利要求15-20中任一项所述的方法的指令。
  23. 一种电子设备,包括:
    一个或多个处理器;
    包括计算机指令的存储器,所述计算机指令在由所述电子设备的所述一个或多个处理器执行时使得所述电子设备执行权利要求15-20中任一项所述的方法。
  24. 一种电子设备,包括:
    接收单元,用于接收针对逻辑电路的逻辑仿真输出集和故障输入集;
    传输逻辑门确定单元,用于至少基于所述逻辑仿真输出集确定所述逻辑电路中的、在多个时间帧中可传递信号的多个传输逻辑门;以及
    故障仿真输出集确定单元,用于至少基于所确定的多个传输逻辑门和所述故障输入集确定故障仿真输出集。
  25. 根据权利要求24所述的电子设备,其中所述传输逻辑门确定单元进一步用于
    基于所述逻辑仿真输出集,按照时间帧确定所述逻辑电路中的时序逻辑门在所述多个时间帧中的至少一个时间帧中是否被相应地触发;以及
    响应于所述逻辑电路中的第一组时序逻辑门在所述至少一个时间帧中被触发,将与所述第一组时序逻辑门的输入相关的组合逻辑门和所述第一组时序逻辑门确定为所述多个传输逻辑门。
  26. 根据权利要求25所述的电子设备,其中所述传输逻辑门确定单元进一步用于基于所述逻辑仿真输出集中的、与各个时序逻辑门的时钟端口分别对应的时钟逻辑值,确定所述逻辑电路中的各个时序逻辑门在所述多个时间帧中是否被触发。
  27. 根据权利要求24-26中任一项所述的电子设备,其中所述传输逻辑门确定单元进一步用于
    确定待计算的逻辑门是否是传输逻辑门;以及
    响应于确定所述待计算的逻辑门是传输逻辑门,使用源自所述故障输入集的逻辑值来确定所述待计算的逻辑门的故障输出逻辑值,所述故障仿真输出集包括所述故障输出逻辑值。
  28. 根据权利要求24-27中任一项所述的电子设备,其中所述传输逻辑门确定单元进一步用于
    基于所述逻辑仿真输出集和所述故障输入集,确定所述故障输入集中的、与所述逻辑电路中的故障输入端口处对应的原始故障输入是否被激发;以及
    响应于所述原始故障输入在所述故障输入端口被激发,基于所述逻辑仿真输出集,确定所述逻辑电路中与所述故障输入端口相关的逻辑门中的、在所述多个时间帧中可传递信号的多个传输逻辑门。
CN202180098418.9A 2021-07-15 2021-07-15 用于仿真的方法、装置及设备 Pending CN117377961A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/106565 WO2023283891A1 (zh) 2021-07-15 2021-07-15 用于仿真的方法、装置及设备

Publications (1)

Publication Number Publication Date
CN117377961A true CN117377961A (zh) 2024-01-09

Family

ID=84918924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180098418.9A Pending CN117377961A (zh) 2021-07-15 2021-07-15 用于仿真的方法、装置及设备

Country Status (2)

Country Link
CN (1) CN117377961A (zh)
WO (1) WO2023283891A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117907812A (zh) * 2024-03-20 2024-04-19 英诺达(成都)电子科技有限公司 电路检测方法及装置、电子设备、存储介质、程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938785A (en) * 1997-08-19 1999-08-17 Vlsi Technology, Inc. Automatically determining test patterns for a netlist having multiple clocks and sequential circuits
CN105447213B (zh) * 2014-08-29 2018-08-24 国际商业机器公司 用于对电路设计进行仿真的方法和装置
CN110119539B (zh) * 2019-04-17 2022-12-06 西北核技术研究所 一种组合逻辑电路单粒子翻转效应传播规律的分析方法
CN111079356B (zh) * 2019-12-13 2022-09-20 西安电子科技大学 一种单粒子加固有效性系统级验证方法
CN111931445B (zh) * 2020-10-09 2020-12-29 芯华章科技股份有限公司 用于调试逻辑系统设计的方法、仿真器及存储介质
CN112100957B (zh) * 2020-11-17 2021-02-02 芯华章科技股份有限公司 用于调试逻辑系统设计的方法、仿真器、存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117907812A (zh) * 2024-03-20 2024-04-19 英诺达(成都)电子科技有限公司 电路检测方法及装置、电子设备、存储介质、程序产品

Also Published As

Publication number Publication date
WO2023283891A1 (zh) 2023-01-19

Similar Documents

Publication Publication Date Title
US6931611B2 (en) Design verification system for avoiding false failures and method therefor
US7890901B2 (en) Method and system for verifying the equivalence of digital circuits
US8161439B2 (en) Method and apparatus for processing assertions in assertion-based verification of a logic design
US20050223344A1 (en) Power-consumption calculation method and apparatus
Chappell et al. LAMP: Logic‐Circuit Simulators
CN105589993A (zh) 微处理器功能验证设备及微处理器功能验证方法
US20080008021A1 (en) Method for recognizing and verifying fifo structures in integrated circuit designs
US11789077B2 (en) Single-pass diagnosis for multiple chain defects
CN114841103A (zh) 门级电路的并行仿真方法、系统、存储介质及设备
JP2006139729A (ja) ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
CN117377961A (zh) 用于仿真的方法、装置及设备
JPH10283394A (ja) 故障シミュレーション方法
Dehbashi et al. Debug automation for synchronization bugs at RTL
KR0158887B1 (ko) 논리 모의실험기
JP4221730B2 (ja) 回路連言標準形生成方法及び回路連言標準形生成装置並びにハザードチェック方法及びハザードチェック装置
US10747601B2 (en) Failure estimation in circuits
Ubar et al. Diagnostic modeling of digital systems with multi-level decision diagrams
US8943457B2 (en) Simulating scan tests with reduced resources
US8555228B2 (en) Tool for glitch removal
US10523186B1 (en) Vulnerability determination in circuits
US10546083B1 (en) System, method, and computer program product for improving coverage accuracy in formal verification
US20230177244A1 (en) Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification
Refan et al. Bridging presilicon and postsilicon debugging by instruction-based trace signal selection in modern processors
US20230351085A1 (en) Detecting instability in combinational loops in electronic circuit designs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination