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

文档序号:29634214发布日期:2022-04-13 16:44阅读:121来源:国知局
一种用于逻辑仿真系统的高性能信号监视方法与流程

1.本发明涉及信号监视领域,尤其涉及一种用于逻辑仿真系统的高性能信号监视方法。


背景技术:

2.对于大型的逻辑仿真项目,需要对众多的信号波形进行监视,目前的监视方法为在每个信号引用点的位置添加检查点补丁,以测试信号引用点是否在监视范围。
3.在运行过程中由于观察的信号波形非常多,仿真时间和仿真密度都比较大,导致检查点补丁也非常多,同时由于可调式格式中没有保存信号引用点的应用信息,因此调试器无法利用源代码中的语义信息,导致逻辑仿真运行很慢,极大影响后续分析和研究的效率。


技术实现要素:

4.本发明所要解决的技术问题是:克服现有技术存在的上述缺陷,提供一种用于逻辑仿真系统的高性能信号监视方法,提高仿真效率。
5.本发明的技术解决方案是:
6.提供一种用于逻辑仿真系统的高性能信号监视方法,包含以下步骤:
7.s1:编译器对源代码进行词法及语法分析,生成对应的抽象语法树;
8.s2:编译器遍历抽象语法树的所有节点,生成基于节点语义的定义引用表,其中,定义引用表包含信号引用点位置;
9.s3:编译器对源代码生成二进制代码,并在二进制代码生成过程中记录定义引用表中信号引用点位置,同时在信号引用点位置的前后置入空指令,该记录的信号引用点位置及空指令均包含在生成的二进制代码中;
10.s4:编译器利用定义引用表和信号引用点位置计算引用地址,获取每个信号引用点,基于引用地址和信号引用点创建定义符号引用地址表;
11.s5:逻辑仿真系统发起信号监视操作,调试器通过定义符号引用地址表定位具体引用位置,并记录当前被监视的信号值,同时在该位置设置检查点补丁;
12.s6:调试器执行检查点补丁并记录当前被监视的信号值,比较执行检查点补丁前后所记录的当前被监视的信号值是否一致,若一致则执行步骤s7,若不一致,则触发值改变事件,将信号值记录为执行检查点补丁后监视的信号值,执行步骤s7;
13.s7:调试器执行完需监视的全部信号监视任务后返回逻辑仿真流程,输出记录的信号值及检查点补丁运行结果。
14.进一步的,所述步骤s4包含以下具体步骤:
15.s41:编译器获取步骤s2生成的定义引用表及步骤s3记录的信号引用点位置,利用定义引用表及信号引用点位置计算引用地址,计算得到每个信号引用点的引用地址;
16.s42:编译器对每个信号引用点及该信号引用点的引用地址创建定义符号引用地
址表;
17.s43:编译器检查编译过程中该信号引用点所在模块是否存在加载或卸载,若存在,则对步骤s42生成的定义符号引用地址表进行更新,若不存在,不执行任何操作。
18.进一步的,所述步骤s5包含以下具体步骤:
19.s51:逻辑仿真系统发起对信号引用点的监视操作;
20.s52:调试器在接收到该监视操作指令后,通过定义符号引用地址表查找信号引用点的准确位置;
21.s53:调试器记录该检查点的当前信号值;
22.s54:调试器获取该信号引用点位置后,在该位置设置检查点,并将检查点补丁写入该信号引用点位置。
23.进一步的,所述s6包含以下具体步骤:
24.s61:调试器执行检查点补丁;
25.s62:获取执行检查点补丁后该信号引用点的被监视信号值;
26.s63:将执行检查点补丁后获取的信号值与执行检查点补丁前记录的信号值进行比较,若一致则执行步骤s7,若不一致,则触发值改变事件,将信号值记录为执行检查点补丁后获取的信号值。
27.进一步的,所述定义引用表包含定义符号、信号引用点位置、引用类型。
28.进一步的,所述定义符号包含符号的位置信息、类型信息、名称、约束、属性,引用类型包含读访问引用和写访问引用。
29.进一步的,所述信号引用点位置为该信号引用点与该信号引用点所在函数起始块地址的相对偏移量或该信号引用点与该信号引用点所在模块的相对偏移量。
30.进一步的,所述逻辑仿真系统发起对信号引用点的监视操作包含通过信号设置发起监视操作、通过信号改变发起监视操作、通过信号读取发起监视操作。
31.进一步的,所述检查点补丁包含内存缺页补丁、陷阱补丁、代码补丁。
32.进一步的,所述源代码采用硬件描述语言。
33.本发明产生的有益效果是:本发明自主研发了一种用于逻辑仿真系统的高性能信号监视方法,通过在编译过程中生成定义引用地址表,同时在逻辑仿真过程中通过对该定义引用地址表的精确寻址实现对引用信息的参考,从而避免在逻辑仿真过程中设置大量检查点,导致降低仿真效率的问题。
附图说明
34.图1为本发明提供的一种用于逻辑仿真系统的高性能信号监视方法流程图。
具体实施方式
35.为使本领域技术人员更加清楚和明确本发明的技术方案,下面结合实施例及附图对本发明作进一步详细的描述,需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互结合。
36.参见图1,图1为本实施例提供的一种用于逻辑仿真系统的高性能信号监视方法,包含以下步骤:
37.s1:编译器对源代码进行词法及语法分析,生成对应的抽象语法树;
38.在编译过程中,首先利用词法分析器对源代码进行扫描,将由字符组成的字符串分解为有意义的代码块,即词法单元,接着将代码块流转换成一个由元素嵌套所组成的代表了程序语法结构的树,即抽象语法树,其中抽象语法树中的每个节点都表示源代码中的一种结构。
39.s2:编译器遍历抽象语法树的所有节点,生成基于节点语义的定义引用表,其中,定义引用表包含信号引用点位置;
40.s3:编译器对源代码生成二进制代码,并在二进制代码生成过程中记录定义引用表中信号引用点位置,同时在信号引用点位置的前后置入空指令,该记录的信号引用点位置及空指令均包含在生成的二进制代码中;
41.s4:编译器利用定义引用表计算引用地址,获取信号引用点,基于引用地址和信号引用点创建定义符号引用地址表,包含以下具体步骤:
42.s41:获取步骤s2生成的定义引用表及步骤s3记录的信号引用点位置,利用定义引用表及信号引用点位置计算引用地址,计算得到每个信号引用点的引用地址,其中信号引用点位置为该信号引用点与该信号引用点所在函数起始块地址的相对偏移量或该信号引用点与该信号引用点所在模块的相对偏移量;
43.其中,函数起始块与函数相同,是高级语言中函数翻译成的机器代码段,模块为以文件为单位的可执行代码。
44.s42:对每个信号引用点及该信号引用点的引用地址创建定义符号引用地址表;
45.s43:编译器检查编译过程中该信号引用点所在模块是否存在加载或卸载,若存在,则对步骤s42生成的定义符号引用地址表进行更新,若不存在,不执行任何操作。
46.s5:逻辑仿真系统发起信号监视操作,调试器通过定义引用地址表定位具体引用位置,并在该位置设置检查点补丁,并记录当前被监视的信号值,包含以下具体步骤:
47.s51:逻辑仿真系统发起对信号引用点的监视操作,其中,监视操作包含信号设置监视、信号改变监视、信号读取监视;
48.信号设置监视为在信号被逻辑仿真系统执行改写信号动作,即使改写的信号值一致,也触发监视操作;
49.信号改变监视为当信号值变化时,触发监视操作;
50.信号读取监视为在读取该信号的值时,触发监视操作。
51.s52:调试器在接收到监视操作指令后,通过定义符号引用地址表查找信号引用点的准确位置;
52.s53:记录该检查点的当前信号值;
53.s54:获取该信号引用点位置后,在该位置设置检查点,并将检查点补丁写入该信号引用点位置。
54.s6:调试器执行检查点补丁并比较执行检查补丁前后监视的信号值与步骤s5记录的检查点补丁运行前的信号值是否一致,若一致则执行步骤s7,若不一致,则触发值改变事件,将信号值记录为运行检查点补丁后监视的信号值,执行步骤s7,包含以下具体步骤:
55.s61:调试器执行检查点补丁;
56.s62:获取执行检查点补丁后该信号引用点的被监视信号值;
57.s63:将执行检查点补丁后获取的信号值与执行检查点补丁前记录的信号值进行比较,若一致则执行步骤s7,若不一致,则触发值改变事件,将信号值记录为运行检查点补丁后监视的信号值。
58.s7:调试器执行完需监视的全部信号监视任务后返回逻辑仿真流程,输出记录的信号值及检查点补丁运行结果。
59.进一步的,所述检查点补丁包含内存缺页补丁、陷阱补丁、代码补丁。
60.进一步的,所述源代码采用硬件描述语言。
61.对采用本实施例的执行时间进行统计,其执行时间y与检查点个数x的关系为:y=k*x+b,其中,k为平均执行单个检查点补丁所需的cpu时间,b为仿真程序所需的时间,由于检查点仅在发起监视时调用,因此检查点个数x相对于当前普通的监视方法会大幅减少,因此仿真系统的完整执行时间大幅降低。
62.上面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,不能理解为对本发明保护范围的限制。
63.总之,本发明虽然列举了上述优选实施方式,但是应该说明,虽然本领域的技术人员可以进行各种变化和改型,除非这样的变化和改型偏离了本发明的范围,否则都应该包括在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1