CN114328061B - 一种用于逻辑仿真系统的高性能信号监视方法 - Google Patents

一种用于逻辑仿真系统的高性能信号监视方法 Download PDF

Info

Publication number
CN114328061B
CN114328061B CN202111656294.XA CN202111656294A CN114328061B CN 114328061 B CN114328061 B CN 114328061B CN 202111656294 A CN202111656294 A CN 202111656294A CN 114328061 B CN114328061 B CN 114328061B
Authority
CN
China
Prior art keywords
signal
reference point
patch
executing
logic simulation
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
Application number
CN202111656294.XA
Other languages
English (en)
Other versions
CN114328061A (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.)
Hunan Panlian Xin'an Information Technology Co ltd
Original Assignee
Hunan Panlian Xin'an Information 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 Hunan Panlian Xin'an Information Technology Co ltd filed Critical Hunan Panlian Xin'an Information Technology Co ltd
Priority to CN202111656294.XA priority Critical patent/CN114328061B/zh
Publication of CN114328061A publication Critical patent/CN114328061A/zh
Application granted granted Critical
Publication of CN114328061B publication Critical patent/CN114328061B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种用于逻辑仿真系统的高性能信号监视方法。该方法包含步骤S1:对源代码进行词法及语法分析,生成对应的抽象语法树;S2:生成基于节点语义的定义引用表;S3:对源代码执行代码生成,记录信号引用点位置,同时在信号引用点前后置入空指令;S4:创建定义符号引用地址表;S5:执行逻辑仿真系统逻辑仿真;S6:执行检查点补丁;S7:记录并更新信号值及检查点结果。该方法利用硬件描述语言特性在源代码的编译处理过程中产生引用信息,为调试器提供关键的语义信息,同时在信号引用点位置预留补丁空间,从而提高逻辑仿真系统对信号监控的执行性能。

Description

一种用于逻辑仿真系统的高性能信号监视方法
技术领域
本发明涉及信号监视领域,尤其涉及一种用于逻辑仿真系统的高性能信号监视方法。
背景技术
对于大型的逻辑仿真项目,需要对众多的信号波形进行监视,目前的监视方法为在每个信号引用点的位置添加检查点补丁,以测试信号引用点是否在监视范围。
在运行过程中由于观察的信号波形非常多,仿真时间和仿真密度都比较大,导致检查点补丁也非常多,同时由于可调式格式中没有保存信号引用点的应用信息,因此调试器无法利用源代码中的语义信息,导致逻辑仿真运行很慢,极大影响后续分析和研究的效率。
发明内容
本发明所要解决的技术问题是:克服现有技术存在的上述缺陷,提供一种用于逻辑仿真系统的高性能信号监视方法,提高仿真效率。
本发明的技术解决方案是:
提供一种用于逻辑仿真系统的高性能信号监视方法,包含以下步骤:
S1:编译器对源代码进行词法及语法分析,生成对应的抽象语法树;
S2:编译器遍历抽象语法树的所有节点,生成基于节点语义的定义引用表,其中,定义引用表包含信号引用点位置;
S3:编译器对源代码生成二进制代码,并在二进制代码生成过程中记录定义引用表中信号引用点位置,同时在信号引用点位置的前后置入空指令,该记录的信号引用点位置及空指令均包含在生成的二进制代码中;
S4:编译器利用定义引用表和信号引用点位置计算引用地址,获取每个信号引用点,基于引用地址和信号引用点创建定义符号引用地址表;
S5:逻辑仿真系统发起信号监视操作,调试器通过定义符号引用地址表定位具体引用位置,并记录当前被监视的信号值,同时在该位置设置检查点补丁;
S6:调试器执行检查点补丁并记录当前被监视的信号值,比较执行检查点补丁前后所记录的当前被监视的信号值是否一致,若一致则执行步骤S7,若不一致,则触发值改变事件,将信号值记录为执行检查点补丁后监视的信号值,执行步骤S7;
S7:调试器执行完需监视的全部信号监视任务后返回逻辑仿真流程,输出记录的信号值及检查点补丁运行结果。
进一步的,所述步骤S4包含以下具体步骤:
S41:编译器获取步骤S2生成的定义引用表及步骤S3记录的信号引用点位置,利用定义引用表及信号引用点位置计算引用地址,计算得到每个信号引用点的引用地址;
S42:编译器对每个信号引用点及该信号引用点的引用地址创建定义符号引用地址表;
S43:编译器检查编译过程中该信号引用点所在模块是否存在加载或卸载,若存在,则对步骤S42生成的定义符号引用地址表进行更新,若不存在,不执行任何操作。
进一步的,所述步骤S5包含以下具体步骤:
S51:逻辑仿真系统发起对信号引用点的监视操作;
S52:调试器在接收到该监视操作指令后,通过定义符号引用地址表查找信号引用点的准确位置;
S53:调试器记录该检查点的当前信号值;
S54:调试器获取该信号引用点位置后,在该位置设置检查点,并将检查点补丁写入该信号引用点位置。
进一步的,所述S6包含以下具体步骤:
S61:调试器执行检查点补丁;
S62:获取执行检查点补丁后该信号引用点的被监视信号值;
S63:将执行检查点补丁后获取的信号值与执行检查点补丁前记录的信号值进行比较,若一致则执行步骤S7,若不一致,则触发值改变事件,将信号值记录为执行检查点补丁后获取的信号值。
进一步的,所述定义引用表包含定义符号、信号引用点位置、引用类型。
进一步的,所述定义符号包含符号的位置信息、类型信息、名称、约束、属性,引用类型包含读访问引用和写访问引用。
进一步的,所述信号引用点位置为该信号引用点与该信号引用点所在函数起始块地址的相对偏移量或该信号引用点与该信号引用点所在模块的相对偏移量。
进一步的,所述逻辑仿真系统发起对信号引用点的监视操作包含通过信号设置发起监视操作、通过信号改变发起监视操作、通过信号读取发起监视操作。
进一步的,所述检查点补丁包含内存缺页补丁、陷阱补丁、代码补丁。
进一步的,所述源代码采用硬件描述语言。
本发明产生的有益效果是:本发明自主研发了一种用于逻辑仿真系统的高性能信号监视方法,通过在编译过程中生成定义引用地址表,同时在逻辑仿真过程中通过对该定义引用地址表的精确寻址实现对引用信息的参考,从而避免在逻辑仿真过程中设置大量检查点,导致降低仿真效率的问题。
附图说明
图1为本发明提供的一种用于逻辑仿真系统的高性能信号监视方法流程图。
具体实施方式
为使本领域技术人员更加清楚和明确本发明的技术方案,下面结合实施例及附图对本发明作进一步详细的描述,需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互结合。
参见图1,图1为本实施例提供的一种用于逻辑仿真系统的高性能信号监视方法,包含以下步骤:
S1:编译器对源代码进行词法及语法分析,生成对应的抽象语法树;
在编译过程中,首先利用词法分析器对源代码进行扫描,将由字符组成的字符串分解为有意义的代码块,即词法单元,接着将代码块流转换成一个由元素嵌套所组成的代表了程序语法结构的树,即抽象语法树,其中抽象语法树中的每个节点都表示源代码中的一种结构。
S2:编译器遍历抽象语法树的所有节点,生成基于节点语义的定义引用表,其中,定义引用表包含信号引用点位置;
S3:编译器对源代码生成二进制代码,并在二进制代码生成过程中记录定义引用表中信号引用点位置,同时在信号引用点位置的前后置入空指令,该记录的信号引用点位置及空指令均包含在生成的二进制代码中;
S4:编译器利用定义引用表计算引用地址,获取信号引用点,基于引用地址和信号引用点创建定义符号引用地址表,包含以下具体步骤:
S41:获取步骤S2生成的定义引用表及步骤S3记录的信号引用点位置,利用定义引用表及信号引用点位置计算引用地址,计算得到每个信号引用点的引用地址,其中信号引用点位置为该信号引用点与该信号引用点所在函数起始块地址的相对偏移量或该信号引用点与该信号引用点所在模块的相对偏移量;
其中,函数起始块与函数相同,是高级语言中函数翻译成的机器代码段,模块为以文件为单位的可执行代码。
S42:对每个信号引用点及该信号引用点的引用地址创建定义符号引用地址表;
S43:编译器检查编译过程中该信号引用点所在模块是否存在加载或卸载,若存在,则对步骤S42生成的定义符号引用地址表进行更新,若不存在,不执行任何操作。
S5:逻辑仿真系统发起信号监视操作,调试器通过定义引用地址表定位具体引用位置,并在该位置设置检查点补丁,并记录当前被监视的信号值,包含以下具体步骤:
S51:逻辑仿真系统发起对信号引用点的监视操作,其中,监视操作包含信号设置监视、信号改变监视、信号读取监视;
信号设置监视为在信号被逻辑仿真系统执行改写信号动作,即使改写的信号值一致,也触发监视操作;
信号改变监视为当信号值变化时,触发监视操作;
信号读取监视为在读取该信号的值时,触发监视操作。
S52:调试器在接收到监视操作指令后,通过定义符号引用地址表查找信号引用点的准确位置;
S53:记录该检查点的当前信号值;
S54:获取该信号引用点位置后,在该位置设置检查点,并将检查点补丁写入该信号引用点位置。
S6:调试器执行检查点补丁并比较执行检查补丁前后监视的信号值与步骤S5记录的检查点补丁运行前的信号值是否一致,若一致则执行步骤S7,若不一致,则触发值改变事件,将信号值记录为运行检查点补丁后监视的信号值,执行步骤S7,包含以下具体步骤:
S61:调试器执行检查点补丁;
S62:获取执行检查点补丁后该信号引用点的被监视信号值;
S63:将执行检查点补丁后获取的信号值与执行检查点补丁前记录的信号值进行比较,若一致则执行步骤S7,若不一致,则触发值改变事件,将信号值记录为运行检查点补丁后监视的信号值。
S7:调试器执行完需监视的全部信号监视任务后返回逻辑仿真流程,输出记录的信号值及检查点补丁运行结果。
进一步的,所述检查点补丁包含内存缺页补丁、陷阱补丁、代码补丁。
进一步的,所述源代码采用硬件描述语言。
对采用本实施例的执行时间进行统计,其执行时间y与检查点个数x的关系为:y=k*x+b,其中,k为平均执行单个检查点补丁所需的cpu时间,b为仿真程序所需的时间,由于检查点仅在发起监视时调用,因此检查点个数x相对于当前普通的监视方法会大幅减少,因此仿真系统的完整执行时间大幅降低。
上面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,不能理解为对本发明保护范围的限制。
总之,本发明虽然列举了上述优选实施方式,但是应该说明,虽然本领域的技术人员可以进行各种变化和改型,除非这样的变化和改型偏离了本发明的范围,否则都应该包括在本发明的保护范围内。

Claims (10)

1.一种用于逻辑仿真系统的高性能信号监视方法,其特征在于,包含以下步骤:
S1:编译器对源代码进行词法及语法分析,生成对应的抽象语法树;
S2:编译器遍历抽象语法树的所有节点,生成基于节点语义的定义引用表,其中,定义引用表包含信号引用点位置;
S3:编译器对源代码生成二进制代码,并在二进制代码生成过程中记录定义引用表中信号引用点位置,同时在信号引用点位置的前后置入空指令,该记录的信号引用点位置及空指令均包含在生成的二进制代码中;
S4:编译器利用定义引用表中信号引用点位置计算引用地址,获取每个信号引用点,基于引用地址和信号引用点创建定义符号引用地址表;
S5:逻辑仿真系统发起信号引用点的监视操作,调试器通过定义符号引用地址表定位具体引用位置,并记录当前的被监视信号值,同时在该位置设置检查点补丁;
S6:调试器执行检查点补丁并记录当前的被监视信号值,判断执行检查点补丁前后所记录的当前被监视信号值是否一致,若一致则执行步骤S7,若不一致,则触发信号值改变事件,将信号值记录为执行检查点补丁后的被监视信号值,执行步骤S7;
S7:调试器执行完需监视的全部信号引用点的监视任务后返回逻辑仿真流程,并输出所记录的被监视信号值以及执行检查点补丁的运行结果。
2.根据权利要求1所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述步骤S4包含以下具体步骤:
S41:编译器获取步骤S2生成的定义引用表及步骤S3记录的信号引用点位置,利用定义引用表及信号引用点位置计算引用地址,得到每个信号引用点的引用地址;
S42:编译器根据每个信号引用点及该信号引用点的引用地址创建定义符号引用地址表;
S43:编译器检查编译过程中该信号引用点所在模块是否存在加载或卸载,若存在,则对步骤S42生成的定义符号引用地址表进行更新,若不存在,不执行任何操作。
3.根据权利要求2所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述步骤S5包含以下具体步骤:
S51:逻辑仿真系统发起对信号引用点的监视操作;
S52:调试器在接收到监视操作的指令后,通过定义符号引用地址表查找该信号引用点的准确位置;
S53:调试器记录该信号引用点当前的被监视信号值;
S54:调试器获取该信号引用点位置后,在该位置设置检查点,并将检查点补丁写入该信号引用点位置。
4.根据权利要求3所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述S6包含以下具体步骤:
S61:调试器执行检查点补丁;
S62:获取执行检查点补丁后该信号引用点的被监视信号值;
S63:将执行检查点补丁后获取的被监视信号值与执行检查点补丁前记录的被监视信号值进行比较,若一致则执行步骤S7,若不一致,则触发信号值改变事件,将信号值记录为执行检查点补丁后获取的被监视信号值。
5.根据权利要求4所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述定义引用表包含定义符号、信号引用点位置、引用类型。
6.根据权利要求5所述的一种用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述定义符号包含符号的位置信息、类型信息、名称、约束、属性,引用类型包含读访问引用和写访问引用。
7.根据权利要求6所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述信号引用点位置为该信号引用点与该信号引用点所在函数起始块地址的相对偏移量或该信号引用点与该信号引用点所在模块的相对偏移量。
8.根据权利要求7所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述逻辑仿真系统发起对信号引用点的监视操作包含通过信号设置发起监视操作、通过信号改变发起监视操作、通过信号读取发起监视操作。
9.根据权利要求8所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述检查点补丁包含内存缺页补丁、陷阱补丁、代码补丁。
10.根据权利要求9所述的用于逻辑仿真系统的高性能信号监视方法,其特征在于,所述源代码采用硬件描述语言。
CN202111656294.XA 2021-12-30 2021-12-30 一种用于逻辑仿真系统的高性能信号监视方法 Active CN114328061B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111656294.XA CN114328061B (zh) 2021-12-30 2021-12-30 一种用于逻辑仿真系统的高性能信号监视方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111656294.XA CN114328061B (zh) 2021-12-30 2021-12-30 一种用于逻辑仿真系统的高性能信号监视方法

Publications (2)

Publication Number Publication Date
CN114328061A CN114328061A (zh) 2022-04-12
CN114328061B true CN114328061B (zh) 2024-03-29

Family

ID=81019409

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111656294.XA Active CN114328061B (zh) 2021-12-30 2021-12-30 一种用于逻辑仿真系统的高性能信号监视方法

Country Status (1)

Country Link
CN (1) CN114328061B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103955426A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种检测c代码空指针引用的方法及系统
CN107408055A (zh) * 2015-05-29 2017-11-28 谷歌公司 代码缓存系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246267B2 (en) * 2001-10-01 2007-07-17 Tektronix, Inc. Logic analyzer having a disassembler employing symbol table information for identifying op-codes
US9639343B2 (en) * 2014-08-29 2017-05-02 Nxp Usa, Inc. Method for altering execution of a program, debugger, and computer-readable medium

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103955426A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种检测c代码空指针引用的方法及系统
CN107408055A (zh) * 2015-05-29 2017-11-28 谷歌公司 代码缓存系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
复杂系统建模仿真语言编译器的实现与应用;周文;迟鹏;李伯虎;宋晓;;系统仿真学报;20160708(07);全文 *

Also Published As

Publication number Publication date
CN114328061A (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
US11126930B2 (en) Code completion for dynamically-typed programming languages using machine learning
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
EP3740863A1 (en) Code suggestion based on machine learning
US10394694B2 (en) Unexplored branch search in hybrid fuzz testing of software binaries
CN113641701B (zh) 一种数据查询方法、系统、异构加速平台及存储介质
US11327722B1 (en) Programming language corpus generation
CN108595334B (zh) 一种计算Java程序动态切片的方法、装置及可读存储介质
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
US20210357193A9 (en) Code completion with machine learning
CN113468525A (zh) 针对二进制程序的相似漏洞检测方法及装置
Zhou et al. Confmapper: Automated variable finding for configuration items in source code
CN102722438B (zh) 一种内核调试的方法和设备
EP3422181B1 (en) Method and device for generating code assistance information
CN104035862A (zh) 闭包测试方法和装置
CN114328061B (zh) 一种用于逻辑仿真系统的高性能信号监视方法
CN109344083B (zh) 一种程序调试方法、装置、设备及可读存储介质
JP3292160B2 (ja) Cobol言語のソースプログラムのコンバージョン方法及び装置並びに記録媒体
CN114327614A (zh) 参考模型数据流记录和分析的方法及应用
CN113377675A (zh) 基于反馈的smt求解器性能测试用例约简方法
CN111752967A (zh) 基于sql的数据处理方法、装置、电子设备和存储介质
CN113849814A (zh) 一种可配置系统漏洞复现系统以及复现方法
US12117996B2 (en) Schema-free static query template
Shen et al. Active loop detection for applications that access databases
JP4782315B2 (ja) 影響解析装置および方法、記録媒体、プログラム
CN111651773B (zh) 一种二进制安全漏洞自动化挖掘方法

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
GR01 Patent grant
GR01 Patent grant