一种物理BRAM匹配方法与流程

文档序号:17079980发布日期:2019-03-09 00:08阅读:299来源:国知局
本申请涉及集成电路领域,特别涉及一种物理bram匹配方法。
背景技术
::在fpga中,clb的四个输入查找表(lut)可以配置成一个16x1bit同步ram,同一单元的2个luts片可以配置成一个16x2bit或32x1bit同步ram,或者一个16x1bit双端口同步ram。但其容量低,不能满足用户要求。每块bram有4096个存储胞元,每个端口拥有独立的控制信号,使得bram的每个端口均可以独立地以特定的数据宽度配置成可读写、只读写或只写端口,并提供了内嵌的总线宽度转换功能。一般情况下bram是按每5个排成一列,bram列上有特殊的布线资源,使得可以利用最小的布线时延将块状ram串接起来。这样只需要牺牲比使用普通的布线通道更少的时序,从而实现更宽或者更深的ram结构。但一旦bram资源比较紧张,或者用光所有bram,集成电路的性能一般会下降,甚至出现通道(route)不通的情况。灵活并合理的运用bram和分布式ram,可以有效利用fpga资源,提升系统性能。技术实现要素:本申请的目的在于提供一种物理bram匹配方法,解决了在只使用物理bram且不增加其它逻辑电路的情况下,优化逻辑ram,使得优化结果对最终集成电路的时序影响最小,很大程度上提高了集成电路的性能。为了解决上述问题,本申请公开了一种物理bram端口的匹配方法,包括以下步骤:步骤101:获取rtl电路中的任意一个逻辑ram,将该逻辑ram中的所有读端口和写端口放入队列;步骤102:根据预先设定的物理bram约束条件,判断该逻辑ram是否能用一个物理bram匹配实现,同时记录下判断结果,若是则执行步骤103,否则使用fpga通用逻辑单元实现该逻辑ram并执行步骤108;步骤103:从该队列中提取出作为第一端口的一个读端口或写端口;步骤104:将该第一端口映射到该物理bram的一个端口上;步骤105:根据该物理bram约束条件,判断该队列中是否存在能够合并到该第一端口的第二端口,若是则执行步骤106,否则执行步骤107;步骤106:从该队列中提取出该第二端口,并合并到该第一端口;步骤107:判断该队列中是否存在剩余的读端口或写端口,若是则执行步骤103,否则执行步骤108;步骤108:用该物理bram的实现或该通用逻辑单元的实现替换原来该逻辑ram。在一个优选例中,还包括步骤109,该步骤109包括:检查电路中是否还存在可优化的该逻辑ram,若是则执行该步骤101,否则执行结束。在一个优选例中,该约束条件包括:同一个端口能够通过相同的地址,同时进行读操作和写操作。在一个优选例中,该一个物理bram拥有n个端口,其中n是自然数,该物理bram的一个端口同时支持读和写操作或者只支持读或写操作。在一个优选例中,该一个逻辑ram是x个写端口和y个读端口的ram,其中x和y为自然数。在一个优选例中,该步骤102中该逻辑ram不能用一个物理bram匹配实现的情况包括:该物理bram只存在一个端口且只支持一个地址进行读写,但逻辑ram却需要不同的读写地址才能实现。在一个优选例中,该步骤101包括以下子步骤:获取rtl电路中的任意一个逻辑ram,并提取该逻辑ram中的读端口和写端口信息记录在对应的读端口或写端口上;其中,该信息包括地址、数据和使能状态;将该读端口和写端口放入该队列。在一个优选例中,该步骤102是对该物理bram的不同约束条件的检查,对于新的物理bram类型或新的物理bram约束条件,需要在步骤102中的该预先设定的物理bram约束条件做替换。本申请还公开了一种物理bram端口的匹配系统,包括:存储器,用于存储计算机可执行指令;以及,处理器,用于在执行该计算机可执行指令时实现如前文描述的方法中的步骤。本申请还公开了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。本申请实施方式中,通过根据预先设定的物理bram约束条件,判断逻辑ram是否能用一个物理bram匹配实现,并通过该判断结果,提取该逻辑ram一个读端口或写端口,并将所述读端口或写端口映射到所述物理bram端口上,然后判断并提取该队列中存在的能够合并到所述读端口或写端口的其它读端口或写端口,将所述读端口或写端口合并映射到所述物理bram端口上,最后用新的物理bram代替逻辑ram实现读操作和写操作;如此循环地,寻找新的逻辑ram,并将其按上述步骤映射到物理bram中;如此便解决了在只使用物理bram且不增加其它逻辑电路的情况下,通过合理匹配优化了逻辑ram,使得优化结果对最终电路的时序影响最小,如此合理分配物理bram资源,大大增加了系统性能的稳定性。本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述
发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征a+b+c,在另一个例子中公开了特征a+b+d+e,而特征c和d是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征e技术上可以与特征c相组合,则,a+b+c+d的方案因技术不可行而应当不被视为已经记载,而a+b+c+e的方案应当视为已经被记载。附图说明图1是根据本申请第一实施方式的一种物理bram匹配方法流程示意图图2是根据本申请第一实施方式的具体实例中物理bram端口关系示意图具体实施方式在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。部分概念的说明:fpga:fieldprogrammablegatearray,现场可编程逻辑阵列。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。rtl:register-transferlevel,寄存器传输级。它是一种对同步数位电路的抽象模型,这种模型是根据数字信号在硬件寄存器、存储器、组合逻辑装置和总线等逻辑单元之间的流动,以及其逻辑代数运作方式来确定的。ram:random-accessmemory,随机存取存储器。用于存储数据的逻辑单元,可通过地址读写数据。端口:port。指ram的一组输入输出信号。读端口:readport。用于实现ram数据的读取操作的一组输入输出信号。写端口:writeport。用于实现ram数据的写入操作的一组输入输出信号。bram:blockrandomaccessmemory,块随机存取存储器。主要应用于构造数据高速缓冲存储器、深的fifo和缓冲器等。逻辑ram:用户在电路中行为描述出来的随机存取存储器,或者rtl级直接调用的随机存取存储器。物理bram:fpga器件上特定的bram。通用逻辑单元:包括lut、寄存器等逻辑单元。lut:lookuptable,查找表。在计算机科学中,查找表是用简单的查询操作替换运行时计算的数组或者关联数组这样的数据结构。寄存器(register):是中央处理器内的其中组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。本申请的第一实施方式涉及一种物理bram匹配方法,其流程如图1所示,该方法包括以下步骤:步骤101:获取rtl电路中的任意一个逻辑ram,将该逻辑ram中的所有读端口和写端口放入队列l;步骤102:根据预先设定的物理bram约束条件,判断该逻辑ram是否能用一个物理bram匹配实现,同时记录下判断结果,若是则执行步骤103,否则“使用fpga通用逻辑单元实现该逻辑ram”(此过程设置在图中步骤框110中)并执行步骤108;步骤103:从该队列l中提取出作为第一端口的一个读端口或写端口;步骤104:将该第一端口映射到该物理bram的一个端口上;步骤105:根据该物理bram约束条件,判断该队列l中是否存在能够合并到该第一端口的第二端口,若是则执行步骤106,否则执行步骤107;步骤106:从该队列中提取出该第二端口,并合并到该第一端口;步骤107:判断该队列中是否存在剩余的读端口或写端口,若是则执行步骤103,否则执行步骤108;步骤108:用该物理bram的实现或该通用逻辑单元的实现替换原来该逻辑ram。可选地,还包括步骤109,该步骤109包括:检查电路中是否还存在可优化的该逻辑ram,若是则执行该步骤101,否则执行结束。可选地,该第二端口是队列l中能够与该第一端口合并的读端口或写端口,且该第二端口的数量不限于1个,可以是n(n≥2)个;如果该第二端口的数量为n个,那么需要执行n次提取和合并(步骤106),直至没有可以再合并的端口,那么再执行步骤107。可选地,鉴于不同fpga厂商的不同器件中,物理bram的约束条件不尽相同,本申请将物理bram的不同约束条件(包括对端口个数、地址、数据、读写等)的检查,集中放在步骤102中处理,并设置为“预先设定的物理bram约束条件”,减少对方法中其它步骤的影响,同时记录下检查结果,以便在步骤105和106中进行端口合并时使用。其它约束包括但不限于以下内容:1)同一个端口可以通过相同的地址,同时进行读操作和写操作,2)地址需要寄存器缓存;以及,其它影响读写端口是否可以合并的bram输入输出约束;当需要支持新的物理bram类型或新的物理bram约束条件时,只需要在步骤102中的实现中做相应的调整。可选地,该一个物理bram拥有n个端口,其中n是自然数,该物理bram的一个端口可以是但不限于:(1)同时支持读操作和写操作;(2)只支持读或写操作。可选地,该一个逻辑ram是x个写端口和y个读端口的ram,其中x和y为自然数。可选地,该步骤102中该逻辑ram不能用一个物理bram匹配实现的情况包括但不限于:该物理bram只存在一个端口且只支持一个地址进行读写,但逻辑ram却需要不同的读写地址才能实现。可选地,该步骤101包括以下子步骤:步骤1:获取rtl电路中的任意一个逻辑ram,并提取该逻辑ram中的读端口和写端口信息记录在对应的读端口或写端口上;其中,该信息包括地址、数据和使能状态;步骤2:将该读端口和写端口放入该队列l中。为了能够更好地理解本申请的技术方案,下面结合一个具体的例子来进行说明,本例中做以下设定:(1)逻辑ram(记为ram1)拥有2个写端口和2个读端口;(2)物理bram采用端口个数为2的物理bram实现ram1(因为目前主流的fpga物理bram的端口个数为2);(3)设定物理bram的约束条件为:同一个端口可使用相同的地址进行读操作和写操作。其中,ram1的读、写端口信息如表1所示;表1逻辑ram读写端口信息端口读写类型地址数据使能write_port1写addr1din1we1write_port2写addr2din2we2read_port1读addr1dout1re1read_port2读addr2dout2re2所以本例是将一个拥有2个读端口和2个写端口的逻辑ram自动地匹配到一个拥有2个端口的物理bram的方法,具体步骤如下:步骤101,选取一个逻辑ram,如本例中的ram1,提取ram1中的读端口和写端口信息,并记录在相应的读端口和写端口上;记录读端口和写端口的队列l如表2所示;表2读写端口信息记录write_port1={addr1,din1,we1}write_port2={addr2,din2,we2}read_port1={addr1,dout1,re1}read_port2={addr2,dout2,re2}步骤102,根据物理bram的约束条件“同一个端口可使用相同的地址进行读操作和写操”,可以判断出该逻辑ram可以使用一个物理bram实现,则继续执行步骤103;步骤103,从读端口和写端口队列l中提取出第一个端口write_port1,并继续执行步骤104;此时队列l中的读写端口如表3所示;表3第一轮取出第一个写端口后的队列write_port2={addr2,din2,we2}read_port1={addr1,dout1,re1}read_port2={addr2,dout2,re2}步骤104,将写端口write_port1映射到物理bram端口,记为port1;步骤105,根据“同一个端口可使用相同的地址进行读操作和写操作”的物理bram约束条件,检查队列l中存在一个读端口read_port1,可以合并到物理bram端口port1上;步骤106,从队列l中提取出读端口read_port1,并合并到写端口write_port1(即,物理bram端口port1上);此时队列l中的读端口和写端口如表4所示;表4第一轮读写端口优化后的队列write_port2={addr2,din2,we2}read_port2={addr2,dout2,re2}步骤107,检查到队列l中还存在剩余的读端口或写端口,如表4所示;则跳转到步骤103;步骤103,从读写端口队列l中提取出第一个端口write_port2,并继续执行步骤104,此时,队列l中的读写端口如表5所示;表5第二轮取出一个写端口后的队列read_port2={addr2,dout2,re2}步骤104,将写端口write_port2映射到物理bram端口,记为port2;步骤105,同时根据“同一个端口可使用相同的地址进行读操作和写操作”的物理bram约束条件,检查到队列l中存在一个读端口read_port2,可以合并到写端口write_port2(即,物理bram端口port2)上;步骤106,从队列l中提取出读端口read_port1,并合并到写端口write_port2(即,物理bram端口port2)上,此时队列l中没有任何读写端口;步骤107,检查队列l中已经不存在任何读端口或写端口,继续下一步步骤108,使用该物理bram的实现,替换原来的逻辑ram,即ram1。同时连接对应的输入输出信号,并继续下一步;产生的物理bram如图2所示;步骤109,检查电路中不存在其它可优化的逻辑ram;最后,ram优化过程结束。本申请第二实施方式涉及了一种物理bram端口的匹配系统,包括:存储器,用于存储计算机可执行指令;以及,处理器,用于在执行该计算机可执行指令时实现如前文描述的方法中的步骤。本申请第三实施方式涉及了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。需要说明的是,本领域技术人员应当理解,本发明实施例还提供一种计算机存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本发明的各方法实施方式。此外,本发明实施例还提供一种物理bram端口的匹配系统,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本申请的上述公开内容之后,本领域技术人员可以对本申请作各种改动或修改,这些等价形式同样落于本申请所要求保护的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1