CN101719170B - 集成电路的仿真测试方法 - Google Patents
集成电路的仿真测试方法 Download PDFInfo
- Publication number
- CN101719170B CN101719170B CN 200910109891 CN200910109891A CN101719170B CN 101719170 B CN101719170 B CN 101719170B CN 200910109891 CN200910109891 CN 200910109891 CN 200910109891 A CN200910109891 A CN 200910109891A CN 101719170 B CN101719170 B CN 101719170B
- Authority
- CN
- China
- Prior art keywords
- simulation
- integrated circuit
- data
- task
- register
- 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.)
- Expired - Fee Related
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 26
- 238000010998 test method Methods 0.000 title claims abstract description 11
- 238000004321 preservation Methods 0.000 claims abstract description 13
- 238000011084 recovery Methods 0.000 claims abstract description 5
- 238000012795 verification Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 23
- 238000012360 testing method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 238000004549 pulsed laser deposition Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
一种集成电路仿真测试方法,其包括步骤:读入集成电路的网表,根据寄存器、锁存器、RAM、ROM各自的数据生成对应的列表文件,由列表文件按verilog硬件描述语言生成保存现场数据任务和恢复现场数据任务;在不同仿真时间点时调用保存现场数据任务,对所指定的不同仿真时间点的仿真现场数据进行保存;产生多个相互独立的仿真线程,每个仿真线程均启动仿真软件,调用恢复现场数据任务将每个仿真软件所仿真对应的集成电路初始化为在不同仿真时间点时保存的现场数据,并启动各个仿真线程进行仿真验证。本发明极大的缩短了仿真的时间,提高了仿真效率。
Description
技术领域
本发明涉及电路仿真测试方法,尤其是涉及一种采用分段的形式提高集成电路仿真验证速度的仿真测试方法。
背景技术
现代的电路设计技术,除了直接绘制电路图之外,也有直接以语言实现电路的方式,这种语言即称为硬件描述语言(Hardware Description Language,HDL)。随着大规模逻辑电路的发展,硬件描述语言获得广泛的应用,其中使用最多的是verilog HDL。
EDA(Electronic Design Automatic)技术是以计算机为工具,使用硬件描述语言完成设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真等工作。EDA技术的出现,极大地提高了电路设计的效率,减轻了设计者的劳动强度。
随着大规模逻辑电路的广泛应用和逻辑功能的日趋复杂,其验证逻辑功能是否正确的测试方案也变得非常繁杂和烦琐。如此,对于逻辑设计验证工程师来说,如何提高效率判断逻辑电路功能是否正确这一问题愈加突出,它也成为当前逻辑设计电路的仿真验证技术领域的一大难点。
验证逻辑设计电路是否正确可以分为软件和硬件两种验证方案:
一是验证人员采用EDA仿真验证软件,模拟电路的工作情况,根据仿真波形和时序的结合来分析和判断仿真结果是否正确。
二是采用硬件验证法,通过采用CPLD或FPGA等可编程逻辑器件进行硬仿真,直接验证需要测试的逻辑设计电路。利用诸如FPGA等可编程逻辑器件来进行逻辑验证时,需要拥有数量巨大的逻辑门的FPGA、成本高、周期长。而且必须在基于FPGA的硬件电路完成调试的情况下,才能用来验证待测的逻辑设计电路;即使基于FPGA的硬件电路完成调试,一旦待测的逻辑设计电路出现逻辑错误,该测试环境给出的帮助信息较少,对于逻辑错误的定位也非常困难。因此通过EDA仿真工具验证电路仍然是电路设计必不可少的阶段。
另外,在芯片级的集成电路设计的过程中,除了考虑芯片的性能之外,也需要将芯片的上市时间要求考虑在内,这就直接涉及到了芯片的验证时间问题。但是,现有的EDA工具在中断此次仿真后,不具备在下次仿真中恢复此次仿真环境的功能,因此每次仿真都需要经过相同的向量激励后,电路才能运行到所需的状态,从而耗费了大量时间,严重影响了芯片的设计进度。
发明内容
本发明公开一种集成电路仿真测试方法,通过将原本单线程的仿真流程分割成多个可并行执行的仿真线程,大幅减少了仿真的测试时间。
本发明采用如下技术方案来实现:一种集成电路仿真测试方法,其包括步骤:
读入集成电路的网表,根据寄存器、锁存器、RAM、ROM各自的数据生成对应的列表文件,由列表文件按verilog硬件描述语言生成保存现场数据任务和恢复现场数据任务;
在不同仿真时间点时调用保存现场数据任务,对所指定的不同仿真时间点的仿真现场数据进行保存;
产生多个相互独立的仿真线程,每个仿真线程均启动仿真软件,调用恢复现场数据任务将每个仿真软件所仿真对应的集成电路初始化为在不同仿真时间点时保存的现场数据,并启动各个仿真线程进行仿真验证。
其中,保存仿真现场数据的步骤包括:
先停止集成电路中所有的时钟信号,并保存各时钟信号的状态;
然后分别保存各个寄存器、锁存器、RAM和ROM的当前数据。
其中,寄存器、锁存器、RAM和ROM的仿真现场数据分别保存在不同的文件中。
其中,寄存器、锁存器、RAM和ROM的仿真现场数据均保存在一个文件中。
其中,寄存器、锁存器、RAM和ROM的仿真现场数据以二进制格式保存在文件中。
其中,调用恢复现场数据任务将集成电路初始化的步骤包括:
停止集成电路中所有的时钟信号;
以保存的仿真现场数据恢复各个寄存器、锁存器、RAM和ROM的状态值;
恢复集成电路中所有时钟信号。
与现有技术相比,本发明具有如下有益效果:
本发明将仿真测试时间分成多个仿真段,对所指定的不同时间点的仿真现场的数据保存,再启用多线程仿真程序,每个线程恢复一个时间点的仿真数据开始仿真测试。由于每个仿真线程的电路均被初始化为不同的时间点的状态,因此每个仿真线程只需仿真验证两个相邻时间点之间的状态,而这些相互独立的各个仿真线程可以并行执行,因此极大地缩短了仿真的时间。
附图说明
图1是本发明对仿真时间分段的示意图;
图2是本发明的流程示意图;
图3是数据保存阶段的流程示意图;
图4是数据恢复阶段的流程示意图。
具体实施方式
如图1所示,本发明将仿真测试时间分成多个仿真段,对所指定的不同时间点的仿真现场的数据保存,再启用多线程仿真程序,每个线程恢复一个时间点的仿真数据开始仿真测试,使原本单线程的仿真流程分割成多个可并行执行的仿真线程,大幅减少了重新仿真的时间。
如图2所示,本发明的实现可以分为以下三个阶段:
第一阶段:数据准备
此阶段主要是生成各种数据类型的列表,以及根据这些列表生成数据保存(save)和数据恢复(restore)的verilog task,具体流程如下:
(1)、通过EDA软件读入集成电路的网表(netlist),根据寄存器(register)、锁存器(latch)、随机存取存储器(RAM)、只读存储器(ROM)等各种类型的数据,生成各自的列表文件。
(2)、根据这些列表文件,按照verilog的语法,生成save和restore的verilog task文件。
(3)、save task的主要任务是保存当前数据到指定的文件,主要是通过verilog HDL的$fdisplay系统任务实现。
(4)、restore task的主要任务是根据保存的数据文件恢复之前的仿真环境。Restore task比较复杂,它需要一系列的操作,使用了verilog HDL中的force、release、$fscanf等语法和系统任务。
第二阶段:数据保存(save)阶段
结合图3所示。在verilog HDL的testbench中include之前产生的save task,以单线程方式在仿真测试切割的各个时间点调用任务save_task分别保存各个时间点的仿真现场数据。save_task的任务内容如下:
task save_task;
begin
save_clk(); //停止时钟变化,把时钟的状态保存下来
save_reg_task(); //保存register和latch的端口数据
save_ram_task(); //保存RAM的数据
save_rom_task()(); //保存ROM的数据
end
endtask
从save_task的内容可以得知,当testbench调用此任务时,第一步是停止时钟信号的变化,实现方式的例子如下:force design.clk=1′b0。时钟信号是同步设计电路中重要的信号,它的变化会触发其他信号的变化,因此把时钟停止后,整个集成电路就处于稳定的状态,后面所保存的register、latch、RAM、ROM等数据也就是稳态的数据了。
保存时钟信息之后,分别用不同的task对register和latch数据环境进行保存,每个task均使用标准的verilog的系统任务$fdisplay实现数据保存的功能,因此在不同的硬件平台和不同的仿真软件中都能使用,具有良好的通用性。实现方式的例子如下:$fdisplay(file_id,″%b″,design.register.Q);
接着,使用同样的系统任务实现RAM的数据环境的保存,实现方式的例子如下:$fdisplay(file_id,″%b″,design.RAM.mem[i]);
同理,ROM的数据也可以用此方式保存下来:
$fdisplay(file_id,″%b″,design.ROM.mem[i])。
其中,寄存器、锁存器、随机存取存储器和只读存储器的状态可以保存在同一个文本文件中,也可以根据不同的类型,保存在各自独立的文本文件中,一般是以二进制格式保存在文件中;且使用标准的verilog硬件描述语言实现数据的保存,适用于所有EDA仿真工具。
第三阶段:数据恢复(restore)阶段
结合图4所示。首先,产生多个相互独立的仿真线程,这可以通过在计算机的操作系统中开启多个命令行窗口,然后分别在各个命令行窗口中启动仿真软件。其中仿真线程的数量可根据save阶段的分割时间点的数量来决定,使一个仿真线程对应以一个时间点保存的数据开始进行仿真测试。
其次,初始化各个仿真线程的电路状态。每个仿真线程的电路都会被初始化为不同的状态,每个线程的电路初始状态对应一个save阶段的时间点的状态。这个初始化的操作通过调用任务restore_task实现,所需的数据来源于save阶段所保存的文件。
restore_task的任务内容如下:
task restore_task;
begin
restore_reg_task();//初始化寄存器端口的数据
restore_latch_task(); //初始化锁存器端口的数据
restore_ram_task(); //初始化RAM的数据
restore_rom_task(); //初始化ROM的数据
restore_clk()(); //初始化时钟信号
end
endtask
从restore_task的内容可以得知,当调用此任务时,第一步操作是需要初始化寄存器的数据。使用verilog语言中的force语句把数据赋值给寄存器的各个端口,实现对寄存器状态的初始化,实现方式的部分例子如下:
force design.register.Q=save_reg_Q[N];
force design.register.CLK=save_reg_CLK[N];
除了寄存器,还需要初始化锁存器,它的原理跟寄存器是一致的,也是使用force语句把数据赋值给锁存器的各个端口,实现对锁存器状态的初始化。
寄存器和锁存器的数据初始化后,就可以用verilog语言中的release语句撤销前面的force语句,但对时钟(clock)端口的force语句需要依然保持,因为一旦撤销它们,所有寄存器都会动起来,但暂时还有其他内容需要初始化,所以还需要等待。实现方式的例子如下:releasedesign.register.Q。
初始化所有RAM的数据。使用verilog语言中的$fscanf或$readmemb系统命令把这些仿真模型内部的变量都初始化为save阶段所保存的数据。实现方式的例子如下:$fscanf(file_id,″%b″,design.RAM.mem[i]);
同理,ROM的数据也可以用此方式初始化:$fscanf(file_id,″%b″,design.ROM.mem[i]);
此时,所有的数据都初始化完毕,但系统依然没有进入工作状态,因为clock还没有release,所以最后的步骤就是释放所有的时钟信号。实现方式的例子如下:release design.register.CLK。
至此,整个仿真电路已经被初始化为save阶段特定时间点的状态,接着可以以这个初始状态为起点,按照正常的方式开始仿真验证的工作。
由于每个仿真线程的电路均被初始化为不同的时间点的状态,因此每个仿真线程只需仿真验证两个相邻时间点之间的状态,而这些相互独立的各个仿真线程可以并行执行,因此极大地缩短了仿真的时间。
Claims (4)
1.一种集成电路仿真测试方法,其特征在于,包括步骤:
读入集成电路的网表,根据寄存器、锁存器、RAM、ROM各自的数据生成对应的列表文件,由列表文件按verilog硬件描述语言生成保存现场数据任务和恢复现场数据任务;
在不同仿真时间点时调用保存现场数据任务,对所指定的不同仿真时间点的仿真现场数据进行保存;
产生多个相互独立的仿真线程,每个仿真线程均启动仿真软件,调用恢复现场数据任务将每个仿真软件所对应的仿真集成电路初始化为在不同仿真时间点时保存的仿真现场数据,并启动各个仿真线程进行仿真验证;所述保存仿真现场数据的步骤包括:
先停止集成电路中所有的时钟信号,并保存各时钟信号的状态;
然后分别保存各个寄存器、锁存器、RAM和ROM的当前数据;
所述调用恢复现场数据任务将集成电路初始化的步骤包括:
停止集成电路中所有的时钟信号;
以保存的仿真现场数据恢复各个寄存器、锁存器、RAM和ROM的状态值;
恢复集成电路中所有时钟信号。
2.根据权利要求1所述集成电路仿真测试方法,其特征在于,寄存器、锁存器、RAM和ROM的仿真现场数据分别保存在不同的文件中。
3.根据权利要求1所述集成电路仿真测试方法,其特征在于,寄存器、锁存器、RAM和ROM的仿真现场数据均保存在一个文件中。
4.根据权利要求1所述集成电路仿真测试方法,其特征在于,寄存器、锁存器、RAM和ROM的仿真现场数据以二进制格式保存在文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910109891 CN101719170B (zh) | 2009-11-27 | 2009-11-27 | 集成电路的仿真测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910109891 CN101719170B (zh) | 2009-11-27 | 2009-11-27 | 集成电路的仿真测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719170A CN101719170A (zh) | 2010-06-02 |
CN101719170B true CN101719170B (zh) | 2012-11-28 |
Family
ID=42433744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910109891 Expired - Fee Related CN101719170B (zh) | 2009-11-27 | 2009-11-27 | 集成电路的仿真测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101719170B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004811B (zh) * | 2010-09-15 | 2012-11-07 | 华为技术有限公司 | 一种芯片电路的模拟测试方法和装置 |
US20140236563A1 (en) * | 2011-09-30 | 2014-08-21 | Yuping Wu | Integrated circuit simulation method and system |
CN102360397A (zh) * | 2011-09-30 | 2012-02-22 | 中国科学院微电子研究所 | 集成电路仿真方法及系统 |
CN102495913A (zh) * | 2011-10-18 | 2012-06-13 | 山东大学 | 一种基于fpga的接触式卡片验证系统的设计方法 |
CN103324771A (zh) * | 2012-03-23 | 2013-09-25 | 苏州芯禾电子科技有限公司 | 一种可以对多个射频集成电路进行高效批量仿真的方法 |
CN103366033B (zh) * | 2012-04-02 | 2017-04-12 | 济南概伦电子科技有限公司 | 统计电路仿真的方法和系统 |
CN104268314B (zh) * | 2014-09-11 | 2017-06-06 | 东华大学 | 基于Easy HDL仿真逻辑分析仪测得波形方法 |
CN104899076B (zh) * | 2015-06-18 | 2018-04-27 | 北京思朗科技有限责任公司 | 一种超大规模集成电路门级网表仿真的加速方法 |
CN108388748A (zh) * | 2018-03-12 | 2018-08-10 | 北京理工大学 | 一种爆轰数值仿真串行程序中断续算方法 |
CN108459922A (zh) * | 2018-03-12 | 2018-08-28 | 北京理工大学 | 一种爆轰数值仿真并行程序中断续算方法 |
CN109740250B (zh) * | 2018-12-29 | 2022-03-18 | 湖北航天技术研究院总体设计所 | 基于uvm的fpga软件验证结果仿真波形的获取方法和系统 |
CN111190811A (zh) * | 2019-12-05 | 2020-05-22 | 东方微银科技(北京)有限公司 | 一种资源分配系统的测试方法、装置、设备及存储介质 |
CN116992804B (zh) * | 2023-09-26 | 2024-01-05 | 深圳鲲云信息科技有限公司 | 芯片验证的方法及计算设备 |
CN117873678A (zh) * | 2024-01-09 | 2024-04-12 | 中国科学院空间应用工程与技术中心 | 一种高精度星历轨道并行处理方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1777318A (zh) * | 2005-11-03 | 2006-05-24 | 重庆邮电学院 | Td-scdma接入网和核心网信令测试仪及测试方法 |
-
2009
- 2009-11-27 CN CN 200910109891 patent/CN101719170B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1777318A (zh) * | 2005-11-03 | 2006-05-24 | 重庆邮电学院 | Td-scdma接入网和核心网信令测试仪及测试方法 |
Non-Patent Citations (2)
Title |
---|
傅力.总线上的实时非干预可再现故障注入模式.《计算机工程与设计》.2004,第25卷(第12期),2261-2263,2317. * |
周恒磊等.PLC离线仿真软件的设计与实现.《微计算机信息》.2000,第16卷(第4期),41,42,57. * |
Also Published As
Publication number | Publication date |
---|---|
CN101719170A (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719170B (zh) | 集成电路的仿真测试方法 | |
US7958475B2 (en) | Synthesis of assertions from statements of power intent | |
CN104899076B (zh) | 一种超大规模集成电路门级网表仿真的加速方法 | |
US20060155525A1 (en) | System and method for improved software simulation using a plurality of simulator checkpoints | |
US9026966B1 (en) | Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators | |
US20080306721A1 (en) | Dynamic-Verification-Based Verification Apparatus Achieving High Verification Performance and Verification Efficiency and the Verification Methodology Using the Same | |
CN109937418B (zh) | 用于仿真的基于波形的重构 | |
US20030192018A1 (en) | Apparatus and method for automated use of phase abstraction for enhanced verification of circuit designs | |
Kim et al. | DESSERT: Debugging RTL effectively with state snapshotting for error replays across trillions of cycles | |
US10248746B1 (en) | Method and apparatus for estimating ideal power of an integrated circuit design | |
US8140315B2 (en) | Test bench, method, and computer program product for performing a test case on an integrated circuit | |
US8954904B1 (en) | Veryifing low power functionality through RTL transformation | |
CN101719177B (zh) | 片上系统建模和仿真的方法及装置 | |
JP2007528553A (ja) | 検証性能と検証效率性を高める動的検証−基盤方式の検証装置及びこれを用いた検証方法論 | |
US20030192016A1 (en) | Apparatus and method for removing effects of phase abstraction from a phase abstracted trace | |
US8122410B2 (en) | Specifying and validating untimed nets | |
US6745377B2 (en) | Apparatus and method for representing gated-clock latches for phase abstraction | |
KR20040063846A (ko) | 다양한 검증 플랫폼들의 통합 사용을 지원하는 검증 장치및 이를 이용한 검증 방법 | |
US9058452B1 (en) | Systems and methods for tracing and fixing unknowns in gate-level simulation | |
US8775989B2 (en) | Computer-aided design system and methods thereof for merging design constraint files across operational modes | |
CN115758963A (zh) | 芯片eda仿真中打印信息的处理装置、方法及系统 | |
Lemma et al. | Power intent from initial ESL prototypes: Extracting power management parameters | |
US8145466B1 (en) | Clustering of electronic circuit design modules for hardware-based and software-based co-simulation platforms | |
Banerjee et al. | Design aware scheduling of dynamic testbench controlled design element accesses in FPGA-based HW/SW co-simulation systems for fast functional verification | |
Zheng et al. | Fitvs: A fpga-based emulation tool for high-efficiency hardness evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 22A, Guoshi building, 1801 Shahe West Road, high tech Zone, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Patentee after: GUOWEI GROUP (SHENZHEN) Co.,Ltd. Address before: 518057 Guangdong city of Shenzhen province Nanshan District high tech Industrial Park South high SSMEC building two floor Patentee before: SHENZHEN STATE MICRO TECHNOLOGY Co.,Ltd. |
|
CP03 | Change of name, title or address | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121128 |
|
CF01 | Termination of patent right due to non-payment of annual fee |