CN107807879A - 显示代码执行覆盖率的处理器芯片仿真器 - Google Patents
显示代码执行覆盖率的处理器芯片仿真器 Download PDFInfo
- Publication number
- CN107807879A CN107807879A CN201710878473.5A CN201710878473A CN107807879A CN 107807879 A CN107807879 A CN 107807879A CN 201710878473 A CN201710878473 A CN 201710878473A CN 107807879 A CN107807879 A CN 107807879A
- Authority
- CN
- China
- Prior art keywords
- code
- monitoring module
- module
- ide
- program
- 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
- 238000012544 monitoring process Methods 0.000 claims abstract description 53
- 238000004364 calculation method Methods 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 3
- 241001269238 Data Species 0.000 claims 1
- 238000012360 testing method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000000034 method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- CVYPYYPTFNVREL-UHFFFAOYSA-N 7-(2-cyclopentylidenehydrazinyl)-7-oxoheptanoic acid Chemical compound OC(=O)CCCCCC(=O)NN=C1CCCC1 CVYPYYPTFNVREL-UHFFFAOYSA-N 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005211 surface analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3652—Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种显示代码执行覆盖率的处理器芯片仿真器,包括:监控模块、处理器核和程序存储器,以及安装在用户电脑上的集成开发环境模块;当集成开发环境模块上的用户程序停止运行时,能通过调试通道向监控模块下发用户代码的目标地址和代码数据,监控模块也能向集成开发环境模块返回其内部存放的代码执行记录,返回完成后,自动清空其中的代码执行记录;集成开发环境模块能依据获得的代码执行记录中提供的已执行代码语句的地址信息计算并显示本次执行了哪些用户程序语句,并依据这些已执行语句占总代码的比率计算并显示出代码执行覆盖率。本发明能够记录并显示用户程序每次执行的代码执行覆盖情况。
Description
技术领域
本发明涉及一种处理器芯片仿真器,特别是涉及一种显示代码执行覆盖率的处理器芯片仿真器。
背景技术
处理器芯片内有用户开发的用户程序,在用户程序的编写和调试中,所使用的工具一般是仿真器。仿真器内使用包含产品处理器芯片各项功能的仿真芯片,用于模拟产品处理器芯片的工作行为,仿真芯片与仿真器其它部件(存放用户程序的程序存储器、存放数据的数据存储器,以及用户电脑上的集成开发环境等)配合电脑上的集成开发环境共同实现用户程序的编写、编译、下载、仿真运行和各项调试功能。
代码执行覆盖率是用户程序调试、测试中的一种度量,表征了整个源代码被执行过的比例和程度,是用户在调试和测试用户程序时非常关心的一个数据,同时还能用于发现代码跑飞的情况。所以,用户在使用仿真器调试、测试用户程序时,如果能通过仿真器获得每次执行(从开始执行到停止执行的过程)对应的代码执行覆盖率数据,对调试、测试代码,提升代码开发、测试效率和质量是非常有帮助的。
发明内容
本发明要解决的技术问题是提供一种显示代码执行覆盖率的处理器芯片仿真器,能够记录并显示用户程序每次执行的代码执行覆盖情况,同时不影响用户程序全速执行的速度,保证仿真器功能、性能与产品芯片的一致性。
为解决上述技术问题,本发明的显示代码执行覆盖率的处理器芯片仿真器,包括:监控模块、处理器核和程序存储器,以及安装在用户电脑上的集成开发环境模块;所述监控模块通过调试通道与集成开发环境模块相连接,所述程序存储器通过第一标准数据/地址总线与监控模块连接,所述监控模块通过第二标准数据/地址总线与处理器核连接,所述监控模块内具有代码执行记录;
当所述集成开发环境模块上的用户程序停止运行时,集成开发环境模块能通过调试通道向监控模块下发用户代码的目标地址和代码数据,所述监控模块也能通过调试通道向集成开发环境模块返回其内部存放的代码执行记录,返回完成后,监控模块自动清空其中的代码执行记录;所述集成开发环境模块能依据获得的代码执行记录中提供的已执行代码语句的地址信息计算并显示本次执行了哪些用户程序语句,并依据这些已执行语句占总代码的比率计算并显示出代码执行覆盖率。
用户程序停止运行时,所述监控模块接收到所有下发代码后,通过与程序存储器连接的第一标准数据/地址总线向程序存储器写入用户代码语句的机器码数据。
用户程序运行时,所述处理器核通过第二标准数据/地址总线向监控模块发出取程序代码的目标地址,所述监控模块把所述目标地址记录到其中的代码执行记录中,同时把所述目标地址通过与程序存储器连接的第一标准数据/地址总线发送给程序存储器,程序存储器返回代码语句的机器码数据给监控模块,监控模块再返回给处理器核,处理器核执行所述代码语句。
用户程序停止运行时,处理器核也停止运行,不会发出取程序代码操作。
一种处理器芯片仿真器,包括:监控模块、处理器核和程序存储器;
所述监控模块通过调试通道与用户电脑相连接,所述程序存储器通过第一标准数据/地址总线与监控模块连接,所述监控模块通过第二标准数据/地址总线与处理器核连接。
所述用户电脑上安装有集成开发环境模块。所述监控模块通过调试通道与集成开发环境模块相连接。
采用本发明的仿真器能够实时记录并显示用户程序每次执行过程中执行了哪些地址的代码,以及代码执行覆盖情况,同时不影响用户程序全速执行的速度,保证仿真器功能、性能与产品芯片的一致性,有助于用户判断代码实际执行范围是否符合预期,代码是否执行进入过异常处理或非预期区域,测试时代码执行的覆盖率等,方便了用户程序的开发、调试和测试,有助于提高代码开发效率。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明:
图1是所述显示代码执行覆盖率的处理器芯片仿真器的结构示意图。
具体实施方式
如图1所示,所述显示代码执行覆盖率的处理器芯片仿真器1(即图1中的仿真器),包括:监控模块4、处理器核3和程序存储器5,以及安装在用户电脑上的集成开发环境模块2。所述监控模块4通过调试通道6与集成开发环境模块2相连接。所述程序存储器5通过第一标准数据/地址总线8与监控模块4相连接,所述监控模块4通过第二标准数据/地址总线7与处理器核3相连接。所述监控模块4内具有代码执行记录。
所述集成开发环境模块2上用户程序停止运行时,集成开发环境模块2可以下载代码,通过调试通道6向监控模块4下发用户代码的目标地址和代码数据,所述监控模块4接收到所有下发代码后,通过与程序存储器5连接的第一标准数据/地址总线8向程序存储器5写入用户代码语句的机器码数据。
所述集成开发环境模块2上用户程序运行时,所述处理器核3通过第二标准数据/地址总线7向监控模块4发出取程序代码的目标地址,所述监控模块4把所述目标地址记录到其中的代码执行记录中,同时把所述目标地址通过与程序存储器5连接的第一标准数据/地址总线8发送给程序存储器5,程序存储器5返回代码语句的机器码数据给监控模块4,监控模块4再返回给处理器核3,处理器核3执行所述代码语句。这样,一次全速执行用过代码的过程中,所有被取指执行的各条代码语句地址都会被记录在代码执行记录中,同时由于监控模块4记录代码地址记录的同时就把目标地址传送给了程序存储器5,并不影响取指执行的时间,保证了用户程序执行时,代码取指执行的功能和性能与产品芯片的一致性。
所述集成开发环境模块2上用户程序停止运行后,处理器核3也停止运行,不会发出取程序代码操作,所述监控模块4通过调试通道6向集成开发环境模块2返回其内部存放的代码执行记录,返回完成后,监控模块4自动清空其中的代码执行记录,以便在下一次运行用户程序时重新记录新的代码执行地址情况。由于代码是集成开发环境模块2编译产生并完成下载动作的,所以集成开发环境模块2是知道整个代码的大小和地址范围的,这样,所述集成开发环境模块2就可以依据获得的代码执行记录中提供的本次全速执行用户程序过程中所有已执行代码语句的地址信息计算并显示本次执行了哪些用户程序语句,并依据这些已执行语句占总代码的比率计算并显示出代码执行覆盖率,还可以在发现代码执行记录中有超出用户代码应该的地址范围时给出执行过程中代码跑飞过的告警,提示用户代码执行出现过错误。
这样,通过上述过程,所实现的仿真器1能够实时记录并显示用户程序每次执行过程中执行了哪些地址的代码,以及代码执行覆盖情况,并在代码跑飞时告警,同时不影响用户程序全速执行的速度,保证仿真器功能、性能与产品芯片的一致性。
所述集成开发环境模块2可以是标准商用集成开发环境产品,例如KEIL、IAR、MDK等,通过其提供的二次开发接口采用补丁程序的方式实现下载代码地址范围分析、获取代码执行记录、显示本次执行了哪些用户程序语句、计算并显示出代码执行覆盖率,以及给出代码跑飞过的告警。如果是自行开发集成开发环境2,这些功能直接可以通过上位机软件方式实现。所述监控模块4可以使用普通通用处理器芯片实现,例如STM32等。所述处理器核3可以采用FPGA(Field Programmable Gate Array即现场可编程门阵列)芯片实现,程序存储器5可以用FPGA的逻辑资源实现,也可以用单独的存储器芯片实现。调试通道6可以采用标准的JTAG或者SWD调试接口和指令实现,也可以采用自定义调试接口和指令实现。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (8)
1.一种显示代码执行覆盖率的处理器芯片仿真器,其特征在于,包括:监控模块、处理器核和程序存储器,以及安装在用户电脑上的集成开发环境模块;所述监控模块通过调试通道与集成开发环境模块相连接,所述程序存储器通过第一标准数据/地址总线与监控模块连接,所述监控模块通过第二标准数据/地址总线与处理器核连接,所述监控模块内具有代码执行记录;
当所述集成开发环境模块上的用户程序停止运行时,集成开发环境模块能通过调试通道向监控模块下发用户代码的目标地址和代码数据,所述监控模块也能通过调试通道向集成开发环境模块返回其内部存放的代码执行记录,返回完成后,监控模块自动清空其中的代码执行记录;所述集成开发环境模块能依据获得的代码执行记录中提供的已执行代码语句的地址信息计算并显示本次执行了哪些用户程序语句,并依据这些已执行语句占总代码的比率计算并显示出代码执行覆盖率。
2.如权利要求1所述的仿真器,其特征在于:用户程序停止运行时,所述监控模块接收到所有下发代码后,通过与程序存储器连接的第一标准数据/地址总线向程序存储器写入用户代码语句的机器码数据。
3.如权利要求1或2所述的仿真器,其特征在于:用户程序运行时,所述处理器核通过第二标准数据/地址总线向监控模块发出取程序代码的目标地址,所述监控模块把所述目标地址记录到其中的代码执行记录中,同时把所述目标地址通过与程序存储器连接的第一标准数据/地址总线发送给程序存储器,程序存储器返回代码语句的机器码数据给监控模块,监控模块再返回给处理器核,处理器核执行所述代码语句。
4.如权利要求1或2所述的仿真器,其特征在于:用户程序停止运行时,处理器核也停止运行,不会发出取程序代码操作。
5.一种处理器芯片仿真器,其特征在于,包括:监控模块、处理器核和程序存储器;
所述监控模块通过调试通道与用户电脑相连接,所述程序存储器通过第一标准数据/地址总线与监控模块连接,所述监控模块通过第二标准数据/地址总线与处理器核连接。
6.如权利要求5所述的仿真器,其特征在于:所述用户电脑上安装有集成开发环境模块;所述监控模块通过调试通道与集成开发环境模块相连接。
7.如权利要求5所述的仿真器,其特征在于:所述监控模块由通用处理器芯片构成。
8.如权利要求5所述的仿真器,其特征在于:所述处理器核FPGA芯片构成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710878473.5A CN107807879A (zh) | 2017-09-26 | 2017-09-26 | 显示代码执行覆盖率的处理器芯片仿真器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710878473.5A CN107807879A (zh) | 2017-09-26 | 2017-09-26 | 显示代码执行覆盖率的处理器芯片仿真器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107807879A true CN107807879A (zh) | 2018-03-16 |
Family
ID=61583878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710878473.5A Pending CN107807879A (zh) | 2017-09-26 | 2017-09-26 | 显示代码执行覆盖率的处理器芯片仿真器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107807879A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346207A (zh) * | 2013-07-31 | 2015-02-11 | 上海华虹集成电路有限责任公司 | 仿真器 |
US20150234730A1 (en) * | 2014-02-18 | 2015-08-20 | Zerodee, Inc. | Systems and methods for performing software debugging |
CN106066822A (zh) * | 2016-05-26 | 2016-11-02 | 北京中电华大电子设计有限责任公司 | 一种支持覆盖率统计功能的仿真器及方法 |
CN106484584A (zh) * | 2016-10-31 | 2017-03-08 | 上海华虹集成电路有限责任公司 | 处理器芯片仿真器 |
CN207302034U (zh) * | 2017-09-26 | 2018-05-01 | 上海市信息网络有限公司 | 处理器芯片仿真器 |
-
2017
- 2017-09-26 CN CN201710878473.5A patent/CN107807879A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346207A (zh) * | 2013-07-31 | 2015-02-11 | 上海华虹集成电路有限责任公司 | 仿真器 |
US20150234730A1 (en) * | 2014-02-18 | 2015-08-20 | Zerodee, Inc. | Systems and methods for performing software debugging |
CN106066822A (zh) * | 2016-05-26 | 2016-11-02 | 北京中电华大电子设计有限责任公司 | 一种支持覆盖率统计功能的仿真器及方法 |
CN106484584A (zh) * | 2016-10-31 | 2017-03-08 | 上海华虹集成电路有限责任公司 | 处理器芯片仿真器 |
CN207302034U (zh) * | 2017-09-26 | 2018-05-01 | 上海市信息网络有限公司 | 处理器芯片仿真器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8930912B2 (en) | Method and system for performing software verification | |
US9727436B2 (en) | Adding a profiling agent to a virtual machine to permit performance and memory consumption analysis within unit tests | |
US9262299B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
US20140089737A1 (en) | Psmi using at-speed scan capture | |
US7409602B2 (en) | Methodology for debugging RTL simulations of processor based system on chip | |
US9262305B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
CN104156311B (zh) | 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法 | |
CN108664380A (zh) | 一种带性能显示的执行后软件调试系统及调试方法 | |
JP3822044B2 (ja) | 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体 | |
US10380283B2 (en) | Functional verification with machine learning | |
CN207302034U (zh) | 处理器芯片仿真器 | |
US9176821B2 (en) | Watchpoint support system for functional simulator | |
US20200074040A1 (en) | Hierarchical expression coverage clustering for design verification | |
CN107506293A (zh) | 一种软件性能数据采集方法和装置 | |
CN106528414A (zh) | 处理器芯片仿真器 | |
CN106485020A (zh) | 带有非易失性存储器的处理器芯片仿真器 | |
CN107807879A (zh) | 显示代码执行覆盖率的处理器芯片仿真器 | |
CN101777021A (zh) | 微处理器中精确数据断点的实现装置及其方法 | |
CN111176980A (zh) | 调试环境和运行环境分离的数据分析方法、装置及系统 | |
CN115185638A (zh) | 一种仿真运行应用程序时获取调用栈的方法及计算设备 | |
CN208384556U (zh) | 仿真器 | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 | |
CN112885403B (zh) | 一种Flash控制器的功能测试方法、装置及设备 | |
CN111008133B (zh) | 粗粒度数据流架构执行阵列的调试方法及装置 | |
CN207302033U (zh) | 带有随机uid的处理器芯片仿真器 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180316 |
|
RJ01 | Rejection of invention patent application after publication |