FPGA ROM存储数据的工艺映射方法
技术领域
本发明涉及集成电路设计及电子设计自动化技术领域,特别是涉及FPGA ROM存储数据的工艺映射方法。
背景技术
FPGA(Field Programmable Gate Arrays,现成可编程门列阵)是IC中的一类芯片,与ASIC(Application Specific Integrated Circuit)芯片不同,在FPGA开发应用中,必须有配套的EDA(Electronic Design Automation,电子设计自动化)的开发工具,其中包括综合工具,在综合工具的开发中,可以分为分布式单元的综合和宏单元的综合。其中,宏单元主要处理FPGA芯片内部特有的单元,包括RAM(Random-Access-Memroy,随机存取存储器)、ROM(Read-Only-Memory,只读存储器)、Mult(Multiplier乘法器)、DSP(Digital-Signal-Processor数字信号处理器)等。
ROM在FPGA中的实现方式包括分布式结构和块结构两种,不同的结构对应不同的数据存储方式。在ROM的宏单元的综合开发中,需要将用户定义的源ROM,根据映射库中ROM结构实现宏单元映射,同时需要把用户定义的源ROM中存储的数据正确映射到FPGA ROM结构中。
本领域技术人员了解,对于上述技术目前尚存在空缺,因此需要发明一种技术可以将源ROM中存储的数据正确映射到FPGA ROM结构中。
发明内容
本发明的目的在于,提供FPGA ROM存储数据的工艺映射方法,所要解决的技术问题包括:可以将源ROM中存储的数据正确映射到FPGA ROM结构中。
本发明的目的及解决其技术问题可采用以下的技术方案来实现。
依据本发明提出的一种FPGA ROM存储数据的工艺映射方法,包括:
解析电路行为级描述,提取ROM模型及ROM的分散存储数据;
将所述ROM的分散存储数据添加到所述ROM模型中,添加所述ROM的分散存储数据后的ROM模型作为源ROM;
将所述源ROM转化成结构化的ROM单元,以及将源ROM中的分散存储数据按照ROM单元的数据存储形式进行整合,得到整合后的源ROM;
对所述整合后的源ROM执行工艺映射,完成源ROM内部存储数据到目标ROM内部数据存储结构的映射。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,将所述ROM的分散存储数据添加到所述ROM模型中的步骤进一步包括:
将所述ROM的分散存储数据以哈希结构添加到所述ROM模型中。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,将所述源ROM中的分散存储数据按照ROM单元的数据存储形式进行整合进一步包括:
将所述源ROM中的分散存储数据以字符串的形式存储。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,将所述源ROM中的分散存储数据按照ROM单元的数据存储形式进行整合进一步包括:
数据的格式规格化,包括:如果是二进制,则数据字符串前面需要添加前缀“B“;如果是十六进制,则数据字符串前面需要添加前缀“H”;和
数据和地址的对应关系规格化,包括:将地址和数据进行一对一的拼接。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,对所述整合后的源ROM执行工艺映射进一步包括:
对所述整合后的源ROM执行全局映射,得到新的ROM,即ROM_N。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,对所述整合后的源ROM执行全局映射进一步包括:
遍历映射库内的ROM单元,查找到第一目标ROM单元,所述第一目标ROM单元与整合后的源ROM匹配;
若整合后的源ROM的面积大于第一目标ROM单元的面积,则按照第一目标ROM单元的结构对所述整合后的源ROM进行分裂,得到新的ROM,即ROM_N;
若整合后的源ROM的面积小于等于第一目标ROM单元的面积,则按照整合后的源ROM复制,产生一个新的ROM,即ROM_N。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,对所述整合后的源ROM做全局映射后进一步包括:
对全局映射后得到的ROM_N做局部映射。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,对全局映射后得到的ROM_N做局部映射进一步包括:
遍历映射库内的ROM单元,查找到第二目标ROM单元,所述第二目标ROM单元与所述ROM_N匹配;
将ROM_N映射到第二目标ROM单元,完成源ROM内部存储数据到目标ROM内部数据存储结构的映射。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,若FPGAROM为块结构,则将ROM_N映射到第二目标ROM单元前,还包括:
将ROM_N中的存储数据去掉地址位,保留数据位;
对ROM_N中去掉地址位后的每个数据的数据位前面补零;
将补零后每个数据拼接,直到拼接后的数据位宽大于等于第二目标ROM单元一个地址访问空间的数据位宽。
较佳的,前述的FPGA ROM存储数据的工艺映射方法,其中,所述对ROM_N中去掉地址位后的每个数据的数据位前面补零进一步包括:
补零的位数等于第二目标ROM单元的输入输出数据位宽与ROM_N输入输出数据位宽的差值。
借由上述技术方案,本发明的FPGA ROM存储数据的工艺映射方法至少具有下列优点以及有益效果:
本发明实现了将源ROM中存储的数据正确映射到FPGA ROM结构中,解决了综合工具中ROM存储数据映射的难题。该工艺映射方法适用于不同综合工具对ROM的综合以及适用于综合工具基于不同FPGA芯片中ROM结构的工艺映射。
综上所述,本发明在技术上有显著的进步,并具有明显的积极技术效果,诚为一新颖、进步、实用的新设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合说明书附图,详细说明如下。
附图说明
图1为本发明的FPGA ROM存储数据的工艺映射方法流程图;
图2为本发明的第一目标ROM单元内部数据存储结构图;
图3为本发明的全局映射后一个ROM结构示意图;
图4为本发明的第二目标ROM单元内部数据存储结构示意图;
图5为本发明的局部映射后ROM数据存储结构示意图。
具体实施方式
为更进一步阐述本发明,为达成预定发明目的所采取的技术手段及功效,以下结合附图以及较佳实施例,对依据本发明提出的FPGA ROM存储数据的工艺映射方法其具体实施方式、结构及特征,详细说明如后。
本发明实施例提供一种FPGA ROM存储数据的工艺映射方法,参见图1为本实施例所述FPGA ROM存储数据的工艺映射方法的流程图,具体包括如下操作:
S100、解析电路行为级描述,提取ROM模型及ROM的分散存储数据;
本实施例所述电路行为级描述是指用描述电路的语言描述电路的功能及结构,例如VHDL、Verilog Hdl等,也就是本实施例解析对象为用户自定义的整个电路的电路行为级描述。
其中,所提取的ROM模型包含的信息包括但不限于:ROM的外部接口信息、连接信息等。
本实施例在提取ROM模型后,继续解析电路行为级描述,从而提取出ROM的分散存储数据。
S110、将所述ROM的分散存储数据添加到所述ROM模型中,添加所述ROM的分散存储数据后的ROM模型作为源ROM;
本发明一种实施例将所述ROM的分散存储数据以哈希结构添加到所述ROM模型中存储,以建立数据地址哈希存储的对应关系,便于后续执行工艺映射时数据和地址的正确对应,以及保证信息传递的完整性。
S120、将所述源ROM转化成结构化的ROM单元,以及将源ROM中的分散存储数据按照ROM单元的数据存储形式进行整合,得到整合后的源ROM;
本实施例所述将源ROM转化成结构化的ROM单元,即,将存放源ROM信息的数据结构从节点、连线的类型,转化成电路描述的类型,即电路单元、引脚、连线,具体包括如下操作:
1)将原来的节点转化成电路单元;
2)将原来的连线转化成电路中的连线;
3)在电路单元和连线之间增加引脚。
其中,本实施例所述将源ROM中的分散存储数据按照ROM单元的数据存储形式进行整合,即对源ROM中的分散存储数据进行整合,以字符串的形式存储。具体为,将源ROM中的分散存储数据按照ROM单元中的存储方式规格化,主要包括:
a、数据的格式规格化,包括:如果是二进制,则数据字符串前面需要添加前缀“B“;如果是十六进制,则数据字符串前面需要添加前缀“H”;
b、数据和地址的对应关系规格化,包括:按照前面建立的数据地址哈希存储的对应关系,把地址和数据进行一对一的拼接。
S130、对所述整合后的源ROM执行工艺映射,完成源ROM内部存储数据到目标ROM内部数据存储结构的映射。
本实施例对目标ROM和源ROM的定义如下:
目标ROM是指FPGA芯片中ROM的硬件电路结构,其包含两组数据信息,一组是内部数据存储结构的描述数据m X n:即有m个地址访问空间,每个地址访问空间的数据位宽为n位,一个FPGA的ROM硬件电路结构中的数据存储结构在芯片产生后是固定的;另一组是ROM的外部访问方式的描述数据w X d:即外部地址访问空间数为w(ROM的地址位宽=㏒w),输入输出数据位宽为d位,决定ROM内部存储数据以什么方式访问,这种访问方式具有可配置性,即w X d是可以配置的。m X n和w X d可以相同,也可以不同,但是必须满足w X d的乘积等于m X n的乘积。比如ROM256X10,地址位宽是8(㏒256)位,输入输出数据位宽为10位,内部数据存储的结构为128个地址访问空间,每一个访问空间的数据位宽为20位。
源ROM是指用户自定义的ROM电路描述,在工艺映射中,源ROM的内部数据存储结构和外部访问数据的方式是相同的,即ROM16X2,表示该ROM的内部数据存储结构是16个地址访问的存储空间,每一个空间内的数据位宽是2位,而且外部访问的存储空间也是16个,每一个空间内数据位宽是2位。
本发明一种实施例所述对整合后的源ROM执行工艺映射的方法包括:对整合后的源ROM执行全局映射,本实施例所述全局映射的方法包括如下操作:
a)遍历映射库内的ROM单元,按照源ROM和目标ROM的工作模式相符的原则,查找到第一目标ROM单元,以保证所述第一目标ROM单元与整合后的源ROM匹配;如图2中所示为第一目标ROM单元内部数据存储结构图。
b)若整合后的源ROM的面积大于第一目标ROM单元的面积,则按照第一目标ROM单元的结构对所述整合后的源ROM进行分裂(包括结构分裂和数据分裂),得到新的ROM结构ROM_N;
具体而言,若整合后的源ROM的数据规模大于第一目标ROM单元的数据规模,则按照所述第一目标ROM单元数据的输入输出位宽和地址访问深度对所述整合后的源ROM进行分裂,先依据地址访问深度,将整合后的源ROM的数据分裂成小块,再依据数据位宽分裂,得到新的ROM结构ROM_N,如图3所示为全局映射后得到的小ROM块示意图。
c)若整合后的源ROM的数据规模小于等于第一目标ROM单元的数据规模,则按照整合后的源ROM复制,产生一个新的ROM,即ROM_N,所述整合后的源ROM删除。
本发明一种实施例可以进一步对全局映射后产生的新的ROM_N,执行局部映射,本实施例所述局部映射的方法包括如下操作:
1)遍历映射库内的ROM单元,按照源ROM和目标ROM的工作模式相符的原则,查找到第二目标ROM单元,保证所述第二目标ROM单元与所述ROM_N匹配;
2)将ROM_N映射到第二目标ROM单元,完成源ROM内部存储数据到目标ROM内部数据存储结构的映射。
其中,对于FPGA ROM为分布式结构时,由于分布式FPGA ROM的数据存储是一维的,因此当ROM_N映射到的第二目标ROM单元是分布式ROM时,直接将每一位数据对应映射即可。
对于FPGA ROM为块结构时,由于块结构ROM的数据存储是二维的,需要对待映射数据重构,具体重构方法如下:
首先,将ROM_N中的存储数据去掉地址位,保留数据位;
之后,对ROM_N中去掉地址位后的每个数据的数据位前面补零,将每个数据补零后的各个数据位以十六进制的形式拼接(目标ROM中的数据以十六进制格式存储),直到拼接后的数据位宽等于第二目标ROM单元一个地址访问空间的数据位宽。
本实施例中width_s表示ROM_N的输入输出数据位宽;
width_t表示第二目标ROM单元的输入输出数据位宽;
init_width_t:第二目标ROM单元的每个地址访问空间的数据位宽;
本实施例每个数据补零的位数等于第二目标ROM单元的输入输出数据位宽与ROM_N输入输出数据位宽的差值,即(width_t–width_s)的值。
如果补零后的长度小于第二目标ROM单元的一个地址访问空间的数据位宽,则重复上面的补零操作,并将每次补零后产生的补零新数据拼接,,直到拼接后的数据位宽等于第二目标ROM单元一个地址访问空间的数据位宽。
本实施例具体补零及拼接方法如下:
1、ROM_N的第一个width_s长存储数据,数据前补零(width_t
–width_s)个,产生新的存储数据M;
2、ROM_N的下一个width_s长存储数据,数据前补零(width_t
–width_s)个,在M数据基础上拼接成新的存储数据M2;
依次将ROM_N的存储数据补零拼接,当Mx的位宽大于等于init_width_t时,完成一个单位数据合并;而后开始下一个单位数据合并,重复上面的合并算法,最终把ROM_N的所有数据位合并,完成数据工艺映射的处理。
下面参照图4及图5对局部映射方法进行举例说明,图4所示为第二目标ROM单元内部数据存储结构示意图,该第二目标ROM单元名称为BROM256X10,其输入输出数据位宽为10位,地址访问空间为256个,内部数据存储结构为128个地址访问空间,每个访问空间可以访问20位数据。如图5所示为局部映射后ROM数据存储结构示意图,即ROM256X8映射到BROM256X10示意图。在ROM256X8映射到BROM256X10过程中,ROM256X8原始的地址访问空间数据位是8位,而目标ROM单元BROM256X10的输入输出数据位宽为10,地址访问空间数据位是20位,则先将ROM256X8的所有存储数据整合,并在每个存储数据首位添两(10与8的差)位零,一个存储数据添两个零就达到了10位;判断BROM256X10的一个访问空间内还可以存放源ROM256X8的一个单位数据;源ROM256X8的下一个单位数据前面补两位零,而后与上一个补零的数据拼接,达到长度20位宽;判断目标BROM256X10的一个地址访问空间数据已经添满,即完成目标ROM的第一个访问空间的数据映射。剩余的127个访问空间数据映射按照第一个的映射方式即可,最终完成ROM256X8所有数据的映射处理,映射后的结构如图5所示。
综上所述,本发明实现了将源ROM中存储的数据正确映射到FPGAROM结构中,解决了综合工具中ROM存储数据映射的难题。该工艺映射方法具有普适性,适用于不同综合工具对ROM的综合以及适用于综合工具基于不同FPGA芯片中ROM结构的工艺映射。
以上所述仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明的技术,任何熟悉本专业的技术人员在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。