CN105760638B - 一种加快soc芯片仿真的方法 - Google Patents
一种加快soc芯片仿真的方法 Download PDFInfo
- Publication number
- CN105760638B CN105760638B CN201610274412.3A CN201610274412A CN105760638B CN 105760638 B CN105760638 B CN 105760638B CN 201610274412 A CN201610274412 A CN 201610274412A CN 105760638 B CN105760638 B CN 105760638B
- Authority
- CN
- China
- Prior art keywords
- address
- module
- instruction
- rtl
- code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or 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/3312—Timing analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
Abstract
本发明提供一种加快SOC芯片仿真的方法,对CPU在测试中准备运行的c程序代码进行编译,产生汇编程序,然后在每个涉及地址操作的指令后加一条log打印指令,对rtl设计进行rtl仿真,产生地址操作log文件,读取地址操作log文件和所有的可访问模块地址区间信息,把有进行地址操作的地址进行汇总,网表组合单元读取模块的网表设计和剩余模块对应的模块rtl空壳,最后合并成一个完整的SOC设计,在网表验证平台上使用原始测试激励程序对完整的SOC设计进行仿真,得到电路波形文件。从而极大的提高了芯片的仿真速度。
Description
技术领域
本发明涉及一种SOC芯片仿真技术,特别涉及一种加快SOC芯片仿真的方法。
背景技术
随着SOC(System-on-a-chip)芯片规模的快速增加,对SOC进行验证的仿真工作量也是迅速的增加。特别是芯片整体的网表验证阶段,由于所有的仿真行为都加入了时序信息,服务器的运算量非常巨大,一条验证激励的仿真时间经常都需要一个星期左右的运行时间,而一个芯片的验证通常需要成百上千的验证激励.由于验证仿真的时间过长,给整个芯片的研发时间提出了极大的挑战。所以如何降低SOC芯片的仿真时间是非常有意义的工作,而目前没有较好的办法解决这一难题。
发明内容
本发明要解决的技术问题,在于提供一种加快SOC芯片仿真的方法,通过仿真程序配置和电路设计修改配合的方法,极大的提高了芯片的仿真速度。
本发明是这样实现的:一种加快SOC芯片仿真的方法,包括:
步骤1、通过一测试激励c代码文件来存储SOC芯片中的CPU在测试中准备运行的所有c程序代码;
步骤2、通过程序编译器读取所述测试激励c代码文件中的c程序代码进行编译,产生汇编代码;
步骤3、通过程序分析修改单元读取所述汇编代码和所有的可访问模块地址区间信息,收集所有汇编代码中的地址操作相关代码,把有进行地址操作的地址进行汇总,然后在每个涉及地址操作的指令后加一条log打印指令,以将每个涉及地址操作的指令涉及的地址变量或者常量打印出来;
步骤4、在rtl仿真平台上使用修改后的汇编代码对rtl设计进行rtl仿真,产生地址操作log文件;所述rtl仿真平台在进行仿真前的工作流程包括:
S1、cpu在BOOT复位后进入复位跳转处理,会将获取指令地址跳转到指定的boot程序存放地址,也就是测试激励c代码文件的程序对应的存放地址;
S2、从boot地址完成指令读取后,开始执行指令,第一条指令内容为读取当前运行CPU的ID号,如果ID不为零则运行WFI指令;
S3、完成ID判断后,将系统从boot起来时使用的晶振电路产生的低速时钟切换为PLL输出的高速时钟,使仿真时间大幅缩短;
S4、完成上面的操作后,指令跳往主仿真程序的存放地址开始执行仿真激励;其中,rtl(RegisterTransport Level)为寄存器转换级电路;
步骤5、涉及IP分析修改单元读取地址操作log文件和所有的可访问模块地址区间信息,收集所有地址操作log文件中的地址值,把有进行地址操作的地址进行汇总;
再根据所有的可访问模块地址区间进行比较,看有哪一些模块没有任何的地址操作,然后把涉及地址操作的模块编号发送到网表组合单元;
步骤6、网表组合单元收到涉及地址操作的模块编号后,到模块网表库中读取模块的网表设计,然后到模块rtl空壳库中读取剩余模块对应的模块rtl空壳,最后合并成一个完整的SOC设计,作为验证对象准备进行验证;
步骤7、在网表验证平台上使用原始测试激励程序对所述验证对象进行仿真,得到电路波形文件后,拿到power分析工具的prime_time上进行功耗分析得到指定模块的功耗数据。此处的prime_time是Synopsys公司的静态时序分析软件,常被用来分析大规模数字ASIC,作为专门的静态时序分析工具,prime_time可以为一个设计提供的时序分析和设计检查,以及电路功耗分析。
进一步的,所述步骤3的具体过程是:使用vi程序打开汇编代码,然后使用perl的正则表达式找出汇编代码中所有涉及地址操作的汇编指令的位置,然后在每个地址操作指令后面增加一个log打印指令,该指令不影响仿真电路行为,只是将地址指令中操作的地址变量或者常量打印到一个log文件。此处的Perl是一种功能丰富的计算机程序语言。
进一步的,所述步骤5中根据所有的可访问模块地址区间进行比较,看有哪一些模块没有任何的地址操作,然后把涉及地址操作的模块编号发送到网表组合单元的具体过程是:
使用vi程序打开汇编代码,然后使用perl的正则表达式找出操作地址从属于哪个模块的地址区间,然后将对应模块的ID编号记录下来送往网表组合单元。
本发明具有如下优点:本发明通过仿真程序配置和电路设计修改配合的方法,极大的提高了芯片的仿真速度,可以有效减少芯片的验证仿真时间,从而减少整个芯片的研发时间,并且能自动判断使用的电路部分,自动使用空壳代码;还能自动分析修改代码,加入地址收集动作。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
图2为本发明rtl仿真平台的在进入仿真程序前的工作流程图。
具体实施方式
如图1所示,本发明的提高大型SOC芯片仿真速度的方法,包括:
步骤1、通过一测试激励c代码文件来存储SOC芯片中的CPU在测试中准备运行的所有c程序代码;
步骤2、通过程序编译器读取所述测试激励c代码文件中的c程序代码进行编译,产生汇编代码;
步骤3、通过程序分析修改单元读取所述汇编代码和所有的可访问模块(指所有SOC中的所有的可访问模块,比如显示控制模块、I2S模块、UART模块等,但不包括芯片功耗评估平台本身的模块)地址区间信息,收集所有汇编代码中的地址操作相关代码,把有进行地址操作的地址进行汇总,然后在每个涉及地址操作的指令后加一条log打印指令,以将每个涉及地址操作的指令涉及的地址变量或者常量打印出来;
具体过程是:使用vi程序打开汇编代码,然后使用perl的正则表达式找出汇编代码中的LRD,STR,MOV等所有涉及地址操作的汇编指令的位置,然后在每个地址操作指令后面增加一个log打印指令,该指令不影响仿真电路行为,只是将地址指令中操作的地址变量或者常量打印到一个地址操作log文件,其作用是在仿真过程中可以将地址指令中操作的地址变量或者常量的值打印到地址操作log文件中。
步骤4、在rtl仿真平台上使用修改后的汇编代码对rtl设计进行rtl仿真,产生地址操作log文件;
再如图2所示,为本发明rtl仿真平台的在进入仿真程序前的工作流程图,即执行所述测试激励c代码文件中的程序的流程,该流程包括下述过程:
S1、cpu在BOOT复位后进入复位跳转处理,会将取指令地址跳转到指定的boot程序存放地址,也就是测试激励c代码文件的程序(由于测试激励c代码文件是用来存储SOC芯片中的CPU在测试中准备运行的所有c程序代码,因此实质上是可执行程序)对应的存放地址;
S2、从boot地址完成指令读取后,开始执行指令,第一条指令内容为读取当前运行CPU的ID号,如果ID不为零则运行WFI指令(即让当前CPU进行WFI睡眠状态,不再运行后续程序,从而节省了大量的仿真行为);
在多核CPU系统中,每个CPU都有一个ID,比如4核cpu系统中,主cpu的ID为0,另外3个CPU的ID分别为1、2、3,每个CPU运行读取ID的指令都会读取出自己的ID号;
S3、完成ID判断后,将系统从boot起来时使用的晶振电路产生的低速时钟切换为PLL输出的高速时钟,使仿真时间大幅缩短;
S4、完成上面的操作后,指令跳往仿真程序的存放地址开始执行仿真激励。
步骤5、涉及IP分析修改单元读取地址操作log文件和所有的可访问模块地址区间信息,收集所有地址操作log文件中的地址值,把有进行地址操作的地址进行汇总;其中,所有的可访问模块地址区间信息存储在所有的可访问模块地址区间存储单元中;
再根据所有的可访问模块地址区间进行比较,看有哪一些模块没有任何的地址操作,然后把涉及地址操作的模块编号发送到网表组合单元;具体过程是:使用vi程序打开汇编代码,然后使用perl的正则表达式找出操作地址从属于哪个模块的地址区间,然后将对应模块的ID编号记录下来送往网表组合单元。
步骤6、网表组合单元收到涉及地址操作的模块编号后,到模块网表库中读取模块的网表设计,然后到模块rtl空壳库中读取剩余模块对应的模块rtl空壳,最后合并成一个RTL和网表混合的设计,即形成完整的SOC设计,以作为验证对象准备进行验证;
步骤7、在网表验证平台上使用原始测试激励程序对所述验证对象进行仿真,得到电路波形文件后,拿到power分析工具prime_time上进行功耗分析得到指定模块的功耗数据。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (3)
1.一种加快SOC芯片仿真的方法,其特征在于:包括:
步骤1、通过一测试激励c代码文件来存储SOC芯片中的CPU在测试中准备运行的所有c程序代码;
步骤2、通过程序编译器读取所述测试激励c代码文件中的c程序代码进行编译,产生汇编代码;
步骤3、通过程序分析修改单元读取所述汇编代码和所有的可访问模块地址区间信息,收集所有汇编代码中的地址操作相关代码,把有进行地址操作的地址进行汇总,然后在每个涉及地址操作的指令后加一条log打印指令,以将每个涉及地址操作的指令涉及的地址变量或者常量打印出来;
步骤4、在rtl仿真平台上使用修改后的汇编代码对rtl设计进行rtl仿真,产生地址操作log文件;且所述rtl仿真平台在进行仿真前的工作流程包括:
S1、cpu在BOOT复位后进入复位跳转处理,会将获取指令地址跳转到指定的boot程序存放地址,也就是测试激励c代码文件的程序对应的存放地址;
S2、从boot地址完成指令读取后,开始执行指令,第一条指令内容为读取当前运行CPU的ID号,如果ID不为零则运行WFI指令;
S3、完成ID判断后,将系统从boot起来时使用的晶振电路产生的低速时钟切换为PLL输出的高速时钟,使仿真时间大幅缩短;
S4、完成上面的操作后,指令跳往主仿真程序的存放地址开始执行仿真激励;
步骤5、涉及IP分析修改单元读取地址操作log文件和所有的可访问模块地址区间信息,收集所有地址操作log文件中的地址值,把有进行地址操作的地址进行汇总;
再根据所有的可访问模块地址区间进行比较,看有哪一些模块没有任何的地址操作,然后把涉及地址操作的模块编号发送到网表组合单元;
步骤6、网表组合单元收到涉及地址操作的模块编号后,到模块网表库中读取模块的网表设计,然后到模块rtl空壳库中读取剩余模块对应的模块rtl空壳,最后合并成一个完整的SOC设计,作为验证对象准备进行验证;
步骤7、在网表验证平台上使用原始测试激励程序对所述验证对象进行仿真,得到仿真波形。
2.根据权利要求1所述的一种加快SOC芯片仿真的方法,其特征在于:所述步骤3的具体过程是:使用vi程序打开汇编代码,然后使用perl的正则表达式找出汇编代码中所有涉及地址操作的汇编指令的位置,然后在每个地址操作指令后面增加一个log打印指令,该指令不影响仿真电路行为,只是将地址指令中操作的地址变量或者常量打印到一个log文件。
3.根据权利要求1所述的一种加快SOC芯片仿真的方法,其特征在于:所述步骤5中根据所有的可访问模块地址区间进行比较,看有哪一些模块没有任何的地址操作,然后把涉及地址操作的模块编号发送到网表组合单元的具体过程是:
使用vi程序打开汇编代码,然后使用perl的正则表达式找出操作地址从属于哪个模块的地址区间,然后将对应模块的ID编号记录下来送往网表组合单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610274412.3A CN105760638B (zh) | 2016-04-28 | 2016-04-28 | 一种加快soc芯片仿真的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610274412.3A CN105760638B (zh) | 2016-04-28 | 2016-04-28 | 一种加快soc芯片仿真的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105760638A CN105760638A (zh) | 2016-07-13 |
CN105760638B true CN105760638B (zh) | 2018-11-06 |
Family
ID=56326154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610274412.3A Active CN105760638B (zh) | 2016-04-28 | 2016-04-28 | 一种加快soc芯片仿真的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760638B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112444731B (zh) * | 2020-10-30 | 2023-04-11 | 海光信息技术股份有限公司 | 芯片测试方法、装置、处理器芯片及服务器 |
CN112464593B (zh) * | 2020-11-25 | 2022-09-02 | 海光信息技术股份有限公司 | Rom位映射关系生成方法、装置、处理器芯片及服务器 |
CN112579417B (zh) * | 2020-12-22 | 2023-03-21 | 海光信息技术股份有限公司 | 时间尺度检查方法、装置及电子设备 |
CN116992804B (zh) * | 2023-09-26 | 2024-01-05 | 深圳鲲云信息科技有限公司 | 芯片验证的方法及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102623069A (zh) * | 2012-02-13 | 2012-08-01 | 山东华芯半导体有限公司 | 随机激励闪存模型验证方法 |
CN102902834A (zh) * | 2011-07-29 | 2013-01-30 | 炬力集成电路设计有限公司 | 一种soc芯片的验证方法及系统 |
CN102929686A (zh) * | 2012-09-28 | 2013-02-13 | 杭州中天微系统有限公司 | 一种片上多核处理器功能验证方法 |
-
2016
- 2016-04-28 CN CN201610274412.3A patent/CN105760638B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902834A (zh) * | 2011-07-29 | 2013-01-30 | 炬力集成电路设计有限公司 | 一种soc芯片的验证方法及系统 |
CN102623069A (zh) * | 2012-02-13 | 2012-08-01 | 山东华芯半导体有限公司 | 随机激励闪存模型验证方法 |
CN102929686A (zh) * | 2012-09-28 | 2013-02-13 | 杭州中天微系统有限公司 | 一种片上多核处理器功能验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105760638A (zh) | 2016-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Asaad et al. | A cycle-accurate, cycle-reproducible multi-FPGA system for accelerating multi-core processor simulation | |
Leupers et al. | Generation of interpretive and compiled instruction set simulators | |
CN105760638B (zh) | 一种加快soc芯片仿真的方法 | |
CN105975664B (zh) | 一种芯片功耗评估平台的评估方法 | |
CN105893707B (zh) | 一种soc芯片模块验证和功耗分析方法 | |
Clemente et al. | A hardware implementation of a run-time scheduler for reconfigurable systems | |
US20110307688A1 (en) | Synthesis system for pipelined digital circuits | |
CN101826050A (zh) | 一种用于制造后处理器芯片验证的随机验证方法及装置 | |
Kersey et al. | A universal parallel front-end for execution driven microarchitecture simulation | |
JP5200675B2 (ja) | シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 | |
Chattopadhyay et al. | LISA: A uniform ADL for embedded processor modeling, implementation, and software toolsuite generation | |
Varpaaniemi et al. | Prod 3.2 an advanced tool for efficient reachability analysis | |
Wang et al. | Software performance simulation strategies for high-level embedded system design | |
Poss et al. | MGSim—A simulation environment for multi-core research and education | |
Bombieri et al. | Abstraction of RTL IPs into embedded software | |
US6643800B1 (en) | Method and apparatus for testing microarchitectural features by using tests written in microcode | |
Diaz et al. | VIPPE, parallel simulation and performance analysis of multi-core embedded systems on multi-core platforms | |
Pereira et al. | Dynamic phase analysis for cycle-close trace generation | |
Mallya et al. | Flexible timing simulation of RISC-V processors with sniper | |
Madisetti et al. | Reengineering legacy embedded systems | |
Ducroux et al. | Fast and accurate power annotated simulation: Application to a many-core architecture | |
Densmore et al. | FPGA architecture characterization for system level performance analysis | |
US20080300845A1 (en) | Monitoring software simulations of hardware systems | |
Stitt et al. | Thread warping: Dynamic and transparent synthesis of thread accelerators | |
Sirowy et al. | Portable SystemC-on-a-chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 350000 building, No. 89, software Avenue, Gulou District, Fujian, Fuzhou 18, China Patentee after: Ruixin Microelectronics Co., Ltd Address before: 350000 building, No. 89, software Avenue, Gulou District, Fujian, Fuzhou 18, China Patentee before: Fuzhou Rockchips Electronics Co.,Ltd. |