一种逻辑电路规模缩减方法及装置制造方法及图纸

技术编号:34247994 阅读:18 留言:0更新日期:2022-07-24 10:51
本申请实施例提供了一种逻辑电路规模缩减方法及装置,先对逻辑电路的实例树进行资源评估,即获取实例树中每个节点的资源量信息,得到实例树资源分布情况,再基于节点资源量与资源阈值区间的关系并结合节点内部紧密度,在实例树中自动确定一个或多个剪枝位置,然后在所述剪枝位置对实例树进行剪枝,从而完成逻辑电路规模缩减。本申请实施例中的方案借助节点资源量、资源阈值区间、节点内部紧密度等可以科学的计算出剪枝位置并进行自动剪枝,不但提高了规模缩减操作时的效率,而且剪枝位置更加合理、精准,从而改善了规模缩减操作的效果,进而可以有效降低后续分割等过程的处理难度和复杂度。复杂度。复杂度。

A logic circuit scale reduction method and device

【技术实现步骤摘要】
一种逻辑电路规模缩减方法及装置


[0001]本申请涉及集成电路
,尤其涉及一种逻辑电路规模缩减方法及装置。

技术介绍

[0002]用户的逻辑电路设计常以RTL(寄存器传输级)或网表的形式存在,在被语法解析器解析后,用户的逻辑电路设计会在内存中形成树状结构,被称为实例树。在实例树中,顶层节点代表用户的top模块,一个节点下一层直接连接的节点被称为该节点的子节点,相应的该节点被称为下一层节点的父节点。子节点对应的模块在父节点内部被实例,也即在父节点对应的模块中被声明。最底层节点,即没有子节点的节点,被称为叶子节点。作为示例实例树可参考图1所示。
[0003]在需要使用多颗FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)的原型验证系统中,用户大规模逻辑电路设计在被解析之后通常会形成规模庞大的实例树,后续的EDA流程都要基于整棵实例树进行处理。然而,在规模庞大的实例树上进行的很多操作都会消耗大量的时间,给计算机的CPU和内存造成很大的负荷。如果不缩减实例树的规模,即以整棵实例树为对象进行操作,则需要占用大量的内存资源来保持整棵实例树处于随时可访问的状态,同时各种操作如查找、遍历、边界确定、连接关系提取等等过程需要消耗大量的CPU计算资源来访问大规模范围。同时,庞大的规模也不利于现有并行工具对RTL级实例树进行并行逻辑综合、布局布线等过程。对于当前分割工具来讲,快速布局规划是其主要功能定位,而并非消耗大量的不必要的时间来对整棵树进行处理和对局部进行仔细分析。因此,对大规模实例树进行规模缩减处理就显得十分必要,它是进行后续一系列如逻辑综合、分割、增量处理等操作之前的规划工作,决定着整个处理流程的处理复杂度和方式方法。
[0004]从实例树的角度来看,规模缩减操作可以形象的视为对树的剪枝,即将树结构从某个(或某些)节点开始剪切其所有子孙节点,该节点和其子孙节点所形成的子树被剪切后放在另外位置保存,而原剪切位置则用一个新的叶子节点代替,该叶子节点整体性地代表被剪切下的子树部分并与子树顶点具有相同的对外端口。将规模缩减后的实例树称为剩余树。通过剪枝,原树的规模便得以缩减。作为示例可参考图2~图3所示,在图2中以A节点为顶点的子树被从原树上剪切掉后另外保存,原树的A位置被新节点T所替代,如图3所示,T代表了原来存在的子树,即代表了被剪切的所有节点,同时T的对外接口与A保持完全一致,对外接口即为端口,例如可以包括通信信号方向、宽度、数量、类型、名称等。
[0005]专利技术人在实现本申请方案的过程中发现,在现有技术中只能通过简单的方法来缩减实例树的规模,剪切位置的选择和剪切的数量依赖人工经验,缺少科学根据,这就使得规模缩减时的处理效率较低,规模缩减的效果也大打折扣,常常出现规模缩减后的树结构中出现资源过大的节点,或者遗漏对内部连接关系紧密的子树进行剪切等情况。资源过大的节点将会影响后续分割结果解的质量,导致分割结果Cut Size,即被切割到的连线权重总和过大。如果内部连接关系紧密的子树没被剪切掉,而存在于剩余树中,则对分割边界的选
择以及边界节点连接关系的获取、分割过程会付出更多的代价,因为紧密的连接关系会暴露在这些过程中,增加处理难度和复杂度。此外,在现有技术中规模缩减过程不能自动化处理,需要人工手动修改实例树结构和重新设置剪切位置对外端口,效率低也易出错。

技术实现思路

[0006]本申请提供一种逻辑电路规模缩减方法及装置,以解决对逻辑电路进行规模缩减操作时效果不好、效率不高的问题。
[0007]根据本申请实施例的第一方面,提供一种逻辑电路规模缩减方法,所述方法包括:通过语法解析器解析用户的逻辑电路设计以在内存中形成实例树;获取所述实例树中每个节点的资源量信息,其中节点的资源量信息包括节点对应的逻辑电路模块所消耗的各类资源的资源量;获取资源阈值区间信息,所述资源阈值区间信息包括所述各类资源的资源量阈值区间;根据所述资源阈值区间信息和节点的资源量信息并结合节点的内部紧密度在所述实例树中确定一个或多个剪枝位置,其中所述内部紧密度用于指示节点内部连接关系的紧密程度;在所述剪枝位置对所述实例树进行剪枝以完成逻辑电路规模缩减。
[0008]可选的,获取所述实例树中每个节点的资源量信息,包括:从所述实例树的最底层向上直至最顶层节点,逐层获取每个节点的资源量信息;其中,如果当前节点不是叶子节点,则当前节点的资源量信息包括当前节点所有子节点的资源量,以及当前模块内除子模块外的所有连线所消耗的通信资源,其中所述当前模块为当前节点对应的逻辑电路模块,所述子模块为当前节点的子节点对应的逻辑电路模块;如果当前节点是叶子节点,则当前节点的资源量信息包括当前节点对应的逻辑电路模块所消耗的各类资源的资源量。
[0009]可选的,根据所述资源阈值区间信息和节点的资源量信息并结合节点的内部紧密度在所述实例树中确定一个或多个剪枝位置,包括:从最顶层节点开始从上往下访问所述实例树中未被访问过的节点;对于正在访问的当前节点,如果当前节点是叶子节点则跳过,继续访问下一个未被访问过的节点,如果当前节点不是叶子节点,则根据所述资源阈值区间信息及当前节点的资源量信息判断当前节点是否是资源合法节点;如果当前节点是资源合法节点,则:获取当前节点的内部紧密度,如果当前节点的内部紧密度超过预设的紧密度阈值,则将当前节点标记为所述剪枝位置并不再访问当前节点的子节点,如果当前节点的内部紧密度未超过所述紧密度阈值,则进一步判断当前节点的子节点是否都是资源合法节点,如果当前节点的子节点都是资源合法节点,则继续访问当前节点的子节点,如果当前节点的子节点不都是资源合法节点,则将当前节点标记为所述剪枝位置并不再访问当前节点的子节点;如果当前节点不是资源合法节点,则继续访问当前节点的子节点。
[0010]可选的,根据所述资源阈值区间信息及当前节点的资源量信息判断当前节点是否
是资源合法节点,包括:如果当前节点每类资源的资源量均在所述资源阈值区间信息中相应的阈值区间的范围内,则判定当前节点是资源合法节点。
[0011]可选的,获取当前节点的内部紧密度,包括:根据:获取当前节点A的内部紧密度T
A
,其中n为在电路图中节点A的各子节点之间的连线数量,Nnodes
i
代表第i条连线上的节点数量,Sour
ij
代表第i条连线上的第j个节点的资源值,所述资源值为节点各类资源的资源量分别乘以相应系数后的和,Sour_avg
i
代表第i条连线上所有节点的资源值的平均值,K、B为预设常数。
[0012]可选的,所述方法还包括:对于正在访问的当前节点,在判断当前节点是否是资源合法节点之前,先判断当前节点是否是特殊节点;如果当前节点是特殊节点,则将当前节点标记为所述剪枝位置并不再访问当前节点的子节点;其中,所述特殊节点为用户指定的剪枝位置处的节点或不可进入其内部的节点。
[0013]可选的,在所述剪枝位置对所述实例树进行剪枝,包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种逻辑电路规模缩减方法,其特征在于,所述方法包括:通过语法解析器解析用户的逻辑电路设计以在内存中形成实例树;获取所述实例树中每个节点的资源量信息,其中节点的资源量信息包括节点对应的逻辑电路模块所消耗的各类资源的资源量;获取资源阈值区间信息,所述资源阈值区间信息包括所述各类资源的资源量阈值区间;根据所述资源阈值区间信息和节点的资源量信息并结合节点的内部紧密度在所述实例树中确定一个或多个剪枝位置,其中所述内部紧密度用于指示节点内部连接关系的紧密程度;在所述剪枝位置对所述实例树进行剪枝以完成逻辑电路规模缩减。2.根据权利要求1所述的方法,其特征在于,获取所述实例树中每个节点的资源量信息,包括:从所述实例树的最底层向上直至最顶层节点,逐层获取每个节点的资源量信息;其中,如果当前节点不是叶子节点,则当前节点的资源量信息包括当前节点所有子节点的资源量,以及当前模块内除子模块外的所有连线所消耗的通信资源,其中所述当前模块为当前节点对应的逻辑电路模块,所述子模块为当前节点的子节点对应的逻辑电路模块;如果当前节点是叶子节点,则当前节点的资源量信息包括当前节点对应的逻辑电路模块所消耗的各类资源的资源量。3.根据权利要求1所述的方法,其特征在于,根据所述资源阈值区间信息和节点的资源量信息并结合节点的内部紧密度在所述实例树中确定一个或多个剪枝位置,包括:从最顶层节点开始从上往下访问所述实例树中未被访问过的节点;对于正在访问的当前节点,如果当前节点是叶子节点则跳过,继续访问下一个未被访问过的节点,如果当前节点不是叶子节点,则根据所述资源阈值区间信息及当前节点的资源量信息判断当前节点是否是资源合法节点;如果当前节点是资源合法节点,则:获取当前节点的内部紧密度,如果当前节点的内部紧密度超过预设的紧密度阈值,则将当前节点标记为所述剪枝位置并不再访问当前节点的子节点,如果当前节点的内部紧密度未超过所述紧密度阈值,则进一步判断当前节点的子节点是否都是资源合法节点,如果当前节点的子节点都是资源合法节点,则继续访问当前节点的子节点,如果当前节点的子节点不都是资源合法节点,则将当前节点标记为所述剪枝位置并不再访问当前节点的子节点;如果当前节点不是资源合法节点,则继续访问当前节点的子节点。4.根据权利要求3所述的方法,其特征在于,根据所述资源阈值区间信息及当前节点的资源量信息判断当前节点是否是资源合法节点,包括:如果当前节点每类资源的资源量均在所述资源阈值区间信息中相应的阈值区间的范围内,则判定当前节点是资源合法节点。5.根据权利要求3所述的方法,其特征在于,获取当前节点的内部紧密度,包括:根据:
获取当前节点A的内部紧密度T
A
,其中n为在电路图中节点A的各子节点之间的连线数量,Nnodes
i
代表第i条连线上的节点数量,Sour
ij
代表第i条连线上的第j个节点的资源值,所述资源值为节点各类资源的资源量分别乘以相应系数后的和,Sour_avg
i
代表第i条连线上所有节点的资源值的平均值,K、B为预设常数。6.根据权利要求3所述的方法,其特征在于,所述方法还包括:对于正在访问的当前节点,在判断当前节点是否是资源合法节点之前,先判断当前节点是否是特殊节点;如果当前节点是特殊节点,则将当前节点标记为所述剪枝位置并不再访问当前节点的子节点;其中,所述特殊节点为用户指定的剪枝位置处的节点或不可进入其内部的节点。7.根据权利要求1所述的方法,其特征在于,在所述剪枝位置对所述实例树进行剪枝,包括:将所述剪枝位置处的子树从所述实例树上剪下并保存,在所述剪枝位置处用一个新的叶子节点代替所述子树,其中,所述子树包括所述剪枝位置对应的节点及其所有子孙节点,所述新的叶子节点与所述子树的顶点具有相同的对外端口。8.根据权利要求7所述的方法,其特征在于,将所述剪枝位置处的子树从所述实例树上剪下并保存,在所述剪枝位置处用一个新的叶子节点代替所述子树,包括:对于RTL级别的逻辑电路设计:复制目标模块并改名后保存,其中所述目标模块为所述子树的顶点所对应的逻辑电路模块;删除原目标模块中的逻辑整体,只保留其指定信息;对于网表级别的逻辑电路设计:剪切目标网表及其所有子孙网表并将所述目标网表改名后保存,其中所述目标网表为所述剪枝位置处对应的网表;新建与原目标网表同名的网表顶层,依据原目标网表顶层的输入、输出端口重建新建网表对外通信端口,在新建网表的父网表中恢复连线与端口之间的连接关系。9.一种逻辑电路规模缩减装置,其特征在于,所述装置包括:实例树生成单...

【专利技术属性】
技术研发人员:邵中尉张吉锋
申请(专利权)人:上海国微思尔芯技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1