CN101719170A - 集成电路的仿真测试方法 - Google Patents

集成电路的仿真测试方法 Download PDF

Info

Publication number
CN101719170A
CN101719170A CN200910109891A CN200910109891A CN101719170A CN 101719170 A CN101719170 A CN 101719170A CN 200910109891 A CN200910109891 A CN 200910109891A CN 200910109891 A CN200910109891 A CN 200910109891A CN 101719170 A CN101719170 A CN 101719170A
Authority
CN
China
Prior art keywords
integrated circuit
simulation
data
task
field data
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.)
Granted
Application number
CN200910109891A
Other languages
English (en)
Other versions
CN101719170B (zh
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.)
Guowei Group Shenzhen Co ltd
Original Assignee
Shenzhen State Micro Technology 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 Shenzhen State Micro Technology Co Ltd filed Critical Shenzhen State Micro Technology Co Ltd
Priority to CN 200910109891 priority Critical patent/CN101719170B/zh
Publication of CN101719170A publication Critical patent/CN101719170A/zh
Application granted granted Critical
Publication of CN101719170B publication Critical patent/CN101719170B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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 (6)

1.一种集成电路仿真测试方法,其特征在于,包括步骤:
读入集成电路的网表,根据寄存器、锁存器、RAM、ROM各自的数据生成对应的列表文件,由列表文件按verilog硬件描述语言生成保存现场数据任务和恢复现场数据任务;
在不同仿真时间点时调用保存现场数据任务,对所指定的不同仿真时间点的仿真现场数据进行保存;
产生多个相互独立的仿真线程,每个仿真线程均启动仿真软件,调用恢复现场数据任务将每个仿真软件所仿真对应的集成电路初始化为在不同仿真时间点时保存的现场数据,并启动各个仿真线程进行仿真验证。
2.根据权利要求1所述集成电路仿真测试方法,其特征在于,保存仿真现场数据的步骤包括:
先停止集成电路中所有的时钟信号,并保存各时钟信号的状态;
然后分别保存各个寄存器、锁存器、RAM和ROM的当前数据。
3.根据权利要求2所述集成电路仿真测试方法,其特征在于,寄存器、锁存器、RAM和ROM的仿真现场数据分别保存在不同的文件中。
4.根据权利要求2所述集成电路仿真测试方法,其特征在于,寄存器、锁存器、RAM和ROM的仿真现场数据均保存在一个文件中。
5.根据权利要求2所述集成电路仿真测试方法,其特征在于,寄存器、锁存器、RAM和ROM的仿真现场数据以二进制格式保存在文件中。
6.根据权利要求1所述集成电路仿真测试方法,其特征在于,调用恢复现场数据任务将集成电路初始化的步骤包括:
停止集成电路中所有的时钟信号;
以保存的仿真现场数据恢复各个寄存器、锁存器、RAM和ROM的状态值;
恢复集成电路中所有时钟信号。
CN 200910109891 2009-11-27 2009-11-27 集成电路的仿真测试方法 Expired - Fee Related CN101719170B (zh)

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 true CN101719170A (zh) 2010-06-02
CN101719170B 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)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004811A (zh) * 2010-09-15 2011-04-06 华为技术有限公司 一种芯片电路的模拟测试方法和装置
CN102360397A (zh) * 2011-09-30 2012-02-22 中国科学院微电子研究所 集成电路仿真方法及系统
CN102495913A (zh) * 2011-10-18 2012-06-13 山东大学 一种基于fpga的接触式卡片验证系统的设计方法
WO2013044494A1 (zh) * 2011-09-30 2013-04-04 中国科学院微电子研究所 集成电路仿真方法及系统
CN103324771A (zh) * 2012-03-23 2013-09-25 苏州芯禾电子科技有限公司 一种可以对多个射频集成电路进行高效批量仿真的方法
CN103366033A (zh) * 2012-04-02 2013-10-23 济南概伦电子科技有限公司 统计电路仿真的方法和系统
CN104268314A (zh) * 2014-09-11 2015-01-07 东华大学 基于Easy HDL仿真逻辑分析仪测得波形方法
CN104899076A (zh) * 2015-06-18 2015-09-09 中国科学院自动化研究所 一种超大规模集成电路门级网表仿真的加速方法
CN108388748A (zh) * 2018-03-12 2018-08-10 北京理工大学 一种爆轰数值仿真串行程序中断续算方法
CN108459922A (zh) * 2018-03-12 2018-08-28 北京理工大学 一种爆轰数值仿真并行程序中断续算方法
CN109740250A (zh) * 2018-12-29 2019-05-10 湖北航天技术研究院总体设计所 基于uvm的fpga软件验证结果仿真波形的获取方法和系统
CN111190811A (zh) * 2019-12-05 2020-05-22 东方微银科技(北京)有限公司 一种资源分配系统的测试方法、装置、设备及存储介质
CN116992804A (zh) * 2023-09-26 2023-11-03 深圳鲲云信息科技有限公司 芯片验证的方法及计算设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1317915C (zh) * 2005-11-03 2007-05-23 重庆重邮东电通信技术有限公司 Td-scdma接入网和核心网信令测试仪及测试方法

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004811B (zh) * 2010-09-15 2012-11-07 华为技术有限公司 一种芯片电路的模拟测试方法和装置
CN102004811A (zh) * 2010-09-15 2011-04-06 华为技术有限公司 一种芯片电路的模拟测试方法和装置
CN102360397A (zh) * 2011-09-30 2012-02-22 中国科学院微电子研究所 集成电路仿真方法及系统
WO2013044494A1 (zh) * 2011-09-30 2013-04-04 中国科学院微电子研究所 集成电路仿真方法及系统
CN102495913A (zh) * 2011-10-18 2012-06-13 山东大学 一种基于fpga的接触式卡片验证系统的设计方法
CN103324771A (zh) * 2012-03-23 2013-09-25 苏州芯禾电子科技有限公司 一种可以对多个射频集成电路进行高效批量仿真的方法
CN103366033A (zh) * 2012-04-02 2013-10-23 济南概伦电子科技有限公司 统计电路仿真的方法和系统
CN103366033B (zh) * 2012-04-02 2017-04-12 济南概伦电子科技有限公司 统计电路仿真的方法和系统
CN104268314B (zh) * 2014-09-11 2017-06-06 东华大学 基于Easy HDL仿真逻辑分析仪测得波形方法
CN104268314A (zh) * 2014-09-11 2015-01-07 东华大学 基于Easy HDL仿真逻辑分析仪测得波形方法
CN104899076A (zh) * 2015-06-18 2015-09-09 中国科学院自动化研究所 一种超大规模集成电路门级网表仿真的加速方法
CN104899076B (zh) * 2015-06-18 2018-04-27 北京思朗科技有限责任公司 一种超大规模集成电路门级网表仿真的加速方法
CN108388748A (zh) * 2018-03-12 2018-08-10 北京理工大学 一种爆轰数值仿真串行程序中断续算方法
CN108459922A (zh) * 2018-03-12 2018-08-28 北京理工大学 一种爆轰数值仿真并行程序中断续算方法
CN109740250A (zh) * 2018-12-29 2019-05-10 湖北航天技术研究院总体设计所 基于uvm的fpga软件验证结果仿真波形的获取方法和系统
CN109740250B (zh) * 2018-12-29 2022-03-18 湖北航天技术研究院总体设计所 基于uvm的fpga软件验证结果仿真波形的获取方法和系统
CN111190811A (zh) * 2019-12-05 2020-05-22 东方微银科技(北京)有限公司 一种资源分配系统的测试方法、装置、设备及存储介质
CN116992804A (zh) * 2023-09-26 2023-11-03 深圳鲲云信息科技有限公司 芯片验证的方法及计算设备
CN116992804B (zh) * 2023-09-26 2024-01-05 深圳鲲云信息科技有限公司 芯片验证的方法及计算设备

Also Published As

Publication number Publication date
CN101719170B (zh) 2012-11-28

Similar Documents

Publication Publication Date Title
CN101719170B (zh) 集成电路的仿真测试方法
US7958475B2 (en) Synthesis of assertions from statements of power intent
US20080306721A1 (en) Dynamic-Verification-Based Verification Apparatus Achieving High Verification Performance and Verification Efficiency and the Verification Methodology Using the Same
CN104899076B (zh) 一种超大规模集成电路门级网表仿真的加速方法
CN109937418B (zh) 用于仿真的基于波形的重构
CN100452059C (zh) 智能全自动单粒子事件故障注入器的注入方法
US7882483B2 (en) Method for checking constraints equivalence 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
US8265918B1 (en) Simulation and emulation of a circuit design
JP2007528553A (ja) 検証性能と検証效率性を高める動的検証−基盤方式の検証装置及びこれを用いた検証方法論
US20080005709A1 (en) Verification of logic circuits using cycle based delay models
CN101719177A (zh) 系统建模和仿真的方法及装置
KR20040063846A (ko) 다양한 검증 플랫폼들의 통합 사용을 지원하는 검증 장치및 이를 이용한 검증 방법
US9058452B1 (en) Systems and methods for tracing and fixing unknowns in gate-level simulation
US7441216B1 (en) Applying CNF simplification techniques for SAT-based abstraction refinement
Lemma et al. Power intent from initial ESL prototypes: Extracting power management parameters
US8775989B2 (en) Computer-aided design system and methods thereof for merging design constraint files across operational modes
Stahl et al. Hazard detection in a GALS wrapper: A case study
Bombieri et al. Hybrid, incremental assertion-based verification for TLM design flows
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
EV et al. Design of generic verification procedure for IIC protocol in UVM
Jenihhin et al. PSL assertion checkers synthesis with ASM based HLS tool ABELITE
Civera et al. FPGA-based fault injection techniques for fast evaluation of fault tolerance in VLSI circuits

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