一种现场可编程器件fpga逻辑单元模型及其通用装箱算法的制作方法

文档序号:6577459阅读:191来源:国知局

专利名称::一种现场可编程器件fpga逻辑单元模型及其通用装箱算法的制作方法
技术领域
:本发明属于现场可编程门阵列(FPGA)的电子设计自动化(ElectronicDesignAutomation,EDA)
技术领域
中,具体涉及一种FPGA逻辑单元的模型和一种基于查找表的现场可编程门阵列的逻辑单元通用装箱算法。
背景技术
:文献1指出,逻辑块(ConfigurableLogicBlock)是现场可编程门阵列(FieldProgrammableLogicArray,FPGA)中用以实现用户电路逻辑的部件,它和互连线资源(RoutingResources)、输入输出块(ConfigurableI/OBlock)是FPGA的三大重要组成部分,如图l所示。随着FPGA结构的发展,逻辑块逐步发展成为层次化逻辑块,并成为主流。层次化逻辑块(也称簇结构逻辑块,内含多个逻辑单元)把原先需采用互连线资源的线网放在了逻辑块内部成为内部互连(intraconnection),减轻了逻辑块与逻辑块之间的布线压力,从而提高了性能。学术研究方面,文献2提出一种层次化逻辑块的结构模型,如图2所示。层次逻辑块被称为逻辑簇(LogicCluster),逻辑簇中有N个逻辑单元,被称为BLE(BasicLogicElement),如图3所示。每个BLE内部仅有一个K输入查找表(Look-upTable,查找表)和一个触发器(DFF),可以实现组合或时序逻辑。逻辑簇中的内部互连是每个BLE的唯一输出端都可以输出到逻辑簇外部或者反馈到逻辑簇I个输入端一起经过一个(I+N)xKN的开关矩阵(SwitchMatrix)选通到N个BLE的任一输入端。逻辑簇是层次化逻辑块的一种最简单的结构模型,它内部的逻辑单元BLE和内部互连开关矩阵都采用了最简化的方式,它的不足之处在于第一,逻辑单元BLE结构是能够实现组合或时序逻辑的最简单的结构,不含有任何专用器件,描述的功能过于简单,这在商用FPGA的实际应用领域并不适用;第二,内部互连开关矩阵是全连通的,造成芯片的面积浪费。第三,内部的逻辑单元BLE之间的连接和与逻辑簇之间的连接关系过于简单,这在商用FPGA的实际应用领域也不适用。文献3针对逻辑簇模型的第二点不足研究了非全连通的内部互连开关矩阵,提出了几种内部互连开关矩阵的方案。Xilinx和Altera作为世界两大FPGA供应商,也推出多种全连通系列的FPGA芯片,比如Xilinx的5200系列和Altera的FLEX系列,图4是Xilinx公司XC4000系列FPGA的逻辑单元结构图,图5是Xilinx公司Virtex-II系列FPGA的逻辑单元结构图,图6是Xilinx公司Virtex-4系列FPGA的逻辑单元结构图。随着FPGA产品的逻辑块由最初平面化向层次化结构发展,学术界的逻辑簇模型是无法准确描述实用化FPGA的逻辑块的。因此合理的逻辑单元模型成为实用化FPGA芯片CAD流程装箱算法亟待解决的问题之一。装箱是工艺映射的一个子步骤。装箱的目标就是在考虑约束(如一个逻辑块中所容纳的查找表、不同的输入信号和时钟的数目等等)情况下,把电路网表中的功能元件进行组合尽可能的放到一个逻辑块中,装箱完成后就可以进行逻辑块的布局4。已有的装箱算法T-VPack5、RPack6都是处理针对上述逻辑簇模型(逻辑单元为BLE)的装箱问题。此装箱算法的共同的局限性在于逻辑簇模型过于简单,不能足够用于描述当今商用FPGA器件。美国加利福尼亚大学洛杉矶分校开发了RASP7系统,其中集成了3种与FPGA逻辑单元结构有关的装箱模块,分别可以处理Xilinx公司的XC3000系列12和XC4000系列FPGA的逻辑单元,以及Altera公司的FLEX-8000系列FPGA的逻辑单元8。此装箱算法局限于,仅仅针对早期平面化的商用FPGA器件结构的逻辑单元所设计。虽然9也提出了FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法,但是该算法在功能匹配过程中有大量的时间开销,因此并不适用于大规模的用户电路网表。目前没有一种既具有通用性,同时也兼备实用性的逻辑单元的模型和相关算法。参考文献1XilinxInc.,TheProgrammableLogicDataBook,2000.2V.Betz,丄RoseandA.Marquardt,ArchitectureandCADforDeepSubmicronFPGAs,KluwerAcademicPublisher,1999.3M.Masud,"FPGAroutingstructures:Anovelswitchbbckanddepopulatedinterconnectmatrixarchitecture",MAScThesis,December1999.4V.Betz,J.Rose,"VPR:Anewpacking,placementandroutingtoolforFPGAresearch",Proceedingsofthe7thinternationalworkshoponfield-programmablelogicandapplications.London,UK:Springer-Verlag,1997:213-222.5A.Marquardt,V.BetzandJ.Rose,"UsingCluster-BasedLogicBlockandTiming-DrivenPackingtoImproveFPGASpeedand.Density",ACMSymposiumonFPGAs.1999,pp.37-46.6E.Bozorgzadeh,S.Ogrenci-Memik,M.Sarrafzadeh,"RPack:Routability-drivenpackingforclusterbasedFPGAs",ProceedingsoftheAsia-SouthPacificdesignautomationconference,YokohamajJapan:IEEEPress,2001,pp.629-634.7JasonCong,JohnPeckandYuzhongDing,"RASP:AGeneralLogicSynthesisSystemforSRAM-basedFPGAs",Proceedingsofthe4thACMInternationalSymposiumonFPGAs,1996,pp.137-143.8AlteraInc.,DataBool^1998.19童家榕,倪刚,来金梅,"FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法",公开专利号CN1786968A,200
发明内容本发明旨在寻求一种既简单又实用并含有专用器件的FPGA逻辑单元模型,并在此基础上研究一种具有通用性且适用于大规模用户电路网表的逻辑单元装箱算法。本发明的技术方案是一种现场可编程器件FPGA逻辑单元模型,由三级组件构成第一级为査找表,第二级为专用器件,第三级为时序器件。所述第一级包含了两个K输入的查找表(701和702),K可以是2、3、4、5或6;所述第二级包含了K+l输入查找表多路选择器(705)、K+2输入査找表多路选择器(706)、两个加法器进位链多路选择器(703和704)、两个多路选择器(708和710)和两个"和输出"专用器件(707和709);所述第三级包含两个多路选择器(711和712)和两个时序器件(713和714)。第一级査找表701和702的输出端O分别连接到第二级的多路选择器705的两个数据信号输入端IA和IB,K+l输入査找表的输入IN(K+1)连接到多路选择器705的数据选通端S,多路选择器705的输出端O和K+l输入查找表的输出OUT(K+l)相连,IN(K+1)触发705的数据选通端S,以确定OUT(K+l)是选择査找表701的输出还是702的输出;多路选择器705的输出端O和逻辑单元的输入IN分别连接到第二级多路选择器706的两个数据信号输入端IA和IB,K+2输入查找表的输入IN(K+2)连接到多路选择器706的数据选通端S,多路选择器706的输出端O和K+2输入査找表的输出OUT(K+2)相连,IN(K+2)触发706的数据选通端S,以确定OUT(K+2)是选择査找表701的输出还是702的输出或者是逻辑单元的输入IN。14第二级多路选择器704的数据信号输入端IA和互连线进位输入CIN1相连,而数据信号输入端IB和专用进位输入CIN相连,通过配置多路选择器704的数据选通端S,可以任意选择704的输入信号是互连线输入CINl还是专用进位输入CIN。多路选择器703的数据信号输入端IA和互连线进位输入CINO相连,而数据信号输入端IB和多路选择器704的输出端O相连;多路选择器703的输出端O和专用进位输出CO以及互连线进位输出COO相连,通过配置多路选择器703的数据选通端S,可以任意选择703的输入信号是互连线进位输入还是专用进位输入。第二级"和输出"专用器件707的两个输入端10和II分别与第一级K输入查找表701的输出端O和第二级多路选择器704的输出端O相连,"和输出"专用器件707的输出端O与多路选择器708的IB输入端相连;多路选择器708的IA输入端则与第一级K输入査找表701的输出端O相连,多路选择器708的输出端O与组合输出DO和多路选择器711的IA输入端相连;通过配置多路选择器708的数据选通端S,可以任意选择708的输出是第一级K输入査找表701的输出还是第二级"和输出"专用器件707的输出。"和输出"专用器件709的两个输入端10和II分别与査找表702的输出端O和专用进位输入CIN相连,"和输出"专用器件709的输出端O与多路选择器710的IB输入端相连;多路选择器710的IA输入端则与查找表702的输出端O相连,多路选择器710的输出端O与组合输出Dl和多路选择器712的IA输入端相连;通过配置多路选择器710的数据选通端S,可以任意选择多路选择器710的输出是第一级K输入査找表702的输出还是第二级"和输出"专用器件709的输出。第三级多路选择器711的IB输入端与时序器件714的输出端O相连,多路选择器711的输出端O与时序器件713的D输入端相连;多路选择器712的IB输入端则与移位输入SIN相连,多路选择器712的输出端O与时序器件714的D输入端相连;时序器件713的输出端O和时序输出Q0以及移位输出相连;时序器件714的输出端O和时序输出Ql相连。通过配置多路选择器711的数据选通端S,可以任意选择时序器件713的输入是708的组合输出还是时序器件714的移位输出。通过配置多路选择器712的数据选通端S,可以任意选择时序器件714的输入是多路选择器710的组合输出还是移位输入SIN。一种基于上述逻辑单元模型的通用装箱算法,它的步骤如下2丄读入用户设计电路网表;2.2.对用户设计电路网表进行遍历,分别获得加法器进位链多路选择器,K+l输入查找表多路选择器,K+2输入査找表多路选择器等专用器件组;2.3.对已获得的加法器进位链多路选择器专用器件组和与之相连的加法器和输出专用器件以及非专用器件触发器和査找表,分别进行装箱处理;2.4.对已获得的K+l输入査找表多路选择器专用器件组和与之相连非专用器件触发器和査找表分别进行装箱处理;2.5.对己获得的K+2输入査找表多路选择器专用器件组和与之相连非专用器件触发器和査找表分别进行装箱处理;2.6.对已获得的其他专用器件组和与之相连非专用器件触发器和査找表分别进行装箱处理;2.7.判断用户电路网表中是否还存在非专用器件触发器或查找表,如否,转到步骤2.16;2.8.对这些非专用器件查找表和触发器动态创建自定义器件,这些器件称为LE;2.9.判断电路中是否存在创建的自定义器件LE,如否,转到步骤162.16;2.10.选择种子LE,根据种子LE端口信息动态创建自定义器件,该器件称为SLICE,并把种子LE装入该SLICE中;2.11.判断此SLICE是否已经装满,如是,转到步骤2.9;2.12.根据增益函数更新所有与该LE相连的LE增益值;2.13.选择增益值最大的LE;2.14.如果是非全连通装箱,检査该LE布通情况,如没有布通,则转到步骤2.13;如果是全连通装箱,则转到步骤2.15;2.15.根据选中的LE和上一个已经动态创建的自定义器件SLICE的端口信息以及他们之间线网连接情况,动态更新该自定义器件SLICE,并把LE装箱到该SLICE中,转到步骤2.11继续执行;2.16.根据逻辑单元的管脚描述匹配管脚;2.17.输出结果;2.18.结束。主程序步骤2.2中获得加法器进位链多路选择器的步骤如下-3.1.新建双向队列,用于存放查找到的加法器进位链多路选择器,该加法器进位链多路选择器形成的链即为加法器进位链;3.2.对用户设计电路网表进行遍历时,任意选择未标记过的加法器进位链多路选择器,并记录该加法器进位链多路选择器;3.3.把选中的加法器进位链多路选择器从双向队列尾部压入,在用户设计电路网表中标记该加法器进位链多路选择器已经访问过;3.4.判断该选中加法器进位链多路选择器的输出端是否连接到未标记过的加法器进位链多路选择器的输入端,如是,选择该未标记过的加法器进位链多路选择器后转到步骤3.3;3.5.选择在步骤3.2记录的加法器进位链多路选择器;3.6.判断该选中加法器进位链多路选择器的输入端是否连接到未标记过的加法器进位链多路选择器的输出端,否的话,转到步骤3.8;3.7.选中未标记过的加法器进位链多路选择器,把选中的加法器进位链多路选择器从双向队列首部压入,在用户设计电路网表中标记加法器进位链多路选择器已经访问过,并转到步骤3.6;3.8.结束。主程序步骤2.3中对加法器进位链装箱的步骤如下4丄新建一个容器,用于存放加法器进位链多路选择器和与之相连的其他逻辑器件;4.2.把双向队列中存放的第一个加法器进位链多路选择器从首部弹出,并压入容器;4.3.对该加法器进位链多路选择器的输入、输出端口分别进行遍历,确定与之相连的加法器"和输出"专用器件、非专用器件触发器和査找表。在用户设计电路网表中标记这些器件已经访问过,并把这些标记过的逻辑器件也压入容器;4.4.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为LE;4.5.把原先存放与容器中的逻辑器件放入新创建的用户器件LE,并更新相应的连接线网;4.6.判断是否取到了双向队列中存放的最后一个加法器进位链多路选择器,否的话,转到步骤4.2;4.7.判断双向队列中存放的最后一个加法器进位链多路选择器的输出端是否还连接到加法器"和输出"专用器件的输入端,否的话,转到步骤4.11;4.8.把该加法器"和输出"专用器件和与之相连接的查找表和触发器分别压入容器,并在用户设计电路网表中标记这些逻辑器件已经访问过;4.9.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为LE;4.10.把原先存放与容器中的逻辑器件放入新创建的用户器件LE,并更新相应的连接线网;4.11.清空容器;4.12.遍历之前形成的LE链,根据FPGA芯片逻辑单元可以最多容纳LE的数量,依次压入容器;容器中存放LE的数量逻辑单元为最多容纳LE的数量,根据容器中存放LE的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;4.13.把存放于容器中逻辑器件放入新创建的用户器件SLICE,并更新相应的连接线网。转到4.11继续执行,直至LE链遍历完,最终形成SLICE链;4.14.结束。主程序步骤2.4中对K+l输入査找表装箱的步骤如下5丄新建一个容器,用于存放K+1输入査找表多路选择器和与之相连的其他逻辑器件;5.2.判断K+l输入查找表多路选择器的两个数据输入端所连接的是否都为査找表,如果否,则报错并转到步骤5.7;5.3.判断K+l输入査找表多路选择器的输出端所连接的是否为触发器,如果是,则对该触发器进行标记示意此逻辑器件已经访问过,并压入容器;5.4在用户设计电路网表中对连接到K+1输入査找表多路选择器的两个数据输入端的2个K输入查找表压入容器,并进行标记,示意此逻辑器件已经访问过;5.5.根据容器中存放的逻辑器件输入输出端口信息,新创建一个19用户器件,这个器件称为SLICE;5.6.把存放于容器中的这些器件放入新创建的用户器件SLICE,并更新相应的连接线网;5.7.结束。主程序步骤2.5中对K+2输入査找表装箱的步骤如下6丄新建一个容器,用于存放K+2输入査找表多路选择器和与之相连的其他逻辑器件;6.2.判断K+2输入査找表多路选择器的两个数据输入端所连接的是否为K+l输入査找表多路选择器,如果否,则报错并转到步骤6.17;6.3.把K+2输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;6.4.选择其中1个K+1输入査找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;6.5.判断该K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.7;6.6.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;6.7.判断K+l输入查找表多路选择器的两个数据输入端所连接的是否都为査找表,如果否,则报错并转到步骤6.17;6.8.把这2个K输入査找表压入容器并对其进行标记,示意逻辑器件已经访问;6.9.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;6.10.清空容器;6.11.选择另外1个K+1输入査找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;206.12.判断该K+l输入査找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.14;6.13.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;6.14.判断K+l输入查找表多路选择器的两个数据输入端所连接的是否都为査找表,如果否,则报错并转到步骤6.17;6.15.把这2个K输入査找表压入容器并对其进行标记,示意逻辑器件已经访问过;6.16.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;6.17.结束。主程序步骤2.8中动态创建自定义器件LE和所述步骤2.10中动态创建自定义器件SLICE的具体步骤如下7丄选择容器中的任意器件;7.2.对该器件的所有输入输出管脚进行遍历,并对该器件所有管脚所连接的线网计数。转到7.1继续执行,直至容器中的器件遍历完;7.3.根据容器中的器件上管脚连接的线网计数不同情况,动态创建用户器件相应的端口;如果线网计数为1并且连接端口为输入端,标记为输出线网,并创建用户器件输出端口;如果线网计数为1并且连接端口为输出端,标记为输入线网,并创建用户器件输入端口;如果线网计数和该线网总端口数不一致,标记为部分线网,并创建用户器件输出端口;如果线网计数和该线网总端口数一致,标记为内部线网,但不创建用户器件端口;7.4.结束。上述算法在计算增益过程中,可以采用以布通率优先为实现目标的策略,也可以采用以时序优先为实现目标的策略。以布通率优先为实现目标,首先选择连接因子较小的LE作为第一个LE装箱到SLICE之内,然后选择那些和SLICE连接最紧密的LE装箱到SLICE之内,这些LE被装入到SLICE之后,将有较多的线网被吸收,从而减少布局布线时因过多线网带来的布线压力。同时将与LE和SLICE相连线网对LE吸引和那些没有和SLICE相连线网对LE吸引的影响考虑在内,把SLICE对LE的吸引转化为该LE被装箱到当前SLICE的概率,更加准确的选出增益较高的LE装箱到SLICE之内;这样可以更加准确的选出增益较高的LE装箱到SLICE之内,可以有效的将更多的线网装入到SLICE之内,而减少SLICE外部的线网数。所述布通率的增益函数由线网吸收增益和引脚共享增益相加而成,并用比例因子控制线网吸收增益和引脚共享增益两个加数之间的权值。布通率增益函数为輝"max{M7(丄,C)I丄ee,enC,max所述线网吸收增益的函数包含1)将SLICE对LE的直接吸引转化为该LE被装箱到当前SLICE的概率函数;2)把那些没有直接和SLICE相连的线网,分为两类,第一类是该线网上至少有两个节点是和SLICE直接相连,第二类是该线网上只有一个节点和SLICE直接相连,根据不同类型的线网,给出那些没有和SLICE直接相连的LE被装箱到SLICE的概率函数。线网吸收增益函数为22以时序优先为实现目标,首先根据LE的输入输出管脚上的到达时间和所需时间,计算出连接LE线网的时序裕度;再根据这些时序裕度,给出LE的关键值。关键值越大,表明此LE影响时序越大;反之,关键值越小,表明此LE影响时序越小。然后对LE的关键值进行排序,在对种子节点LE的选取时,选择关键值最大的。接下来在选取LE装箱到SLICE时候,以保持时序级数少为准则。在满足算法时序优先目标的同时,也尽量将SLICE装得比较满,并尽量减少连接到SLICE引脚上的线网数,达到减少布局产生的局部拥挤度。上述算法在进行非全连通结构的装箱操作时,对装箱操作的每一步结果做出评估,检查这种连接关系结果是否违背实际连接关系,并将SLICE内部的连接关系转化成一个图G(V,E),检査连接关系的过程,简化为图中寻找最短路径的问题。由于现有的技术主要局限于1)基于简单的层次化的逻辑块,在商用FPGA中并不适用;2)仅仅针对早期平面化的商用FPGA器件结构的逻辑单元所设计;3)FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法,由于功能匹配时间开销,并不适用于大规模的用户电路。本发明与现有技术相比优点在于逻辑单元的模型能广泛地描述现有商用FPGA芯片逻辑单元结构,基于此模型提出自下而上的通用逻辑单元装箱算法的重要思想在于分别对用户电路中以专用器件为核心的器件、以触发器为核心的器件和以查找表为核心的器件依次创建自定义逻辑器件,最后采用增益函数计算对这些自创的逻辑器件进行装箱,算法是处理各种逻辑单元装箱问题的一种普适性算法。既有广泛代表性,又具有通用性,同时也兼备实用性;采用自下而上的方法,时间开销性能优异,适用于大规模的用户电路。图l是典型的基于査找表的FPGA的结构示意图;图2是单个BLE的结构示意图3是由BLE组成的层次化结构的逻辑块框图4是Xmnx公司XC4000系列FPGA的逻辑单元结构图5是Xilinx公司Virtex-II系列FPGA的逻辑单元结构图6是Xilinx公司Virtex-4系列FPGA的逻辑单元结构图7是本发明FPGA的逻辑单元模型框图8是本发明FPGA的逻辑单元模型结构图9是本发明逻辑单元通用装箱算法的详细流程图IO是线网权重例图lla是SLICE内部非全连通示意图llb是图lla对应的图描述示意图。图12是在非全连通结构时判断结果是否违背实际连接关系流程图具体实施例方式附图4、附图5和附图6是Xilinx公司三种系列FPGA的逻辑单元结构图,根据FPGA所能实现的用户电路的功能,可以把电路分成3类1)由专用器件组成的逻辑功能;2)由查找表和触发器非专用器件组成的逻辑功能;3)由CPU、RAM块、DSP核等IP核组成的逻辑功能。其中由逻辑单元完成的用户电路只有l)和2)。本发明把实现用户电路1)和2)的逻辑单元根据各种不同器件的相互驱动情况,简化成三级模型第一级为查找表,第二级为专用器件,第三级为时序器件,如图7所示。査找表用于映射任意K输入的组合逻辑,同时通过不同多路选择器选择组成更大输入查找表;专用器件将查找表输出的组合逻辑通过进位转为一位加法组合输出,从而实现全加器功能;专用器件也可以将时序输出通过移位,实现高效地移位功能;同时通过多路选择器传输给时序器件,转为时序输出。24根据上述原理,附图8所示的本发明FPGA的逻辑单元模型结构图中,K输入査找表701用于映射任意K输入的组合逻辑,通过多路选择器708,即可把査找表701输出端O输出为组合输出D0;再通过多路选择器711,把査找表701输出端O输入到时序器件713的输入端D,可以实现组合逻辑的时序输出。类似地,K输入査找表702可以用于映射其他任意K输入的组合逻辑,结合时序器件714,可以实现组合逻辑的时序输出。这两部分映射互不相关,可以各自映射到FPGA逻辑单元中。K输入査找表701和K输入查找表702可以组合用于映射任意K+l输入的组合逻辑;査找表701和查找表702的K输入相同,输出端O分别输入到模型第二级专用器件705的IA和IB端口,K+l的输入端输入到专用器件705的S端,可以实现K+l输入的组合逻辑功能。模型第二级专用器件706的IA和IB端口分别连接K+l输入的组合逻辑的输出,K+2的输入端输入到专用器件706的S端,两个逻辑单元组合,可以实现K+2输入的组合逻辑功能。移位输入通过多路选择器712,输入到时序器件714的输入端D,再通过多路选择器711,把时序器件714输出端Q输入到时序器件713的输入端D,依次把移位输出SO和移位输入SIN相连,实现任意n位移位。进位输入通过多路选择器704,可以选择进位输入的来源,以便于进位可以由互连线输入信号。进位列多路选择器704输出端O直接连接进位列多路选择器704输入端IB,进位列多路选择器703输出端O直接连接下一级进位列多路选择器的输入端IB,依次把进位输出CO和进位输入CIN相连,实现任意n位加法器的进位列。K输入查找表702可以映射"④6的逻辑功能,K输入査找表702输出端0和进位输入CIN分别输入"和输出"专用器件707的IO和Il输入端。"和输出"专用器件709实现了一位全加器aeWC7AA和输出的逻辑功能。通过多路选择器710,即可把"和输出"专用器件709输出端O输出为组合输出DO。再通过多路选择器714,把"和输出"专用器件709输出端O输入到时序器件714的输入端D,可以实现一位全加器和输出的时序输出。类似地,在n位加法器的进位列中分别把进位列和K输入查找表,"和输出"专用器件和多路选择器相连,即可实现n位全加器。上述模型能广泛地描述现有商业领域的FPGA的逻辑单元结构。基于上述FPGA逻辑单元的模型,本发明还提出了具有通用性的逻辑单元装箱算法,算法的详细流程如图9所示。通用性装箱算法的输入项有l)逻辑单元的管脚描述;2)用户设计的电路网表(工艺映射算法处理后的门级网表)3)如果针对非全连通结构,非全连通的描述。算法的输出项是用于布局布线的由逻辑单元组成的用户电路网表。本发明提出了根据用户不同的优化需求或者不同的优化侧重点,针对不同优化目的而采用不同策略偏重的增益函数。如实现目标以布通率优先有其特有的布通率增益函数和实现目标以时序优先有其特有的时序增益函数,分别采用不同权值的策略把这些不同的增益函数归一化成总的增益函数,由此可以自由的得到不同的优化目的。如果实现目标是布通率优先,本发明通过采用LE和SLICE之间相连的线网来量化它们之间连接的紧密程度,从而表述和SLICE连接紧密程度的LE。假设有一个名为X的LE和一个名为C的SLICE,它们之间有线网e连接,则它们之间的关系即可用吸引计算表示为v4(X,C,e)=w(e)(l+ae),人1其中ote表示该线网有多少个引脚在SLICE之内。而w(e)为线网权重,p为线网引脚数。很显然,线网上所含的引脚在SLICE内部越多,那么就表示该线网和SLICE内部LE连接数目越多,也就是线网和SLICE的连接越紧密。如果LE和SLICE有多条线网相连,那么SLICE对LE的吸引计算公式为连接它们的每条线网吸引值之和。26如果优化目的是为了让更多的线网被装箱到SLICE内部,而含引脚数较少的线网相对于含引脚数较多的线网,将更有利于被全部装箱到SLICE内部,所以SLICE对LE的吸引计算公式体现了线网对LE增益与线网的权重成正比关系。对于那些没有直接和SLICE相连的线网,将它们分为两类,第一类是该线网上至少有两个节点是和SLICE直接相连,第二类是该线网上只有一个节点和SLICE直接相连。对于第一类线网,本发明把该线网所连接的LE也分为两类,一类是LE与SLICE直接相连,此时将SLICE对LE的直接吸引转化为该LE被装箱到当前SLICE的概率,即max(J(v,C)Ivee,enC#而另一类没有和SLICE直接相连的LE被装箱到SLICE的概率为一min(伞,C)l/wee,gnC—}尸(A_)=-^-^2xmax^(v,C)1vee,enC—}将和第一类线网相连并且还和SLICE直接相连的LE装箱到SLICE内部,隐含着另外的一些和该线网相连并且还和SLICE相连的LE将有更大的概率被装箱到SLICE内部,那么意味着该线网将被装箱到SLICE之内。该线网给LE的吸引为一个正值,将该线网的吸引定为该线网被全部装箱到了SLICE内部的概率,也就是该线网上所有未被装箱节点v被装箱到一个SLICE的概率,可以认为这些节点是独立不相关的。含节点数少的线网的应优先于含节点数多的线网,那么线网e对LE单^Z的吸引函数为g(%,C,e)=w(e)fl尸(v)其中t/C是还没有被装箱的LE构成的集合。对于第二类线网,如果将和该线网相连并且还和SLICE直接相连的LE装箱到SLICE内部,那么该线网将被跨接在不同的SLICE,从而增加外部的布线压力,所以该线网对LE的吸引应该为一个负值。将这种影响平分到该线网上的每个节点,并且含节点数较少的线网相对于含节点数较多的线网更不应该被跨接在不同的SLICE之间,这里给出线网e对LE单^Y的吸引函数为SLICE对LE的吸引为所有和该LE相连线网的对该LE的吸引之和构成,SLICE单元C对LE单^iZ^吸引函数为(芈oC,义e4{e|erC—,Xee)基于此函数,可以有效的将更多的线网装入到SLICE之内,而减少SLICE外部的线网数。但仅仅单一减少线网数并不能有效的减少布线所需通道数,而是还和装箱后SLICE所使用引脚数目有关,还需要考虑LE之间的引脚共享,从而减少局部的拥挤度。LE和SLICE之间的引脚数共享增益函数为因此最终布通率益函数为CG(Z)=(l-a)max,(丄,C)I丄ee,enC—}SG(Z,C)max(SG(丄,C)|丄ee,enC^0}其中a是用来控制线网吸收增益(式中第一项)和引脚共享增益(式中第二项)之间的比例因子。a取0.2时,该增益函数可以同时优化装箱到SLICE之外的线网数和SLICE使用的引脚数。表l罗列了不同算法装箱后线网数,可配置逻辑单元数,可配置逻辑单元使用引脚平均数。显而易见本发明提出的算法在性能上得到了极大的改善。28表l装箱后线网数,可配置逻辑单元数,可配置逻辑单元使用引脚平均数<table>tableseeoriginaldocumentpage29</column></row><table>如果实现目标是时序优先,首先该算法对电路进行时序分析,算出关键路径,然后再计算每个节点的需求时间和到达时间。最后在将每个节点LE的需求时间和到达时间转换为该节点LE权重,由于SLICE内部LE之间的延时要比SLICE之间连接延时要小很多,所以,目标就是将处在关键路径上的LE尽可能的装箱到一个SLICE,这样就可以縮短在关键路径上的延时,因此提高整个电路的运行速度。通过对电路的时序进行分析,可以得到每个节点LE的需求时间Trequired和到达时间Tarrival,那么每个节点LE的裕度s/ac/t为越靠近关键路径的线网,其裕度越小。通过计算每根线网的W"A,确定其中的最大值^a^/^A:后,通过归一化得到每根线网的关键度Criticality如下式….'.■<血C^:CWftca/炒=1--根据这些关键度值,给出LE的时序增益值。时序增益值越大,表明此LE影响时序越大。反之,增益值越小,表明此LE影响时序越小。先对LE的增益值进行排序;在对种子节点LE的选取时,选择增益值最大的。线网的关键度值越大,表明约需要考虑其对系统时延的影响,在装箱过程中更需要考虑。如图10所示,通常在装箱的时候,有很多LE处在关键路径上,并且它们之间的关键度相差无几,为此,将每个LE影响的关键路径数目考虑进来,显然,如果该LE影响的关键路径数目越多的话,那么该LE对电路的运行速度影响越大,于是该LE的优先级也应比较高。这样就可以将关键路径上的LE尽可能的装箱到一个SLICE,可以大大的提高电路的运行速度。在满足算法时序优先目标的同时也应尽量将SLICE装的比较满和减少连接到SLICE引脚上的线网数,达到减少布局产生的局部拥挤度。通过有效的权值控制,来尽可能的满足时序和面积最优,因此增益函数如下G(力=(1-,G(Z)+PCG(X)其中"用来控制时序增益(式中第一项)和布通率增益(式中第二项)之间的比例因子,rG(G)和CC(G)分别为时序增益和布通率增益。在进行非全连通结构的装箱操作时,对SLICE内部的连接关系按如下的方式进行处理。将SLICE内部的连接关系转化成一个图G30(V,E)。点集合V包括SLICE外部的输入引脚,同时我们还引进一个源点,如图lla、llb所示,所有外部输入引脚的信号都来自于该源点,LE的输出引脚,以及LE的每个输入引脚也都采用一个点描述。边集合E包括如果某点的信号能够到达另外一个点,则它们之间将存在一条有向边,边集合就是所有这些有向边构成的集合。对于一个全连通的SLICE而言,每个LE的几个基本输入是完全等效,因为调整每个输入所在的位置对LE最终的逻辑功能没有影响,只要相应的调整编程点信息就可以了。同时SLICE外部的输入也是完全等效的,因为它们和内部每个LE的连接关系是一样的。寻找路径的过程,我们转化为一个在图中寻找最短路径布线的问题,就是将LE之间的连接关系布线到给定的连线资源中去。需要布线的连线包括SLICE外部输入到LE的输入,LE的反馈到LE的输入。根据输入节点LE的连接度和反馈节点LE的连接度的大小决定是首先对哪一类线网进行布线。算法应该先布线连接度较小的节点LE,因为这些LE连接的LE是相对有限的,如果它们所能连接的LE被占用,那么从该LE出发的线网,将无法寻找到一条路径来布线到资源图中去。在决定首先对哪一类线网进行布线之后,然后对需要布线的线网按含有节点LE数多少以降序的方式进行布线。上述算法在进行非全连通结构的装箱操作时,对装箱操作的每一步结果做出评估,检查这种连接关系结果是否违背实际连接关系,如图12所示。当不存在没有布线的线网时,得到的结果与实际连接关系一致,而如果存在没有布线的线网时,则可能违背实际连接关系。3权利要求1.一种现场可编程器件FPGA逻辑单元模型,其特征在于它由三级组件构成第一级为查找表,第二级为专用器件,第三级为时序器件;所述第一级包含了两个K输入的查找表(701和702),K可以是2、3、4、5或6;所述第二级包含了K+1输入查找表多路选择器(705)、K+2输入查找表多路选择器(706)、两个加法器进位链多路选择器(703和704)、两个多路选择器(708和710)和两个“和输出”专用器件(707和709);所述第三级包含两个多路选择器(711和712)和两个时序器件(713和714);第一级查找表701和702的输出端O分别连接到第二级的多路选择器705的两个数据信号输入端IA和IB,K+1输入查找表的输入IN(K+1)连接到多路选择器705的数据选通端S,多路选择器705的输出端O和K+1输入查找表的输出OUT(K+1)相连;多路选择器705的输出端O和逻辑单元的输入IN分别连接到第二级多路选择器706的两个数据信号输入端IA和IB,K+2输入查找表的输入IN(K+2)连接到多路选择器706的数据选通端S,多路选择器706的输出端O和K+2输入查找表的输出OUT(K+2)相连;第二级多路选择器704的数据信号输入端IA和互连线进位输入CIN1相连,而数据信号输入端IB和专用进位输入CIN相连;多路选择器703的数据信号输入端IA和互连线进位输入CIN0相连,而数据信号输入端IB和多路选择器704的输出端O相连;多路选择器703的输出端O和专用进位输出CO以及互连线进位输出CO0相连;第二级“和输出”专用器件707的两个输入端I0和I1分别与第一级查找表701的输出端O和第二级多路选择器704的输出端O相连;“和输出”专用器件707的输出端O与多路选择器708的IB输入端相连,多路选择器708的IA输入端则与第一级查找表701的输出端O相连;多路选择器708的输出端O与组合输出D0和多路选择器711的IA输入端相连;“和输出”专用器件709的两个输入端I0和I1分别与第一级查找表702的输出端O和专用进位输入CIN相连,“和输出”专用器件709的输出端O与多路选择器710的IB输入端相连,多路选择器710的IA输入端则与第一级查找表702的输出端O相连;多路选择器710的输出端O与组合输出D1和多路选择器712的IA输入端相连;第三级多路选择器711的IB输入端与时序器件714的输出端O相连,多路选择器711的输出端O与时序器件713的D输入端相连;多路选择器712的IB输入端则与移位输入SIN相连,多路选择器712的输出端O与时序器件714的D输入端相连;时序器件713的输出端O和时序输出Q0以及移位输出相连;时序器件714的输出端O和时序输出Q1相连。2.—种基于权利要求1所述逻辑单元模型的通用装箱算法,其特征在于它的步骤如下-2丄读入用户设计电路网表;2.2.对用户设计电路网表进行遍历,分别获得加法器进位链多路选择器,K+l输入查找表多路选择器,K+2输入查找表多路选择器等专用器砟组;2.3.对已获得的加法器进位链多路选择器专用器件组和与之相连的加法器和输出专用器件以及非专用器件触发器和查找表,分别进行装箱处理;2.4.对已获得的K+l输入查找表多路选择器专用器件组寧与之相连非专用器件触发器和查找表分别进行装箱处理;2.5.对已获得的K+2输入查找表多路选择器专用器件组和与之相连非专用器件触发器和查找表分别进行装箱处理;,2.6.对已获得的其他专用器件组和与之相连非专用器件触发器和查找表分别进行装箱处理;2.7.判断用户电路网表中是否还存在非专用器件触发器或查找表,如否,转到步骤2.16;2.8.对这些非专用器件查找表和触发器动态创建自定义器件,这些器件称为LE;2.9.判断电路中是否存在创建的自定义器件LE,如否,转到步骤2.16;2.10.选择种子LE,根据种子LE端口信息动态创建自定义器件,该器件称为SLICE,并把种子LE装入该SLICE中;2.11.判断此SLICE是否已经装满,如是,转到步骤2.9;2.12.根据增益函数更新所有与该LE相连的LE增益值;2.13.选择增益值最大的LE;2.14.如果是非全连通装箱,检查该LE布通情况,如没有布通,则转到步骤2.13;如果是全连通装箱,则转到步骤2.15;2.15.根据选中的LE和上一个已经动态创建的自定义器件SLICE的端口信息以及他们之间线网连接情况,动态更新该自定义器件SLICE,并把LE装箱到该SLICE中,转到步骤2.11继续执行;2.16.根据逻辑单元的管脚描述匹配管脚;2.17.输出结果;2.18.结束。3.根据权利要求2所述通用装箱算法,其特征在于所述步骤2.2中获得加法器进位链多路选择器的步骤如下3丄新建双向队列,用于存放查找到的加法器进位链多路选择器,该加法器进位链多路选插器形成的链即为加法器进位链;3.2.对用户设计电路网表进行遍历时,任意选择未标记过的加法器进位链多路选择器,并记录该加法器进位链多路选择器;3.3.把选中的加法器进位链多路选择器从双向队列尾部压入,在用户设计电路网表中标记该加法器进位链多路选择器已经访问过;3.4.判断该选中加法器进位链多路选择器的输出端是否连接到未标记过的加法器进位链多路选择器的输入端,如是,选择该未标记过的加法器进位链多路选择器后转到步骤3.3;3.5.选择在步骤3.2记录的加法器进位链多路选择器;3.6.判断该选中加法器进位链多路选择器的输入端是否连接到未标记过的加法器进位链多路选择器的输出端,否的话,转到步骤3.8;3.7.选中未标记过的加法器进位链多路选择器,把选中的加法器进位链多路选择器从双向队列首部压入,在用户设计电路网表中标记加法器进位链多路选择器已经访问过,并转到步骤3.6;3.8.结束。4.根据权利要求2所述通用装箱算法,其特征在于所述步骤2.3中对加法器进位链装箱的步骤如下-4丄新建一个容器,用于存放加法器进位链多路选择器和与之相连的其他逻辑器件;4.2.把双向队列中存放的第一个加法器进位链多路选择器从首部弹出,并压入容器;4.3.对该加法器进位链多路选择器的输入、输出端口分别进行遍历,确定与之相连的加法器"和输出"专用器件、非专用器件触发器和查找表。在用户设计电网表中标记这些器件已经访问过,并把这些标记过的逻辑器件也压入容器;4.4.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为-LE;4.5.把原先存放与容器中的逻辑器件放入新创建的用户器件LE,并更新相应的连接线网;4.6.判断是否取到了双向队列中存放的最后一个加法器进位链多路选择器,否的话,转到步骤4.2;4.7.判断双向队列中存放的最后一个加法器进位链多路选择器的输出端是否还连接到加法器"和输出"专用器件的输入端,否的话,转到步骤4.11;4.8.把该加法器"和输出"专用器件和与之相连接的查找表和触发器分别压入容器,并在用户设计电路网表中标记这些逻辑器件已经访问过;4.9.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为LE;4.10.把原先存放与容器中的逻辑器件放入新创建的用户器件LE,并更新相应的连接线网;4.11.清空容器;4.12.遍历之前形成的LE链,根据FPGA芯片逻辑单元可以最多容纳LE的数量,依次压入容器;容器中存放LE的数量逻辑单元为最多容纳LE的数量,根据容器中存放LE的输入输出端口信息,新创建一,个用户器件,这个器件称为SLICE;4.13.把存放于容器中逻辑器件放入新创建的用户器件SLICE,并更新相应的连接线网。转到4.11继续执行,直至LE链遍历完,最终形成SLICE链;4.14.结束。5.根据权利要求2所述通用装箱算法,其特征在于所述步骤2.4中对K+1输入查找表装箱的步骤如下6.新建一个容器,用于存放K+1输入查找表多路选择器和与之相连的其他逻辑器件;[5.2.判断K+l输入査找表多路选择器的两个数据输入端所连接的是否都为査找表,如果否,则报错并转到步骤5.7;[5.3.判断K+l输入査找表多路选择器的输出端所连接的是否为触发器,如果是,则对该触发器进行标记示意此逻辑器件已经访问过,并压入容器;[5.4.在用户设计电路网表中对连接到K+1输入查找表多路选择器的两个数据输入端的2个K输入查找表压入容器,并进行标记,示意此逻辑器件已经访问过;[5.5.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;[5.6.把存放于容器中的这些器件放入新创建的用户器件SLICE,并更新相应的连接线网;[5.7.结束。6.根据权利要求2所述通用装箱算法,其特征在于所述步骤2.5中对K+2输入查我表装箱的步骤如下[6丄新建一个容器,用于存放K+2输入査找表多路选择器和与之相连的其他逻辑器件;[6.2.判断K+2输入查找表多路选择器的两个数据输入端所连接的是否为K+l输入查找表多路选择器,如果否,则报错并转到步骤6.17;[6.3.把K+2输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;[6.4.选择其中1个K+1输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;[6.5.判断该K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.7;[6.6.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;6.7.判断K+l输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤6.17;6.8.把这2个K输入査找表压入容器并对其进行标记,示意逻辑器件已经访问;6.9.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE6.10.清空容器;6.11.选择另外1个K+1输入査找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;6.12.判断该K+l输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.14;6.13.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;6.14.判断K+l输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤6.17;6.15.把这2个K输入查找表压入容器并对其进行标记,示意逻辑器件已经访问过;6.16.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;6.17.结束。7.根据权利要求2所述通用装箱算法,其特征在于所述步骤2.8中动态创建自定义器件LE和所述步骤2.10中动态创建i定义器件SLICE的具体步骤如下7丄选择容器中的任意器件;7.2.对该器件的所有输入输出管脚进行遍历,并对该器件所有管脚所连接的线网计数。转到7.1继续执行,直至容器中的器件遍历完;7.3.根据容器中的器件上管脚连接的线网计数不同情况,动态创建用户器件相应的端口;如果线网计数为1并且连接端口为输入端,标记为输出线网,并创建用户器件输出端口;*如果线网计数为1并且连接端口为输出端,标记为输入线网,并创建用户器件输入端口;如果线网计数和该线网总端口数不一致,标记为部分线网,并创建用户器件输出端口;如果线网计数和该线网总端口数一致,标记为内部线网,但不创建用户器件端口;7.4.结束。8.根据权利要求2至7中之一所述通用装箱算法,其特征在于算法在计算增益过程中,可以采用以布通率优先为实现目标的策略,也可以采用以时序优先为实现目标的策略。9.根据权利要求8所述通用装箱算法,其特征在于所述以布通率优先为实现目标,首先选择连接因子较小的LE作为第一个LE装箱到SLICE之内,然后选择那些和SLICE连接最紧密的LE装箱到SLICE之内,使得较多的线网被吸收;同时将与LE和SLICE相连线网对LE吸引和那些没有和SLICE相连线网对LE吸引的影响考虑在内,把SLICE对LE的吸引转化为该LE被装箱到当前SLICE的概率,更加准确的选出增益较高的LE装箱到SLICE之内。10.根据权利要求9所述通用装箱算法,其特征在于所述布通率的增益函数由线网吸收增益和引脚共享增益相加而成,并用比例因子控制线网吸收增益和引脚^享增益两个加数之间的权值。11.根据权利要求10所述通用装箱算法,其特征在于所述线网吸收增益的函数包含1)将SLICE对LE的直接吸引转化为该LE被装箱到当前SLICE的概率函数;2)把那些没有直接和SLICE相连的线网,分为两类,第一类是该线网上至少有两个节点是和SLICE直接相连,第二类是该线网上只有一个节点和SLICE直接相连,根据不同类型的线网,给出那些没有和SLICE直接相连的LE被装箱到SLICE的概率函数。12.根据权利要求8所述通用装箱算法,其特征在于所述以时序优先为实现目标,首先根据LE的输入输出管脚上的到达时间和所需时间,计算出连接LE线网的时序裕度;再根据这些时序裕度,给出LE的关键值;然后对LE的关键值进行排序,在对种子节点LE的选取时,选择关键值最大的;接下来在选取LE装箱到SLICE时候,以保持时序级数少为准则;在满足算法时序优先目标的同时,也尽量将SLICE装得比较满,并尽量减少连接到SLICE引脚上的线网数。13.根据权利要求2至7之一所述通用装箱算法,其特征在于在进行非全连通结构的装箱操作时,对装箱操作的每一步结果做出评估,检查这种连接关系结果是否违背实际连接关系,并将SLICE内部的连接关系转化成一个图G(V,E),检查连接关系的过程简化为图中寻找最短路径的问题。全文摘要本发明涉及一种现场可编程器件FPGA逻辑单元模型及其通用装箱算法,它根据逻辑单元中所能实现用户电路逻辑功能类型进行分析和建模,按照其相互驱动情况可以分成三级,第一级为查找表,第二级为专用器件,第三级为时序器件,该模型能广泛地描述现有商用FPGA芯片逻辑单元结构。基于此模型本发明提出自下而上的通用逻辑单元装箱算法,该算法分别对用户电路中以专用器件为核心的器件、以时序器件为核心的器件和以查找表为核心的器件依次创建自定义逻辑器件,最后采用增益函数计算对这些自创的逻辑器件进行装箱,是处理各种逻辑单元装箱问题的一种普适性算法。既有广泛代表性,又具有通用性,同时也兼备实用性;时间开销性能优异,适用于大规模的用户电路。文档编号G06F17/50GK101515312SQ200910130548公开日2009年8月26日申请日期2009年3月27日优先权日2008年12月3日发明者周学功,萌杨,王侃文,童家榕申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1