在芯片设计流程中,电路的逻辑通过代码来体现,设计工程师需要根据设计规格编写寄存器传输级代码,而最终在芯片流片的时候,寄存器传输级代码需要转换为网表级代码。从寄存器传输级代码到网表级代码的转换过程,叫做逻辑综合。
如何更快速解决设计流程中出现的逻辑错误?
逻辑综合不仅可以将寄存器传输级代码转换成网表级代码,同时也可以对转换后的网表级代码进行优化,因此在芯片设计中起到了不可或缺的作用。
在芯片设计流程后期,逻辑综合结束之后,如果需要修改芯片的逻辑功能,则要修改寄存器传输级代码。但是芯片流片所需要的是网表级代码,所以还需要同步修改网表级代码。然而查找寄存器传输级代码中信号在网表级代码中的对应信号,则非常麻烦。现有技术中,如果在芯片设计后期需要修改网表级代码,有两种方式:一是重新做逻辑综合,二是手工修改网表级代码。
重新做逻辑综合和手工修改网表都需要较长的周期、大量的资金投入和人力投入,通用性差,效率低,大幅延长芯片的上市周期。
奇捷硬科技·解决难题
奇捷科技通过寄存器传输级信号映射构建方法解决上述问题。
那么如何实现这一操作呢?接下来先简要的介绍寄存器传输级信号映射构建方法。
寄存器传输级信号映射构建方法
有以下几种:
1.获取寄存器传输级代码以及与所述传输级代码对应网表级代码;
2.根据寄存器传输级代码以及所述网表级代码构建电路;
3.根据电路在硬件描述语言中的语法,将电路分割成若干个的模块;
4.采用逻辑验证方法确定模块与模块之间的对应关系;
5.获取要构建映射关系的寄存器传输级信号;
6.根据模块对应关系,确定与所述寄存器传输级信号对应的信号。
1、获取对应网表级代码
寄存器传输级代码与网表级代码在芯片设计过程中使用或者产生,所提供的算法利用这些代码建立寄存器传输级信号的映射关系。
2、根据寄存器传输级代码以及所述网表级代码构建电路
根据寄存器传输级代码以及所述网表级代码构建电路,对代码进行解析处理可以构建芯片电路,这里需要说明的是,构建电路并不是将电路完整的建立出来,可以仅仅是电路的逻辑,最终得到由若干功能模块或者逻辑模块构成的电路整体,不等于构建出电路图。
当然,将电路图构建出来同样可以解决上述问题,且具有更好的可视化效果,此为可选的一种实现方式。
将寄存器传输级代码以及所述网表级代码转换为指定的数据结构,获取寄存器传输级代码以及网表级代码后,会从string格式转换为指定的数据结构。根据转换后的数据结构,采用硬件描述语言规定的格式构建并呈现电路。
3、根据电路在硬件描述语言中的语法,
将电路分割成若干个的模块
根据电路在硬件描述语言中的语法,将电路分割成若干个的模块。在实施中,电路采用特定的程序语言表述,根据所采用的语言,可以将电路分割得到若干个功能模块或者逻辑模块。每个模块包括输入端、输出端、双向端口、寄存器单元、组合逻辑单元以及子模块,各个单元或者模块之间具有连接关系。
4、采用逻辑验证方法
确定模块与模块之间的对应关系
采用逻辑验证的方法确定模块与模块之间的对应关系,具体可以采用SAT solver或者simulation等第三方工具实现,对此不作具体限定。确定一个输入信号,将输入信号分别输入到待验证的两个模块。通过输入输出比较模块之间是否相对应,判断两个模块的输出是否完全相同,若完全相同则判断两个模块对应。在逻辑验证的基础上,首先删除测试电路,例如scan chain,同时删除buffer tree等相关信息。
5、获取要构建映射关系的寄存器传输级信号
根据电路逻辑关系和连接关系,追溯当前寄存器传输级信号、网表级信号的源信号,直到跨模块追溯到某寄存器单元的输出端或某指定模块的输入端;追溯当前传输级信号、网表级信号的子信号,直至跨模块追溯到某寄存器单元的输入端或某指定模块的输出端。
6、根据模块对应关系,
确定与寄存器传输级信号对应的信号
根据追溯的结果确定模块与模块之间的对应关系,把电路中每个模块的每个信号进行迭代,交叉验证,从而确定模块与模块之间的对应关系。采用逻辑验证方法验证模块与模块之间的对应关系。在得到寄存器传输级信号、网表级信号对应的输出端、输入端之后,再次通过逻辑验证的方式进行逻辑功能对比,实现传输级信号与网表级信号、输出端与输入端的对应关系。