掌桥专利:专业的专利平台
掌桥专利
首页

一种生成SOC芯片引脚复用代码的方法及装置

文献发布时间:2024-04-18 19:52:40


一种生成SOC芯片引脚复用代码的方法及装置

技术领域

本发明属于芯片设计领域,更具体地,涉及一种生成SOC芯片引脚复用代码的方法及装置。

背景技术

SOC(System on Chip,系统级芯片)芯片功能日益强大,使用场景越来越丰富。为满足多种场景的功能需求,一般SOC芯片有多种功能接口,如GPIO(General Purpose InputOutput,通用输入/输出口)、SPI(Serial Peripheral Interface,串行外设接口)、UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)等,而且每种接口的数量不尽相同(如4个GPIO接口和2个UART接口)。因此,SOC芯片与外部通信的数字引脚数量也越来越多。SOC芯片在使用时往往不会同时使用所有功能接口,为了降低芯片的引脚数量,进而降低芯片成本,在SOC芯片设计时需要做引脚复用。比如,某组引脚在工作场景A时,作为GPIO接口;在工作场景B时,作为SPI接口。

此外,DFT(DesignforTest,可测性设计)测试用到的引脚一般需要和功能引脚复用,进一步增加了SOC芯片的引脚复用复杂度。

目前SOC芯片引脚复用设计中使用的verilog代码主要通过手动编辑得到,当SOC芯片比较复杂时,可能超过200个数字引脚,手动编辑引脚复用verilog代码,耗时长,出错率高。如果SOC芯片引脚复用设计出现问题,往往无法修复,对SOC芯片的功能影响很大。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种生成SOC芯片引脚复用代码的方法及装置,生成引脚复用的verilog功能代码,有效降低手动编写引脚复用代码的错误率,从而加快SOC芯片设计进度,以解决手动编辑引脚复用verilog代码、耗时长、出错率高的技术问题。

为解决前述问题,第一方面提供一种生成SOC芯片引脚复用代码的方法,包括:

获取SOC芯片存在引脚复用的目标引脚,分析各个目标引脚的复用逻辑,对复用逻辑进行解析得到不同功能场景下的接口类型;

根据各个目标引脚在不同功能场景下的接口类型配置相应的信号信息;

将各个目标引脚的引脚信息写入预设的引脚复用表的第一预设位置,将各个目标引脚在不同功能场景下的信号信息写入所述引脚复用表的第二预设位置;

分析所述引脚复用表得到各个目标引脚的引脚信息和信号信息,根据引脚信息和信号信息生成复用代码。

进一步地,所述引脚复用表包括头部信息和行信息,所述头部信息包括序号、引脚名、引脚方向、各个功能场景下的使能信号名以及各个功能场景下的功能信号名;

其中,行信息包括多行,每行表示一个引脚的复用关系。

进一步地,在所述分析所述引脚复用表得到各个目标引脚的引脚信息和信号信息,根据引脚信息和信号信息生成复用代码之前还包括:

检查所述引脚复用表的每一行每一列是否为空,如果为空,输出报错信息,并指明报错位置;

检查不同行的引脚名是否重复,如果重复,输出报错信息,并指明报错位置;

在同一功能场景下,不同行的功能信号名是否有重复,如果重复,输出报错信息,并指明报错位置;

检查引脚方向与同一行的功能信号名是否匹配,如果不匹配,输出报错信息,并指明报错位置。

进一步地,所述将各个目标引脚的引脚信息写入预设的引脚复用表的第一预设位置,将各个目标引脚在不同功能场景下的信号信息写入所述引脚复用表的第二预设位置包括:

将各个目标引脚的引脚名和引脚方向写入到引脚复用表的第一预设位置;

将各个目标引脚在不同功能场景下的功能信号名和使能信号名写入所述引脚复用表的第二预设位置;

其中,同一功能场景的信号分布在同一列,同一个引脚的所有功能场景的信号在同一行。

进一步地,所述将各个目标引脚在不同功能场景下的功能信号名和使能信号名写入所述引脚复用表的第二预设位置包括:

在预定的功能场景下,如果该目标引脚的输入功能没有被使用,则在引脚复用表的相应位置处填写预定的关键字;如果该目标引脚的输出功能没有被使用,则在相应的位置处填写预定的关键字。

进一步地,所述方法还包括:

将复用代码写入到SOC芯片中,以更新SOC芯片的引脚复用功能。

进一步地,所述方法还包括:根据引脚的引脚方向生成验证代码,通过验证代码对复用代码进行验证,以修正复用代码中的错误。

进一步地,当目标引脚为输入引脚时,所述根据引脚的引脚方向生成验证代码,通过验证代码对复用代码进行验证包括:

依次将其中一个目标引脚的输入值设置为第一预设值,将其他目标引脚的输入值设置为第二预设值,检测相应引脚的值是否与预设值相同;

若引脚的值与预设值不相同,则所述复用代码存在错误,反向检查写入引脚复用表中的被填入的信息是否正确。

进一步地,当目标引脚为输出引脚时,所述根据引脚的引脚方向生成验证代码,通过验证代码对复用代码进行验证包括:

拉高其中一个目标引脚的使能信号,拉低其他目标引脚的使能信号,依次将其中一个目标引脚的输入值设置为第一预设值,将其他目标引脚的输入值设置为第二预设值,检测相应引脚的值是否与预设值相同;

若引脚的值与预设值不相同,则所述复用代码存在错误,反向检查写入引脚复用表中的被填入的信息是否正确。

为解决前述问题,第二方面提供一种生成SOC芯片引脚复用代码的装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的生成SOC芯片引脚复用代码的方法。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:通过本申请实施例的方法能够根据添加在引脚复用表的信息,自动解析每个引脚的复用逻辑,并生成引脚复用的verilog功能代码,有效降低手动编写引脚复用代码的错误率,从而加快SOC芯片设计进度。

附图说明

图1是本发明实施例提供的一种生成SOC芯片引脚复用代码的方法流程示意图;

图2是本发明实施例提供的一种引脚复用表的示意图;

图3是本发明实施例提供的一种功能场景所对应的信号信息定义示意图;

图4是本发明实施例提供的一种功能场景所对应的功能信号和使能信号的示意图;

图5是本发明实施例提供的输入信号、输出信号的定义示意图;

图6是本发明实施例提供的一种引脚复用表的示意图(只包含引脚信息);

图7是本发明实施例提供的一种引脚复用表的示意图(只包含不同功能场景下的信号信息);

图8是本发明实施例提供的一种生成SOC芯片引脚复用代码的装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

为了解决目前SOC芯片引脚复用设计中使用的verilog代码主要通过手动编辑得到,当SOC芯片比较复杂时,可能超过200个数字引脚,手动编辑引脚复用verilog代码,耗时长,出错率高的问题,本发明实施例提出一种生成SOC芯片引脚复用代码的方法,参阅图1,该方法包括如下步骤:

步骤101:获取SOC芯片存在引脚复用的目标引脚,分析各个目标引脚的复用逻辑,对复用逻辑进行解析得到不同功能场景下的接口类型;

其中,复用逻辑实质为目标引脚的复用情况,为目标引脚在不同功能场景下的接口类型,例如,某组引脚在功能场景A时,作为GPIO接口;在功能场景B时,作为SPI接口,当目标引脚的接口类型不同时,该目标引脚所对应传输的信号也会随之改变,因此,需要根据各个目标引脚在不同功能场景下的接口类型配置相应的信号信息。

步骤102:根据各个目标引脚在不同功能场景下的接口类型配置相应的信号信息;

步骤103:将各个目标引脚的引脚信息写入预设的引脚复用表的第一预设位置,将各个目标引脚在不同功能场景下的信号信息写入所述引脚复用表的第二预设位置;

在本实施例中,所述引脚复用表包括头部信息和行信息,所述头部信息依次包括序号、引脚名、引脚方向、各个功能场景下的使能信号名以及各个功能场景下的功能信号名;其中,行信息包括多行,每行表示一个引脚的复用关系。

在实际应用场景下,总结常用的SOC芯片引脚复用设计方法,设计了引脚复用表,该引脚复用表包含头部信息和行信息。

引脚复用表头信息分成三类,一是序号;二是Pins信息,包括引脚名(PinName)和引脚方向(Direction);三是各个场景的使能信号和功能信号名。各个场景的使能信号有效时,表示pin被该场景使用;各个场景的功能信号名,包括输入信号名(Input SignalName)、输出信号名(Output Signal Name)和输出使能信号名(OutputEnableName)。其中Direction含义如下:关键词“input”表示引脚只用于输入引脚;关键词“output”表示引脚只用于输出引脚;关键词“inout”表示引脚既用于输入引脚,也用于输出引脚)。

引脚复用表的行信息,由多行组成,每一行表示某一个引脚的复用关系,行数等于总的引脚数量。

其中,图2中,PinName列和Direction列表示pin的名字和方向,Function0列表示某一个功能场景。

结合图3,每个功能场景包含三列,分别是Input Signal Name列,OutputSignalName列和OutputEnableName列。如果有多个功能场景使用了该pin,按照每个功能场景三列信息的规则,补充各个功能场景的Input Signal Name列,Output SignalName列和OutputEnableName列信息即可。某个引脚的OutputEnableName值为1时,该引脚作为输出引脚,OutputEnableName会从该引脚输出到芯片外部;否则,该引脚作为输入引脚,该引脚上的信号会传输到芯片内部的Input Signal Name。

将各个目标引脚的引脚名和引脚方向写入到引脚复用表的第一预设位置;将各个目标引脚在不同功能场景下的功能信号名和使能信号名写入所述引脚复用表的第二预设位置;其中,同一功能场景的信号分布在同一列,同一个引脚的所有功能场景的信号在同一行。其中,第一预设位置指的是图2中Pins所对应的列,第二预设位置指的是Function0所对应的列。

进一步地,如图4,如果某个功能场景没有用到某个pin的输入功能,需要在对应位置处填写NA关键字;如果某个功能场景没有用到某个pin的输出功能,需要在没有用到的位置处填写TIE0或TIE1关键字,其中,TIE0关键字,表示用1’b0代替信号名;TIE1关键字,表示用1’b1代替信号名。

步骤104:分析所述引脚复用表得到各个目标引脚的引脚信息和信号信息,根据引脚信息和信号信息生成复用代码。

在本实施例中,在根据引脚复用表生成复用代码之前,需要检查引脚复用表中的信息是否正确,检查的维度如下:

检查所述引脚复用表的每一行每一列是否为空,如果为空,输出报错信息,并指明报错位置;

检查不同行的引脚名是否重复,如果重复,输出报错信息,并指明报错位置;

在同一功能场景下,不同行的功能信号名是否有重复,如果重复,输出报错信息,并指明报错位置;

检查引脚方向与同一行的功能信号名是否匹配,如果不匹配,输出报错信息,并指明报错位置。具体地,引脚方向为input,所有功能场景下的Output Signal Name都是NA或TIE0或TIE1;引脚方向为output,所有功能场景下的Input Signal Name都是NA或TIE0或TIE1,具体是NA、TIE0或TIE1,依据实际情况而定,在此不做具体限定。

在预定的功能场景下,如果该目标引脚的输入功能没有被使用,则在引脚复用表的相应位置处填写预定的关键字;如果该目标引脚的输出功能没有被使用,则在相应的位置处填写预定的关键字。

在实际应用场景下,在得到复用代码后,将复用代码写入到SOC芯片中,以更新SOC芯片的引脚复用功能。将复用代码写入到SOC芯片后,还需要对复用代码进行验证,具体地,根据引脚的引脚方向生成验证代码,通过验证代码对复用代码进行验证,以修正复用代码中的错误。

当目标引脚为输入引脚时,所述根据引脚的引脚方向生成验证代码,通过验证代码对复用代码进行验证包括:依次将其中一个目标引脚的输入值设置为第一预设值,将其他目标引脚的输入值设置为第二预设值,检测相应引脚的值是否与预设值相同;若引脚的值与预设值不相同,则所述复用代码存在错误,反向检查写入引脚复用表中的被填入的信息是否正确。

其中,第一预设值可以为1,第二预设值为0;或者,第一预设值可以为0,第二预设值为1,可以依据具体情况而定。

举例而言,将某个输入pin值强制置1,其他输入pin强制置0,如果对应行对应场景的Input Signal Name值不是1,报错。如此循环,将所有输入pin用同样的方法验证,可以防止“某个信号被赋值为常量0”错误。

将某个输入pin值强制置0,其他输入pin强制置1,如果对应行对应场景的InputSignal Name值不是0,报错。如此循环,将所有输入pin用同样的方法验证,可以防止“某个信号被赋值为常量1”错误。如此循环,便利所有场景下的所有输入pin,可以避免TIE0/TIE1错误。

当目标引脚为输出引脚时,所述根据引脚的引脚方向生成验证代码,通过验证代码对复用代码进行验证包括:拉高其中一个目标引脚的使能信号,拉低其他目标引脚的使能信号,依次将其中一个目标引脚的输入值设置为第一预设值,将其他目标引脚的输入值设置为第二预设值,检测相应引脚的值是否与预设值相同;

若引脚的值与预设值不相同,则所述复用代码存在错误,反向检查写入引脚复用表中的被填入的信息是否正确。

举例而言,将某个pin的Output Signal Enable信号强制置1,其他pin的OutputSignal Enable信号强制置0;将该pin的Output Signal Name信号强制置1,其他pin的Output Signal Name信号值强制置0,如果Output Signal Name值不是1,报错。如此循环,将所有输出pin用同样的方法验证,可以防止“某个信号被赋值为常量1”错误。将某个pin的Output Signal Enable信号强制置1,其他pin的Output Signal Enable信号强制置0;将该pin的Output Signal Name信号强制置0,其他pin的Output Signal Name信号值强制置1,如果output pin值不是0,报错。如此循环,将所有输出pin用同样的方法验证,可以防止“某个信号被赋值为常量0”错误。

通过本实施例的方法能够根据添加在引脚复用表的信息,自动解析每个引脚的复用逻辑,并生成引脚复用的verilog功能代码和验证引脚复用是否正确的verilog验证代码,有效降低手动编写引脚复用代码的错误率,从而加快SOC芯片设计进度。

本发明实施例包含两个部分,一是引脚复用界面部分,该界面可以直观的展示多个场景下引脚复用关系;二是转换部分,能够将引脚复用界面的信息转换成verilog代码。

在本实施例中,分析引脚复用表中的引脚复用关系,结合图5,假设某个pin的方向属性是“inout”,即既支持输入又支持输出。该pin有三个功能相关的信号,分别是pin_c、pin_o和pin_o_en。

需要根据引脚复用表行信息,确定每个pin的方向属性。如果pin方向属性是“input”,确定需要在何种功能场景下将pin_c赋值给哪个输入信号(Input Signal Name)。如果pin方向属性是“output”,确定需要在哪种功能场景下将哪个输出信号(OutputSignal Name)赋值给pin_o信号;并确定需要在哪种功能场景下将哪个使能信号(OutputEnableName)赋值给pin_o_en信号。如果pin方向属性是“inout”,需要按照上述“input”属性和“output”属性都做处理。确定每个引脚的复用信息后,根据复用信息,自动生成引脚复用verilog代码。

本发明的复用代码的生成过程如下:

1、设计者根据SOC芯片功能场景,梳理各个功能场景的引脚使用情况,并确定SOC芯片引脚复用设计方案;

2、根据SOC芯片引脚复用设计方案,在引脚复用表中填写引脚信息和信号信息(如果某功能场景没有使用该pin,需要填关键字“NA”);

3、检查确认每种功能场景的信号名都在同一列,确任每个引脚的所有复用信号都在同一行;

4、自动生成verilog代码。在生成代码前会自动做五项检查:

一是引脚复用表中每一行每一列是否为“空”,如果为“空”,工具报Error,并指明坐标;

二是引脚复用表行中,每一行的PinName不能有重复;

三是同一功能场景下,每一行的Input Signal Name不能有重复;

四是pindirection为output,所有功能场景下的Input Signal Name都是NA;

五是pin direction为input,所有功能场景下的Output Signal Enable都是TIE0。

主要生成输入输出端口、输出信息选择逻辑、输入信息选择逻辑等三部分代码,为提升代码的可读性,不对复用做其他处理,将表格信息填充到模板对应的位置即可。

将复用代码实例化到SOC的topmodule中即可,如果引脚复用有更新,重新生成并替换pin_mux.v文件即可。

5、对复用代码进行验证,主要针对几种常见的错误,1)误把某个信号接成常量0或常量1;2)信号名和引脚名不匹配,或输出信号和输出使能信号不匹配等问题。

输入pin的验证过程:将某个输入pin值强制置1,其他输入pin强制置0,如果对应行对应场景的Input Signal Name值不是1,报错。如此循环,将所有输入pin用同样的方法验证,可以防止“某个信号被赋值为常量0”错误。

将某个输入pin值强制置0,其他输入pin强制置1,如果对应行对应场景的InputSignal Name值不是0,报错。如此循环,将所有输入pin用同样的方法验证,可以防止“某个信号被赋值为常量1”错误。如此循环,便利所有场景下的所有输入pin,可以避免TIE0/TIE1错误。

输出pin的验证过程:将某个pin的Output Signal Enable信号强制置1,其他pin的Output Signal Enable信号强制置0;将该pin的Output Signal Name信号强制置1,其他pin的output signal信号值强制置0,如果output pin值不是1,报错。如此循环,将所有输出pin用同样的方法验证,可以防止“某个信号被赋值为常量1”错误。将某个pin的OutputSignal Enable信号强制置1,其他pin的Output Signal Enable信号强制置0;将该pin的Output Signal Name信号强制置0,其他pin的output signal信号值强制置1,如果outputpin值不是0,报错。如此循环,将所有输出pin用同样的方法验证,可以防止“某个信号被赋值为常量0”错误。

下面基于具体的实例,解释说明前述方案,参阅图6和图7,图6为引脚复用表的头信息的示例,图6为引脚复用表的功能场景的示例,某芯片有4个pin需要复用,Function0时pin作为gpio控制器使用,Function1时pin作为SPI控制器主机使用。为方便显示,将引脚复用表拆分成左右两部分展示。

生成的verilog代码如下:

/>

/>

/>

结合图6和图7,以Function_0的输入引脚检查为例,生成引脚复用的验证代码。

/>

/>

在优选的实施例中,本实施例提供了另一种生成SOC芯片引脚复用代码的方法,对SOC芯片的芯片手册进行解析,得到存在引脚复用的目标引脚,获取目标引脚的端口号,将目标引脚的端口号填充在预定的位置,对SOC芯片的芯片手册进行解析得到SOC芯片相应的至少一个测试样板,根据SOC芯片的芯片手册绘制相应的电路图,将该电路图与测试样板进行比对,得到与电路图的匹配度达到预定匹配度阈值的测试样板,提取测试样板所对应的参考代码,根据目标引脚的端口号对参考代码进行拆解,将与该目标引脚相匹配的信号信息和引脚信息填充至预设位置;

其中,对于每一个目标引脚,当存在多种信号信息和多种引脚信息时,将可能性最高的信号信息和引脚信息填充在预设位置,将其他可能的信号信息和引脚信息以批注的形式设置在周围位置;选择最合适的信号信息和引脚信息生成复用代码。

具体的,结合前述实施例,该方法的实现过程如下:所述获取SOC芯片存在引脚复用的目标引脚,分析各个目标引脚的复用逻辑,对复用逻辑进行解析得到不同功能场景下的接口类型包括:

对SOC芯片的芯片手册进行解析,得到存在引脚复用的目标引脚,获取目标引脚的端口号,将目标引脚的端口号填充在预定的位置;

分析各个目标引脚的复用逻辑,对复用逻辑进行解析得到不同功能场景下的接口类型,根据接口类型确定相应的测试样板;

所述根据各个目标引脚在不同功能场景下的接口类型配置相应的信号信息包括:

根据SOC芯片的芯片手册绘制相应的电路图,将该电路图与测试样板进行比对,得到与电路图的匹配度达到预定匹配度阈值的测试样板;

提取测试样板所对应的参考代码,根据目标引脚的端口号对参考代码进行拆解,将与该目标引脚相匹配的信号信息和引脚信息填充至预设位置;

其中,对于每一个目标引脚,当存在多种信号信息和多种引脚信息时,将可能性最高的信号信息和引脚信息填充在预设位置,将其他可能的信号信息和引脚信息以批注的形式设置在周围位置;

所述分析所述引脚复用表得到各个目标引脚的引脚信息和信号信息,根据引脚信息和信号信息生成复用代码包括:

选择最合适的信号信息和引脚信息生成复用代码。具体可以依次将所有可能性的信号信息和引脚信息填充在预设位置,生成多种复用代码,然后依次验证复用代码,最终得到合适的复用代码。

在上述实施例提供的生成SOC芯片引脚复用代码的方法的基础上,本发明还提供了一种可用于实现上述方法的生成SOC芯片引脚复用代码的装置,如图8所示,是本发明实施例的装置架构示意图。本实施例的生成SOC芯片引脚复用代码的装置包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。

所述处理器21和所述存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。

所述存储器22作为一种生成SOC芯片引脚复用代码的方法的非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如上实施例中的生成SOC芯片引脚复用代码的方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现上述实施例的生成SOC芯片引脚复用代码的方法。

所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例中的生成SOC芯片引脚复用代码的方法,例如,执行以上描述的图1所示的各个步骤。

具体为:获取SOC芯片存在引脚复用的目标引脚,分析各个目标引脚的复用逻辑,对复用逻辑进行解析得到不同功能场景下的接口类型;根据各个目标引脚在不同功能场景下的接口类型配置相应的信号信息;将各个目标引脚的引脚信息写入预设的引脚复用表的第一预设位置,将各个目标引脚在不同功能场景下的信号信息写入所述引脚复用表的第二预设位置;分析所述引脚复用表得到各个目标引脚的引脚信息和信号信息,根据引脚信息和信号信息生成复用代码。

本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种集成电路IC芯片引脚修复设备及芯片引脚修复方法
  • 一种低功耗的引脚复用控制系统及其控制方法
  • 一种代码文件生成方法和装置
  • 一种多通道射频信号测量系统控制代码生成装置及方法
  • 一种热补偿光波复用与解复用芯片及其制备方法
  • 一种芯片引脚复用的代码编码的方法及装置
  • 一种芯片引脚复用的代码编码的方法及装置
技术分类

06120116331733