一种用于逻辑仿真系统的信号波形存储方法与流程

文档序号:30953473发布日期:2022-07-30 08:47阅读:120来源:国知局
一种用于逻辑仿真系统的信号波形存储方法与流程

1.本发明属于通信领域,特别是涉及一种用于逻辑仿真系统的信号波形存储方法。


背景技术:

2.信号波形存储的目的就是在逻辑仿真后把结果保存下来,方便用于做详细分析,研究以及再现这次仿真。普通的信号波形存储方法就是把仿真逻辑系统中生成的所有信号波形导出并保存下来,中间并不涉及对于信号波形的处理和存储的优化。相对较优的信号波形存储方法允许用户在仿真前对信号导出进行设定,包括需要记录的信号等。
3.对于大型的逻辑仿真项目来说,需要观察的信号波形非常多,仿真时间和密度相对都比较大,这就会导致波形文件非常大,打开非常慢,也会影响后续分析和研究的效率。因此,亟需提供一种优化后的波形存储方法,以大幅降低需要存储的波形文件的大小。


技术实现要素:

4.针对以上技术问题,本发明提供一种用于逻辑仿真系统的信号波形存储方法。
5.本发明解决其技术问题采用的技术方案是:
6.一种用于逻辑仿真系统的信号波形存储方法,方法包括以下步骤:
7.步骤s100:使用编译器前端对要进行逻辑仿真的硬件描述语言的源代码进行编译,得到对应的抽象语法树;
8.步骤s200:基于抽象语法树,遍历树上的所有节点,基于该节点的语义生成对应的控制流和数据流节点,从而得到抽象语法树对应的控制流图和数据流图;
9.步骤s300:基于控制流图和数据流图,对逻辑仿真中的所有信号做关联分析,得出信号间的关联转换函数;
10.步骤s400:在逻辑仿真的过程中,依次记录所有信号的波形,用以做关联转换函数正确性的确认;
11.步骤s500:逻辑仿真完成后,基于记录的所有信号的波形以及关联转换函数,做关联转换函数的正确性分析得到分析结果,根据分析结果标记信号并保存对应的关联转换函数;
12.步骤s600:接收用户发起的信号波形存储的请求,根据请求存储对应的信号波形。
13.优选地,步骤s200中的节点包括条件语句、控制语句和赋值语句,对应生成流图中的控制条件、分支和数据流。
14.优选地,步骤s300包括:
15.步骤s310:从控制流图中提取得到仿真所有基本块执行的可能顺序;
16.步骤s320:从数据流图中提取得到仿真信号数据所有的可能流向;
17.步骤s330:根据仿真所有基本块执行的可能顺序以及仿真信号数据所有的可能流向得到信号间的关联转换函数。
18.优选地,步骤s500中根据分析结果标记信号并保存对应的关联转换函数,包括:
19.当分析结果为记录的信号波形和通过关联转换函数计算得出的波形一致,则标记该信号为不需要单独记录的信号并保存其关联转换函数;当分析结果为记录的信号波形和通过关联转换函数计算得出的波形不一致,则标记该信号为需要单独记录的信号。
20.优选地,步骤s300中还包括:当存在无法通过关联转化函数和其他信号计算得出的信号,或者关联转换函数复杂度大于预设的阈值时,将对应信号视为需要单独记录的信号。
21.优选地,步骤s600包括:
22.当用户发起的信号波形存储的请求为对所有信号的波形都要进行存储,则波形文件中仅仅记录所有标记为需要单独记录的信号的波形数值以及所有不需要单独记录的信号的关联转换函数;
23.当用户发起的信号波形存储的请求为对单独几个信号的波形进行存储,则基于所有关联转换函数的输入的信号个数和直接记录的信号个数间做对比,以满足用户请求的前提下记录的信号个数更少的方式对单独几个信号的波形进行存储。
24.上述一种用于逻辑仿真系统的信号波形存储方法,基于数据流图和控制流图分析的信号波形存储方法能够大幅降低需要存储的波形文件的大小。基于信号间的关联关系,理论上能够提供10-50%的空间优化。
附图说明
25.图1为本发明一种用于逻辑仿真系统的信号波形存储方法流程图。
具体实施方式
26.为了使本技术领域的人员更好地理解本发明的技术方案,下面结合附图对本发明作进一步的详细说明。
27.在一个实施例中,一种用于逻辑仿真系统的信号波形存储方法,方法包括以下步骤:
28.步骤s100:使用编译器前端对要进行逻辑仿真的硬件描述语言的源代码进行编译,得到对应的抽象语法树。
29.具体地,通过编译器前端工具进行词法和语法分析,词法分析包括:对源代码进行扫描,根据构词规则,采用正则表达式来识别源代码中的有用部分作为词法单元,产生由词法单元构成的序列;语法分析包括:将经过词法分析的源代码按照语法规则转化成语句单元,构建抽象语法树。
30.步骤s200:基于抽象语法树,遍历树上的所有节点,基于该节点的语义生成对应的控制流和数据流节点,从而得到抽象语法树对应的控制流图和数据流图。
31.进一步地,步骤s200中的节点包括条件语句、控制语句和赋值语句,对应生成流图中的控制条件、分支和数据流。
32.步骤s300:基于控制流图和数据流图,对逻辑仿真中的所有信号做关联分析,得出信号间的关联转换函数。
33.具体地,比如verilog语言中的assign语句和语句中的运算符,非常明显的揭示了两个信号之间的关联关系。比如,有这样一条语句,assign b=!a,可以明显的看出b是a的
逻辑取反。那么,相比于记录a,b两个信号的所有信息,记录信号a以及b=!a这个关联函数,就能节省将近一半的空间。当然,实际情况会比这复杂的多,信号之间的关系可能包括简单逻辑赋值,条件控制赋值和带敏感列表的条件控制赋值等。
34.进一步地,步骤s300包括:
35.步骤s310:从控制流图中提取得到仿真所有基本块执行的可能顺序;
36.步骤s320:从数据流图中提取得到仿真信号数据所有的可能流向;
37.步骤s330:根据仿真所有基本块执行的可能顺序以及仿真信号数据所有的可能流向得到信号间的关联转换函数。
38.进一步地,步骤s300中还包括:当存在无法通过关联转化函数和其他信号计算得出的信号,或者关联转换函数复杂度大于预设的阈值时,将对应信号视为需要单独记录的信号。
39.具体地,并非所有的信号都能通过关联转换函数和其他信号计算得出,也存在关联转换函数复杂度过高的情况,这些情况下将该信号视为需要单独记录的信号。基于所有的关联转换函数,可以得知每个信号的波形是否需要单独记录。进一步地,关联转换函数复杂度是指控制条件过多、计算复杂度过高或者来源数据个数过多等,可以根据实际情况设置预设的阈值来进行判断。
40.步骤s400:在逻辑仿真的过程中,依次记录所有信号的波形,用以做关联转换函数正确性的确认。
41.步骤s500:逻辑仿真完成后,基于记录的所有信号的波形以及关联转换函数,做关联转换函数的正确性分析得到分析结果,根据分析结果标记信号并保存对应的关联转换函数。
42.具体地,当分析结果为记录的信号波形和通过关联转换函数计算得出的波形一致,则标记该信号为不需要单独记录的信号并保存其关联转换函数;当分析结果为记录的信号波形和通过关联转换函数计算得出的波形不一致,则标记该信号为需要单独记录的信号。
43.步骤s600:接收用户发起的信号波形存储的请求,根据请求存储对应的信号波形。
44.进一步地,步骤s600包括:
45.当用户发起的信号波形存储的请求为对所有信号的波形都要进行存储,则波形文件中仅仅记录所有标记为需要单独记录的信号的波形数值以及所有不需要单独记录的信号的关联转换函数;
46.当用户发起的信号波形存储的请求为对单独几个信号的波形进行存储,则基于所有关联转换函数的输入的信号个数和直接记录的信号个数间做对比,以满足用户请求的前提下记录的信号个数更少的方式对单独几个信号的波形进行存储。
47.具体地,如果是对单独几个信号的波形要进行存储,这个时候要基于所有关联转换函数的输入的信号个数和直接记录的信号个数间做对比,来比较是直接记录信号波形效率更高还是记录信号波形加关联转换函数效率更高。假设有a,b,c三个信号,且存在c=a+b的关联函数。当用户需要所有信号的波形时,则记录a,b以及c=a+b的关联函数表现最好。但当用户指定仅需要c信号时,直接记录c信号的波形就会更加直接方便。比较的方法就是在满足用户的需求,哪种要求记录的信号个数更少则这种方法就更优,原因在于转换函数
的消耗相比于完整信号的记录几乎可以忽略不计。
48.上述一种用于逻辑仿真系统的信号波形存储方法,基于数据流图和控制流图分析的信号波形存储方法能够大幅降低需要存储的波形文件的大小。基于信号间的关联关系,理论上能够提供10-50%的空间优化。
49.以上对本发明所提供的一种用于逻辑仿真系统的信号波形存储方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1