CN114282471A - 一种针对fpga自适应逻辑模块的装箱方法 - Google Patents
一种针对fpga自适应逻辑模块的装箱方法 Download PDFInfo
- Publication number
- CN114282471A CN114282471A CN202111373586.2A CN202111373586A CN114282471A CN 114282471 A CN114282471 A CN 114282471A CN 202111373586 A CN202111373586 A CN 202111373586A CN 114282471 A CN114282471 A CN 114282471A
- Authority
- CN
- China
- Prior art keywords
- boxing
- logic
- adaptive
- self
- adaptive logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明公开了一种针对FPGA自适应逻辑模块的装箱方法,包括步骤:一、获取装箱输入;装箱输入包括用户设计的逻辑单元信息、用户电路的约束信息和装箱规则信息;二、执行装箱过程;所述装箱过程包括针对FPGA自适应逻辑模块结构,根据预装箱模式将组合逻辑单元和寄存器单元预装箱到自适应逻辑模块单元中的预装箱过程和将预装箱的自适应逻辑模块单元装箱到自适应逻辑模块簇中的装箱过程;三、输出装箱结果:对装箱后的数据进行处理,并将处理得到的结果写回到用户设计模型中,并输出装箱结果文件。本发明操作简单,能够辅助FPGA硬件架构师设计低成本、高性能的FPGA芯片,还能够扩展到FPGA其他类型的模块中。
Description
技术领域
本发明属于可编程逻辑器件(Field Programmable Gate Array,FPGA)的软件设计技术领域,具体涉及一种针对FPGA自适应逻辑模块的装箱方法。
背景技术
逻辑阵列模块(Logic Array Block,LAB)和ALM是FPGA器件结构中逻辑的基本构造模块。LAB由ALM构成,通过配置这些ALM能够实现逻辑功能、算术功能和寄存器功能。每个LAB均由十个ALM、各种进位链、共享算术链、LAB控制信号、本地互联和寄存器链连接线组成。FPGA EDA软件将相关的逻辑装到LAB中,并将LAB布局到FPGA芯片上,通过使用本地的、共享算术链和寄存器链的连接来实现电路的功能。
FPGA EDA装箱处理模块是FPGA应用电路设计软件的重要配置项。支持ALM结构的装箱模块,其主要功能是:获取装箱规则数据和用户设计(User Design Model,UDM)中的基本逻辑单元信息,根据相应的预装箱算法,对逻辑单元进行预装箱,生成ALM模块,再使用装箱算法,生成带有LAB信息的UDM数据结构,供后续的布局和布线等模块使用。基于ALM结构的装箱算法与传统的LE装箱不同,基于LE结构的装箱只需根据综合映射后网表将若干LE装箱成CLB即可,这是因为LE是最小逻辑单元、综合映射后网表是基于LE结构描述的电路;而ALM结构内部包括两个组合LUT逻辑块和两个寄存FF逻辑块,组合逻辑块和寄存逻辑块才是最小逻辑单元,因此,装箱过程将包括两个阶段,先将若干LUT和FF装到ALM结构中,再将ALM装到CLB中,均受到ALM用法的约束。现有技术中,还缺乏实用有效的针对FPGA自适应逻辑模块的装箱方法。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种针对FPGA自适应逻辑模块的装箱方法,其设计新颖合理,操作简单,能够辅助FPGA硬件架构师设计低成本、高性能的FPGA芯片,还能够扩展到FPGA其他类型的模块中,推广应用价值高。
为解决上述技术问题,本发明采用的技术方案是:一种针对FPGA自适应逻辑模块的装箱方法,该方法包括以下步骤:
步骤一、获取装箱输入;所述装箱输入包括用户设计的逻辑单元信息、用户电路的约束信息和装箱规则信息;
步骤二、执行装箱过程;所述装箱过程包括针对FPGA自适应逻辑模块结构,根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)预装箱到自适应逻辑模块单元(alm_molecule)中的预装箱过程和将预装箱的自适应逻辑模块单元(alm_molecule)装箱到自适应逻辑模块簇(alm_cluster)中的装箱过程;
步骤三、输出装箱结果:对装箱后的数据进行处理,并将处理得到的结果写回到用户设计模型(UDM)中,并输出装箱结果文件。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤一中所述获取装箱输入的具体过程为:
步骤101、读取用户设计的逻辑单元信息,包括逻辑单元的类型,信号的起点、终点,是否为内部信号;
步骤102、读取用户电路的约束信息,包括工程名、工程路径、顶层实体文件名、装箱规则文件、芯片名、装箱算法及策略;
步骤103、读取装箱规则信息,包括获取逻辑块和物理块的信息以及各逻辑块和物理块对应的端口信息,获取预装箱规则信息,获取正式装箱规则信息,获取逻辑块和物理块的端口映射信息。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤101中所述逻辑单元的类型包括组合逻辑单元和寄存器单元。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤103中所述逻辑块和物理块的信息包括四个层次的块信息(block信息),分别为逻辑单元(ATOM)、逻辑模块(MOLECULE)、逻辑块(LCBlock)、物理块(PhyBlock);
步骤103中所述预装箱规则信息包括不同预装箱模式下逻辑单元(ATOM)和与之对应的逻辑模块(MOLECULE)的端口映射关系;
步骤103中所述正式装箱规则信息包括不同装箱模式下逻辑模块(MOLECULE)和与之对应的逻辑块(LCBlock)的端口映射关系。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤二中所述预装箱模式包括标准模式、扩展LUT模式、算术模式、共享算术模式和LUT寄存器模式;
步骤二中所述根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)预装箱到自适应逻辑模块单元(alm_molecule)中的预装箱过程包括:
步骤A、分情况进行预装箱:
情况A1、当预装箱模式为算术模式时,按照进位信号进行预装箱;
情况A2、当预装箱模式为共享算术模式时,按照进位信号和共享信号进行预装箱;
情况A3、当预装箱模式为扩展LUT模式时,将输入数为7的组合逻辑单元(lcell_comb)作为单独的ALM进行预装箱;
情况A4、当预装箱模式为标准模式时,直接将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)预装箱到自适应逻辑模块单元(alm_molecule)中;
情况A5、当预装箱模式为LUT寄存器模式时,根据情况A1、情况A2、情况A3和情况A4的预装箱结果,将与组合逻辑单元(lcell_comb)相关联的寄存器单元(dffeas)预装箱到自适应逻辑模块(ALM)中;
步骤B、根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)的各个端口与自适应逻辑模块单元(alm_molecule)作映射;
步骤C、根据预装箱情况修改组合逻辑单元(lcell_comb)的查找表掩膜值(LUT_MASK值)。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤B中所述根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)的各个端口与自适应逻辑模块单元(alm_molecule)作映射的具体过程为:
步骤B1、选择一个未预装箱的组合逻辑单元(lcell_comb)作为新的自适应逻辑模块(ALM)的种子;
步骤B2、将未预装箱的组合逻辑单元(lcell_comb)按照与当前组合逻辑单元(lcell_comb)共享输入数的大小排序,并存入共享的组合逻辑单元(lcell_comb)集合中;
步骤B3、从集合中依次选择组合逻辑单元(lcell_comb)加入当前自适应逻辑模块(ALM)中,考察是否满足预装箱规则,当不满足预装箱规则时,选择集合中的下一个组合逻辑单元(lcell_comb),直到找到一个符合要求的组合逻辑单元(lcell_comb)为止;当电路中没有与当前组合逻辑单元(lcell_comb)存在信号连接的其他组合逻辑单元(lcell_comb)时,从所有未做预装箱的组合逻辑单元(lcell_comb)中找到一个满足预装箱规则的组合逻辑单元(lcell_comb)加入到当前自适应逻辑模块(ALM)中;
步骤B4、将与各组合逻辑单元(lcell_comb)相关联的寄存器单元(dffeas)装入对应的自适应逻辑模块(ALM)中。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤二中所述将预装箱的自适应逻辑模块单元(alm_molecule)装箱到自适应逻辑模块簇(alm_cluster)中的装箱过程包括以下三种情况的装箱:
情况D1、进位链的装箱:针对算术模式下的自适应逻辑模块单元(alm_molecule),按照进位信号进行装箱;
情况D2、共享链的装箱:针对共享算术模式下的自适应逻辑模块单元(alm_molecule),按照进位信号和共享信号进行装箱;
情况D3、除情况D1和情况D2外,进行基于代价函数的贪婪装箱:根据贪婪算法的思想,将未装箱的自适应逻辑模块单元(alm_molecule)按照吸引度的大小依次加入自适应逻辑模块簇(alm_cluster)中,直到自适应逻辑模块簇(alm_cluster)被装满为止。
上述的一种针对FPGA自适应逻辑模块的装箱方法,情况D1中所述针对算术模式下的自适应逻辑模块单元(alm_molecule),按照进位信号进行装箱的具体过程为:将位于进位链上的自适应逻辑模块(ALM)按照进位信号的顺序依次尝试加入逻辑阵列块(LAB)中,同时判断是否符合装箱约束,将符合装箱约束的自适应逻辑模块(ALM)装到1个逻辑阵列块(LAB)中,当不符合装箱约束条件时,新建1个逻辑阵列块(LAB),重复执行装箱操作,直到整条进位链上的ALM都装入逻辑阵列块(LAB)中为止。
上述的一种针对FPGA自适应逻辑模块的装箱方法,情况D2中所述针对共享算术模式下的自适应逻辑模块单元(alm_molecule),按照进位信号和共享信号进行装箱的具体过程为:将位于共享链上的自适应逻辑模块(ALM)按照共享进位信号的顺序依次尝试加入逻辑阵列块(LAB)中,同时判断是否符合装箱约束,将符合装箱约束的自适应逻辑模块(ALM)装到1个逻辑阵列块(LAB)中,当不符合装箱约束条件时,新建1个逻辑阵列块(LAB),重复执行装箱操作,直到整条共享链上的自适应逻辑模块(ALM)都装入逻辑阵列块(LAB)中为止。
上述的一种针对FPGA自适应逻辑模块的装箱方法,步骤三中所述对装箱后的数据进行处理的过程包括:
步骤301、设置装箱后各个信号的内部信号标志;
步骤302、设置装箱后各块(block)的参数值,包括子单元位置(subloc)、簇(cluster)的名称;
步骤303、进行装箱后的自适应逻辑模块单元(alm_molecule)和自适应逻辑模块簇(alm_cluster)的端口映射;
步骤304、进行装箱后的自适应逻辑模块簇(alm_cluster)和自适应逻辑模块物理块(alm_tile)的端口映射。
本发明与现有技术相比具有以下优点:本发明创新提出了一种针对FPGA自适应逻辑模块的装箱方法,设计新颖合理,操作简单,能够辅助FPGA硬件架构师设计低成本、高性能的FPGA芯片,还能够扩展到FPGA其他类型的模块中,推广应用价值高。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为FPGA自适应逻辑模块的结构示意图;
图2为lcell_comb的结构示意图;
图3为dffeas的结构示意图;
图4为ALM在LAB中的排布方式示意图;
图5为本发明针对FPGA自适应逻辑模块的装箱方法的方法流程框图;
图6所示为ALM的标准模式示意图;
图7所示为ALM的扩展LUT模式示意图;
图8所示为ALM的算术模式示意图;
图9所示为ALM的共享算术模式示意图;
图10所示为ALM的LUT寄存器模式示意图;
图11为本发明根据预装箱模式将lcell_comb和dffeas的各个端口与alm_molecule作映射的流程示意图;
图12为为本发明LUT_mask值的修改流程图;
图13为本发明针对算术模式下的alm_molecule,按照进位信号进行装箱的流程示意图;
图14为本发明针对共享算术模式的alm_molecule,按照进位信号和共享信号进行装箱的流程示意图;
图15为本发明基于代价函数的贪婪装箱的流程示意图;
图16为本发明装箱结果文件描述格式示意图。
具体实施方式
图1给出了FPGA自适应逻辑模块(Adaptive Logic Module,ALM)的结构示意图,ALM中包含了多种以LUT寄存器为基础的资源,可从自适应LUT(ALUT)和两个寄存器的组合来划分。通过使用这两个组合ALUT的8个输入,一个ALM能够实现这两个功能的各种组合。这一自适应性使ALM完全向后兼容4输入LUT体系结构。一个ALM也能够通过6个输入和某些7输入功能来实现任意功能。除了自适应基于LUT的资源,每个ALM还包括两个可编程的寄存器、两个专用完全加法器、一个进位链、一个共享算术链和一个寄存器链。通过这些专用资源,一个ALM能够有效地实现各种算术功能和移位寄存器。每个ALM能够驱动所有类型的互联:本地、行、列、进位链、共享算术链、寄存器链和直接链接。一个ALM包含两个可编程寄存器。每个寄存器具有数据、时钟、时钟使能、同步和异步清零、以及同步加载和清零输入。全局信号、通用I/O管脚或者内部逻辑能够驱动寄存器的时钟和清零控制信号。通用I/O管脚或者内部逻辑能够驱动时钟使能信号。对于组合逻辑功能,寄存器会被旁路,LUT的输出直接驱动到ALM的输出。每个ALM具有两组用于驱动本地、行和列布线资源的输出端。LUT、加法器或者寄存器输出能够驱动这些输出驱动器。对于每组输出驱动器,两个ALM输出能够驱动列、行或者直接链接布线连接。其中的一个ALM输出也能够驱动本地互联资源。这使得当寄存器驱动一个输出时,LUT或者加法器能够驱动另一个输出。这一称为寄存器封装(registerpacking)的特性可以提高器件的利用率,因为器件可以将寄存器和组合逻辑用于不相关的功能。另一种特殊的封装模式使寄存器输出能够反馈到同一ALM的LUT中,使寄存器能够使用自己的扇出LUT进行封装。这对另一种机制提供了改善的布局布线。ALM也能够驱动寄存的LUT以及未寄存的LUT或者加法器输出。每个ALM都有8个分段式查找表(LUT)输入、两个专用嵌入式加法器、两个专用寄存器和另外的增强逻辑。
FPGA自适应逻辑模块(ALM)主要由lcell_comb和dffeas两部分组成,图2给出了lcell_comb的结构示意图,lcell_comb主要由lut和全加器组成,lut由4个4输入的lut两两组成一对,后面接分成两组的6个2选1mux,构成两个4选1,分成两个输出;全加器是专用的加法器,能进行普通的加法,也能配合lut进行3个数的加法,加法器采用carry-skip结构,来加快运算速度。图3给出了dffeas的结构示意图,dffeas可以支持异步复位,同步复位和同步置数功能,优先级依次降低;d端输入来源可以是lcell_comb的输出,也可以是cascade的输入,register_packing的输入是asdata端。
一个逻辑阵列模块(Logic Array Block,LAB)中包含10个ALM,每个ALM可以由2个lcell_comb和2个dffeas组成。ALM在LAB中的排布方式如图4所示,编号从0~9,ALM内部的lcell_comb编号为偶数,dffeas的编号为奇数,lcell_comb和dffeas加起来共40个单元,编号从0~39。
ALM中基本逻辑单元的端口定义如表1所示:
表1ALM中基本逻辑单元的端口定义表
ALM包含lcell_comb和dffeas两种单元。lcell_comb为组合单元,其输入端口包括数据端口(dataa、datab、datac、datad、datae、dataf、datag)、进位输入端口(cin),输出端口包括组合输出端口(combout)、进位输出端口(cout)。dffeas为寄存器单元,其输入端口包括数据端口(d)、时钟端口(clk)、清零端口(clrn)、时钟使能端口(ena)、寄存输入端口(asdata)、异步置数端口(aload)、同步清零端口(sclr)、同步置数端口(sload),输出端口包括寄存输出端口(q)。
ALM中基本逻辑模块的端口定义如表2所示:
表2ALM中基本逻辑模块的端口定义表
ALM模块的端口包括输入端口和输出端口两种。输入端口包含8个数据端口(dataa、datab、datac、datad、datae0、dataf0、datae1、dataf1),2个异步清零端口(nclr0、nclr1),1个异步置数端口(aload),1个同步清零端口(sclr),1个同步置数端口(sload),2个时钟端口(clk0,clk1),2个时钟使能端口(ena0,ena1),1个进位输入端口(cin),1个寄存器控制端口(regscan),1个寄存器级联输入端口(regchain_i),1个共享算术输入端口(shared_arith_i),输出端口包括1个寄存级联输出端口(regchain_o),1个进位输出端口(cout),1个共享算术输出端口(shared_arith_out),6个输出端口(alm_out1d、alm_out1u、alm_out2d、alm_out2u、alm_out0d、alm_out0u)。
如图5所示,本发明的针对FPGA自适应逻辑模块的装箱方法,包括以下步骤:
步骤一、获取装箱输入;所述装箱输入包括用户设计的逻辑单元信息(UserDesign Model,UDM)、用户电路的约束信息(User Constraint Model,UCM)和装箱规则信息(pack_guide.xml);
本实施例中,步骤一中所述获取装箱输入的具体过程为:
步骤101、读取用户设计的逻辑单元(Atom_Set)信息,包括逻辑单元的类型,信号的起点、终点,是否为内部信号;
本实施例中,步骤101中所述逻辑单元的类型包括组合逻辑单元(lcell_comb)和寄存器单元(dffeas)。
步骤102、读取用户电路的约束(Constraint_Set)信息,包括工程名、工程路径、顶层实体文件名、装箱规则文件、芯片名、装箱算法及策略;
步骤103、读取装箱规则信息,包括获取逻辑块和物理块的信息以及各逻辑块和物理块对应的端口信息,获取预装箱规则信息,获取正式装箱规则信息,获取逻辑块和物理块的端口映射信息。
本实施例中,步骤103中所述逻辑块和物理块的信息包括四个层次的块信息(block信息),分别为逻辑单元(ATOM)、逻辑模块(MOLECULE)、逻辑块(LCBlock)、物理块(PhyBlock);
本实施例中,步骤103中所述预装箱规则信息包括不同预装箱模式下逻辑单元(ATOM)和与之对应的逻辑模块(MOLECULE)的端口映射关系;
本实施例中,步骤103中所述正式装箱规则信息包括不同装箱模式下逻辑模块(MOLECULE)和与之对应的逻辑块(LCBlock)的端口映射关系。
步骤二、执行装箱过程;所述装箱过程包括针对FPGA自适应逻辑模块(AdaptiveLogic Module,ALM)结构,根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)预装箱到自适应逻辑模块单元(alm_molecule)中的预装箱过程和将预装箱的自适应逻辑模块单元(alm_molecule)装箱到自适应逻辑模块簇(alm_cluster)中的装箱过程;
即执行预装箱算法,生成预装箱后的自适应逻辑模块单元(alm_molecule),执行装箱算法,生成装箱后的自适应逻辑模块簇(alm_cluster)。
本实施例中,步骤二中所述预装箱模式包括标准模式(Normal)、扩展LUT模式(Extended LUT)、算术模式(Arithmetic)、共享算术模式(Shared Arithmetic)和LUT寄存器模式(LUT-Register);
具体实施时,每一种模式以不同的方式使用ALM资源;在每一种模式中,ALM的十一个输入被指向不同的目的地来实现所需的逻辑功能(这十一个输入包括来自LAB本地互联的8个数据输入,来自前一个ALM或者LAB的carry-in和共享算术链连接,以及寄存器链连接);全LAB信号对寄存器提供了时钟、异步清零、同步清零、同步加载和时钟使能控制信号。这些全LAB信号在所有的ALM模式中可用。
图6所示为标准模式(Normal),适用于一般的逻辑应用和组合功能。在此模式中,来自LAB本地互联的8个数据输入是组合逻辑的输入。标准模式支持在一个StratixIVALM中实现两个功能,或者一个功能含有6输入。ALM支持某些完全独立的组合功能,以及具有共同输入的各种组合功能。
图7所示为扩展LUT模式(ExtendedLUT),来实现特定的一组7输入的功能。这一特定组必须是一个2-to-1多路复用器,由共享四个输入的两个任意5输入的功能进行驱动。在此模式中,如果7输入功能是未寄存的,那么未使用的第8个输入可用于寄存器封装。
图8所示为算术模式(Arithmetic),是实现加法器、计数器、累加器、全奇偶校验功能以及比较器的理想选择。算术模式中的ALM使用两组2个四输入LUT以及两个专用全加法器。专用加法器支持LUT用于执行预加法器逻辑;因此,每一个加法器均能够对2个四输入功能的输出进行相加。四个LUT共享dataa和datab输入。carry-in信号驱动到adder0,来自adder0的carry-out信号驱动到adder1的carry-in。来自adder1的carry-out驱动到LAB中下一个ALM的adder0。算术模式中的ALM能够驱动寄存的加法器输出和/或未寄存的加法器输出。在算术模式中运行时,ALM支持加法器的进位输出与组合逻辑输出的同时使用。在此操作中,加法器输出被忽略。运用此功能时,一起使用加法器与组合逻辑能够节省高达50%的资源。此外,算术模式也支持时钟使能、计数器使能、同步上/下控制、加/减控制、同步清零和同步加载功能。LAB本地互联数据输入会生成时钟使能、计数器使能、同步上/下和加/减控制信号。对于在ALM中的4个LUT之间共享的输入而言,这些控制信号是很好的选择。同步清零和同步加载选项是影响LAB中所有寄存器的全LAB信号。这些信号在每个寄存器上也能够被单独地禁用或使能。进位链提供了一个在算术或者共享算术模式中的专用加法器之间的快速进位功能。2位进位选择特性使ALM中的进位链传输延迟减少了一半。进位可以开始于LAB中的第一个ALM,或者第五个ALM。最终的carry-out信号会被传送到ALM中,并驱动到本地、行或列互联。
图9所示为共享算术模式(SharedArithmetic),ALM能够实现ALM中的3输入加法运算。在此模式中,通过4个4输入LUT对ALM进行配置。每个LUT将计算三个输入的和,或者计算三个输入的进位。通过使用一个称为共享算术链的专用连接将进位计算的输出提供给下个一个加法器(可用于同一ALM中的adder1,或是下一个ALM中的adder0)。通过减少用于实现加法器树的求和步骤,此共享算术链能够显著地提高加法器树的性能。增强算术模式中的共享算术链使ALM能够实现三输入加法运算,从而显著地减少了用于实现大型加法器树或者相关器功能所需要的资源。共享算术链开始于LAB中的第一个ALM或者第六个ALM。
图10为LUT寄存器模式(LUT-Register),支持ALM中的第三个寄存器能力。两个内部反馈环路使组合ALUT1能够实现第三个寄存器所需要的主锁存器,并能够使组合ALUT0实现第三个寄存器所需要的从锁存器。LUT寄存器与顶部专用寄存器共享其时钟、时钟使能以及异步清零源。
步骤二中所述根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)预装箱到自适应逻辑模块单元(alm_molecule)中的预装箱过程包括:
步骤A、分情况进行预装箱:
情况A1、当预装箱模式为算术模式(Arithmetic)时,按照进位信号(端口cin、cout上的信号)进行预装箱;此种情况为关于ALM结构进位链的预装箱;
情况A2、当预装箱模式为共享算术模式(Shared Arithmetic)时(lcell_comb的参数shared_arith=ON),按照进位信号(端口cin、cout上的信号)和共享信号(端口sharein、shareout上的信号)进行预装箱;此种情况为关于ALM结构共享链的预装箱,该模式下进位信号和共享信号同时存在;
情况A3、当预装箱模式为扩展LUT模式(Extended LUT)时,将输入数为7(参数extended_lut=ON)的组合逻辑单元(lcell_comb)作为单独的ALM进行预装箱;
情况A4、当预装箱模式为标准模式(Normal)时(即除以上情况A1、情况A2和情况A3的情况),直接将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)预装箱到自适应逻辑模块单元(alm_molecule)中;
情况A5、当预装箱模式为LUT寄存器模式(LUT-Register)时,根据情况A1、情况A2、情况A3和情况A4的预装箱结果,将与组合逻辑单元(lcell_comb)相关联的寄存器单元(dffeas)预装箱到自适应逻辑模块(ALM)中;
步骤B、根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)的各个端口与自适应逻辑模块单元(alm_molecule)作映射;
本实施例中,如图11所示,步骤B中所述根据预装箱模式将组合逻辑单元(lcell_comb)和寄存器单元(dffeas)的各个端口与自适应逻辑模块单元(alm_molecule)作映射的具体过程为:
步骤B1、选择一个未预装箱的组合逻辑单元(lcell_comb)作为新的自适应逻辑模块(ALM)的种子;
步骤B2、将未预装箱的组合逻辑单元(lcell_comb)按照与当前组合逻辑单元(lcell_comb)共享输入数的大小排序,并存入共享的组合逻辑单元(lcell_comb)集合中;
步骤B3、从集合中依次选择组合逻辑单元(lcell_comb)加入当前自适应逻辑模块(ALM)中,考察是否满足预装箱规则,当不满足预装箱规则时,选择集合中的下一个组合逻辑单元(lcell_comb),直到找到一个符合要求的组合逻辑单元(lcell_comb)为止;当电路中没有与当前组合逻辑单元(lcell_comb)存在信号连接的其他组合逻辑单元(lcell_comb)时,从所有未做预装箱的组合逻辑单元(lcell_comb)中找到一个满足预装箱规则的组合逻辑单元(lcell_comb)加入到当前自适应逻辑模块(ALM)中;
步骤B4、将与各组合逻辑单元(lcell_comb)相关联的寄存器单元(dffeas)装入对应的自适应逻辑模块(ALM)中。
步骤C、根据预装箱情况(即lcell_comb的信号所连端口有变化时)修改组合逻辑单元(lcell_comb)的查找表掩膜值(LUT_MASK值)。
lcell_comb在预装箱过程中,为满足预装箱模式执行的数据端口交换操作,端口交换会引起LUT_mask值的改变。LUT_mask共64bit,更换lcell中的两个端口会导致LUT_mask中的32bit发生变化,变化规则为:
原有LUT mask:m[63:0]
输入端按照地址标记为:{f,e,d,c,b,a}=A[5:0]
lcell输出为:LUTOUT=m[A[5]*32+A[4]*16+A[3]*8+A[2]*4+A[1]*2+A[0]]
若更换A[i]和A[j]后的lut_mask为:m’[63:0]
lcell输出为:LUTOUT=m’[A[5]*32+...+A[i]*2j+A[j]*2i...+A[0]]
m*[A[5]*32+...+A[i]*2j+A[j]*2i...+A[0]]=
m[A[5]*32+A[4]*16+A[3]*8+A[2]*4+A[1]*2+A[0]]
根据以上变化规则,LUT_mask值的修改流程图如图12所示。
本实施例中,步骤二中所述将预装箱的自适应逻辑模块单元(alm_molecule)装箱到自适应逻辑模块簇(alm_cluster)中的装箱过程包括以下三种情况的装箱:
情况D1、进位链(算术模式)的装箱:针对算术模式(Arithmetic)下的自适应逻辑模块单元(alm_molecule),按照进位信号(端口cin、cout上的信号)进行装箱;
本实施例中,如图13所示,情况D1中所述针对算术模式(Arithmetic)下的自适应逻辑模块单元(alm_molecule),按照进位信号(端口cin、cout上的信号)进行装箱的具体过程为:根据进位链特有的结构,将位于进位链上的ALM按照进位信号的顺序依次尝试加入LAB中,同时判断是否符合装箱约束,将符合装箱约束的ALM装到1个LAB中,当不符合装箱约束条件时,新建1个LAB,重复执行装箱操作,直到整条进位链上的ALM都装入LAB中为止。
情况D2、共享链(共享算术模式)的装箱:针对共享算术模式(lcell_comb的参数shared_arith=ON)下的自适应逻辑模块单元(alm_molecule),按照进位信号(端口cin、cout上的信号)和共享信号(端口sharein、shareout上的信号)进行装箱;
本实施例中,如图14所示,情况D2中所述针对共享算术模式(lcell_comb的参数shared_arith=ON)下的自适应逻辑模块单元(alm_molecule),按照进位信号(端口cin、cout上的信号)和共享信号(端口sharein、shareout上的信号)进行装箱的具体过程为:根据共享链特有的结构,将位于共享链上的ALM按照共享进位信号的顺序依次尝试加入LAB中,同时判断是否符合装箱约束,将符合装箱约束的ALM装到1个LAB中,当不符合装箱约束条件时,新建1个LAB,重复执行装箱操作,直到整条共享链上的ALM都装入LAB中为止。
具体实施时,不同的共享模式下ALM与lcell_comb的端口映射如表3-1、表3-2、表3-3和表3-4所示:
表3-1不同共享模式下ALM端口与lcell_comb的端口映射
表3-2不同共享模式下ALM端口与lcell_comb的端口映射
表3-3不同共享模式下ALM端口与lcell_comb的端口映射
表3-4不同共享模式下ALM端口与lcell_comb的端口映射
1个ALM中可以包含2个lcell_comb,2个lcell_comb的数据端口可以共享,也可以独立,但需要满足一定的预装箱规则,即2个lcell_comb的数据输入总和不能超过8,共享信号的端口须为特定的端口。将2个lcell_comb装到1个ALM中,分为以下几种情况:独立4输入LUT;双4输入LUT,1个共享输入端口;双4输入LUT,2个共享输入端;双5输入LUT,3个共享输入端;双5输入LUT,2个共享输入端;独立5LUT和3LUT;5LUT和4LUT,1个共享输入端;双6输入LUT,4个共享输入端;双5输入LUT,4个共享输入端;6输入LUT;扩展模式7输入LUT。
情况D3、除情况D1和情况D2外,进行基于代价函数的贪婪装箱:根据贪婪算法的思想,将未装箱的自适应逻辑模块单元(alm_molecule)按照吸引度的大小依次加入自适应逻辑模块簇(alm_cluster)中,直到自适应逻辑模块簇(alm_cluster)被装满为止。
具体实施时,如图15所示,首先选择一个未装箱的ALM作为新LAB的种子,再将未装箱的ALM按照吸引度的大小依次加入,直到LAB被填满为止。代价函数既需要考虑逻辑块中逻辑单元的数量,也需要考虑减少关键路径上逻辑块之间连接的数目。
具体实施时,当满足相应的装箱约束条件时,说明该alm_cluster已经装满。
步骤三、输出装箱结果:对装箱后的数据进行处理,并将处理得到的结果写回到用户设计模型(UDM)中,并输出装箱结果文件。
具体实施时,为便于用户查看装箱结果,最后将装箱结果写入.cluster文件。用户可根据该结果对电路中各逻辑单元之间的关联情况进行检查和分析。本实施例中,步骤三中所述对装箱后的数据进行处理的过程包括:
步骤301、设置装箱后各个信号的内部信号标志;
步骤302、设置装箱后各块(block)的参数值,包括子单元位置(subloc)、簇(cluster)的名称;
步骤303、进行装箱后的自适应逻辑模块单元(alm_molecule)和自适应逻辑模块簇(alm_cluster)的端口映射;
步骤304、进行装箱后的自适应逻辑模块簇(alm_cluster)和自适应逻辑模块物理块(alm_tile)的端口映射。
如图16所示为装箱结果文件描述格式,根据装箱层次,自适应逻辑模块簇(alm_cluster)中包含自适应逻辑模块单元(alm_molecule),自适应逻辑模块单元(alm_molecule)中包含对应的组合逻辑单元(lcell_comb)和寄存器单元(dffeas)。自适应逻辑模块簇(alm_cluster)的命名方式为“类型+编号”,自适应逻辑模块单元(alm_molecule)的命名方式为“类型+自适应逻辑模块单元(alm_molecule)所处的位置+自适应逻辑模块簇(alm_cluster)的编号”。对于在进位链、共享算术链和寄存器级联链上的自适应逻辑模块簇(alm_cluster),给出对应的链表编号以及位于链表的第几个自适应逻辑模块簇(alm_cluster)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种针对FPGA自适应逻辑模块的装箱方法,其特征在于,该方法包括以下步骤:
步骤一、获取装箱输入;所述装箱输入包括用户设计的逻辑单元信息、用户电路的约束信息和装箱规则信息;
步骤二、执行装箱过程;所述装箱过程包括针对FPGA自适应逻辑模块结构,根据预装箱模式将组合逻辑单元和寄存器单元预装箱到自适应逻辑模块单元中的预装箱过程和将预装箱的自适应逻辑模块单元装箱到自适应逻辑模块簇中的装箱过程;
步骤三、输出装箱结果:对装箱后的数据进行处理,并将处理得到的结果写回到用户设计模型中,并输出装箱结果文件。
2.按照权利要求1所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤一中所述获取装箱输入的具体过程为:
步骤101、读取用户设计的逻辑单元信息,包括逻辑单元的类型,信号的起点、终点,是否为内部信号;
步骤102、读取用户电路的约束信息,包括工程名、工程路径、顶层实体文件名、装箱规则文件、芯片名、装箱算法及策略;
步骤103、读取装箱规则信息,包括获取逻辑块和物理块的信息以及各逻辑块和物理块对应的端口信息,获取预装箱规则信息,获取正式装箱规则信息,获取逻辑块和物理块的端口映射信息。
3.按照权利要求2所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤101中所述逻辑单元的类型包括组合逻辑单元和寄存器单元。
4.按照权利要求2所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤103中所述逻辑块和物理块的信息包括四个层次的块信息,分别为逻辑单元、逻辑模块、逻辑块、物理块;
步骤103中所述预装箱规则信息包括不同预装箱模式下逻辑单元和与之对应的逻辑模块的端口映射关系;
步骤103中所述正式装箱规则信息包括不同装箱模式下逻辑模块和与之对应的逻辑块的端口映射关系。
5.按照权利要求1所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤二中所述预装箱模式包括标准模式、扩展LUT模式、算术模式、共享算术模式和LUT寄存器模式;
步骤二中所述根据预装箱模式将组合逻辑单元和寄存器单元预装箱到自适应逻辑模块单元中的预装箱过程包括:
步骤A、分情况进行预装箱:
情况A1、当预装箱模式为算术模式时,按照进位信号进行预装箱;
情况A2、当预装箱模式为共享算术模式时,按照进位信号和共享信号进行预装箱;
情况A3、当预装箱模式为扩展LUT模式时,将输入数为7的组合逻辑单元作为单独的ALM进行预装箱;
情况A4、当预装箱模式为标准模式时,直接将组合逻辑单元和寄存器单元预装箱到自适应逻辑模块单元中;
情况A5、当预装箱模式为LUT寄存器模式时,根据情况A1、情况A2、情况A3和情况A4的预装箱结果,将与组合逻辑单元相关联的寄存器单元预装箱到自适应逻辑模块中;
步骤B、根据预装箱模式将组合逻辑单元和寄存器单元的各个端口与自适应逻辑模块单元作映射;
步骤C、根据预装箱情况修改组合逻辑单元的查找表掩膜值。
6.按照权利要求5所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤B中所述根据预装箱模式将组合逻辑单元和寄存器单元的各个端口与自适应逻辑模块单元作映射的具体过程为:
步骤B1、选择一个未预装箱的组合逻辑单元作为新的自适应逻辑模块的种子;
步骤B2、将未预装箱的组合逻辑单元按照与当前组合逻辑单元共享输入数的大小排序,并存入共享的组合逻辑单元集合中;
步骤B3、从集合中依次选择组合逻辑单元加入当前自适应逻辑模块中,考察是否满足预装箱规则,当不满足预装箱规则时,选择集合中的下一个组合逻辑单元,直到找到一个符合要求的组合逻辑单元为止;当电路中没有与当前组合逻辑单元存在信号连接的其他组合逻辑单元时,从所有未做预装箱的组合逻辑单元中找到一个满足预装箱规则的组合逻辑单元加入到当前自适应逻辑模块中;
步骤B4、将与各组合逻辑单元相关联的寄存器单元装入对应的自适应逻辑模块中。
7.按照权利要求1所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤二中所述将预装箱的自适应逻辑模块单元装箱到自适应逻辑模块簇中的装箱过程包括以下三种情况的装箱:
情况D1、进位链的装箱:针对算术模式下的自适应逻辑模块单元,按照进位信号进行装箱;
情况D2、共享链的装箱:针对共享算术模式下的自适应逻辑模块单元,按照进位信号和共享信号进行装箱;
情况D3、除情况D1和情况D2外,进行基于代价函数的贪婪装箱:根据贪婪算法的思想,将未装箱的自适应逻辑模块单元按照吸引度的大小依次加入自适应逻辑模块簇中,直到自适应逻辑模块簇被装满为止。
8.按照权利要求7所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:情况D1中所述针对算术模式下的自适应逻辑模块单元,按照进位信号进行装箱的具体过程为:将位于进位链上的自适应逻辑模块按照进位信号的顺序依次尝试加入逻辑阵列块中,同时判断是否符合装箱约束,将符合装箱约束的自适应逻辑模块装到1个逻辑阵列块中,当不符合装箱约束条件时,新建1个逻辑阵列块,重复执行装箱操作,直到整条进位链上的ALM都装入逻辑阵列块中为止。
9.按照权利要求7所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:情况D2中所述针对共享算术模式下的自适应逻辑模块单元,按照进位信号和共享信号进行装箱的具体过程为:将位于共享链上的自适应逻辑模块按照共享进位信号的顺序依次尝试加入逻辑阵列块中,同时判断是否符合装箱约束,将符合装箱约束的自适应逻辑模块装到1个逻辑阵列块中,当不符合装箱约束条件时,新建1个逻辑阵列块,重复执行装箱操作,直到整条共享链上的自适应逻辑模块都装入逻辑阵列块中为止。
10.按照权利要求1所述的一种针对FPGA自适应逻辑模块的装箱方法,其特征在于:步骤三中所述对装箱后的数据进行处理的过程包括:
步骤301、设置装箱后各个信号的内部信号标志;
步骤302、设置装箱后各块的参数值,包括子单元位置、簇的名称;
步骤303、进行装箱后的自适应逻辑模块单元和自适应逻辑模块簇的端口映射;
步骤304、进行装箱后的自适应逻辑模块簇和自适应逻辑模块物理块的端口映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111373586.2A CN114282471A (zh) | 2021-11-19 | 2021-11-19 | 一种针对fpga自适应逻辑模块的装箱方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111373586.2A CN114282471A (zh) | 2021-11-19 | 2021-11-19 | 一种针对fpga自适应逻辑模块的装箱方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114282471A true CN114282471A (zh) | 2022-04-05 |
Family
ID=80869467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111373586.2A Pending CN114282471A (zh) | 2021-11-19 | 2021-11-19 | 一种针对fpga自适应逻辑模块的装箱方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114282471A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115204103A (zh) * | 2022-09-19 | 2022-10-18 | 中科亿海微电子科技(苏州)有限公司 | 基于cb分类的快速布线方法及装置 |
CN118569176A (zh) * | 2024-08-01 | 2024-08-30 | 中科亿海微电子科技(苏州)有限公司 | 一种自动优化时序性能的增量装箱方法及装置 |
CN118586338A (zh) * | 2024-08-06 | 2024-09-03 | 中科亿海微电子科技(苏州)有限公司 | 一种现场可编程门阵列同时装箱布局的方法及装置 |
-
2021
- 2021-11-19 CN CN202111373586.2A patent/CN114282471A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115204103A (zh) * | 2022-09-19 | 2022-10-18 | 中科亿海微电子科技(苏州)有限公司 | 基于cb分类的快速布线方法及装置 |
CN118569176A (zh) * | 2024-08-01 | 2024-08-30 | 中科亿海微电子科技(苏州)有限公司 | 一种自动优化时序性能的增量装箱方法及装置 |
CN118586338A (zh) * | 2024-08-06 | 2024-09-03 | 中科亿海微电子科技(苏州)有限公司 | 一种现场可编程门阵列同时装箱布局的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114282471A (zh) | 一种针对fpga自适应逻辑模块的装箱方法 | |
US7028281B1 (en) | FPGA with register-intensive architecture | |
US7953956B2 (en) | Reconfigurable circuit with a limitation on connection and method of determining functions of logic circuits in the reconfigurable circuit | |
US9026967B1 (en) | Method and apparatus for designing a system on multiple field programmable gate array device types | |
EP2550593B1 (en) | Look up table structure supporting quaternary adders | |
US7890910B1 (en) | Programmable logic device having logic elements with dedicated hardware to configure look up tables as registers | |
US8788985B1 (en) | Method and apparatus for implementing a processor interface block with an electronic design automation tool | |
US8499262B1 (en) | Method and apparatus for implementing a parameterizable filter block with an electronic design automation tool | |
US8793629B1 (en) | Method and apparatus for implementing carry chains on FPGA devices | |
EP3722985A1 (en) | Method and apparatus for implementing an application aware system on a programmable logic device | |
US8954906B1 (en) | Method and apparatus for performing parallel synthesis on a field programmable gate array | |
CN109800468B (zh) | 一种基于寄存器重定时的多流水级时序电路装箱操作方法 | |
US10790829B2 (en) | Logic circuits with simultaneous dual function capability | |
US11216249B2 (en) | Method and apparatus for performing field programmable gate array packing with continuous carry chains | |
US10141917B2 (en) | Multiple mode device implementation for programmable logic devices | |
US9626165B1 (en) | Method and apparatus for generating systolic arrays on a target device using a high-level synthesis language | |
CN107632816B (zh) | 通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备 | |
US8884647B2 (en) | Integrated circuit and method of using the same | |
US20240184968A1 (en) | Configurable clock enable and reset signal for programmable logic devices systems and methods | |
EP4383573A1 (en) | Clock insertion delay systems and methods | |
US11436399B2 (en) | Method and apparatus for performing multiplier regularization | |
Zgheib et al. | Enhanced technology mapping for FPGAs with exploration of cell configurations | |
Chin | Architectures and tools for efficient reconfigurable computing | |
Stamoulis et al. | VHDL Methodologies for Effective Implementation on FPGA Devices and Subsequent Transition to ASIC Technology | |
US8281271B1 (en) | Method and apparatus for performing lutmask based delay modeling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |