一种FPGA存储器拆分方法
技术领域
本发明涉及电子技术领域,尤其涉及一种FPGA存储器拆分方法。
背景技术
现场可编程门阵列(Field Programmable Gate Array,FPGA),它是作为专用集成电路(Application Specific Integrated Circuit,ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。适用于逻辑控制、信号处理、图像处理等多种领域,仅在中国,FPGA芯片的市场就超过百亿人民币,并且以30%每年的速度增长,重要性不言而喻。
在FPGA的具体设计过程中,由于用户所设计的随机存取存储器(random accessmemory,简称RAM)实例尺寸可以是任意的,但是FPGA芯片上的RAM原语尺寸是固定的,当实例尺寸超出原语尺寸时,需要考虑如何由多个原语尺寸的小RAM组成实例尺寸的大RAM,上述问题为存储器拆分问题。FPGA存储器通常有许多端口和参数,尤其是当需要多块存储器拼接成一个更大的存储器时,存储器的映射操作将会变得非常复杂。而且一款具体型号的FPGA芯片通常具有多种不同尺寸的RAM原语,这进一步增加了问题的复杂性。现有技术解决上述问题存在一定的技术缺陷,如:拆分方法复杂、拆分结果不便于后续操作等。
发明内容
本发明实施例提供了一种存储器拆分方法,该方法包括:获取RAM实例的实例尺寸以及芯片上多种RAM原语的原语尺寸;根据多种RAM原语的原语尺寸确定最小粒度,并根据实例尺寸以最小粒度对RAM实例进行拆分,获得RAM实例的原语矩阵;根据多种RAM原语的原语尺寸合并原语矩阵的地址总线,完成对RAM实例的地址拆分,其中,地址拆分后的RAM实例由多种RAM原语的一种组成。
可选地,在上述方法中,还包括:计算地址拆分后的RAM实例中每块RAM原语的利用率,当利用率小于利用阈值时,合并原语矩阵的数据总线,完成对RAM实例的数据拆分,其中,数据拆分后的RAM实例由多种RAM原语的一种组成。
可选地,在上述方法中,利用阈值根据芯片的设计需求进行设定。
可选地,在上述方法中,原语尺寸包括RAM原语的原语地址总线宽度、原语数据总线宽度和RAM原语的工作模式。
可选地,在上述方法中,根据多种RAM原语的原语尺寸确定最小粒度,包括:以多种RAM原语中原语尺寸最小的RAM原语为最小粒度,当RAM实例的地址线宽度大于最小粒度RAM原语的原语地址总线宽度时,最小粒度RAM原语的工作模式为×1。
本发明实施例提供了另一种存储器拆分方法,该方法包括:获取RAM实例的实例尺寸以及芯片上多种RAM原语的原语尺寸;根据多种RAM原语的原语尺寸确定最小粒度,并根据实例尺寸以最小粒度对RAM实例进行拆分,获得RAM实例的原语矩阵;根据多种RAM原语的原语尺寸合并原语矩阵的地址总线,完成对RAM实例的地址拆分;并且/或者根据多种RAM原语的原语尺寸合并原语矩阵的数据总线,完成对RAM实例的数据拆分,其中,地址拆分或数据拆分后的RAM实例由多种RAM原语的一种组成。
本发明实施例所提供一种存储器拆分方法,根据RAM实例的实例尺寸以及FPGA芯片上存在的多种RAM原语的原语尺寸确定最小粒度,并根据最小粒度对RAM实例进行拆分获得原语矩阵,再合并原语矩阵的地址总线(或者还包括数据总线)获得由一种RAM原语组成的RAM实例,拆分方法简单易实现、拆分结果接近或达到最优;并且拆分获得的RAM实例为规则的矩阵,极大地方便了后续的映射操作,也使得拆分与映射操作相对独立,当优化组合策略时,无需修改映射操作。
附图说明
图1为本发明实施例提供的一种存储器拆分方法流程示意图;
图2为本发明实施例一的RAM实例拆分流程示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
在FPGA进行存储器拆分时,将RAM实例拆分成RAM原语矩阵,存储器拆分的结果是RAM原语矩阵和周边逻辑资源(LUT/REG),因此较好的拆分策略应该是使RAM原语数量和周边逻辑资源数量同时达到最小。由于周边逻辑资源主要来源于存储器地址扩展,数据扩展不需要引入额外逻辑,因此需要尽量避免地址扩展。在RAM实例拆分中所用RAM原语的数量取决于每块RAM原语的利用率。在实际RAM尺寸固定的情况下,每块RAM原语资源利用率越高,需要的RAM原语的数量就会越少。如果每块RAM资源地址总线得到充分利用,利用率就能达到或接近最高,从而使耗费的RAM原语数量达到最小。
但在现有技术的实际拆分过程中,拆分方法复杂、差分结果不便于后续操作(映射等)。本发明提供一种FPGA存储器拆分方法,根据RAM实例的实例尺寸以及FPGA芯片上存在的多种RAM原语的原语尺寸确定最小粒度,并根据最小粒度对RAM实例进行拆分获得原语矩阵,再合并原语矩阵的地址总线(或者还包括数据总线)获得由一种RAM原语组成的RAM实例。
图1为本发明实施例提供的一种存储器拆分方法流程示意图,如图1所示,该方法包括:
步骤S101,获取RAM实例的实例尺寸以及芯片上多种RAM原语的原语尺寸。
需要说明的是,RAM实例是用户RTL(Register Transfer Level)设计推断出的,包括RAM实例的实例尺寸(地址总线宽度、数据总线宽度)。RAM原语是FPGA芯片上的,FPGA芯片上具有多种RAM原语,每种RAM原语的原语尺寸不同。
步骤S102,根据多种RAM原语的原语尺寸确定最小粒度,并根据实例尺寸以最小粒度对所述RAM实例进行拆分,获得RAM实例的原语矩阵。
需要说明的是,此时所获得的原语矩阵由选定的最小粒度的RAM原语组成。
可选地,以多种RAM原语中原语尺寸最小的RAM原语为最小粒度,当RAM实例的地址总线宽度大于最小粒度RAM原语的原语地址总线宽度时,为了便于拆分将最小粒度RAM原语的工作模式选为×1。
步骤S103,根据多种RAM原语的原语尺寸合并原语矩阵的地址总线和/或数据总线,完成对RAM实例的拆分,其中,拆分后的RAM实例由多种RAM原语的一种组成。
具体地,根据所述多种RAM原语的原语尺寸合并所述原语矩阵的地址总线,完成对所述RAM实例的地址拆分;而后计算地址拆分后的RAM实例中每块RAM原语的利用率,当利用率小于利用阈值时,合并原语矩阵的数据总线,完成对RAM实例的数据拆分,其中,数据拆分后的RAM实例由多种RAM原语的一种组成。其中,在本发明实施例中RAM原语的利用率是指RAM原语地址总线的利用率;利用阈值则根据FPGA芯片实际设计的具体要求进行设定,如50%。
需要说明的是,由于步骤S102所获得的原语矩阵由最小粒度的RAM原语组成,但FPGA芯片中具有多种RAM原语,为了更好的完成拆分,需对原语矩阵的地址总线进行合并,以便将RAM实例拆分为由多种RAM原语的其中一种RAM原语组成。
下面结合更为具体的实施例对本发明实施例所提供的方法进行进一步的说明。
实施例一
在FPGA芯片中存在三款RAM原语,分别为RAM4K、RAM8K和RAM16K,三种RAM原语的具体原语尺寸详见表1:
表1原语尺寸参数
需要说明的是,RAM8K由两块RAM4K组成,RAM16K由四块RAM4K组成,AW表示地址总线宽度,DW表示数据总线宽度。对于RAM4K而言,当其工作模式为×1时,其地址总线宽度为12、数据总线宽度为1,此时用A12D1对RAM4K进行描述。
用户RTL设计中推断出一块地址总线宽度15位,数据总线宽度8位的RAM实例,则根据本发明实施例所提供的方法,对RAM实例(AW=15,DW=8)进行拆分,图2为本发明实施例一的RAM实例拆分流程示意图,如图2所示,RAM实例的具体拆分过程为:
第一步,确定RAM实例的尺寸以及该FPAG芯片上RAM原语的尺寸;则游标已可知:RAM实例(AW=15,DW=8)、RAM4K(AW=12,DW=16)、RAM8K(AW=13,DW=32)以及RAM16K(AW=14,DW=64),如图2-1即为RAM实例示意图。
第二步,由于RAM4K的尺寸最小,因此最小粒度为RAM4K,又由于RAM实例的地址总线宽度15大于RAM4K的原语地址总线宽度12,因此最小粒度RAM4K的工作模式为×1;而后将RAM4K作为最小粒度对RAM实例进行拆分,将RAM实例拆分成8×8块A12D1的RAM4K(如图2-2)。
第三步,合并原语矩阵的地址总线,由于FPGA中三种RAM原语的存在大小差距,可以将四块RAM4K合并其地址总线成为一块A14D1的RAM16K,则进一步地可以将8×8块A12D1的RAM4K合并成2×8块A14D1的RAM16K(如图2-3)。
第四步,对每块RAM16K利用率进行计算,在本实施例中RAM16K的利用率为100%大于利用阈值50%,因此无需继续数据总线的合并,结束此次RAM实例的拆分。
显而易见的,根据本发明实施例所提供的方法对RAM实例进行拆分,获得的拆分结果是非常规则的矩阵极大的方便了后续的映射操作,并且拆分与映射相对独立,互不影响。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。