CN116306392A - 芯片仿真装置、方法、电子设备和存储介质 - Google Patents
芯片仿真装置、方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116306392A CN116306392A CN202310256005.XA CN202310256005A CN116306392A CN 116306392 A CN116306392 A CN 116306392A CN 202310256005 A CN202310256005 A CN 202310256005A CN 116306392 A CN116306392 A CN 116306392A
- Authority
- CN
- China
- Prior art keywords
- simulation
- chip
- virtual
- unit
- peripheral circuit
- 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
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 174
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000002093 peripheral effect Effects 0.000 claims abstract description 93
- 230000008569 process Effects 0.000 claims abstract description 31
- 230000003993 interaction Effects 0.000 claims description 41
- 230000015654 memory Effects 0.000 claims description 19
- 230000005284 excitation Effects 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 5
- 230000002452 interceptive effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 21
- 238000012360 testing method Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 14
- 230000005856 abnormality Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/323—Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
-
- 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
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- 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
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种芯片仿真装置、方法、电子设备和存储介质。芯片仿真装置包括:模拟模块,用于模拟芯片中处理器的运行过程,得到虚拟处理器,并利用虚拟处理器生成仿真指令;以及仿真模块,用于基于仿真指令,对芯片的外围电路进行仿真。
Description
技术领域
本公开涉及软件仿真技术领域,更具体地,涉及一种芯片仿真装置、方法、电子设备和存储介质。
背景技术
在开发芯片的外围电路时,需要对已经设计的外围电路进行仿真。现有的芯片仿真技术大多是基于仿真器实现。例如,在仿真器中模拟芯片的处理器和外围电路的运行过程,并对外围电路进行功能测试。但是,处理器和外围电路之间的复杂的驱动协议会导致仿真器的运行速度较慢,从而影响外围电路的开发过程。
发明内容
本公开提供了一种芯片仿真装置、方法、电子设备和存储介质。
根据本公开的一个方面,本公开提出了一种芯片仿真装置,包括:模拟模块,用于模拟芯片中处理器的运行过程,得到虚拟处理器,并利用虚拟处理器生成仿真指令;以及仿真模块,用于基于仿真指令,对芯片的外围电路进行仿真。
根据本公开实施例,模拟模块包括:模拟单元,用于利用虚拟处理器加载执行指令,得到仿真指令,并利用虚拟处理器基于地址映射将仿真指令写入虚拟外围电路寄存器,执行指令指示虚拟处理器驱动外围电路的仿真过程;其中,模拟单元通过模拟与芯片对应的虚拟芯片,得到虚拟处理器和虚拟外围电路寄存器。
根据本公开实施例,模拟模块还包括:第一交互单元,用于获取来自虚拟外围电路寄存器的仿真指令,并将仿真指令发送给仿真模块。
根据本公开实施例,仿真模块包括:第二交互单元,用于接收仿真指令;编译单元,用于编译源文件,得到可执行文件,可执行文件包括外围电路的执行逻辑;以及仿真单元,用于将仿真指令转换为激励信号,并在激励信号的驱动下,运行可执行文。
根据本公开实施例,仿真单元还用于:基于激励信号驱动可执行文件,得到仿真结果;以及在确定仿真结果与预设结果不相同的情况下,对可执行文件中外围电路的执行逻辑进行修改,并返回基于激励信号驱动可执行文件,得到仿真结果的操作。
根据本公开实施例,第一交互单元还用于在模拟单元加载执行指令之前,与第二交互单元建立通信连接,以实现同步。
根据本公开实施例,第一交互单元与第二交互单元之间的通信方式包括共享内存、信号量和消息队列。
根据本公开实施例,模拟模块还包括:调试单元,用于调试虚拟处理器的运行过程和查看被写入虚拟外围电路寄存器的仿真指令。
根据本公开实施例的另一方面,提供了一种芯片仿真方法,包括:模拟芯片的处理器的运行过程,得到虚拟处理器;利用虚拟处理器生成仿真指令;以及基于仿真指令,对芯片的外围电路进行仿真。
根据本公开实施例的另一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行根据本公开实施例提供的方法。
根据本公开实施例的另一方面,提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据本公开实施例提供的方法。
根据本公开实施例,在芯片的仿真过程中,将处理器和外围电路分别运行在不同的运行程序中。利用模拟程序模拟芯片的处理器的运行过程,模拟程序具有较快的运行速度,可以提高处理器的运行效率。利用仿真程序单独对外围电路进行仿真,较少仿真程序的运行量,提高运行速度,从而提高外围电路的开发效率。
附图说明
通过下面结合附图说明本公开实施例,将使本公开实施例的上述及其它目的、特征和优点更加清楚。应注意,贯穿附图,相同的元素由相同或相近的附图标记来表示。图中:
图1示出了根据本公开实施例的芯片仿真装置的结构示意图;
图2示出了根据本公开实施例的芯片仿真装置的应用场景;
图3A示出了根据本公开实施例的模拟模块的结构示意图;
图3B示出了根据本公开实施例的模拟模块的运行示意图;
图4A示出了根据本公开实施例的仿真模块的结构示意图;
图4B示出了根据本公开实施例的仿真模块的运行示意图;
图5示出了根据本公开另一实施例的芯片仿真装置的结构示意图;
图6示出了根据本公开实施例的芯片仿真方法的流程图;以及
图7示出了根据本公开实施例的适于实现芯片仿真方法的电子设备的框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部。基于所描述的本公开实施例,本领域普通技术人员在无需创造性劳动的前提下获得的所有其他实施例都属于本公开保护的范围。在以下描述中,一些具体实施例仅用于描述目的,而不应该理解为对本公开有任何限制,而只是本公开实施例的示例。在可能导致对本公开的理解造成混淆时,将省略常规结构或构造。
除非另外定义,本公开实施例使用的技术术语或科学术语应当是本领域技术人员所理解的通常意义。本公开实施例中使用的“第-”、“第二”以及类似词语并不表示任何顺序、数量或重要性,而只是用于区分不同的组成部分。
下面,将参照附图详细描述根据本公开的各个实施例。需要注意的是,在附图中,将相同的附图标记赋予基本上具有相同或类似结构和功能的组成部分,并且将省略关于它们的重复描述。
图1示出了根据本公开实施例的芯片仿真装置的结构示意图。
如图1所示,芯片仿真装置100包括模拟模块110和仿真模块120。
在本公开实施例中,模拟模块110模拟芯片中处理器的运行过程,得到虚拟处理器,并利用虚拟处理器生成仿真指令。仿真模块120基于仿真指令,对芯片的外围电路进行仿真。
例如,模拟模块110可以为模拟软件,仿真模块120可以为仿真软件,待仿真的芯片可以为系统级芯片(System on Chip,SOC),外围电路为SOC芯片的外设IP核(PeripheralIP Core)。IP核为知识产权核(Intellectual Property Core,IP Core)。IP核是一种预先设计好的电路功能模块,外设IP核为SOC芯片中除嵌入式处理器CPU以外的外围专用功能IP核。
例如,芯片可以包括一个处理器和多个外设IP核。在芯片中,处理器可以运行操作系统和驱动软件,并控制各个外设IP核之间进行交互。外设IP核可以包括USB接口、嵌入式多媒体卡(Embedded Multi Media Card,eMMC)、以太网接口和图形处理器(GraphicsProcessing Unit,GPU)等。芯片的仿真过程包括利用模拟模块110和仿真模块120对芯片的外设IP核能够实现的功能分别进行测试,以确定设计的外设IP核是否可以实现目标功能。
图2示出了根据本公开实施例的芯片仿真装置的应用场景。结合图1和图2对本公开芯片仿真装置的运行过程进行示例性说明。
如图2所示,应用场景200包括模拟模块210、仿真模块220和虚拟芯片230。虚拟芯片230包括虚拟处理器231和虚拟外围电路232。虚拟芯片230为与待仿真芯片对应的虚拟结构,虚拟芯片230能够实现与待仿真芯片相同的功能。例如,虚拟处理器231在模拟模块210能够实现与待仿真芯片中处理器相同的功能,虚拟外围电路232在仿真模块220能够实现与待仿真芯片中外围电路相同的功能。
在本公开实施例中,模拟模块210利用虚拟处理器231模拟待仿真芯片处理器的运行过程,实现对仿真模块220中虚拟外围电路232的驱动,从而实现对待仿真芯片的外围电路的仿真。
在本公开实施例中,模拟模块210和仿真模块220可以通过数据同步的方式实现模拟模块210与仿真模块220之间的数据交互。例如,模拟模块210利用虚拟处理器230生成仿真指令后,通过数据同步的方式,将该仿真指令同步给仿真模块220。在仿真指令的驱动下,仿真模块220对虚拟外围电路232的各种功能进行测试,以实现对外围电路的仿真。
例如,模拟模块210可以为快速模拟器(Quick Emulator,QEMU),仿真模块220可以为用于编译硬件建模语言的仿真器,虚拟外围电路232可以是基于硬件建模语言设计得到的。
例如,仿真器可以对虚拟外围电路232的仿真事件进行分层,得到分层事件队列,并对分层事件队列中的仿真时间逐层执行。仿真事件在仿真器中串行执行,由于芯片通常具有多个外围电路,一个仿真事件可能需要由上万条串行语句来完成,因此仿真器需要花费较长的时间来执行仿真时间。
在一些示例中,为缩短仿真器的运行时间,对于复杂的外围电路,例如USB接口、EMMC、GPU和以太网接口等,通常采取单个功能依次测试的方式,而无法实现全功能整体测试。
在本公开实施例中,利用快速模拟器模拟处理器驱动外围电路运行,仿真器在仅运行外围电路的情况下运行速度得到提升,此外凭借快速模拟器的高速运行速度可以整体缩短芯片仿真时间,还可以实现全功能整体测试,提外围电路的仿真效率。
图3A示出了根据本公开实施例的模拟模块的结构示意图。图3B示出了根据本公开实施例的模拟模块的运行示意图。
如图3A所示,模拟模块310包括模拟单元311、第一交互单元312和调试单元313。如图3B所示,模拟单元311利用虚拟处理器3111加载执行指令,得到仿真指令,并利用虚拟处理器3111基于地址映射将仿真指令写入虚拟外围电路寄存器3112。
在本公开实施例中,执行指令指示虚拟处理器3111驱动外围电路的仿真过程。例如,执行指令可以存储在二进制(binary,Bin)文件中,Bin文件可以由源文件编译后得到,源文件可以由C语言编写的文件。Bin文件包括由虚拟处理器3111执行的各种指令,用于指示虚拟处理器3111对虚拟外围电路的驱动的测试用例(Test Case)。
例如,虚拟单元311利用虚拟处理器3111加载Bin文件,获取执行指令,执行指令包括对虚拟外围电路进行功能测试的测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等信息。虚拟处理器3111处理该执行指令,得到仿真指令,仿真指令指示了虚拟外围电路的仿真过程。
在本公开实施例中,模拟单元311可以通过模拟与芯片对应的虚拟芯片,得到虚拟处理器3111和虚拟外围电路寄存器3112。虚拟处理器3111与前文实施例所述的虚拟处理器231类似。为了简明,本公开在此处不再赘述。
例如,虚拟外围电路寄存器3112可以为输入/输出(Input/Output,I/O)端口,用于实现处理器对外围电路的读写。虚拟外围电路寄存器3112可以包括虚拟控制寄存器、虚拟状态寄存器和虚拟数据寄存器。虚拟处理器3111可以通过地址映射的方式将数据写入虚拟外围电路寄存器3112中。
例如,仿真指令指示对外围电路的数据写入功能进行仿真,虚拟处理器3111处理执行指令,以通过地址映射的方式将用于指示写入数据“10”的指令写入虚拟数据寄存器中,例如将虚拟数据寄存器的虚拟地址转换为虚拟处理器3111识别的物理地址,根据该物理地址将用于指示写入数据“10”的指令写入虚拟数据寄存器中。
在本公开实施例中,第一交互单元312获取来自虚拟外围电路寄存器3112的仿真指令,并将仿真指令发送给仿真模块。模拟模块310可以通过第一交互单元312与外部进行交互,例如模拟模块310可以通过第一交互单元312将仿真指令发送给仿真模块,实现模拟模块310与仿真模块之间的数据同步。
在本公开实施例中,调试单元313可以调试虚拟处理器3111的运行过程和查看被写入虚拟外围电路寄存器3112的仿真指令。例如,调试单元313可以暂停和启动虚拟处理器3111的运行过程。例如,在确定虚拟处理器3111的运行过程出现异常的情况下,调试单元313暂停虚拟处理器3111的运行,并对异常问题进行修改。在确定异常问题已经被解决的情况下,调试单元313暂停虚拟处理器3111的运行。例如,在确定虚拟处理器3111的运行过程出现异常的情况下,调试单元313还可以查看被写入虚拟外围电路寄存器3112的数据,以分析异常。
根据本公开实施例,利用模拟模块处理虚拟处理器的驱动虚拟外围电路的过程,利用模拟模块的高速运行速度提高芯片仿真速度。
图4A示出了根据本公开实施例的仿真模块的结构示意图。图4B示出了根据本公开实施例的仿真模块的运行示意图。
如图4A所示,仿真模块420包括第二交互单元421、编译单元422和仿真单元423。
如图4B所示,第二交互单元421接收仿真指令,编译单元422编译源文件,得到可执行文件。仿真单元423接收仿真指令和可执行文件,将仿真指令转换为激励信号,并在激励信号的驱动下,运行可执行文件,可执行文件包括外围电路的执行逻辑。
例如,源文件可以为检验待测设计(Design Under Test,DUT)文件,DUT文件可以包括每个外围电路的寄存器转换级(Register Transfer Level,RTL)电路的功能逻辑。基于RTL设计源文件编译得到的可执行文件,可以实现对外围电路的RTL级仿真。
例如,可执行文件可以包括执行RTL级仿真的程序和DUT文件,利用仿真单元423运行可执行文件,可以实现对外围电路的RTL级仿真。例如,仿真单元423可以包括试验台Testbench功能,通过Testbench可以在仿真过程中执行和验证外围电路功能的正确性。Testbench可以将仿真指令转化为与外围电路相适配的激励信号。例如,仿真指令指示外围电路需要执行写入数据“10”的操作,Testbench可以将该仿真指令转换为时钟信号,在时钟信号的激励下,外围电路执行写入数据“10”的操作。例如,仿真单元423还可以生成复位信号、输入信号和输出信号等激励信号。
例如,仿真单元423的仿真结果可以以信号的方式输出,可以通过分析信号的波形来分析外围电路功能的正确性。例如,还可以用过EDA工具,对比仿真结果和预期值,从而分析外围电路功能的正确性。
例如,仿真单元423基于激励信号驱动可执行文件,得到仿真结果,并在确定仿真结果与预设结果不相同的情况下,对可执行文件中外围电路的执行逻辑进行修改,并返回基于激励信号驱动可执行文件,得到仿真结果的操作。
仿真单元423检查生成的仿真结果与预期结果之间的差异,在确定外围电路的功能出现错误的情况下,可以对可执行文件中DUT文件进行修改,并重新运行可执行文件,直至生成的仿真结果符合预期结果。例如,预期结果与执行指令中的测试用例相关,测试用例可以指示预期结果,例如在测试用例中预先编写预期的测试结果。
根据本公开实施例,利用仿真模块单独执行对外围电路的仿真过程,可以减少仿真模块的运算量。此外对于复杂的外围电路,也可以实现全功能整体测试,提高对外围电路的仿真效率
图5示出了根据本公开另一实施例的芯片仿真装置的结构示意图。
如图5所示,芯片仿真装置500包括模拟模块510和仿真模块520。
模拟模块510包括虚拟单元511、第一交互单元512和调试单元513。仿真模块520包括第二交互单元521、编译单元522和仿真单元523。
在本公开实施例中,模拟模块510和仿真模块520分别与前文所述实施例中的模拟模块110和仿真模块120类似,虚拟单元511、第一交互单元512和调试单元513分别与前文所述实施例中的虚拟单元311、第一交互单元312和调试单313类似,第二交互单元521、编译单元522和仿真单元523分别与前文所述实施例中的第二交互单元421、编译单元422和仿真单元423。为了简明,本公开不再赘述。
在本公开实施例中,在模拟单元511加载执行指令之前,第一交互单元512与第二交互单元521建立通信连接,以实现同步。例如,第一交互单元512与第二交互单元521之间可以实现时间同步,以确保模拟模块510和仿真模块520能够基于时间驱动外围电路的仿真。
在本公开实施例中,第一交互单元512与第二交互单元521之间的通信方式包括共享内存(shared memory)、信号量(semaphore)和消息队列(Message queue)。
例如,第一交互单元512与第二交互单元521可以共享同一块存储区域,通过地址映射将该存储区域的物理内存映射到不同地址空间中。例如,第一交互单元512还可以将需要与第二交互单元521同步的数据写入对应的消息队列中,第二交互单元521在需要读取数据时候,可以从该消息队列中读取数据。
在本公开实施例中,在确定第一交互单元512与第二交互单元521成功建立通信连接的情况下,模拟单元511利用虚拟处理器加载Bin文件,从而获取执行指令。虚拟处理器处理执行指令,得到仿真指令,并将仿真指令写入虚拟外围电路寄存器中。在模拟单元511的运行过程中,调试单元513可以对虚拟处理器和虚拟外围电路寄存器进行调试。第一交互单元512从虚拟外围电路寄存器中获取该仿真指令,并通过共享内存、信号量或消息队列等方式,将该仿真指令同步给第二交互单元521。
编译单元对源文件(DUT文件)进行编译,得到可执行文件。仿真单元523接收来自第二交互单元521的仿真指令和来自编译单元522的可执行文件,将仿真指令转化成与待仿真的虚拟外围电路对应激励信号,并在激励信号的驱动下,运行可执行文件,从而实现对虚拟外围电路的仿真。
根据本公开实施例,在利用模拟器和仿真器分别运行虚拟处理器和虚拟外围电路的情况下,通过在虚拟器和仿真器中分别设置用于实现模拟器和仿真器之间数据同步的交互单元,从而实现模拟器与仿真器之间的数据传输,进而也实现了模拟器中虚拟处理器对仿真器中虚拟外围电路的驱动。基于模拟器的高速运行速度可以整体缩短芯片仿真时间,提外围电路的仿真效率。
图6示出了根据本公开实施例的芯片仿真方法的流程图。
如图6所示,该实施例的芯片仿真方法包括操作S610~操作S630。
在操作S610,模拟芯片的处理器的运行过程,得到虚拟处理器。
在操作S620,利用虚拟处理器生成仿真指令。
在本公开实施例中,操作S710和操作S720由模拟模块110执行,与上述模拟模块110执行的操作相对应,为了简明此处不再赘述。
在操作S630,基于仿真指令,对芯片的外围电路进行仿真。
本公开实施例中,操作S630由仿真模块120执行,与上述仿真模块120执行的操作相对应,为了简明此处不再赘述。
图7示出了根据本公开实施例的适于实现芯片仿真方法的电子设备的框图。
如图7所示,根据本公开实施例的电子设备700包括处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 703中,存储有电子设备700操作所需的各种程序和数据。处理器701、ROM702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备700还可以包括前文实施例描述的主存储单元和缓存单元。主存储单元和缓存单元用于存储目标数据和域信息。处理器701根据存储在只读存储器(ROM)702中的程序或者从存储部分706加载到随机访问存储器(RAM)703中的程序对主存储单元和/或缓存单元内的目标数据及域信息执行各种适当的动作和处理。根据本公开的实施例,前文实施例描述的主存储单元及缓存单元与处理器710也可以位于不同的电子设备。处理器701根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序对另一电子设备的主存储单元和/或缓存单元内的目标数据及域信息执行各种适当的动作和处理。
根据本公开的实施例,电子设备700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。电子设备700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM 702和RAM 703以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的芯片仿真方法。
在该计算机程序被处理器701执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分709被下载和安装,和/或从可拆卸介质711被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (11)
1.一种芯片仿真装置,包括:
模拟模块,用于模拟芯片中处理器的运行过程,得到虚拟处理器,并利用所述虚拟处理器生成仿真指令;以及
仿真模块,用于基于所述仿真指令,对所述芯片的外围电路进行仿真。
2.根据权利要求1所述的芯片仿真装置,其中,所述模拟模块包括:
模拟单元,用于利用所述虚拟处理器加载执行指令,得到仿真指令,并利用所述虚拟处理器基于地址映射将所述仿真指令写入虚拟外围电路寄存器,所述执行指令指示所述虚拟处理器驱动所述外围电路的仿真过程;
其中,所述模拟单元通过模拟与所述芯片对应的虚拟芯片,得到所述虚拟处理器和所述虚拟外围电路寄存器。
3.根据权利要求2所述的芯片仿真装置,其中,所述模拟模块还包括:
第一交互单元,用于获取来自所述虚拟外围电路寄存器的仿真指令,并将所述仿真指令发送给所述仿真模块。
4.根据权利要求3所述的芯片仿真装置,其中,所述仿真模块包括:
第二交互单元,用于接收所述仿真指令;
编译单元,用于编译源文件,得到可执行文件,所述可执行文件包括所述外围电路的执行逻辑;以及
仿真单元,用于将所述仿真指令转换为激励信号,并在所述激励信号的驱动下,运行所述可执行文件。
5.根据权利要求4所述的芯片仿真装置,其中,所述仿真单元还用于:
基于所述激励信号驱动所述可执行文件,得到仿真结果;以及
在确定所述仿真结果与预设结果不相同的情况下,对所述可执行文件中外围电路的执行逻辑进行修改,并返回所述基于所述激励信号驱动所述可执行文件,得到仿真结果的操作。
6.根据权利要求4所述的芯片仿真装置,其中,所述第一交互单元还用于在所述模拟单元加载所述执行指令之前,与所述第二交互单元建立通信连接,以实现同步。
7.根据权利要求6所述的芯片仿真装置,其中,所述第一交互单元与所述第二交互单元之间的通信方式包括共享内存、信号量和消息队列。
8.根据权利要求2所述的芯片仿真装置,其中,所述模拟模块还包括:
调试单元,用于调试所述虚拟处理器的运行过程和查看被写入所述虚拟外围电路寄存器的仿真指令。
9.一种芯片仿真方法,包括:
模拟芯片的处理器的运行过程,得到虚拟处理器;
利用所述虚拟处理器生成仿真指令;以及
基于所述仿真指令,对所述芯片的外围电路进行仿真。
10.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求9所述的方法。
11.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310256005.XA CN116306392A (zh) | 2023-03-08 | 2023-03-08 | 芯片仿真装置、方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310256005.XA CN116306392A (zh) | 2023-03-08 | 2023-03-08 | 芯片仿真装置、方法、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116306392A true CN116306392A (zh) | 2023-06-23 |
Family
ID=86831970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310256005.XA Pending CN116306392A (zh) | 2023-03-08 | 2023-03-08 | 芯片仿真装置、方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116306392A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117236263A (zh) * | 2023-11-15 | 2023-12-15 | 之江实验室 | 一种多芯粒互联仿真方法、装置、存储介质及电子设备 |
-
2023
- 2023-03-08 CN CN202310256005.XA patent/CN116306392A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117236263A (zh) * | 2023-11-15 | 2023-12-15 | 之江实验室 | 一种多芯粒互联仿真方法、装置、存储介质及电子设备 |
CN117236263B (zh) * | 2023-11-15 | 2024-02-06 | 之江实验室 | 一种多芯粒互联仿真方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10209962B2 (en) | Reconstructing a high level compilable program from an instruction trace | |
Aarno et al. | Software and system development using virtual platforms: full-system simulation with wind river simics | |
US8234624B2 (en) | System and method for developing embedded software in-situ | |
US10180850B1 (en) | Emulating applications that use hardware acceleration | |
US20070067150A1 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
US20130024178A1 (en) | Playback methodology for verification components | |
US9690681B1 (en) | Method and system for automatically generating executable system-level tests | |
US11934825B2 (en) | Event-driven design simulation | |
CN116306392A (zh) | 芯片仿真装置、方法、电子设备和存储介质 | |
US10664637B2 (en) | Testbench restoration based on capture and replay | |
CN116992804B (zh) | 芯片验证的方法及计算设备 | |
US10540466B1 (en) | Systems and methods for streaming waveform data during emulation run | |
US11275582B2 (en) | Event-driven design simulation | |
Huggi et al. | Design and verification of memory elements using python | |
Ahn et al. | Modeling firmware as service functions and its application to test generation | |
US7277840B2 (en) | Method for detecting bus contention from RTL description | |
CN113673106B (zh) | 一种fpga内核可编程仿真器 | |
US11719749B1 (en) | Method and system for saving and restoring of initialization actions on dut and corresponding test environment | |
US20230267253A1 (en) | Automated synthesis of virtual system-on-chip environments | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
Koerner et al. | IBM System z10 firmware simulation | |
US11151294B1 (en) | Emulated register access in hybrid emulation | |
Gupta | Improving VCS (Verilog Compiler & Simulator) | |
CN108604205B (zh) | 测试点的创建方法,装置和系统 | |
KR20240009757A (ko) | 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법 |
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 |