构建SystemVerilog对象多层结构的按需加载方法、电子设备和介质与流程
未命名
10-21
阅读:68
评论:0
构建systemverilog对象多层结构的按需加载方法、电子设备和介质
技术领域
1.本发明涉及芯片技术领域,尤其涉及一种构建systemverilog对象多层结构的按需加载方法、电子设备和介质。
背景技术:
2.芯片设计与验证的构建工具需要对systemverilog(简称sv)的类对象进行数据建模,若类拥有父类,则对象也需要加载生成父类的相关数据保存于对象数据空间内。父类也可以拥有自己的父类,因此形成了多层次的数据结构。在层级数量量级大,一些层级的数据内容复杂的情况下,对多层数据结构进行完全的数据建模需要耗费大量的时间和内存。由此可知,如何在保证匹配所需的数据情况下,实现轻量且快速的按需加载,降低大部分数据建模时间以及内存占用成为亟待解决的技术问题。
技术实现要素:
3.本发明目的在于,提供一种构建systemverilog对象多层结构的按需加载方法、电子设备和介质,降低了大部分数据建模时间以及内存占用。
4.根据本发明第一方面,提供了一种构建systemverilog对象多层结构的按需加载方法,包括:
5.步骤s1、获取systemverilog子类对象需要构建的数据对应的构建数据类型和构建关键字,将多层结构中的所述systemverilog子类对象所对应的层级作为当前层级,执行步骤s2;
6.步骤s2、判断内存中是否存在当前层级中构建数据类型对应的缓存数据,若存在,则执行步骤s4,否则,执行步骤s3;
7.步骤s3、加载当前层级中的构建数据类型对应的所有数据,并缓存至内存中,生成当前层级中构建数据类型对应的缓存数据;
8.步骤s4、基于所述构建关键字在当前层级的构建数据类型对应的缓存数据中进行匹配,若匹配成功,则返回构建关键字对应的目标数据,结束流程,否则,执行步骤s5;
9.步骤s5、将当前层级所对应的父类作为所述当前层级,返回执行步骤s2。
10.根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
11.根据本发明第三方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明第一方面所述的方法。
12.本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种构建systemverilog对象多层结构的按需加载方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
13.本发明能够根据实际的数据构建需求动态实现动态分层加载,并将已加载的数据进行缓存,在保证匹配所需的数据情况下,实现轻量且快速的按需加载,降低了大部分数据建模时间以及内存占用,进而提高了芯片设计和验证的效率。
附图说明
14.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1为本发明实施例提供的构建systemverilog对象多层结构的按需加载方法流程图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.本发明实施例提供了一种构建systemverilog对象多层结构的按需加载方法,如图1所示,包括:
18.步骤s1、获取systemverilog子类对象需要构建的数据对应的构建数据类型和构建关键字,将多层结构中的所述systemverilog子类对象所对应的层级作为当前层级,执行步骤s2。
19.需要说明的是,类是对一类具有共同特征的事物的抽象概念,本质是数据类型,类的实例称为对象。在一个已存在的类的基础上建立一个新的类,用于实现代码的复用。已存在的类称为“基类”或“父类”,新建的类称为“派生类”或“子类”。当需要对systemverilog子类对象进行数据建模时,先获取systemverilog子类对象需要构建的数据对应的构建数据类型和构建关键字,即获取真正的数据构建需求,而不是直接将子类以及子类的父类的数据全部进行加载,从而实现轻量且快速的按需加载。子类、父类、父类的父类等构成了多层结构。
20.所述systemverilog子类对象需要构建的数据对应的构建数据类型包括变量、参数、例程和范围。例程的作用类似于函数,但含义更为丰富。例程是某个系统对外提供的功能接口或服务的集合。比如操作系统的api、服务等就是例程;delphi或c++builder提供的标准函数和库函数等也是例程。范围是指一些不是普通int,logic之类简单数据类型的变量。
21.步骤s2、判断内存中是否存在当前层级中构建数据类型对应的缓存数据,若存在,则执行步骤s4,否则,执行步骤s3。
22.需要说明的是,每一层级的每一种数据类型只需加载一次,首次使用后并不删除,而是进行缓存,再后续数据构建过程中,可以直接使用,提高了数据构建效率。
23.步骤s3、加载当前层级中的构建数据类型对应的所有数据,并缓存至内存中,生成
当前层级中构建数据类型对应的缓存数据。
24.需要说明的是,如果进入步骤s3则说明当前层级中的构建数据类型对应的数据为首次加载,首次加载后,将当前层级中的构建数据类型对应的所有数据缓存至内存中,后续若再次在数据构建过程中,需要使用该层级对应的该构建数据类型对应的数据时,直接在缓存中调用即可,无需重复加载。
25.步骤s4、基于所述构建关键字在当前层级的构建数据类型对应的缓存数据中进行匹配,若匹配成功,则返回构建关键字对应的目标数据,结束流程,否则,执行步骤s5。
26.需要说明的是,在缓存中是将层级对应的某一种数据类型对应的全部数据进行缓存的,但实际数据构建过程中可能只需要其中一部分数据,因此,需要基于构建关键字在当前层级的构建数据类型对应的缓存数据中进行匹配,检索获取到对应的目标数据,基于目标数据来构建systemverilog子类对象。
27.步骤s5、将当前层级所对应的父类作为所述当前层级,返回执行步骤s2。
28.可以理解的是,当子类对应的数据能够满足数据构建需求时,则不需要加载父类的数据,当当前子类的数据不足以满足数据构建需求时,才需要加载父类中对应数据类型的数据,并不是加载父类所有的数据。
29.本发明实施例所述方法能够根据实际的数据构建需求动态实现动态分层加载,并将已加载的数据进行缓存,在保证匹配所需的数据情况下,实现轻量且快速的按需加载,降低了大部分数据建模时间以及内存占用,进而提高了芯片设计和验证的效率。需要说明的是,大部分情况下,数据建模无需记加载所有父类的数据,即可满足建模要求,但在少量极端情况下,本发明也需要加载所有父类的数据后,才能获取到目标数据,因此,对于本发明能够缩短大部分数据建模时间以及内存占用。
30.作为一种实施例,所述内存中按照预设的数据结构缓存systemverilog子类对象多层结构,预设的数据结构包括{a1,a2,
…
,an,
…
,an},an为第n层级的缓存数据,an=(a
n1
,a
n2
,a
n3
,a
n4
),其中,a
n1
为第n层级的变量类型数据段,a
n2
为第n层级的参数类型数据段,a
n3
为第n层级的例程数据段,a
n4
为第n层级的范围数据段,a
n1
,a
n2
,a
n3
,a
n4
初始为空,后续根据具体数据构建需求,加载对应数据段中所对应的数据,并填充至对应的数据段中。需要说明的是,现有是技术中是需要一次将{a1,a2,
…
,an,
…
,an}中对应的所有数据来加载的,而本技术是按需动态加载,需要哪一块数据时,再对该数据段进行加载存储,且加载后不删除,供后续数据构建过程使用。本发明通过设置上述预设的数据结构,在进行数据构建的过程中,区分数据类型加载数据,区分数据内容存储数据,实现了按需加载,减少了加载内容,提高了数据加载速度,减小了内存占用。
31.作为一种实施例,所述步骤s2包括:
32.步骤s21、查找内存中当前层级的缓存数据。
33.需要说明的是,在获取目标数据时,先查找内存当中当前层级的缓存数据,判断目标数据是否已经加载过,避免重复加载,同时也能提高目标数据的获取效率。
34.步骤s22、若当前层级的缓存数据中构建数据类型对应的数据段为空,则确定内存中不存在当前层级中构建数据类型对应的缓存数据,否则,确定内存中存在当前层级中构建数据类型对应的缓存数据。
35.本发明实施例基于分级分段的数据结构来缓存数据,也便于后续目标数据的查
找。
36.作为一种实施例,所述步骤s3包括:
37.步骤s31、加载当前层级中的构建数据类型对应的所有数据。
38.需要说明的是,当加载数据时,加载的是当前层级中的构建数据类型对应的所有数据,即是按照数据类型进行加载的,然后在已加载并缓存的数据中进行查找获取目标数据。愿意按在于数据库中直接存储所有类型的数据,且能直观地区分类型,因此,本技术设置为针某一层级分类型加载,既保证了目标数据获取的准确性,又减少了数据加载内容,减少了内存占用。例如,需要加载每一层级数据类型为变量的数据,则需要将该层级对应的变量数据全部加载,并缓存在数据结构中对应的该层级所对应的数据段中。
39.步骤s32、基于当前层级和构建数据类型在内存中确定所述systemverilog子类对象多层结构中对应的待存储数据段。
40.其中,预设数据结构中,为不同数据类型设置了对应的数据段,因此,在需要缓存加载数据时,先锁定对应的数据段,确定systemverilog子类对象多层结构中对应的待存储数据段。
41.步骤s33、将当前层级中的构建数据类型对应的所有数据缓存在所述待存储数据段中。
42.可以理解的是,将加载的数据按照预设的数据结构分层分段存储,便于后续目标数据的查找。
43.作为一种实施例,在芯片验证的场景下,所述systemverilog子类对象为芯片验证平台中实例化的systemverilog子类对象。测试平台的代码会采用类来减少代码的复用,由于测试平台的代码量非常大,中间可能涉及多个父级,但在对子类对象进行建模时,可能只需要其中一小块属性,如果全部加载,会非常耗时,且消耗很多内存空间。基于本技术,只需基于所需关注的数据来加载缓存即可,从而更加快速准确地获取目标数据。
44.本发明实施例通过按需加载方式,在保证了数据的正确匹配同时减少了数据建模时所需加载的层级数量,在复杂的设计下提高更为显著。首次加载的速度较传统建模方式有大幅提高,而在对某个对象多次获取数据的情况下通过缓存方式也能进行快速的匹配,极大降低了建模时间同时还节省了大量的内存空间,降低了使用调试工具的内存门槛,极大的提高了调试工具的性能从而提高调试效率。
45.需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
46.本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明实施例所述的方法。
47.本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明实施例所述的方法。
48.以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人
员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
技术特征:
1.一种构建systemverilog对象多层结构的按需加载方法,其特征在于,包括:步骤s1、获取systemverilog子类对象需要构建的数据对应的构建数据类型和构建关键字,将多层结构中的所述systemverilog子类对象所对应的层级作为当前层级,执行步骤s2;步骤s2、判断内存中是否存在当前层级中构建数据类型对应的缓存数据,若存在,则执行步骤s4,否则,执行步骤s3;步骤s3、加载当前层级中的构建数据类型对应的所有数据,并缓存至内存中,生成当前层级中构建数据类型对应的缓存数据;步骤s4、基于所述构建关键字在当前层级的构建数据类型对应的缓存数据中进行匹配,若匹配成功,则返回构建关键字对应的目标数据,结束流程,否则,执行步骤s5;步骤s5、将当前层级所对应的父类作为所述当前层级,返回执行步骤s2。2.根据权利要求1所述的方法,其特征在于,所述systemverilog子类对象需要构建的数据对应的构建数据类型包括变量、参数、例程和范围。3.根据权利要求1所述的方法,其特征在于,所述内存中按照预设的数据结构缓存systemverilog子类对象多层结构,预设的数据结构包括{a1,a2,
…
,a
n
,
…
,a
n
},a
n
为第n层级的缓存数据,an=(a
n1
,a
n2
,a
n3
,a
n4
),其中,a
n1
为第n层级的变量类型数据段,a
n2
为第n层级的参数类型数据段,a
n3
为第n层级的例程数据段,a
n4
为第n层级的范围数据段,a
n1
,a
n2
,a
n3
,a
n4
初始为空。4.根据权利要求3所述的方法,其特征在于,所述步骤s2包括:步骤s21、查找内存中当前层级的缓存数据;步骤s22、若当前层级的缓存数据中构建数据类型对应的数据段为空,则确定内存中不存在当前层级中构建数据类型对应的缓存数据,否则,确定内存中存在当前层级中构建数据类型对应的缓存数据。5.根据权利要求4所述的方法,其特征在于,所述步骤s3包括:步骤s31、加载当前层级中的构建数据类型对应的所有数据;步骤s32、基于当前层级和构建数据类型在内存中确定所述systemverilog子类对象多层结构中对应的待存储数据段;步骤s33、将当前层级中的构建数据类型对应的所有数据缓存在所述待存储数据段中。6.根据权利要求1所述的方法,其特征在于,所述systemverilog子类对象为芯片验证平台中实例化的systemverilog子类对象。7.一种电子设备,其特征在于,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行前述权利要求1-6任一项所述的方法。8.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执
行指令用于执行前述权利要求1-6中任一项所述的方法。
技术总结
本发明涉及芯片技术领域,尤其涉及一种构建SystemVerilog对象多层结构的按需加载方法、电子设备和介质,方法包括步骤S1、获取SV子类对象需要构建的数据对应的构建数据类型和构建关键字,将多层结构中的SV子类对象对应的层级作为当前层级,执行步骤S2;步骤S2、判断内存中是否存在对应的缓存数据,若是,执行步骤S4,否则,执行步骤S3;步骤S3、加载当前层级中的构建数据类型对应的所有数据,并缓存至内存中;步骤S4、基于构建关键字进行匹配,若成功,则返回目标数据,结束流程,否则,执行步骤S5;步骤S5、将当前层级所对应的父类作为当前层级,返回步骤S2。本发明降低了大部分数据建模时间以及内存占用。时间以及内存占用。时间以及内存占用。
技术研发人员:林航
受保护的技术使用者:上海合见工业软件集团有限公司 成都融见软件科技有限公司
技术研发日:2023.07.20
技术公布日:2023/10/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/