Rom工艺映射的处理方法

文档序号:6634174阅读:731来源:国知局
Rom工艺映射的处理方法
【专利摘要】本发明提供了一种ROM工艺映射的处理方法,包括:从以硬件描述语言为格式的源描述中识别出ROM的基本结构;根据识别出的ROM的基本结构,构建ROM的控制数据流图节点;根据构建的ROM的控制数据流图节点,将所述ROM映射到映射库中的目标ROM单元。本发明通过ROM识别和映射,实现了FPGA RTL综合中行为级ROM描述到ROM目标工艺库的映射,使得处理后的ROM在FPGA的ROM宏单元上实现,达到和Synplify综合工具相同的效果。
【专利说明】ROM工艺映射的处理方法

【技术领域】
[0001]本发明涉及集成电路设计领域,尤其涉及一种对FPGA RTL综合中ROM工艺映射的处理方法。

【背景技术】
[0002]FPGA (Field — Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。当前FPGA(Field Programmable Gate Arrays)的EDA发展技术主要掌控在几大FPGA和EDA厂商,如Xilinx, Altera, Synopsis等,国内的技术发展还处在紧随其后和模仿的阶段。其中RTL(Register-Transfer-Level)综合是FPGA EDA工具中的重要一环。
[0003]FPGA的RTL综合工具包含对基本单元和宏单元两类结构的综合,其中宏单兀包括 RAM(Random-Access-Memory)存储器,ROM (Read-Only-Memory)存储器,DSP(Digital-Signal-Processor), MCU(Micro-Control-Unit)等。宏单兀综合主要分为两个部分:识别和映射,识别是从源文件中识别出宏单元结构,该宏单元结构映射到目标FPGA的宏单元结构上。
[0004]在已公开的相关技术中,关于RTL级存储器的研究主要分为三个分支:第一个分支主要研究存储器的高级综合,着眼于高级综合中的多层次存储器架构生成,主要面向ASIC,探讨生成何种RAM描述而不涉及具体实现;第二个分支主要研究RTL级存储器翻译转化成逻辑存储器;第三个分支主要研究逻辑存储器映射到基于目标工艺库的存储器,即存储器的工艺映射。这些研究都是针对RAM存储器的成果,目前还没有关于ROM类型存储器研究的公开发表。
[0005]针对FPGA片上ROM的综合已经广泛集成于FPGA RTL综合工具中,如Synopsis的Synplify和XiIinx的XST等,但相关文档只有用户级的使用手册,侧重介绍ROM不同的RTL级描述与目标FPGA中ROM类型的映射关系,具体综合的技术实现细节不公开。而在实际应用中并没有公开的技术来解决次问题。
[0006]因此,希望提出一种对FPGA RTL综合中ROM工艺映射的处理方法。


【发明内容】

[0007]本发明提供了一种对FPGA RTL综合中ROM工艺映射的处理方法。
[0008]根据本发明的一个实施例,提供了一种ROM工艺映射的处理方法,包括:
[0009]a)从以硬件描述语言为格式的源描述中识别出ROM的基本结构,所述基本结构包括if else结构、case结构;
[0010]b)根据识别出的ROM的基本结构,构建ROM的控制数据流图节点;
[0011]c)根据构建的ROM的控制数据流图节点,将所述ROM映射到映射库中的目标ROM单元。
[0012]与现有技术相比,采用本发明提供的技术方案具有如下优点:通过识别ROM基本结构,然后由此构建ROM的控制数据流图节点,由此将所述ROM映射到映射库中的目标ROM单元,实现了 FPGARTL综合中行为级ROM描述到ROM目标工艺库的映射,使得处理后的ROM在FPGA的ROM宏单元上实现,达到和Synplify综合工具相同的效果。

【专利附图】

【附图说明】
[0013]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
[0014]图1为根据本发明的实施例的一种针对FPGA RTL综合中ROM工艺映射方法流程图;
[0015]图2为根据本发明的实施例的根据识别出的ROM的基本结构构建ROM的控制数据流图节点的方法流程图;
[0016]图3为根据本发明的实施例的根据构建的ROM的控制数据流图节点将所述ROM映射到映射库中的目标ROM单元的方法流程图;
[0017]图4为根据本发明的实施例的if else直接赋值格式、if else存储阵列格式、case直接赋值格式、case存储阵列格式的源描述图;
[0018]图5为根据本发明的实施例的if-else格式的⑶FG ROM识别模型图;
[0019]图6为根据本发明的实施例的case格式的⑶FG ROM识别模型图;
[0020]图7为根据本发明的实施例的一个识别ROM存储数据的预置⑶FG结构过程算法的伪代码;
[0021]图8为根据本发明的实施例的ROM识别前后的CDFG结构图;
[0022]图9为根据本发明的实施例的ROM映射前后结构图。

【具体实施方式】
[0023]下面详细描述本发明的实施例。
[0024]所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。此外,本发明提供了的各种特定的器件和结构的例子,但是本领域普通技术人员可以意识到其他器件的可应用于性和/或其他结构的使用。
[0025]本发明提供了一种针对FPGA RTL综合中ROM工艺映射的处理方法。下面,将通过本发明的一个实施例对图1所示的针对FPGA RTL综合中ROM工艺映射的处理方法进行具体描述。如图1所示,本发明所提供的针对FPGA RTL综合中ROM工艺映射的处理方法包括:
[0026]在步骤a中,从以硬件描述语言为格式的源描述中识别出ROM的基本结构,所述基本结构包括if else结构、case结构。
[0027]由于技术人员在进行电路设计时,主要是在行为级,按照一定的规则,使用硬件描述语言来实现相应的功能结构,因此要实现FPGA RTL综合中ROM工艺映射首先就要能够从硬件描述语言中识别出技术人员所描述的ROM结构。
[0028]在本发明的一个实施例中,以Verilog HDL语言为例,以下均以此为基础进行说明,本领域技术人员可针对其它硬件描述语言采用相同的方法进行处理。由于ROM在描述中,涉及到同步、异步以及控制端等诸多不同,因此ROM的行为级描述种类繁多,也导致其识别复杂化,本发明系统提出了 14种基本ROM的行为级描述类型。
[0029]其中ROM 外部结构描述可以用 always, funct1n, task, initial,和 assign,数据读取的源描述可以用case语句,if-else语句,在case和if_else语句中又可以采用数据直接赋值格式和memory array格式,图4显示的是四种标准的ROM源描述。
[0030]针对上述各种ROM的源描述结构特点,并考虑兼容不同架构FPGA的ROM结构,本发明抽象出基于CDFG(Control - Data - Flow-Graph)的ROM识别模型。基于CDFG数据结构是因为CDFG数据结构可以方便地表示ROM的各种控制行为信息和各种数据传递行为信息,有效实现ROM识别。识别出的ROM结构可以映射到各种架构FPGA的ROM上。
[0031]本发明通过研究各种ROM源描述的特征和每一种对应的⑶FG结构图特点,提取出ROM的两种基本结构:case格式和if-else格式,其它类型的ROM源描述或者产生的CDFG结构图可以统一到这两种⑶FG结构上,或者是在这两种基础上的扩展。由于case和if-else语句中又都可以采用数据直接赋值格式和存储阵列格式,因此分别抽象出四种基于CDFG的ROM识别模型,如图5和图6所示,图中的四个CDFG结构图分别对应图4中的四种标准ROM源描述。在实际电路系统中描述的ROM比较复杂,有各种控制端、各种地址选择、各种数据读出,以及各种类ROM结构的描述却不能识别为ROM的,这些都构成了 ROM识别难度。因此,要通过步骤b和c的过程,才能将ROM映射到映射库中的目标ROM单元,实现ROM工艺映射。
[0032]在步骤b中,根据识别出的ROM的基本结构,构建ROM的控制数据流图节点。其包括:
[0033]子步骤bl,从以硬件描述语言为格式的源描述,构建控制数据流图(CDFG)。
[0034]⑶FG是工艺映射经常用到的,此子步骤通过已有技术可以实现。
[0035]子步骤b2,从构建的控制数据流图中,根据识别出的ROM的基本结构,识别控制数据流图中的根节点。
[0036]具体的,在图5所示的if-else格式中,⑶FG结构图结构有多个用于构建ROM的控制数据流图节点的根节点。在图6所示的case格式中,CDFG结构图结构仅有一个用于构建ROM的控制数据流图节点的根节点。根节点的概念本领域已知。
[0037]但是在实际应用中,两类模型的数据选择的节点图都不完全是规则的,比如,if-else类型的数据选择对应的判断分支可能不是地址的比较,而是别的信号比较;if-else和case分支存在的多层嵌套、多层异质结构嵌套;数据选择输入非存储数据;if-else数据选择分支链的长度不足等。
[0038]因此,本发明针对两种格式,采用了如下判定原理:
[0039]对于ROM结构为case格式,由于只有一个根节点,所以很容易找到,但要排除多层嵌套和多层异质结构嵌套,最后依据ROM最小规模判别;
[0040]对于ROM结构为if-else格式,由于if-else类型的CDFG结构包括true分支和false分支,两个分支都会逐层嵌套,因此首先采用递归方法逐层判定输入节点和条件比较节点,然后排除异质结构嵌套和非地址比较,最后依据ROM最小规模判别,选出符合条件的if-else链,该链的根节点作为本步骤选出的根节点。关于ROM最小规模判别,是已有技术。
[0041]子步骤b3,根据识别的根节点,识别ROM存储数据的预置控制数据流图结构。
[0042]预置控制数据流图结构是已有概念。
[0043]具体的,首先需要从根节点中提取关键节点,根节点与关键节点的关系存在四种可能性:根节点就是关键节点、根节点是条件控制、根节点的多个前驱节点都是条件控制、根节点为根的数据选择链不可以识别为ROM。从前三种情况中可以提取出关键节点。关键节点是已有概念,例如在根节点的多个前驱节点都是条件控制的情况下,可能跟节点和前驱节点都是关键节点。
[0044]提取出关键节点后,就需要提取预置的ROM结构。首先要不断地在遍历中把关键节点涉及的链中的节点加入前驱遍历列表,以保证所有ROM的存储数据预置结构都被识另O,然后根据识别出的关键节点,找出与关键节点所对应的地址端和地址值,构建ROM的地址端,接着需要建立地址值和数据值对应哈希映射表,其中如果源描述中用else或者default描述的不完整ROM数据存储,需要补满。最后把该链上所有预置的结构的数据都提取出来。
[0045]本发明的一个实施例提供了一个识别ROM存储数据的预置⑶FG结构过程算法的伪代码,如图7所示。
[0046]步骤b4,根据识别的根节点,识别ROM存储数据的控制数据流图结构。
[0047]ROM存储数据的⑶FG结构是已有概念。
[0048]识别ROM存储数据的读取⑶FG结构过程也从根节点开始,遍历读逻辑的所有后继节点,在这个过程中需要分同步和异步、存储阵列(memory-array)方式和直接数据方式。对于同步ROM需要去除和同步相关的节点和控制;对于存储阵列方式,直接从数据读节点提取数据输出,并构建ROM的读结构;如果是直接赋值方式,则需要借助于上一步骤中提取出的地址节点,构建ROM读结构。
[0049]步骤b5)根据识别出的ROM存储数据的预置控制数据流图结构和识别出的ROM存储数据的控制数据流图结构,构建ROM的控制数据流图节点。
[0050]控制数据流图节点是已有概念。
[0051]具体的,综合上述步骤中识别提取的ROM结构,构建一个描述ROM外部结构和内部存储的⑶FG节点,该节点包含ROM的存储数据、地址值、数据和地址的对应表、以及ROM的外部结构数据,如图8所示,为一个异步的、有en控制的if-else类型ROM的识别前后的⑶FG结构图。该节点传递到RTL综合的工艺映射就可以完成ROM的工艺映射。
[0052]在步骤c中,根据构建的ROM的控制数据流图节点,将所述ROM映射到映射库中的目标ROM单元。具体地:
[0053]子步骤Cl.根据构建的ROM的控制数据流图节点,识别ROM的结构模式,所述结构模式分为异步地址+异步数据读出、异步地址+同步数据读出、同步地址+异步数据读出、同步地址+同步数据读出。
[0054]根据构建的ROM的控制数据流图节点识别ROM属于哪一种结构模式,是已有技术。
[0055]另外,对于映射库中的每一目标ROM单元,也都将其设置为异步地址+异步数据读出、异步地址+同步数据读出、同步地址+异步数据读出、同步地址+同步数据读出四种模式中的一种。
[0056]子步骤C2.在映射库中已设置了结构模式的目标ROM单元中,寻找与识别出的ROM的结构模式一致的目标ROM单元。
[0057]具体的,从映射库中的目标ROM单元中,依据模式是否相同的原则,找到和ROM模式一致的目标ROM单元。
[0058]子步骤c3.将ROM绑定到与识别出的ROM的结构模式一致的目标ROM单元之一,从而输出映射网表。
[0059]具体的,将源ROM绑定到与识别出的ROM的结构模式一致的目标ROM单元之一中,包括外部连接的绑定和源ROM中存储数据的绑定,如图9所示。进一步的,当待绑定ROM的面积大于二倍的匹配的目标ROM元件的面积时,需要对待绑定ROM做拆分。
[0060]然后,输出映射网表。映射网表是已有概念。生成映射网表是已有技术。
[0061]通过这一步就最终实现了 FPGA RTL综合中行为级ROM描述到ROM目标工艺库的映射。
[0062]在步骤c3中,还可以包括:计算与识别出的ROM的结构模式一致的所有目标ROM单元的成本,将ROM绑定到成本最小的目标ROM单元。
[0063]即,如果在映射库中和源ROM匹配的目标ROM单元不止一个,因此需要选出最优匹配的目标单元一Best-T-ROM,即所用面积最小的匹配单元。
[0064]与现有技术相比,本发明具有以下优点:通过ROM识别和映射,实现了 FPGA RTL综合中行为级ROM描述到ROM目标工艺库的映射,使得处理后的ROM在FPGA的ROM宏单元上实现,达到和Synplify综合工具相同的效果。
[0065]虽然关于示例实施例及其优点已经详细说明,应当理解在不脱离本发明的精神和所附权利要求限定的保护范围的情况下,可以对这些实施例进行各种变化、替换和修改。对于其他例子,本领域的普通技术人员应当容易理解在保持本发明保护范围内的同时,工艺步骤的次序可以变化。
[0066]此外,本发明的应用范围不局限于说明书中描述的特定实施例的工艺、机构、制造、物质组成、手段、方法及步骤。从本发明的公开内容,作为本领域的普通技术人员将容易地理解,对于目前已存在或者以后即将开发出的工艺、机构、制造、物质组成、手段、方法或步骤,其中它们执行与本发明描述的对应实施例大体相同的功能或者获得大体相同的结果,依照本发明可以对它们进行应用。因此,本发明所附权利要求旨在将这些工艺、机构、制造、物质组成、手段、方法或步骤包含在其保护范围内。
【权利要求】
1.一种ROM工艺映射的处理方法,包括: a)从以硬件描述语言为格式的源描述中识别出ROM的基本结构,所述基本结构包括ifelse结构、case结构; b)根据识别出的ROM的基本结构,构建ROM的控制数据流图节点; c)根据构建的ROM的控制数据流图节点,将所述ROM映射到映射库中的目标ROM单元。
2.根据权利要求1所述的ROM工艺映射的处理方法,其中步骤b)包括: bl)从以硬件描述语言为格式的源描述,构建控制数据流图; b2)从构建的控制数据流图中,根据识别出的ROM的基本结构,识别控制数据流图中的根节点; b3)根据识别的根节点,识别ROM存储数据的预置控制数据流图结构;b4)根据识别的根节点,识别ROM存储数据的控制数据流图结构;b5)根据识别出的ROM存储数据的预置控制数据流图结构和识别出的ROM存储数据的控制数据流图结构,构建ROM的控制数据流图节点。
3.根据权利要求1所述的ROM工艺映射的处理方法,其中步骤c)包括: Cl)根据构建的ROM的控制数据流图节点,识别ROM的结构模式,所述结构模式分为异步地址+异步数据读出、异步地址+同步数据读出、同步地址+异步数据读出、同步地址+同步数据读出; c2)在映射库中已设置了结构模式的目标ROM单元中,寻找与识别出的ROM的结构模式一致的目标ROM单元; c3)将ROM绑定到与识别出的ROM的结构模式一致的目标ROM单元之一,从而输出映射网表。
4.根据权利要求1所述的ROM工艺映射的处理方法,其中步骤c3)包括: 计算与识别出的ROM的结构模式一致的所有目标ROM单元的成本,将ROM绑定到成本最小的目标ROM单元。
【文档编号】G06F17/50GK104361171SQ201410645000
【公开日】2015年2月18日 申请日期:2014年11月7日 优先权日:2014年11月7日
【发明者】李艳, 张东晓, 于芳 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1