CN114169274A - 一种面向fpga的多路选择器工艺映射方法 - Google Patents

一种面向fpga的多路选择器工艺映射方法 Download PDF

Info

Publication number
CN114169274A
CN114169274A CN202111469894.5A CN202111469894A CN114169274A CN 114169274 A CN114169274 A CN 114169274A CN 202111469894 A CN202111469894 A CN 202111469894A CN 114169274 A CN114169274 A CN 114169274A
Authority
CN
China
Prior art keywords
unit
mapped
signal
split
selector
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.)
Granted
Application number
CN202111469894.5A
Other languages
English (en)
Other versions
CN114169274B (zh
Inventor
谢尚銮
惠锋
刘佩
王晨阳
张立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Zhongwei Yixin Co Ltd
Original Assignee
Wuxi Zhongwei Yixin Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Zhongwei Yixin Co Ltd filed Critical Wuxi Zhongwei Yixin Co Ltd
Priority to CN202111469894.5A priority Critical patent/CN114169274B/zh
Publication of CN114169274A publication Critical patent/CN114169274A/zh
Application granted granted Critical
Publication of CN114169274B publication Critical patent/CN114169274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

本申请提供了一种面向FPGA的多路选择器工艺映射方法,涉及FPGA技术领域,该方法解析RTL级描述文件并识别得到待映射选择器单元,对于具有预设基本结构的待映射选择器单元,直接例化模板完成工艺映射,对于不具有预设基本结构的待映射选择器单元,将待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元,并将待映射选择器单元的待选信号和选择信号按预定逻辑分配连接至相应的子单元,分别例化子单元所具有的预设基本结构对应的模板、完成对待映射选择器单元的工艺映射,该方法为实现多路选择器的优化映射提供了切实可行的方法,为异质结构FPGA的发展和性能优化提供了技术基础。

Description

一种面向FPGA的多路选择器工艺映射方法
技术领域
本发明涉及FPGA领域,尤其是一种面向FPGA的多路选择器工艺映射方法。
背景技术
现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)以其配置灵活、开发周期短等特点而被广泛应用于人工神经网络、原型验证、算法加速等领域。FPGA的设计流程由电子设计自动化(Electronic Design Automation,EDA)工具实现,主要包括逻辑综合、装箱、布局、布线、时序分析和码流生成等操作。工艺映射是逻辑综合的最后一步,通过将逻辑网表中的单元与芯片上的各类器件进行绑定来得到工艺网表,是物理实现数字系统的关键。
早期的FPGA是简单的同质结构,仅由LUT(Look-Up Table,查找表)与寄存器等基本逻辑器件构成,其中,LUT是FPGA中不可或缺的逻辑器件,每个K输入LUT通过编程配置可以实现任意K变量的逻辑函数。对于同质结构FPGA,已有许多有效的结构化工艺映射方法,一般通过分割枚举、分割排序、最佳分割选取等步骤用K-可行锥集覆盖逻辑网表,最后将每个K-可行的锥绑定到K输入LUT。
但是同质结构的FPGA的性能与专用集成电路(Application SpecificIntegrated Circuit,ASIC)相差甚远,因此随着FPGA设计水平的不断提高,FPGA逐渐向着异质结构发展,逐渐会在芯片上嵌入存储器(Block RAM)、数字信号处理器(DSP)、多路选择器等高性能的专用功能器件,用来缩小与ASIC在性能上的差距并扩展FPGA的应用领域,但目前针对异质结构FPGA却没有很有效的工艺映射方法。多路选择器是数字系统中最基本的数据通路。面向FPGA的多个应用领域,有研究人员选取其中的典型用户设计进行分析,指出多路选择器平均占逻辑单元总数的1/4以上。因此在用户设计的规模日益增大的情况下,如何高效利用专用功能器件,尤其是如何实现多路选择器的优化映射,是一个意义重大的课题,目前还没有很好的解决方法。
发明内容
针对上述问题及技术需求,提出了一种面向FPGA的多路选择器工艺映射方法,本发明的技术方案如下:
一种面向FPGA的多路选择器工艺映射方法,该方法包括:
解析RTL级描述文件并识别得到待映射选择器单元,每个待映射选择器单元包括N个待选信号以及
Figure BDA0003391269020000021
位选择信号,符号
Figure BDA0003391269020000022
表示向上取整;
对于具有预设基本结构的待映射选择器单元,例化待映射选择器单元所具有的预设基本结构对应的模板、完成对待映射选择器单元的工艺映射,每个预设基本结构对应的模板是预先对具有预设基本结构的选择器单元完成工艺映射后保存得到的工艺网表;
对于不具有预设基本结构的待映射选择器单元,将待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元,并将待映射选择器单元的待选信号和选择信号按预定逻辑分配连接至相应的子单元,分别例化子单元所具有的预设基本结构对应的模板、完成对待映射选择器单元的工艺映射。
本发明的有益技术效果是:
本申请公开了一种面向FPGA的多路选择器工艺映射方法,该方法为实现多路选择器的优化映射提供了切实可行的方法,为异质结构FPGA的发展和性能优化提供了技术基础。
另外,该方法还可以将与多路选择器有驱动关系的反相器也融入到多路选择器的映射结构中,有利于优化掉反相器,减少逻辑单元总数。
附图说明
图1是本申请的面向FPGA的多路选择器工艺映射方法的主要流程图。
图2是一个实施例中预先保存的三个模板的示意图。
图3是一个实施例中对待映射选择器单元进行工艺映射的主要流程示意图。
图4是任意的2K选1形式的待拆分单元基于递归原则的拆分示意图。
图5是对于N=16384的待映射选择器单元的拆分为子单元的示意图。
图6是对于未形成2K选1形式的待拆分单元的拆分示意图。
图7是对于N=20的待映射选择器单元的拆分为子单元的示意图。
图8是log2N不是整数的一个实施例中对于未覆盖的条件分支的处理流程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种面向FPGA的多路选择器工艺映射方法,该方法包括如下步骤,请参考图1:
S1,解析RTL级描述文件并识别得到待映射选择器单元。
可选的,本申请中的RTL级描述文件以Verilog、System Verilog以及VHDL中的任意一种描述语言编写得到。
选择器单元会通过至少两个具有预定关联的描述语句和/或至少一个符合预定语句特征的描述语句表示,则通过对RTL级描述文件中的描述语句进行解析并识别这些描述语句,即可以识别得到所有选择器单元,将其记为待映射选择器单元。至少一个符合预定语句特征的描述语句比如case语句,至少两个具有预定关联的描述语句比如if/else语句和有限状态机等。
且可以识别得到待映射选择器单元的待选信号的数量、选择信号的数量以及各路信号与其他单元的连接关系。每个形成N选1选择器单元结构的待映射选择器单元包括N个待选信号以及
Figure BDA0003391269020000031
位选择信号,N为大于等于2的参数,符号
Figure BDA0003391269020000032
表示向上取整。比如当待映射选择器单元为2选1选择器单元时,待映射选择器单元包括2个待选信号以及1位选择信号。比如当待映射选择器单元为3选1选择器单元时,待映射选择器单元包括3个待选信号以及2位选择信号。
S2,对于具有预设基本结构的待映射选择器单元,例化待映射选择器单元所具有的预设基本结构对应的模板、完成对待映射选择器单元的工艺映射。
每个预设基本结构为一个预定的多选一选择器单元的结构,比如是2选1选择器单元、3选1选择器单元、4选1选择器单元、8选1选择器单元等等的结构。每个预设基本结构对应的模板是预先对具有该预设基本结构的选择器单元完成工艺映射后保存得到的工艺网表,也即预先将预设基本结构的选择器单元与可配置逻辑单元(CLB)中的LUT(查找表)与多路选择器硬核进行绑定后得到工艺网表,可以认为是具有该预设基本结构的待映射选择器单元的最优工艺映射结果。对于有对应模板的待映射选择器单元,直接例化模板实现该待映射选择器单元的最优映射。
比如预设基本结构为4选1选择器单元的结构,且预先保存该预设基本结构对应的模板记为模板0,则对于包括4个待选信号以及2位选择信号的待映射选择器单元,直接例化模板0实现对该待映射选择器单元的最优映射。
S3,对于不具有预设基本结构的待映射选择器单元,将待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元,并将待映射选择器单元的待选信号和选择信号按预定逻辑分配连接至相应的子单元,分别例化子单元所具有的预设基本结构对应的模板、完成对待映射选择器单元的工艺映射。
如上所述,本申请的工艺映射方法需要使用到预设基本结构对应的模板,则在本申请的方法应用之前,通常需要先保存若干个不同的预设基本结构对应的模板,理论上可以选择任意的多选一选择器单元的结构作为预设基本结构,且可以保存任意数量的模板。但是2选1选择器单元和3选1选择器单元的结构比较简单,若保存为模板反而容易减小优化空间,一般不作为预设基本结构。且为了使得上述步骤S3中基于预设基本结构进行拆分的操作更便捷且效果更好,一般会选取log2N为整数的N选1选择器单元的结构作为预设基本结构,比如选取4选1选择器单元的结构、8选1选择器单元的结构、16选1选择器单元的结构、32选1选择器单元的结构等等作为预设基本结构。若保存的模板的数量太多,则占用空间较大且最后效果也未必更好,因此出于实际应用的操作复杂性和实现效果平衡考虑,保存的模板的数量一般不会太多,通常在3~5个左右。
基于上述考虑,在一个实施例中,将4选1选择器单元、8选1选择器单元以及16选1选择器单元各自对应的结构作为预设基本结构。并分别对这三个预设基本结构的选择器单元完成工艺映射后保存得到各自对应的模板。具体的:
(1)将4选1选择器单元与查找表进行绑定形成对应的模板,记为模板0。由于4选1选择器单元具有4个待选信号和2位选择信号,需要使用6位信号,因此一般将4选1选择器单元与六输入查找表LUT6进行绑定,LUT6的6个输入分别连接4个待选信号i0~i3以及两位选择信号s0和s1形成模板0,如图2所示。
(2)将8选1选择器单元与查找表及其相连的第一级多路选择器硬核MUX0进行绑定形成对应的模板,记为模板1。由于8选1选择器单元具有8个待选信号和3位选择信号,需要使用11位信号,因此一般将8选1选择器单元与两个六输入查找表LUT6和一个MUX0进行绑定:一个LUT6的6个输入连接其中4个待选信号i0~i3以及其中两位选择信号s0和s1,另一个LUT6的6个输入连接另外4个待选信号i4~i7以及相同两位选择信号s0和s1,两个LUT6的输出连接MUX0的两个输入,剩余的一位选择信号s2作为MUX0的选择信号,由此形成模板1,如图2所示。
(3)将16选1选择器单元与查找表及其依次相连的第一级多路选择器硬核MUX0和第二级多路选择器硬核MUX1进行绑定形成对应的模板,第一级多路选择器硬核MUX0是直接与查找表相连的多路选择器硬核,第二级多路选择器硬核MUX1是与第一级多路选择器硬核MUX0相连的多路选择器硬核。由于16选1选择器单元具有16个待选信号和4位选择信号,需要使用20位信号,因此一般将16选1选择器单元与四个六输入查找表LUT6和两个MUX0以及一个MUX1进行绑定:4个LUT6的6个输入分别连接4个待选信号以及两位选择信号s0和s1,第一个LUT6(连接i0~i3以及s0和s1)与第二个LUT6(连接i4~i7以及s0和s1)的输出连接一个MUX0的两个输入,第三个LUT6(连接i8~i11以及s0和s1)与第四个LUT6(连接i12~i15以及s0和s1)的输出连接另一个MUX0的两个输入。两个MUX0的输出连接到MUX1的两个输入。选择信号s2作为两个MUX0的选择信号,选择信号s3作为MUX1的选择信号,由此形成模板2,如图2所示。
在上述各个模板的连接关系中的待选信号和选择信号具有预定的编码顺序,三个模板采用的编码顺序相同,以包含信号数量最多的模板2为例,选择信号s0~s3为从最低位至最高位的顺序,待选信号i0~i15是根据各个待选信号对应的选择信号所构成的二进制数的大小对待选信号进行升序排列得到的顺序。比如以包含4位选择信号为例,i0即为选择信号0000对应的待选信号,i1即为选择信号0001对应的待选信号,以此类推,i15即为选择信号1111对应的待选信号。
则基于该实施例,当预先保存模板0、模板1和模板2时,对于包含4个待选信号以及2位选择信号的待映射选择器单元,直接例化模板0完成工艺映射。对于包含8个待选信号以及3位选择信号的待映射选择器单元,直接例化模板1完成工艺映射。对于包含16个待选信号以及4位选择信号的待映射选择器单元,直接例化模板2完成工艺映射。后续各个实施例会以此预先保存有模板0、模板1和模板2的情况为例进行举例说明。
在一个实施例中,对于不具有预设基本结构的待映射选择器单元的执行的拆分过程具体包括如下步骤,请结合图3:
一、若待映射选择器单元的待选信号的数量小于最小的预设基本结构的待选信号的数量,则另行处理不做拆分。在一个实施例中,基于上述预存的模板0、1、2,待映射选择器单元的待选信号为2或3时另行处理不做拆分,具体的:若待映射选择器单元的待选信号的数量N=2,本方法跳过对待映射选择器单元的处理。若待映射选择器单元的待选信号的数量N=3,则直接将待映射选择器单元与对应的查找表绑定完成工艺映射,具体的,由于3选1的待映射选择器单元需要使用5位信号,因此一般将其绑定到五输入查找表LUT5完成工艺映射。
二、若待映射选择器单元的待选信号的数量达到最小的预设基本结构的待选信号的数量,且不具有预设基本结构,则将待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元。基于上述预存的模板0、1、2,也即对于N≥4且N≠4、8、16的待映射选择器单元,基于预设基本结构进行拆分。
1、将待映射选择器单元的结构基于预设基本结构进行拆分的总体原则是:将待映射选择器单元作为待拆分单元开始进行若干层拆分,每一个待拆分单元被拆分为若干个第一级选择单元和一个第二级选择单元。其中,第二级选择单元是基于预设基本结构得到的一个子单元、后续可以直接例化模板,有两种情况:(1)第二级选择单元的结构就是其中一种预设基本结构,比如基于上述举例,第二级选择单元是4选1选择器单元、8选1选择器单元和16选1选择器单元中的任意一种。(2)第二级选择单元的待选信号的数量小于最小的预设基本结构的待选信号的数量,虽然无法直接例化模板,但无需再拆分,可以直接操作完成工艺映射。比如在一个实例中,第二级选择单元可以如上述情况一所述,是2选1选择器单元或3选1选择器单元。因此,基于预先保存的模板0、模板1和模板2,这一步拆分得到的每个子单元至少包括:形成4选1选择器单元结构的子单元、形成8选1选择器单元结构的子单元、形成16选1选择器单元结构的子单元中的至少一种。进一步还可能包括:形成2选1选择器单元结构的子单元以及形成3选1选择器单元结构的子单元中的至少一种。
而拆分得到的每个第一级选择单元,可能和第二级选择单元一样,也符合上述特征达到了子单元级别,但也可能未符合上述特征而未达到子单元级别、需要进一步拆分。
拆分得到的各个第一级选择单元的输出作为第二级选择单元的各个待选信号。整个待拆分单元的所有待选信号按第一编码顺序分为若干组且每一组作为拆分得到的一个第一级选择单元的待选信号。待拆分单元的选择信号按第二编码顺序分为若干组分别作为拆分得到的第一级选择单元和第二级选择单元的选择信号。其中,选择信号的第二编码顺序是R位选择信号从最低位至最高位的顺序,记为s0,s1,…sR-1。待选信号的第一编码顺序是根据各个待选信号对应的选择信号所构成的二进制数的大小对待选信号进行升序排列得到的顺序,依次记为i0,i1,…iN-1
在完成上述拆分后,将未达到子单元级别的第一级选择单元作为新的待拆分单元继续按照上述拆分原则进行拆分。
2、在一个实施例中,在上述提到的拆分的总体原则下,对于具有不同特征的待映射选择器单元,会采用不同的具体的拆分方式,主要包括两类:
第一类,对于log2N为整数而形成2K选1形式的待映射选择器单元,直接基于递归原则对待映射选择器单元依次进行拆分,K为任意取值的参数。也即待映射选择器单元直接作为一个具有2K选1形式的待拆分单元开始拆分。在预存上述模板0、模板1和模板2的实施例中,具体的,请参考图4:
(1.1)若K%4=0,则该待拆分单元直接形成16n选1单元,将16n选1单元拆分为1个16选1单元和16个16n-1选1单元,将每个16n-1选1单元作为新的待拆分单元继续拆分直至n=2,其中,
Figure BDA0003391269020000071
且n≥2,
Figure BDA0003391269020000072
表示向下取整。
(1.2)若K%4=1,则将待拆分单元拆分为1个2选1单元和2个16n选1单元,此时的n=(K-1)/4。将待拆分单元的2K个待选信号分为2组,每组的2K-1个待选信号分别作为一个16n选1单元的待选信号,2个16n选1单元的输出作为2选1单元的待选信号。将待拆分单元的K个选择信号中的从低至高的K-1位s0,s1,…sK-2同时作为2个16n选1单元的选择信号、最高的一位sK-1作为2选1单元的选择信号。继续对每个16n选1单元分别依次进行拆分,而2选1单元即形成一个子单元。
(1.3)若K%4=2,则将待拆分单元拆分为1个4选1单元和4个16n选1单元,此时的n=(K-2)/4。将待拆分单元的2K个待选信号分为4组,每组的2K-2个待选信号分别作为一个16n选1单元的待选信号,4个16n选1单元的输出作为4选1单元的待选信号。将待拆分单元的K个选择信号中的从低至高的K-2位s0,s1,…sK-3同时作为4个16n选1单元的选择信号、最高的两位sK-2,sK-1作为4选1单元的选择信号。继续对每个16n选1单元分别依次进行拆分,而4选1单元即形成一个子单元。
(1.4)若K%4=3,则将待拆分单元拆分为1个8选1单元和8个16n选1单元,此时的n=(K-3)/4。将待拆分单元的2K个待选信号分为8组,每组的2K-3个待选信号分别作为一个16n选1单元的待选信号,8个16n选1单元的输出作为8选1单元的待选信号。将待拆分单元的K个选择信号中的从低至高的K-3位s0,s1,…sK-4同时作为8个16n选1单元的选择信号、最高的三位sK-3,sK-2,sK-1作为8选1单元的选择信号。继续对每个16n选1单元分别依次进行拆分,而8选1单元即形成一个子单元。
在上述(1.2)(1.3)(1.4)的情况下,继续对每个16n选1单元分别依次进行拆分的过程与情况(1.1)的流程相同。则对任意取值的参数n时的16n选1单元拆分为1个16选1单元和16个16n-1选1单元时,任意参数n时的16n选1单元包括2K个待选信号和K=4n个选择信号记为s0,s1,…s4n-1,则将2K个待选信号按照第一编码顺序分为16组,每一组的待选信号连接到一个16n-1选1单元的各个输入,16个16n-1选1单元的输出分别连接到16选1单元的各个输入。同时,将16n选1单元的K=4n个选择信号分为两组,其中的从低至高的4(n-1)位s0,s1,…s4(n-1)-1同时作为16个16n-1选1单元的选择信号,其中的最高的4位s4n-4、s4n-3、s4n-2、s4n-1作为16选1单元的选择信号。若n-1≥2,则继续对16n-1选1单元按上述过程依次进行拆分,直到最后得到若干个16选1选择器单元结构的子单元。
比如,对于N=212=4096的待拆分单元,由于log2N为12是整数,该待映射选择器单元会形成212选1形式的待拆分单元,且K%4=0,n=K/4=3,则该待拆分单元直接形成163选1单元。(a)首先将该163选1单元拆分为1个16选1单元和16个162选1单元,并将163选1单元的4096个待选信号分为16组,每组的256个待选信号作为一个162选1单元的待选信号,16个162选1单元的输出作为16选1单元的待选信号。将163选1单元的12个选择信号分为两组,最低的8位s0,s1,…s7同时作为16个162选1单元的选择信号,最高的4位s8,s9,s10,s11作为16选1单元的选择信号。(b)然后对于每个162选1单元,按照上述过程将其拆分为17个16选1单元,其中16个16选1单元作为第一级选择单元、一个16选1单元作为第二级选择单元。将162选1单元的256个待选信号分为16组,每组的16个待选信号作为一个第一级选择单元的16选1单元的待选信号,这16个16选1单元的输出作为最后一个第二级选择单元的16选1单元的待选信号。且将该162选1单元的8个选择信号分为两组,最低的4位s0,s1,s2,s3同时作为16个第一级选择单元的选择信号,最高的4位s4,s5,s6,s7作为第二级选择单元的选择信号。由此完成对该待拆分单元的拆分。
再比如,对于N=214=16384的待拆分单元,由于log2N为14是整数,该待映射选择器单元会形成214选1形式的待拆分单元,而K%4=2,则请参考图5,(a)首先将该待拆分单元拆分为1个4选1单元和4个163选1单元,将待拆分单元的16384个待选信号分为四组,每组的4096个待选信号作为一个163选1单元的待选信号,4个163选1单元的输出作为4选1单元的待选信号。将待拆分单元的14个选择信号分为两组,最低的12位选择信号s0,s1,…s11同时作为4个163选1单元的选择信号,最高的2位选择信号s12,s13作为4选1单元的选择信号。(b)对于每个163选1单元,按照上一个举例的过程完成拆分。
第二类:对于log2N为非整数而不具有2K选1形式的待映射选择器单元,对待映射选择器单元拆分为若干个由2选1单元相连的2K选1形式的待拆分单元。在对具有N个待选信号的待映射选择器单元拆分过程中,可能拆分一次就得到2K选1形式的待拆分单元,也可能拆分一次以后仍然不具有2K选1形式需要继续拆分,拆分多次后才最终得到2K选1形式的待拆分单元,因此除了最初的待映射选择器单元是不具有2K选1形式的待拆分单元之外,中间过程得到的单元也可能是不具有2K选1形式的待拆分单元。令
Figure BDA0003391269020000091
对任意的具有NF个待选信号且不具有2K选1形式的待拆分单元的拆分过程包括,请参考图6:
(2.1)若
Figure BDA0003391269020000092
则将具有NF个待选信号的待拆分单元拆分为1个作为第二级选择单元的2选1单元和1个作为第一级选择单元的
Figure BDA0003391269020000093
选1的待拆分单元。
将原始的具有NF个待选信号的待拆分单元的NF个待选信号按照第一编码顺序分为两组,其中前
Figure BDA0003391269020000094
个待选信号
Figure BDA0003391269020000095
连接到
Figure BDA0003391269020000096
选1的待拆分单元。将
Figure BDA0003391269020000097
选1的待拆分单元的输出和原始的待拆分单元的待选信号中最高位的待选信号
Figure BDA0003391269020000098
分别作为2选1单元的待选信号。
将原始的具有NF个待选信号的待拆分单元的KF个选择信号中的最低的KF-1位
Figure BDA0003391269020000099
作为
Figure BDA00033912690200000910
选1的待拆分单元的选择信号,将最高的一位
Figure BDA00033912690200000911
作为2选1单元的选择信号。对于拆分得到的
Figure BDA00033912690200000912
选1的待拆分单元,可以按照上述第一类的情况基于递归原则继续进行拆分。
(2.2)若
Figure BDA0003391269020000101
则将具有NF个待选信号的待拆分单元拆分为1个作为第二级选择单元的2选1单元,以及包括
Figure BDA0003391269020000102
选1的待拆分单元和
Figure BDA0003391269020000103
选1的中间单元的第一级选择单元。
将具有NF个待选信号的待拆分单元的NF个待选信号按照第一编码顺序分为两组,其中前
Figure BDA0003391269020000104
个待选信号
Figure BDA0003391269020000105
作为
Figure BDA0003391269020000106
选1的待拆分单元的待选信号、后
Figure BDA0003391269020000107
个待选信号
Figure BDA0003391269020000108
作为
Figure BDA0003391269020000109
选1的中间单元的待选信号。
Figure BDA00033912690200001010
选1的待拆分单元和
Figure BDA00033912690200001011
选1的中间单元的输出分别作为2选1单元的两个待选信号。
将原始的具有NF个待选信号的待拆分单元的KF个选择信号分为三组,其中一组包括最低的KF-1位选择信号
Figure BDA00033912690200001012
作为
Figure BDA00033912690200001013
选1的待拆分单元的选择信号,第二组包括最低的
Figure BDA00033912690200001014
位选择信号
Figure BDA00033912690200001015
作为
Figure BDA00033912690200001016
选1的待拆分单元的选择信号,第三组包括最高的一位选择信号
Figure BDA00033912690200001017
作为2选1单元的选择信号。
对于拆分得到的
Figure BDA00033912690200001018
选1的待拆分单元,可以按照上述第一类的情况基于递归原则继续进行拆分。对于拆分得到的
Figure BDA00033912690200001019
选1的中间单元,主要有如下三大类情况:
(2.2.1)
Figure BDA00033912690200001020
选1的中间单元达到子单元级别,也即是其中一种预设基本结构可以直接例化,或者待选信号的数量小于最小的预设基本结构的待选信号的数量可以直接操作。在具体实施例中也即包括
Figure BDA00033912690200001021
这几种情况。此时无需再对
Figure BDA00033912690200001022
选1的中间单元继续拆分。则若
Figure BDA00033912690200001023
为2或3,则直接将
Figure BDA00033912690200001024
选1的中间单元与对应的查找表绑定完成工艺映射。或者,若
Figure BDA00033912690200001025
为4、8、16,直接例化对应的模板。
(2.2.2)
Figure BDA00033912690200001026
选1的中间单元未达到子单元级别还需继续拆分,且
Figure BDA00033912690200001027
选1的中间单元也形成2K选1形式,也即若
Figure BDA00033912690200001028
Figure BDA00033912690200001029
为整数,则与
Figure BDA00033912690200001030
选1的待拆分单元类似,按照上述第一类的情况基于递归原则继续进行拆分。
(2.2.3)
Figure BDA00033912690200001031
选1的中间单元未达到子单元级别还需继续拆分,且
Figure BDA00033912690200001032
选1的中间单元仍然未形成2K选1形式,也即若
Figure BDA00033912690200001033
Figure BDA0003391269020000111
非整数,则将
Figure BDA0003391269020000112
选1的中间单元作为新的具有NF个待选信号且不具有2K选1形式的待拆分单元并更新
Figure BDA0003391269020000113
按照上述(2.1)或者(2.2)的方法进行拆分。
比如,请参考图7,对于N=20的待拆分单元,log2 N不是整数,
Figure BDA0003391269020000114
则(a)首先将该具有20个待选信号的待拆分单元拆分为1个作为第二级选择单元的2选1单元,以及包括24选1的待拆分单元和4选1的中间单元的第一级选择单元。前24个待选信号i0,i1,…i15作为24选1的待拆分单元的待选信号、后4个待选信号i16,i17,i18,i19作为4选1的中间单元的待选信号。24选1的待拆分单元和4选1的中间单元的输出分别作为2选1单元的两个待选信号。最低的4位选择信号s0,s1,s2,s3作为24选1的待拆分单元的选择信号,最低的2位选择信号s0,s1作为4选1的中间单元的选择信号,最高的一位选择信号s4作为2选1单元的选择信号。由于24选1的待拆分单元和4选1的中间单元都已经具有预设基本结构达到子单元级别,因此无需继续拆分。
上述实施例介绍了对于不具有预设基本结构的待映射选择器单元所执行的拆分过程,在将一个不具有预设基本结构的待映射选择器单元拆分为若干个子单元后,分别例化子单元所具有的预设基本结构对应的模板,完成对待映射选择器单元的工艺映射。
在一个实施例中,一个不具有预设基本结构的待映射选择器单元拆分得到的子单元都是预设基本结构的子单元,比如上述第一类情况中的(1.1)、(1.3)和(1.4),则分别例化子单元所具有的预设基本结构对应的模板即可完成对待映射选择器单元的工艺映射。
在另一个实施例中,一个不具有预设基本结构的待映射选择器单元拆分得到的子单元除了包含具有预设基本结构的子单元之外,还包含待选信号的数量小于最小的预设基本结构的待选信号的数量的子单元,也即在实例中具体表现为还包括2选1单元或3选1单元。比如上述第一类情况中的(1.2)以及上述第二类情况。此时对于具有预设基本结构的子单元,分别例化对应的模板,除此之外,还需要对不具有预设基本结构的子单元进行映射,才能完成对整个待映射选择器单元的工艺映射。分别介绍如下:
(3.1)对于上述第一类情况中的(1.2),也即对于任意一个具有2K选1形式的待拆分单元,当K%4=1时,对该待拆分单元的结构拆分得到的子单元还包括2选1单元,此时可以首先将该2选1单元绑定到三输入查找表LUT3。且对该待拆分单元最终拆分得到的结构中,该待拆分单元的选择信号的次高位sK-2驱动的两个单元会分别绑定到两个第二级多路选择器硬核MUX1,而该待拆分单元的最高位sK-1驱动的单元会绑定到一个三输入查找表LUT3。此时这三个器件会互连实现4选1的逻辑功能,则该方法还包括:对该待拆分单元的选择信号的最高两位所驱动的单元进行合并操作,合并得到一个形成4选1选择器单元结构的子单元。
(3.2)对于上述第二类情况,对待映射选择器单元拆分过程中,会得到若干个2选1单元形成的带优先级的选择器链,且最终得到的子单元可能还包括3选1单元,则将3选1单元绑定到LUT5。而对拆分得到的各个2选1单元需要基于待选信号和选择信号连接的单元的映射结果对2选1单元进行映射:
(3.2.1)若一个2选1单元的所有扇入单元均绑定到第一级多路选择器硬核MUX0,则将该2选1单元绑定到第二级多路选择器硬核MUX1。其中,扇入单元是驱动该2选1单元的待选信号的单元。
(3.2.2)若一个2选1单元的所有扇入单元均绑定到查找表且至少一个不是三输入查找表LUT3,则将该2选1单元绑定到第一级多路选择器硬核MUX0。
(3.2.3)若一个2选1单元不满足(3.2.1)和(3.2.2)的情况,则将该2选1单元绑定到三输入查找表LUT3。
在选择器链中,以优先级最低的2选1单元作为链尾,以优先级最高的2选1单元作为链头。从链尾至链头的方向,按照上述逻辑依次对各个2选1单元进行初步绑定,之后,对于满足预定条件的2选1单元还包括进一步优化过程,所需要满足的预定条件包括:
(3.2.4)若存在单个的2选1单元绑定到三输入查找表LUT3但其扇出单元未绑定到LUT3,且该2选1单元存在至少一个扇入单元绑定到LUT3、第一级多路选择器硬核MUX0或第二级多路选择器硬核MUX1中的一个,则对该2选1单元执行预定优化映射操作。其中,2选1单元的扇出单元是以2选1单元的输出作为输入的单元。
(3.2.5)若存在多个2选1单元均绑定到三输入查找表LUT3且互连形成选择器链,获取该选择器链上每个2选1单元及各自对应的扇入单元和扇出单元形成子网表。并将该子网表中已绑定到五输入查找表LUT5或六输入查找表LUT6或多路选择器硬核的单元移除,计算执行移除操作后的子网表外部输入信号的时序,并调用现有的结构化工艺映射算法对子网表进行基于面积和时序的优化映射,替换各单元原来的映射结果。对于优化后仍然绑定到三输入查找表LUT3、且存在至少一个扇入单元绑定到LUT3、MUX0或MUX1中的一个的2选1单元,执行预定优化映射操作。
上述(3.2.4)和(3.2.5)中,对于任意一个满足条件的2选1单元执行的预定优化映射操作包括:
(3.2.6)若该2选1单元只有一个扇入单元绑定到LUT3、MUX0或MUX1中的一个,则利用一个五输入查找表LUT5替代原有映射结果,合并实现对该2选1单元及其扇入单元的映射。
(3.2.7)若该2选1单元的两个扇入单元均分别绑定到LUT3、MUX0或MUX1中的一个,则分情况优化如下:
(a)当该2选1单元的两个扇入单元的选择信号相同时,利用一个六输入查找表LUT6替代原有映射结果,合并实现对该2选1单元及两个扇入单元的映射。
(b)当该2选1单元的两个扇入单元的选择信号不相同且存在至少一个扇入单元绑定到LUT3时,利用一个五输入查找表LUT5替代原有映射结果,合并实现对该2选1单元及绑定到LUT3的一个扇入单元的映射。
(c)当该2选1单元的两个扇入单元的选择信号不相同且两个扇入单元均未绑定到LUT3时,利用一个五输入查找表LUT5替代原有映射结果,合并实现对该2选1单元及选择信号较大的一个扇入单元的映射,选择信号较大是指该选择信号在第二编码顺序中的编码值较大。
经过上述方法,可以完成对各个子单元的映射和优化,最终完成对一个待映射选择器单元的工艺映射。
另外,对于任意具有N个待选信号的待映射选择器单元,其利用R位选择信号形成2R种条件分支,并利用其中的N种条件分支对N个待选信号进行选择。当log2N为整数时,所有2R种条件分支都被覆盖使用到,条件分支语句是完整的。但当log2N为非整数时,N种条件分支只是2R种条件分支中的部分,会存在未被覆盖使用到的条件分支,条件分支语句不完整。比如对于N=3的待映射选择器单元,可能只使用了00、01、10三个条件分支,而未使用11这一条件分支。则该实施例还包括如下步骤,请参考图8:
(4.1)当解析RTL级描述文件时未检测到该待映射选择器单元的不需锁存(no_latch)标识时,则按照预定方法处理未覆盖的条件分支。未覆盖的条件分支是所有2R种条件分支中除用于选择N个待选信号的N种条件分支之外的其他条件分支。
(4.2)当解析RTL级描述文件时检测到该待映射选择器单元的不需锁存(no_latch)标识时,则不处理未覆盖的条件分支。
上述标识可以由用户根据需要配置到特定的待映射选择器单元,默认需要处理未覆盖的条件分支,用户可以根据需要配置相应标识,以忽略未覆盖的条件分支。在上述(4.1)中,对未覆盖的条件分支的处理方法包括:
(4.1.1)确定用于实现逻辑函数
Figure BDA0003391269020000141
的组合逻辑单元。逻辑函数F(s0,s1,…sR-1)以最小项之和的形式表示,逻辑函数F(s0,s1,…sR-1)共包括N个最小项,每个最小项对应一个用于选择待选信号的条件分支,也即已覆盖使用到的条件分支。s0,s1,…sR-1分别是该待映射选择器单元的R位选择信号中从低至高的各个信号位,其作为构建的逻辑函数的输入变量。
任意第i个乘积项mi为R个输入变量的乘积,每个输入变量在一个乘积项中出现且仅出现一次,每个输入变量以原变量或反变量的形式出现在乘积项。在以原变量形式出现时表示1、以反变量形式出现时表示0的基础上,将乘积项mi中的R个输入变量按从选择信号的高低至低位的顺序排列得到的一组二进制数与十进制数i对应,也即
Figure BDA0003391269020000142
Figure BDA0003391269020000143
其中符号*表示逻辑与操作,符号+表示逻辑或操作。
比如,当R=3时,逻辑函数可以表示:
Figure BDA0003391269020000144
其中,m0中的三个输入变量从选择信号的高低至低位的顺序排列得到000,m1中的三个输入变量排列得到001,m2中的三个输入变量排列得到010。
(4.1.2)当解析RTL级描述文件时未检测到不需锁存标识且检测到输出缺省信号标识时,则基于缺省信号ix、组合逻辑单元的输出iF、待映射选择器单元的输出iG为待映射选择器单元创建额外的2选1单元处理未覆盖的条件分支,并将额外创建的2选1单元直接绑定到三输入查找表LUT3。
具体的,为待映射选择器单元创建额外的2选1单元,待映射选择器单元的输出iG以及缺省信号ix分别作为2选1单元的两个待选信号,组合逻辑单元的输出iF作为2选1单元的选择信号;当组合逻辑单元的输出iF为1时,2选1单元输出待映射选择器单元的输出iG,否则输出缺省信号ix
将该额外创建的2选1单元直接绑定到三输入查找表LUT3。且该2选1单元也需要按照上述提到的方法参与优化。
(4.1.3)当解析RTL级描述文件时未检测到no_latch且未检测到输出缺省信号标识时,基于组合逻辑单元的输出iF以及待映射选择器单元的输出iG为待映射选择器单元创建额外的寄存器单元处理未覆盖的条件分支。
具体的,为待映射选择器单元创建额外的寄存器单元,组合逻辑单元的输出iF作为使能信号连接寄存器单元的使能端,待映射选择器单元的输出iG作为输入信号连接寄存器单元的数据输入端。
将额外创建的寄存器单元绑定到FPGA芯片中的专用寄存器上,若待映射选择器单元处于组合逻辑块中,其数据输出不受时钟信号控制,则将所述寄存器单元绑定至专用锁存器。若待映射选择器单元处于时序逻辑块中,其数据输出受到时钟信号控制,则将所述寄存器单元绑定至专用触发器。后续可以调用现有的结构化工艺映射算法实现组合逻辑单元的兼顾面积和时延的多目标优化映射。
可选的,在一个实施例中,除了可以按照本申请各个实施例提供的方法完成对各个多路选择器的工艺映射之外,还可以直接将与多路选择器相连的反相器的功能融合到多路选择器的工艺映射结果中,以优化掉反相器,减少逻辑单元总数。则该实施例还包括如下步骤:解析RTL级描述文件并识别得到反相器,与识别得到待映射选择器单元的方法类似,通过识别预定的描述语句即可识别得到反相器。若反相器的输出信号仅驱动待映射选择器单元且驱动至少一个待映射选择器单元,则根据反相器的连接关系修改其驱动的待映射选择器单元绑定的芯片器件的对应信息,并将反相器从全局逻辑网表中删除。主要有两种情况:
(5.1)反相器的输出信号为其驱动的待映射选择器单元的待选信号。则待选信号连接的单元绑定的芯片器件一般为查找表。则修改其驱动的待映射选择器单元绑定的芯片器件的对应信息包括:在待选信号连接的单元绑定的查找表实现的逻辑函数中,将待选信号对应的变量修改为反相形式得到新的逻辑函数,并按照新的逻辑函数修改查找表的配置信息。
(5.2)反相器的输出信号为待映射选择器单元的选择信号。则选择信号连接的单元绑定的芯片器件为查找表或多路选择器硬核,结合上述实施例,选择信号连接的单元绑定的芯片器件为查找表或第一级多路选择器硬核MUX0或第二级多路选择器硬核MUX1中的任一项。则修改其驱动的待映射选择器单元绑定的芯片器件的对应信息包括:
(5.2.1)若选择信号连接的单元绑定的芯片器件为查找表,则在选择信号连接的单元绑定的查找表实现的逻辑函数中,将选择信号对应的变量修改为反相形式得到新的逻辑函数,并按照新的逻辑函数修改查找表的配置信息。
(5.2.2)若选择信号连接的单元绑定的芯片器件为多路选择器硬核,则将选择信号连接的单元绑定的2选1的多路选择器硬核的两个端口上的待选信号进行交换。

Claims (18)

1.一种面向FPGA的多路选择器工艺映射方法,其特征在于,所述方法包括:
解析RTL级描述文件并识别得到待映射选择器单元,每个待映射选择器单元包括N个待选信号以及
Figure FDA0003391269010000011
位选择信号,符号
Figure FDA0003391269010000012
表示向上取整;
对于具有预设基本结构的待映射选择器单元,例化所述待映射选择器单元所具有的预设基本结构对应的模板、完成对所述待映射选择器单元的工艺映射,每个预设基本结构对应的模板是预先对具有所述预设基本结构的选择器单元完成工艺映射后保存得到的工艺网表;
对于不具有所述预设基本结构的待映射选择器单元,将所述待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元,并将所述待映射选择器单元的待选信号和选择信号按预定逻辑分配连接至相应的子单元,分别例化子单元所具有的预设基本结构对应的模板、完成对所述待映射选择器单元的工艺映射。
2.根据权利要求1所述的工艺映射方法,其特征在于,所述将所述待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元,并将所述待映射选择器单元的待选信号和选择信号按预定逻辑分配连接至相应的子单元,包括:
将所述待映射选择器单元作为待拆分单元开始进行若干层拆分,每一个待拆分单元被拆分为若干个第一级选择单元和一个第二级选择单元,所述第二级选择单元是基于预设基本结构得到的一个子单元,各个第一级选择单元的输出作为所述第二级选择单元的各个待选信号,所述待拆分单元的待选信号按第一编码顺序分为若干组且每一组作为拆分得到的一个第一级选择单元的待选信号;所述待拆分单元的选择信号按第二编码顺序分为若干组分别作为拆分得到的第一级选择单元和第二级选择单元的选择信号;将未达到子单元级别的第一级选择单元作为新的待拆分单元继续拆分;
其中,选择信号的所述第二编码顺序是R位选择信号从最低位至最高位的顺序,待选信号的所述第一编码顺序是根据各个待选信号对应的选择信号所构成的二进制数的大小对所述待选信号进行升序排列得到的顺序。
3.根据权利要求2所述的工艺映射方法,其特征在于,
对于log2N为整数而形成2K选1形式的待映射选择器单元,基于递归原则对所述待映射选择器单元依次进行拆分,K为参数;
对于log2N为非整数而不具有2K选1形式的所述待映射选择器单元,对所述待映射选择器单元拆分为若干个由2选1单元相连的2K选1形式的待拆分单元,对拆分过程中得到的各个2K选1形式的待拆分单元分别基于递归原则依次进行拆分,对拆分得到的各个2选1单元基于待选信号和选择信号连接的单元的映射结果对所述2选1单元进行映射。
4.根据权利要求3所述的工艺映射方法,其特征在于,预设基本结构的选择器单元包括:4选1选择器单元、8选1选择器单元以及16选1选择器单元,且4选1选择器单元与查找表进行绑定形成对应的模板,8选1选择器单元与查找表及其相连的第一级多路选择器硬核MUX0进行绑定形成对应的模板,16选1选择器单元与查找表及其依次相连的第一级多路选择器硬核MUX0和第二级多路选择器硬核MUX1进行绑定形成对应的模板;
则对于不具有所述预设基本结构的待映射选择器单元:
若所述待映射选择器单元的待选信号的数量N=2,则跳过对所述待映射选择器单元的处理;若所述待映射选择器单元的待选信号的数量N=3,则直接将所述待映射选择器单元与对应的查找表绑定完成工艺映射;
若所述待映射选择器单元的待选信号的数量N>4,则执行所述将所述待映射选择器单元的结构基于预设基本结构进行拆分得到若干个具有信号级联关系的子单元的步骤,且拆分得到的子单元至少包括:形成4选1选择器单元结构的子单元、形成8选1选择器单元结构的子单元、形成16选1选择器单元结构的子单元中的至少一种。
5.根据权利要求4所述的工艺映射方法,其特征在于,在对所述待映射选择器单元的拆分过程中,在拆分任意一个具有2K选1形式的待拆分单元时:
若K%4=0,则所述待拆分单元直接形成16n选1单元,将16n选1单元拆分为1个16选1单元和16个16n-1选1单元,将每个16n-1选1单元作为新的待拆分单元继续拆分直至n=2,其中,
Figure FDA0003391269010000021
且n≥2,
Figure FDA0003391269010000022
表示向下取整;
若K%4=1,则将所述待拆分单元拆分为1个2选1单元和2个16n选1单元,并将所述待拆分单元的选择信号中的从低至高的K-1位同时作为2个16n选1单元的选择信号、最高的一位作为2选1单元的选择信号,继续对每个16n选1单元分别依次进行拆分;
若K%4=2,则将所述待拆分单元拆分为1个4选1单元和4个16n选1单元,并将所述待拆分单元的选择信号中的从低至高的K-2位同时作为4个16n选1单元的选择信号、最高的两位作为4选1单元的选择信号,继续对每个16n选1单元分别依次进行拆分;
若K%4=3,则将所述待拆分单元拆分为1个8选1单元和8个16n选1单元,并将所述待拆分单元的选择信号中的从低至高的K-3位同时作为8个16n选1单元的选择信号、最高的三位作为8选1单元的选择信号,继续对每个16n选1单元分别依次进行拆分。
6.根据权利要求5所述的工艺映射方法,其特征在于,在对任意取值的参数n时的16n选1单元拆分为1个16选1单元和16个16n-1选1单元时,将16n选1单元的选择信号中的从低至高的4(n-1)位同时作为16个16n-1选1单元的选择信号、并将选择信号中的最高的4位作为16选1单元的选择信号。
7.根据权利要求5所述的工艺映射方法,其特征在于,对于任意一个具有2K选1形式的待拆分单元,当K%4=1时,对一个待拆分单元的结构拆分得到的子单元还包括2选1单元,且对所述待拆分单元最终拆分得到的结构中,所述待拆分单元的选择信号的次高位sK-2驱动的两个单元分别绑定到两个第二级多路选择器硬核MUX1,所述待映射选择器单元的选择信号的最高位sK-1驱动的单元绑定到一个三输入查找表LUT3,则所述方法还包括:对待拆分单元的选择信号的最高两位所驱动的单元进行合并操作,合并得到一个形成4选1选择器单元结构的子单元。
8.根据权利要求4所述的工艺映射方法,其特征在于,对任意的具有NF个待选信号且不具有2K选1形式的待拆分单元的拆分过程包括,令
Figure FDA0003391269010000031
Figure FDA0003391269010000032
则将具有NF个待选信号的待拆分单元拆分为1个作为第二级选择单元的2选1单元和1个作为第一级选择单元的
Figure FDA0003391269010000033
选1的待拆分单元,并将所述待拆分单元的待选信号中按照所述第一编码顺序的前
Figure FDA0003391269010000034
个待选信号连接到
Figure FDA0003391269010000035
选1的待拆分单元,将
Figure FDA0003391269010000036
选1的待拆分单元的输出和所述待拆分单元的待选信号中最高位的待选信号分别作为2选1单元的待选信号,所述待拆分单元的选择信号中的最低的KF-1位作为
Figure FDA0003391269010000037
选1的待拆分单元的选择信号、最高的一位作为2选1单元的选择信号;
Figure FDA0003391269010000038
则将具有NF个待选信号的待拆分单元拆分为1个作为第二级选择单元的2选1单元,以及包括
Figure FDA0003391269010000039
选1的待拆分单元和
Figure FDA00033912690100000310
选1的中间单元的第一级选择单元,将所述待拆分单元的待选信号按照所述第一编码顺序的前
Figure FDA0003391269010000041
个待选信号作为
Figure FDA0003391269010000042
选1的待拆分单元的待选信号、后
Figure FDA0003391269010000043
个待选信号作为
Figure FDA0003391269010000044
选1的待拆分单元的待选信号,
Figure FDA0003391269010000045
选1的待拆分单元和
Figure FDA0003391269010000046
选1的中间单元的输出分别作为2选1单元的两个待选信号;将所述待拆分单元的选择信号中的最低的KF-1位作为
Figure FDA0003391269010000047
选1的待拆分单元的选择信号、最低的
Figure FDA0003391269010000048
位作为
Figure FDA0003391269010000049
选1的待拆分单元的选择信号,将最高的一位选择信号作为2选1单元的选择信号;
基于递归原则对拆分得到的
Figure FDA00033912690100000410
选1的待拆分单元进行拆分;
对于拆分得到的
Figure FDA00033912690100000411
选1的中间单元,若
Figure FDA00033912690100000412
为2或3,则直接将
Figure FDA00033912690100000413
选1的中间单元与对应的查找表绑定完成工艺映射;若
Figure FDA00033912690100000414
Figure FDA00033912690100000415
为整数,则基于递归原则对
Figure FDA00033912690100000416
选1的中间单元依次进行拆分;若
Figure FDA00033912690100000417
Figure FDA00033912690100000418
非整数,则将
Figure FDA00033912690100000419
选1的中间单元作为新的具有NF个待选信号且不具有2K选1形式的待拆分单元进行拆分,并更新
Figure FDA00033912690100000420
9.根据权利要求8所述的工艺映射方法,其特征在于,所述对拆分得到的各个2选1单元基于待选信号和选择信号连接的单元的映射结果对所述2选1单元进行映射,包括:
若所述2选1单元的所有扇入单元均绑定到第一级多路选择器硬核MUX0,则将所述2选1单元绑定到第二级多路选择器硬核MUX1;若所述2选1单元的所有扇入单元均绑定到查找表且至少一个不是三输入查找表LUT3,则将所述2选1单元绑定到第一级多路选择器硬核MUX0;否则,将所述2选1单元绑定到三输入查找表LUT3;
其中,扇入单元是驱动2选1单元的待选信号的单元。
10.根据权利要求9所述的工艺映射方法,其特征在于,所述方法还包括:
若存在单个的2选1单元绑定到三输入查找表LUT3但扇出单元未绑定到三输入查找表LUT3,且所述2选1单元存在至少一个扇入单元绑定到三输入查找表LUT3、第一级多路选择器硬核MUX0或第二级多路选择器硬核MUX1中的一个,则对所述2选1单元执行预定优化映射操作;
或者,若存在多个2选1单元均绑定到三输入查找表LUT3且互连形成选择器链,获取所述选择器链上每个2选1单元及各自对应的扇入单元和扇出单元形成子网表,并将所述子网表中已绑定到五输入查找表LUT5或六输入查找表LUT6或多路选择器硬核的单元移除,计算子网表外部输入信号的时序并调用结构化工艺映射算法对所述子网表进行基于面积和时序的优化映射后,对于其中仍然绑定到三输入查找表LUT3、且存在至少一个扇入单元绑定到LUT3、MUX0或MUX1中的一个的2选1单元执行预定优化映射操作;
其中,扇出单元是以2选1单元的输出作为输入的单元。
11.根据权利要求10所述的工艺映射方法,其特征在于,对2选1单元执行的预定优化映射操作包括:
若所述2选1单元只有一个扇入单元绑定到LUT3、MUX0或MUX1中的一个,则利用一个五输入查找表LUT5替代原有映射结果合并实现对所述2选1单元及所述扇入单元的映射;
若所述2选1单元的两个扇入单元均分别绑定到LUT3、MUX0或MUX1中的一个:当两个扇入单元的选择信号相同时,利用一个六输入查找表LUT6替代原有映射结果合并实现对所述2选1单元及两个扇入单元的映射;当两个扇入单元的选择信号不相同且存在至少一个扇入单元绑定到LUT3时,利用一个五输入查找表LUT5替代原有映射结果合并实现对所述2选1单元及绑定到LUT3的一个扇入单元的映射;当两个扇入单元的选择信号不相同且两个扇入单元均未绑定到LUT3时,利用一个五输入查找表LUT5替代原有映射结果合并实现对所述2选1单元及选择信号较大的一个扇入单元的映射,选择信号较大是指该选择信号在第二编码顺序中的编码值较大。
12.根据权利要求1所述的工艺映射方法,其特征在于,对于log2N不是整数的待映射选择器单元,所述选择器单元根据R位选择信号形成的2R种条件分支中的N种条件分支对N个待选信号进行选择,所述方法还包括:
当解析所述RTL级描述文件时未检测到所述待映射选择器单元的不需锁存标识时,则按照预定方法处理未覆盖的条件分支;
当解析所述RTL级描述文件时检测到所述待映射选择器单元的不需锁存标识时,则不处理未覆盖的条件分支;
其中,所述未覆盖的条件分支是所有2R种条件分支中除用于选择N个待选信号的N种条件分支之外的其他条件分支。
13.根据权利要求12所述的工艺映射方法,其特征在于,所述按照预定方法处理未覆盖的条件分支,包括:
确定用于实现逻辑函数
Figure FDA0003391269010000051
的组合逻辑单元,s0,s1,…sR-1分别是R位选择信号中从低至高的各个信号位并作为所述逻辑函数的输入变量,任意第i个乘积项mi为R个输入变量的乘积,每个输入变量在一个乘积项中出现且仅出现一次,每个输入变量以原变量或反变量的形式出现在乘积项中;且以原变量形式出现时表示1、以反变量形式出现时表示0的基础上,将乘积项mi中的R个输入变量按从高至低的顺序排列得到的一组二进制数与十进制数i对应;F共N个最小项,每个最小项对应一个用于选择待选信号的条件分支;
当解析所述RTL级描述文件时未检测到不需锁存标识且检测到输出缺省信号标识时,则基于缺省信号ix、所述组合逻辑单元的输出iF、所述待映射选择器单元的输出iG为所述待映射选择器单元创建额外的2选1单元处理未覆盖的条件分支,并将额外创建的2选1单元直接绑定到三输入查找表LUT3;
当解析所述RTL级描述文件时未检测到不需锁存标识且未检测到输出缺省信号标识时,基于所述组合逻辑单元的输出iF以及所述待映射选择器单元的输出iG为所述待映射选择器单元创建额外的寄存器单元处理未覆盖的条件分支,并将额外创建的寄存器单元绑定到专用寄存器。
14.根据权利要求13所述的工艺映射方法,其特征在于,所述基于缺省信号ix、所述组合逻辑单元的输出iF、所述待映射选择器单元的输出iG为所述待映射选择器单元创建额外的2选1单元处理未覆盖的条件分支,包括:
为所述待映射选择器单元创建额外的2选1单元,所述待映射选择器单元的输出iG以及所述缺省信号ix分别作为所述2选1单元的两个待选信号,所述组合逻辑单元的输出iF作为所述2选1单元的选择信号;当组合逻辑单元的输出iF为1时,所述2选1单元输出待映射选择器单元的输出iG,否则输出所述缺省信号ix
15.根据权利要求13所述的工艺映射方法,其特征在于,所述基于所述组合逻辑单元的输出iF以及所述待映射选择器单元的输出iG为所述待映射选择器单元创建额外的寄存器单元处理未覆盖的条件分支,包括:
为所述待映射选择器单元创建额外的寄存器单元,所述组合逻辑单元的输出iF作为使能信号连接所述寄存器单元的使能端,所述待映射选择器单元的输出iG作为输入信号连接所述寄存器单元的数据输入端;若所述待映射选择器单元处于组合逻辑块中,其数据输出不受时钟信号控制,则将所述寄存器单元绑定至专用锁存器;若所述待映射选择器单元处于时序逻辑块中,其数据输出受到时钟信号控制,则将所述寄存器单元绑定至专用触发器。
16.根据权利要求1所述的工艺映射方法,其特征在于,所述方法还包括:
解析所述RTL级描述文件并识别得到反相器,若所述反相器的输出信号仅驱动待映射选择器单元且驱动至少一个待映射选择器单元,则根据所述反相器的连接关系修改所述待映射选择器单元绑定的芯片器件的对应信息,并将所述反相器从全局逻辑网表中删除。
17.根据权利要求16所述的工艺映射方法,其特征在于,若所述反相器的输出信号为待映射选择器单元的待选信号,则所述待选信号连接的单元绑定的芯片器件为查找表;
则在所述待选信号连接的单元绑定的查找表实现的逻辑函数中,将所述待选信号对应的变量修改为反相形式得到新的逻辑函数,并按照新的逻辑函数修改所述查找表的配置信息。
18.根据权利要求16所述的工艺映射方法,其特征在于,若所述反相器的输出信号为待映射选择器单元的选择信号,则所述选择信号连接的单元绑定的芯片器件为查找表或多路选择器硬核;
则在所述选择信号连接的单元绑定的查找表实现的逻辑函数中,将所述选择信号对应的变量修改为反相形式得到新的逻辑函数,并按照新的逻辑函数修改所述查找表的配置信息;
或者,将所述选择信号连接的单元绑定的2选1的多路选择器硬核的两个端口上的待选信号进行交换。
CN202111469894.5A 2021-12-03 2021-12-03 一种面向fpga的多路选择器工艺映射方法 Active CN114169274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111469894.5A CN114169274B (zh) 2021-12-03 2021-12-03 一种面向fpga的多路选择器工艺映射方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111469894.5A CN114169274B (zh) 2021-12-03 2021-12-03 一种面向fpga的多路选择器工艺映射方法

Publications (2)

Publication Number Publication Date
CN114169274A true CN114169274A (zh) 2022-03-11
CN114169274B CN114169274B (zh) 2024-09-17

Family

ID=80482877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111469894.5A Active CN114169274B (zh) 2021-12-03 2021-12-03 一种面向fpga的多路选择器工艺映射方法

Country Status (1)

Country Link
CN (1) CN114169274B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116502572A (zh) * 2023-06-21 2023-07-28 南京大学 基于改进二元决策树的多路选择器优化方法及系统
CN117473909A (zh) * 2023-10-11 2024-01-30 海光信息技术(苏州)有限公司 芯片、芯片设计方法、信号处理方法及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103745057A (zh) * 2014-01-08 2014-04-23 西安电子科技大学 Fpga中进行电子设计自动化的逻辑单元装箱方法
US10943043B1 (en) * 2020-03-26 2021-03-09 Xilinx, Inc. Multiple output constrained input lookup table generation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103745057A (zh) * 2014-01-08 2014-04-23 西安电子科技大学 Fpga中进行电子设计自动化的逻辑单元装箱方法
US10943043B1 (en) * 2020-03-26 2021-03-09 Xilinx, Inc. Multiple output constrained input lookup table generation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BRUNO SCHMITT 等: "SAT-based area recovery in structural technology mapping", 《2018 23RD ASIA AND SOUTH PACIFIC DESIGN AUTOMATION CONFERENCE (ASP-DAC)》, 22 February 2018 (2018-02-22), pages 586 - 591 *
余超凡: "FPGA工艺映射算法的优化研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 3, 15 March 2016 (2016-03-15), pages 135 - 1475 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116502572A (zh) * 2023-06-21 2023-07-28 南京大学 基于改进二元决策树的多路选择器优化方法及系统
CN116502572B (zh) * 2023-06-21 2023-11-17 南京大学 基于改进二元决策树的多路选择器优化方法及系统
CN117473909A (zh) * 2023-10-11 2024-01-30 海光信息技术(苏州)有限公司 芯片、芯片设计方法、信号处理方法及相关设备
CN117473909B (zh) * 2023-10-11 2024-10-01 海光信息技术(苏州)有限公司 芯片、芯片设计方法、信号处理方法及相关设备

Also Published As

Publication number Publication date
CN114169274B (zh) 2024-09-17

Similar Documents

Publication Publication Date Title
US6809551B1 (en) Method of optimizing routing in a programmable logic device
US7872497B2 (en) Flexible carry scheme for field programmable gate arrays
Trimberger Scheduling designs into a time-multiplexed FPGA
CN114169274B (zh) 一种面向fpga的多路选择器工艺映射方法
US7971172B1 (en) IC that efficiently replicates a function to save logic and routing resources
JPS63308411A (ja) プログラマブル集積回路デバイス
US20190228051A1 (en) Circuitry for high-bandwidth, low-latency machine learning
US20060059222A1 (en) Logic entity with two outputs for efficient adder and other macro implementations
US11580055B2 (en) Devices for time division multiplexing of state machine engine signals
US8463836B1 (en) Performing mathematical and logical operations in multiple sub-cycles
JPH05341963A (ja) 多ビット入力加算回路及びその方法
CN111047034A (zh) 一种基于乘加器单元的现场可编程神经网络阵列
US11163530B2 (en) Programmable-logic-directed multiplier mapping
US6480023B1 (en) Configurable logic block for PLD
US7024445B2 (en) Method and apparatus for use in booth-encoded multiplication
JP4011007B2 (ja) リコンフィギュラブル回路を備えた集積回路装置および処理装置
US6754686B1 (en) Literal sharing method for fast sum-of-products logic
US6012077A (en) Method and apparatus for indicating overflow status of bit-variable data employing pipelining adder
US7765249B1 (en) Use of hybrid interconnect/logic circuits for multiplication
WO1994012928A1 (en) Enhanced fast multiplier
US20070050435A1 (en) Leading-Zero Counter and Method to Count Leading Zeros
JP4413052B2 (ja) データフローグラフ処理装置および処理装置
US6578062B1 (en) Method and circuit for digital division
US20220244912A1 (en) Dynamic block size carry-skip adder construction on fpgas by combining ripple carry adders with routable propagate/generate signals
US20230367554A1 (en) Apparatus, a method of operating modulo k calculation circuitry and a non-transitory computer-readable medium to store computer-readable code for fabrication of an apparatus

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
GR01 Patent grant
GR01 Patent grant