CN112989736B - 用于检测修改设计的错误实例的方法、设备及存储介质 - Google Patents
用于检测修改设计的错误实例的方法、设备及存储介质 Download PDFInfo
- Publication number
- CN112989736B CN112989736B CN202110439055.2A CN202110439055A CN112989736B CN 112989736 B CN112989736 B CN 112989736B CN 202110439055 A CN202110439055 A CN 202110439055A CN 112989736 B CN112989736 B CN 112989736B
- Authority
- CN
- China
- Prior art keywords
- instances
- instance
- primary
- output
- reference signal
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/333—Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
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)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请提供一种用于检测修改设计的错误实例的方法、设备及存储介质。该方法包括:确定所述修改设计中的一个一级实例;接收所述一级实例的参考信号;基于所述参考信号的一级原始实例的输入信号,运行所述一级实例;响应于所述第一输出与所述一级原始实例的输出信号不一致,将所述多个二级实例分为两组实例;将第一组二级实例的输出信号置为所述参考信号中与所述第一组二级实例对应的输出信号;基于所述参考信号中与第二组二级实例对应的输入信号,运行所述一级实例以确定所述一级实例的第二输出是否存在错误;以及响应于所述第二输出不存在错误,确定所述第一组二级实例存在错误实例。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种用于检测修改设计的错误实例的方法、设备及存储介质。
背景技术
在芯片设计中,需要对逻辑系统设计进行测试。逻辑系统设计可以是,例如,用于供专门应用的集成电路(Application Specific Integrated Circuit,简称ASIC)或者片上系统芯片(System-On-Chip,简称SOC)的设计。被测试的逻辑系统设计可以称为被测设计(Design Under Test,简称DUT),测试DUT的环境可以称为测试平台(Testbench,简称TB)。
一般地,在对DUT进行修改后,需要对修改后的DUT进行重新测试。在一些情况下,对修改后的DUT进行测试时,可能出现报错。然而,目前对错误的检查需要消耗大量的时间以及人力。
发明内容
本申请提出了一种用于检测修改设计的错误实例的方法、设备及存储介质。
本申请第一方面,提供了一种用于检测修改设计的错误实例的方法,包括:
确定所述修改设计中的一个一级实例,所述一级实例包括多个二级实例;
接收所述一级实例的参考信号,所述参考信号包括原始设计的一级原始实例和多个二级原始实例的输入信号和输出信号;
基于所述参考信号的一级原始实例的输入信号,运行所述一级实例以确定所述一级实例的第一输出与所述一级原始实例的输出信号是否一致;
响应于所述第一输出与所述一级原始实例的输出信号不一致,将所述多个二级实例分为两组实例,所述两组实例包括第一组二级实例和第二组二级实例;
将所述第一组二级实例的输出信号置为所述参考信号中与所述第一组二级实例对应的输出信号;
基于所述参考信号中与所述第二组二级实例对应的输入信号,运行所述一级实例以确定所述一级实例的第二输出是否存在错误;以及
响应于所述第二输出不存在错误,确定所述第一组二级实例存在错误实例。
本申请第二方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
本申请第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于使所述计算机执行第一方面所述的方法。
本申请提供的用于检测修改设计的错误实例的方法、设备及存储介质,其确定错误实例的过程采用了信号比对、实例分组和信号重置的处理方式,提高了调查修改设计的错误实例的效率,节省了大量人力。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了本申请实施例所提供的一种电子设备的结构示意图。
图1B示出了根据本申请实施例的示例性编译器的示意图。
图2A示出了根据本申请实施例的仿真工具的示意图。
图2B示出了根据本申请实施例的示例性设计的示意图。
图2C示出了本申请实施例中被测设计被修改为修改设计的示意图。
图3A示出了根据本申请实施例的一个示例性一级实例的示意图。
图3B示出了将一级实例的第一组二级实例的输出信号重置后的一级实例的示例性示意图。
图3C示出了采用另一种组合方式的示例性一级实例的示意图。
图3D示出了根据本申请实施例的一个示例性二级实例的示意图。
图3E示出了将二级实例的输出信号重置后的二级实例的示例性示意图。
图4示出了本申请实施例所提供的示例性方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1A示出了本实施例所提供的一种电子设备100的结构示意图。电子设备100例如可以是计算机主机。该电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器102可以用于执行与本申请描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1A所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1A所示,存储的数据可以包括程序指令(例如,用于实现本申请的技术方案的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
图1B示出了根据本申请实施例的示例性编译器120的示意图。
编译器120可以基于待编译的计算机代码来生成目标代码的计算机程序。待编译的计算机代码又可以称为源代码。通常,编写源代码的源语言是高级编程语言。例如,高级编程语言可以是C++、Java等软件编程语言或VHDL、Verilog、System Verilog等硬件描述语言。目标代码则可以是例如汇编代码、机器码等。在芯片设计中,若需要对逻辑系统设计进行测试,则需要利用编译器120先对逻辑系统设计的源代码进行编译后才能对逻辑系统设计进行仿真、测试。
编译器120例如可以存储在图1A所示的存储器104中,并且由处理器102执行。
如图1B所示,编译器120可以包括前端122、中端124以及后端126。
前端122可以用于根据具体的源语言来分析源代码的词法、语法、语义。
在源代码的词法、语法、语义分析完成后,中端124可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。例如,中端124可以移除无用的代码、移除不可访问的代码、清除未使用的变量等。优化后的中间表示则可以被传递给后端126进行进一步处理。
后端126可以根据目标处理器(例如,图1A的处理器102)的架构来进一步优化中间表示,并生成目标代码。通常,目标代码是机器码。
可以理解的是,编译器的结构不限于图1B的示例。例如,前端122和中端124可以被合称为编译器的前端,或者,中端124和后端126可以被合称为编译器的后端。
图2A示出了根据本申请实施例的仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2A示出的示例性仿真工具200可以包括编译器120和仿真器210。编译器120可以将设计202编译为目标代码204,仿真器210可以根据目标代码204进行仿真,并将仿真结果206输出。例如,仿真工具200可以将仿真结果(例如,仿真波形图)经由图1A的外围接口108输出到输出设备上(例如,显示在显示器上)。
在芯片设计中,对逻辑系统设计的测试也可以利用仿真工具200来实现。
图2B示出了根据本申请实施例的示例性设计202的示意图。
如图2B所示,在仿真工具200中进行仿真的设计202可以包括被测设计(DUT)2022和构建测试环境的测试平台(TB)2024。对被测设计2022的测试需要利用测试平台2024来向被测设计2022提供相应的测试用激励信号(例如,输入信号2026),而被测设计2022则可以基于该激励信号生成相应的输出信号(例如,输出信号2028)。当设计202中包含了前述的被测设计2022和测试平台2024时,通过仿真工具200对设计202进行仿真,最终可以得到相应的测试结果,进而可以基于该测试结果判断被测设计2022是否正确地实现了所需实现的功能。
在芯片设计的过程中,一般地,需要对逻辑系统设计进行修改,以使其能够更好地实现所需的功能。图2C示出了本申请实施例中被测设计2022被修改为修改设计2030的示意图。如图2C所示,被测设计2022被修改为修改设计2030。可以理解的,此时需要对修改设计2030重新测试,以确定修改设计2030是否正确地完成了所需实现的功能。
可以知道的是,对修改设计2030进行测试时,可能出现报错。例如,在通用验证方法学(Universal Verification Methodology,简称UVM)环境下出现UVM_ERROR或者UVM_FATAL等报错指令。这样,就需要调查是被测设计2022的哪些修改导致了这些错误。
然而,在现有技术中,调查究竟是哪些修改导致被测设计2022的测试失败,一般需要人工查阅修改的代码。可以知道,这个人工检查的过程需要消耗大量的时间以及人力。
鉴于此,本申请实施例提供了一种用于检测修改设计的错误实例的方法、设备及存储介质。该方法包括:确定所述修改设计中的一个一级实例,所述一级实例包括多个二级实例;接收所述一级实例的参考信号,所述参考信号包括原始设计的一级原始实例和多个二级原始实例的输入信号和输出信号;基于所述参考信号的一级原始实例的输入信号,运行所述一级实例以确定所述一级实例的第一输出与所述一级原始实例的输出信号是否一致;响应于所述第一输出与所述一级原始实例的输出信号不一致,将所述多个二级实例分为两组实例,所述两组实例包括第一组二级实例和第二组二级实例;将所述第一组二级实例的输出信号置为所述参考信号中与所述第一组二级实例对应的输出信号;基于所述参考信号中与所述第二组二级实例对应的输入信号,运行所述一级实例以确定所述一级实例的第二输出是否存在错误;以及响应于所述第二输出不存在错误,确定所述第一组二级实例存在错误实例。
本申请实施例提供的用于检测修改设计的错误实例的方法、设备及存储介质,利用一级实例的参考信号来运行该一级实例进而确定一级实例的输出信号是否与对应的一级原始实例的输出信号一致,若输出信号不一致,则将一级实例中的多个二级实例分为两组并将其中第一组二级实例的输出信号置为参考信号中与该组二级实例对应的输出信号,再利用参考信号中与第二组二级实例对应的输入信号,运行该一级实例以确定该一级实例的输出是否存在错误,若输出不存在错误,则说明是因为第一组二级实例的输出信号错误导致了一级实例输出错误,进而确定第一组二级实例中存在错误实例。由于确定错误实例的过程采用了信号比对、实例分组和信号重置的处理方式,提高了调查修改设计的错误实例的效率,节省了大量人力。
当一个修改设计(例如,图2C的修改设计2030)在经过仿真工具200仿真后出现报错,则需要对修改设计的错误实例进行检测。
在本申请实施例的第一方面,提供一种用于提高修改设计的错误实例的检测效率的仿真工具。该仿真工具,例如,可以是图2A所示的仿真工具200。
在一些实施例中,仿真工具200可以通过比对修改设计(例如,图2C的修改设计2030)和原始设计(例如,图2C的设计2022),来确定修改设计中相对于原始设计被修改的一级实例,进而基于该一级实例进行错误实例检测。例如,可以通过比对修改设计的代码和原始设计的代码的不同来确定该一级实例。
图3A示出了根据本申请实施例的一个示例性一级实例300的示意图。如图3A所示,一级实例300可以包括多个二级实例,例如,二级实例302、304、306和308。可以理解的是,所谓一级实例是一个相对概念,在本实施例中,一级实例是相对二级实例而言层级更高的实例,而一级实例对应的可以是设计的任一层模块。例如,在下面的示例性Verilog代码中,设计的顶层模块top可以被认为是一级实例,而该top模块中包括的adder()和counter()可以认为是该一级实例的二级实例。可以理解的是,一级实例也可以是例如adder(),而二级实例则可以是adder()内进一步包含的实例(未示出)。
module adder4();
…
endmodule
module count4()
…
endmodule
module top
adder4 adder()
count4 counter()
…
在确定一个一级实例300之后,仿真工具200可以先获取一级实例300的参考信号。例如,该参考信号可以是来自于原始设计2022经过仿真工具200仿真后得到的波形(例如,golden waveform),该波形可以包括原始设计2022的每个实例的输入信号和输出信号。例如,该波形可以包括原始设计2022的一级原始实例(与一级实例对应)和多个二级原始实例(与二级实例对应)的输入信号和输出信号。
在获取到一级实例300的参考信号之后,仿真工具200可以基于一级实例300的参考信号中对应的一级原始实例的输入信号(例如,图3A的输入信号30222、30242、3042、3062、3082),运行该一级实例300以确定一级实例300的第一输出(例如,图3A的输出信号30224、30244、3044、3064、3084)与一级原始实例的输出信号(亦即一级实例300的参考信号中对应的输出信号)是否一致。
若一级实例300的第一输出与一级原始实例的输出信号是一致的,则说明虽然一级实例300被修改,但该修改并没有影响到一级实例300的输出,进而可以确定对该一级实例300的修改并不是导致修改设计报错的原因,可以不再对该一级实例300进一步分析。可以理解的是,被修改的一级实例的数量可以是不止一个,因此,此时可以开始对下一个被修改的一级实例进行分析。
若一级实例300的第一输出与一级原始实例的输出信号不一致,则说明对一级实例300的修改影响到一级实例300的输出,需要进一步确定该一级实例300的修改是不是导致修改设计2030报错的原因。
于是,仿真工具200可以进一步地将一级实例300中的多个二级实例(例如,二级实例302、304、306和308)分为两组实例。这里,对二级实例的分组可以采用任意的分组方式,例如,可以是随机的。
例如,如图3A所示,该两组实例可以被分为第一组二级实例310和第二组二级实例312。其中,第一组二级实例310包括二级实例302,第二组二级实例312包括二级实例304、306和308。
在完成分组之后,仿真工具200可以将第一组二级实例310的输出信号置为参考信号中与第一组二级实例310对应的输出信号。然后,基于参考信号中与第二组二级实例312对应的输入信号,运行一级实例300以确定一级实例300的第二输出是否存在错误。
图3B示出了将一级实例300的第一组二级实例310的输出信号重置后的一级实例300的示例性示意图。如图3B所示,第一组二级实例310的输出信号被置为参考信号中与第一组二级实例310对应的二级原始实例的输出信号30226、30246。于是,基于参考信号中与第二组二级实例312对应的输入信号,运行一级实例300,使得参考信号中与二级原始实例对应的输入信号3042、3062、3082再次输入到第二组二级实例312中,进而产生包含输出信号30226、30246、3044、3064、3084的一级实例300的第二输出。假设此时不再报错,说明此时第二输出不存在错误,由于第二次运行一级实例300时,第一组二级实例310的输出被强制设为参考信号,因此可以知道第一次运行一级实例300时,是第一组二级实例310的输出导致了报错,进而可以确定第一组二级实例310存在错误实例。
前述实施例是以错误实例存在于被重置输出信号的第一组二级实例310为例进行的说明。可以理解的是,假设错误实例存在于第二组二级实例312中或同时存在于第一组二级实例310和第二组二级实例312中时,采用前述实施例的方式并不能判断出错误实例处于哪一组二级实例中。
因此,在一些实施例中,当对第一组二级实例310的输出信号重置后且一级实例的第二输出还是存在错误时,可以反过来对第二组二级实例312的输出信号重置后再次运行一级实例得到相应的输出。若此时输出信号不存在错误,则可以确定错误实例在第二组二级实例312中,若此时输出信号还是存在错误,则可以确定错误实例既存在于第一组二级实例310中,也存在于第二组二级实例312中。这样,就需要对一级实例300的多个二级实例重新分组并再次按照前述方法来确定错误实例。
图3C示出了采用另一种组合方式的示例性一级实例300的示意图。如图3C所示,一级实例300中的多个二级实例还可以被分为第三组二级实例314和第四组二级实例316,其中,第三组二级实例314包括二级实例302、304、306,第四组二级实例316包括二级实例308。
假设一级实例300中的错误实例在二级实例302和二级实例304中,则采用前述方法对第三组二级实例314进行输出信号重置并再次运行一级实例得到相应的输出,若此时输出信号不存在错误,则可以确定错误实例在第三组二级实例314中,进而基于第三组二级实例314进一步确定错误实例。在一些实施例中,可以对第三组二级实例314中的三个二级实例314再次进行分组并按照前述方式再次确定错误实例存在于哪一组二级实例中,重复执行前述的方法直到找出全部错误的二级实例。
可以理解的是,由于二级实例中哪些存在错误是未知的,因此,在分组时,可以尽量使分组的组合方式能够穷尽所有的排列组合方式,从而按照前述的方式可以准确地将含有错误实例的二级实例找出来。
在一些实施例中,对于具有不同组合方式的两种或多种分组,例如,第一组二级实例310和第二组二级实例312、第三组二级实例314和第四组二级实例316,可以通过并行运行该具有不同组合方式的两种或多种分组的方式来提高查找错误实例的速度。例如,不同组合方式的分组可以经由仿真工具200在电子设备100的多个处理器102a、102b和102c的多个计算线程上进行并行处理。
在一些情况下,可能希望能够在已经确定存在错误实例的一组二级实例中进一步确定更加具体的错误实例,例如,二级实例的下一级实例(三级实例)中的错误实例。因此,在一些实施例中,仿真工具200可以将第一组二级实例中包括的多个三级实例进一步分为两组实例,例如,第一组三级实例和第二组三级实例。
图3D示出了根据本申请实施例的一个示例性二级实例302的示意图。如图3D所示,第一组二级实例310仅包括二级实例302,因此,对第一组二级实例310的进一步分组可以是对二级实例302中的多个三级实例进行分组。如图3D所示,二级实例302可以包括多个三级实例,例如,三级实例3022和3024。仿真工具200可以进一步地将二级实例302中的多个三级实例(例如,三级实例3022和3024)分为两组实例。这里,对三级实例的分组可以采用任意的分组方式,例如,可以是随机的。例如,如图3D所示,该两组实例可以被分为第一组三级实例3026和第二组三级实例3028。其中,第一组三级实例3026包括三级实例3022,第二组三级实例3028包括三级实例3024。
在完成分组之后,仿真工具200可以先获取二级实例302的参考信号。该参考信号中可以包括原始设计2022的二级原始实例(与二级实例302对应)和多个三级原始实例(与三级实例3022和3024对应)的输入信号和输出信号。
在获取到二级实例302的参考信号之后,仿真工具200可以将第一组三级实例3026的输出信号置为参考信号中与第一组三级实例3026对应的输出信号,然后基于参考信号中与第二组三级实例3028对应的输入信号,运行第一组二级实例310(例如,二级实例302)以确定第一组二级实例310的输出是否存在错误。
图3E示出了将二级实例302的输出信号重置后的二级实例302的示例性示意图。如图3E所示,第一组三级实例3026的输出信号被置为参考信号中与第一组三级实例3026对应的三级原始实例的输出信号30226。于是,基于参考信号中与第二组三级实例3028对应的输入信号,运行二级实例302,使得参考信号中与三级原始实例对应的输入信号30242再次输入到第二组三级实例3028中,进而产生包含输出信号30226和30244的二级实例302的输出。假设此时不再报错,说明此时二级实例302的输出不存在错误,由于运行二级实例302时,第一组三级实例3026的输出被强制设为参考信号,因此可以知道是第一组三级实例3026的输出导致了报错,进而可以确定第一组三级实例3026存在错误实例。
可以理解的是,类似地,在一些实施例中,当对第一组三级实例3026的输出信号重置后且二级实例的输出还是存在错误时,可以反过来对第二组三级实例3028的输出信号重置后再次运行二级实例得到相应的输出。若此时输出信号不存在错误,则可以确定错误实例在第二组三级实例3028中。若此时输出信号还是存在错误,则可以确定错误实例既存在于第一组三级实例3026中,也存在于第二组三级实例3028中。可以看出,在本实施例中,以每个分组仅有一个三级实例为例进行描述,因此,此时可以确定三级实例3026和三级实例3028均为错误实例。当然,若三级实例分组中存在多个三级实例时,就需要对二级实例302的多个三级实例重新分组并再次按照前述方法来确定错误实例。
在一些情况下,可能需要进一步确定是三级实例的哪个或哪些四级实例是错误实例,基于类似的思路,可以按照前述的方式再进一步分组,直至检测到最底层的错误实例。在此不再赘述。
前述实施例是以第一组二级实例310中仅包含一个二级实例302为例进行的说明。可以理解的是,第一组二级实例310在一些实施例中可能不止包含一个二级实例302,例如,包含二级实例302和二级实例304。此时,在一些实施例中,可以不要求一定要确定到只有一个二级实例302中存在错误实例时才对二级实例的三级实例进一步分组,而是在确定第一组二级实例310中存在错误实例时,直接对第一组二级实例310中的所有二级实例包含的所有三级实例进行分组。
可以理解的是,在一些情况下,对原始设计2022的修改一般不是颠覆性的,而可能是局部的微调,因此修改设计2030相对于原始设计2022的修改并不会太多,而修改出现错误的几率一般不会太高,进而其中出现错误实例的情况也会更少。因此,采用上述方法对错误实例进行检测一般不会花费太多时间,并且可以有效减少人力的消耗。
还可以理解的是,前述实施例仅对一个一级实例进行错误实例检测进行描述,在一些情况下,被修改的一级实例的数量可以是不止一个,针对每个一级实例都可以采用前述的方法来检测错误实例。在此不再赘述。
在本申请实施例的第二方面,提供一种用于提高修改设计的错误实例的检测效率的方法。
图4示出了本申请实施例所提供的示例性方法400的流程示意图。方法400可以由图1A的电子设备100执行。例如,方法400可以由运行在电子设备100上的仿真工具200(图2A所示)执行。该方法400可以具体包括以下步骤。
在步骤402,仿真工具200可以确定修改设计(例如,图2C的修改设计2030)中的一个一级实例(例如,图3A的一级实例300),一级实例包括多个二级实例(例如,图3A的二级实例302、304、306、308)。
在步骤404,仿真工具200可以接收一级实例的参考信号,该参考信号可以包括原始设计(例如,图2C的设计2022)的一级原始实例和多个二级原始实例的输入信号和输出信号。该参考信号可以通过预先运行原始设计来获得。可以理解的是,该一级原始实例对应于上述一级实例,该多个二级原始实例对应于上述多个二级实例。
在步骤406,仿真工具200可以基于该参考信号的一级原始实例的输入信号(例如,图3A的输入信号30222、30242、3042、3062、3082),运行该一级实例以确定该一级实例的第一输出(例如,图3A的输出信号30224、30244、3044、3064、3084)与一级原始实例的输出信号是否一致。
在步骤408,响应于该第一输出与一级原始实例的输出信号不一致,仿真工具200可以将多个二级实例分为两组实例,该两组实例可以包括第一组二级实例(例如,图3A的第一组二级实例310)和第二组二级实例(例如,图3A的第二组二级实例312)。
在步骤410,仿真工具200可以将第一组二级实例的输出信号(例如,图3A的输出信号30224、30244)置为参考信号中与第一组二级实例对应的输出信号(例如,图3B的输出信号30226、30246)。在一些实施例中,参考信号中与第一组二级实例对应的输出信号为参考信号中与第一组二级实例对应的二级原始实例的输出信号。
在步骤412,仿真工具200可以基于参考信号中与第二组二级实例对应的输入信号(例如,图3A的输入信号3042、3062、3082),运行一级实例以确定一级实例的第二输出是否存在错误。在一些实施例中,参考信号中与第二组二级实例对应的输入信号为参考信号中与第二组二级实例对应的二级原始实例的输入信号。
在步骤414,响应于所述第二输出不存在错误,仿真工具200可以确定第一组二级实例存在错误实例。
本申请实施例提供的用于检测修改设计的错误实例的方法,由于确定错误实例的过程采用了信号比对、实例分组和信号重置的处理方式,提高了调查修改设计的错误实例的效率,节省了大量人力。
在一些实施例中,第一组二级实例可以进一步包括多个三级实例(例如,图3D的三级实例3022、3024),参考信号还包括原始设计的多个三级原始实例的输入信号和输出信号。为了进一步确定更为具体的错误实例,方法500还可以包括以下步骤:响应于第一组二级实例存在错误实例,将多个三级实例分为两组实例,两组实例包括第一组三级实例(例如,图3D的第一组三级实例3026)和第二组三级实例(例如,图3D的第二组三级实例3028);将第一组三级实例的输出信号(例如,图3D的输出信号30224)置为参考信号中与第一组三级实例对应的输出信号(例如,图3E的输出信号30226);基于参考信号中与第二组三级实例对应的输入信号,运行第一组二级实例以确定第一组二级实例的输出是否存在错误;以及响应于第一组二级实例的输出不存在错误,确定第一组三级实例存在错误实例。
在一些实施例中,参考信号中与第一组三级实例对应的输出信号为参考信号中与第一组三级实例对应的三级原始实例的输出信号;参考信号中与所述第二组三级实例对应的输入信号为参考信号中与第二组三级实例对应的三级原始实例的输入信号。
在一些实施例中,仿真工具200可以将多个二级实例分为第三组二级实例和第四组二级实例。在一些实施例中,运行一级实例以确定一级实例的第二输出是否存在错误可以进一步包括:并行运行第一组二级实例和第二组二级实例以及第三组二级实例和第四组二级实例,从而通过并行处理提高检测效率。
在一些实施例中,确定修改设计中的一个一级实例,可以进一步包括:比对修改设计和原始设计;以及确定修改设计中相对于原始设计被修改的一级实例为所述一级实例。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种用于检测修改设计的错误实例的方法,包括:
确定所述修改设计中的一个一级实例,所述一级实例包括多个二级实例,所述一级实例是所述修改设计相对于原始设计的被修改的一级实例;
接收所述一级实例的参考信号,所述参考信号包括所述原始设计的一级原始实例和多个二级原始实例的输入信号和输出信号,其中,所述一级原始实例对应于所述一级实例,所述多个二级原始实例对应于所述多个二级实例;
基于所述参考信号的一级原始实例的输入信号,运行所述一级实例以确定所述一级实例的第一输出与所述一级原始实例的输出信号是否一致;
响应于所述第一输出与所述一级原始实例的输出信号不一致,将所述多个二级实例分为两组实例,所述两组实例包括第一组二级实例和第二组二级实例;
将所述第一组二级实例的输出信号置为所述参考信号中与所述第一组二级实例对应的输出信号;
基于所述参考信号中与所述第二组二级实例对应的输入信号,运行所述一级实例以确定所述一级实例的第二输出是否存在错误;以及
响应于所述第二输出不存在错误,确定所述第一组二级实例存在错误实例。
2.根据权利要求1所述的方法,其中,所述第一组二级实例进一步包括多个三级实例,所述参考信号还包括所述原始设计的多个三级原始实例的输入信号和输出信号,所述方法还包括:
响应于所述第一组二级实例存在错误实例,将所述多个三级实例分为两组实例,所述两组实例包括第一组三级实例和第二组三级实例;
将所述第一组三级实例的输出信号置为所述参考信号中与所述第一组三级实例对应的输出信号;
基于所述参考信号中与所述第二组三级实例对应的输入信号,运行所述第一组二级实例以确定所述第一组二级实例的输出是否存在错误;以及
响应于所述第一组二级实例的输出不存在错误,确定所述第一组三级实例存在错误实例。
3.根据权利要求1所述的方法,其中,将所述多个二级实例分为两组实例进一步包括:
将所述多个二级实例分为第三组二级实例和第四组二级实例。
4.根据权利要求3所述的方法,其中,运行所述一级实例以确定所述一级实例的第二输出是否存在错误进一步包括:
并行运行所述第一组二级实例和第二组二级实例以及第三组二级实例和第四组二级实例。
5.根据权利要求1所述的方法,其中,所述确定所述修改设计中的一个一级实例,进一步包括:
比对所述修改设计和所述原始设计;以及
确定所述修改设计中相对于所述原始设计被修改的一级实例为所述一级实例。
6.根据权利要求1所述的方法,其中,所述参考信号中与所述第一组二级实例对应的输出信号为所述参考信号中与所述第一组二级实例对应的所述二级原始实例的输出信号;所述参考信号中与所述第二组二级实例对应的输入信号为所述参考信号中与所述第二组二级实例对应的所述二级原始实例的输入信号。
7.根据权利要求2所述的方法,其中,所述参考信号中与所述第一组三级实例对应的输出信号为所述参考信号中与所述第一组三级实例对应的所述三级原始实例的输出信号;所述参考信号中与所述第二组三级实例对应的输入信号为所述参考信号中与所述第二组三级实例对应的所述三级原始实例的输入信号。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至7任意一项所述的方法。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于使所述计算机执行权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110439055.2A CN112989736B (zh) | 2021-04-23 | 2021-04-23 | 用于检测修改设计的错误实例的方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110439055.2A CN112989736B (zh) | 2021-04-23 | 2021-04-23 | 用于检测修改设计的错误实例的方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989736A CN112989736A (zh) | 2021-06-18 |
CN112989736B true CN112989736B (zh) | 2022-06-03 |
Family
ID=76339958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110439055.2A Active CN112989736B (zh) | 2021-04-23 | 2021-04-23 | 用于检测修改设计的错误实例的方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989736B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409002A (zh) * | 2018-11-12 | 2019-03-01 | 北京华大九天软件有限公司 | 一种版图实例化的完整性检测方法 |
US10929584B1 (en) * | 2019-12-12 | 2021-02-23 | Amazon Technologies, Inc. | Environmental modification testing for design correctness with formal verification |
CN112632880A (zh) * | 2020-12-28 | 2021-04-09 | 芯华章科技股份有限公司 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526742B1 (en) * | 2006-01-31 | 2009-04-28 | Xilinx, Inc. | One-pass method for implementing a flexible testbench |
US10161993B2 (en) * | 2013-02-21 | 2018-12-25 | Advantest Corporation | Tester with acceleration on memory and acceleration for automatic pattern generation within a FPGA block |
CN108932355B (zh) * | 2017-05-23 | 2020-11-20 | 大唐移动通信设备有限公司 | 一种逻辑验证方法及装置 |
CN110095711B (zh) * | 2019-05-06 | 2021-10-15 | 苏州盛科通信股份有限公司 | 一种基于测试向量乱序和丢弃行为的验证方法 |
CN112286649A (zh) * | 2020-11-04 | 2021-01-29 | 浪潮天元通信信息系统有限公司 | 一种多线程处理大批量数据的实现方法 |
CN112380625A (zh) * | 2020-11-20 | 2021-02-19 | 南京航空航天大学 | 适于飞行器机载系统架构设计的aMBSE方法 |
CN112232003B (zh) * | 2020-12-17 | 2021-03-30 | 芯华章科技股份有限公司 | 对设计进行仿真的方法、电子设备及存储介质 |
-
2021
- 2021-04-23 CN CN202110439055.2A patent/CN112989736B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409002A (zh) * | 2018-11-12 | 2019-03-01 | 北京华大九天软件有限公司 | 一种版图实例化的完整性检测方法 |
US10929584B1 (en) * | 2019-12-12 | 2021-02-23 | Amazon Technologies, Inc. | Environmental modification testing for design correctness with formal verification |
CN112632880A (zh) * | 2020-12-28 | 2021-04-09 | 芯华章科技股份有限公司 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
"A 45 nm Resilient Microprocessor Core for Dynamic Variation Tolerance";Keith A. Bowman .etc;《IEEE Journal of Solid-State Circuits》;20110131;第46卷(第1期);第194-208页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112989736A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111931445B (zh) | 用于调试逻辑系统设计的方法、仿真器及存储介质 | |
CN112632880B (zh) | 用于逻辑系统设计的编译方法、电子设备及存储介质 | |
CN114662427B (zh) | 一种逻辑系统设计的调试方法及设备 | |
CN112287569B (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN112100957B (zh) | 用于调试逻辑系统设计的方法、仿真器、存储介质 | |
CN116256621A (zh) | 芯粒的测试方法、装置、电子设备及存储介质 | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
CN113742221A (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN114218882A (zh) | 一种SoC芯片检验方法、装置及相关设备 | |
CN115470125B (zh) | 基于日志文件的调试方法、设备以及存储介质 | |
CN112506806B (zh) | 用于调试程序的方法、电子设备及存储介质 | |
CN112989736B (zh) | 用于检测修改设计的错误实例的方法、设备及存储介质 | |
CN115827568B (zh) | 获取逻辑系统设计的数据的方法、电子设备和存储介质 | |
US20230055523A1 (en) | Method, apparatus, and storage medium for generating test cases | |
CN114912396A (zh) | 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备 | |
CN112131806A (zh) | 验证设计的编译方法、电子设备及存储介质 | |
CN114169287B (zh) | 生成验证环境的连接示意图的方法、电子设备及存储介质 | |
CN112580297B (zh) | 一种编解码数据的方法、电子设备及存储介质 | |
CN116861829A (zh) | 用于定位逻辑系统设计中错误的方法、电子设备 | |
CN113065302B (zh) | 用于仿真逻辑系统设计的方法、仿真器及可读存储介质 | |
CN117172203A (zh) | 处理脚本命令的方法、电子设备和存储介质 | |
CN114548324A (zh) | 对逻辑系统设计的仿真错误进行分类的方法及设备 | |
CN117933151A (zh) | 仿真逻辑系统设计的方法、电子装置和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |