本发明涉及芯片,尤其涉及一种设计层次树子结点信息存储方法、电子设备和介质。
背景技术:
1、在芯片设计验证调试软件流程中,需要展示用户设计的模块实例化设计层次树。层次树从最顶层的模块开始构建,把最顶层的模块作为树的根结点。顶层模块中实例化的所有模块实例会作为顶层模块的子结点展示,这些子结点本身又是从其他模块实例化而来的,因此它们本身又包含了其他实例化的实例作为它们的子结点。这个过程递归进行直到叶子结点为止。叶子结点就是实例的模块里面没有再包含对其他模块的实例化,通常是原始单元(prikitive cell)或者空模块。上述过程构建的整棵树称为设计层次树。为了支持通过一个给定的模块实例化名字快速定位到一个结点的子结点,通常会采用一个有序的映射表(map)来存储所有结点的名字和结点本身的信息。这样不但可以保证子结点的生成顺序,还可以通过子结点的实例名字快速的查找到子结点,从而获取更多信息或者选中这个子结点。
2、但是,在真实的设计中,每个结点的子结点数目可能存在很大差异,例如有些结点可能包含十万个以上的子结点,而有的结点可能只包含数个或者数十个子结点。上述的使用有序的map来存储所有的子结点信息的方案对子结点数比较少的结点会造成大量的内存浪费。因为有序的map需要额外的内存来管理和存储信息,当里面存储的子结点数太少时,额外花费的内存占比过高,从而造成内存的浪费。
技术实现思路
1、本发明目的在于,提供一种设计层次树子结点信息存储方法、电子设备和介质,降低了设计层次树结点信息存储的内存使用量。
2、根据本发明第一方面,提供了一种设计层次树子结点信息存储方法,包括:
3、步骤s1、在内存中为设计层次树的非叶子结点ai构建动态数据结构di,di包括有序map结构ki、动态数组结构vi、第一指针p1i和第二指针p2i,vi中对应的已存入子结点信息数为ui;在初始状态下,ki和vi均为空,p1i设置为有效状态且指向vi,p2i设置为空指针,ui=0;其中,i的取值范围为1到n,n为设计层次树的非叶子结点总数;
4、步骤s2、当需要向di中插入子结点信息时,判断p1i和p2i中哪一指针为有效状态,若p1i为有效状态,则执行步骤s3,若p2i为有效状态,则执行步骤s6;
5、步骤s3、将子结点信息插入vi中,更新ui,执行步骤s4;
6、步骤s4、若ui=r,r为预设的动态数组存储数量阈值,则执行步骤s5,否则,返回执行步骤s2;
7、步骤s5、将vi中存储的子结点信息复制到ki中,释放vi,将p1i设置为空指针,将p2i设置为有效状态且指向ki,返回执行步骤s2;
8、步骤s6、将子结点信息插入ki中,返回执行步骤s2。
9、根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
10、根据本发明第三方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明第一方面所述的方法。
11、本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种设计层次树子结点信息存储方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
12、本发明通过动态自适应的机制来存储设计层次树的子结点信息,根据子结点信息的数量切换不同的存储模式,在保持快速查找性能的同时降低了设计层次树结点信息存储的内存的使用量,提升了系统性能。
1.一种设计层次树子结点信息存储方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述步骤s3包括:
3.根据权利要求1所述的方法,其特征在于,所述步骤s3包括:
4.根据权利要求1所述的方法,其特征在于,所述步骤s3包括:
5.根据权利要求4所述的方法,其特征在于,所述步骤s3包括:
6.根据权利要求4所述的方法,其特征在于,所述步骤s3包括:
7.根据权利要求1所述的方法,其特征在于,所述步骤s3包括:
8.根据权利要求7所述的方法,其特征在于,所述步骤s3包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行前述权利要求1-8中任一项所述的方法。