CN101515312A - 一种现场可编程器件fpga逻辑单元模型及其通用装箱算法 - Google Patents

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

Info

Publication number
CN101515312A
CN101515312A CNA2009101305487A CN200910130548A CN101515312A CN 101515312 A CN101515312 A CN 101515312A CN A2009101305487 A CNA2009101305487 A CN A2009101305487A CN 200910130548 A CN200910130548 A CN 200910130548A CN 101515312 A CN101515312 A CN 101515312A
Authority
CN
China
Prior art keywords
mux
input
look
slice
output
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
CNA2009101305487A
Other languages
English (en)
Other versions
CN101515312B (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.)
Fudan University
Original Assignee
Fudan University
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 Fudan University filed Critical Fudan University
Priority to CN2009101305487A priority Critical patent/CN101515312B/zh
Publication of CN101515312A publication Critical patent/CN101515312A/zh
Application granted granted Critical
Publication of CN101515312B publication Critical patent/CN101515312B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明涉及一种现场可编程器件FPGA逻辑单元模型及其通用装箱算法,它根据逻辑单元中所能实现用户电路逻辑功能类型进行分析和建模,按照其相互驱动情况可以分成三级,第一级为查找表,第二级为专用器件,第三级为时序器件,该模型能广泛地描述现有商用FPGA芯片逻辑单元结构。基于此模型本发明提出自下而上的通用逻辑单元装箱算法,该算法分别对用户电路中以专用器件为核心的器件、以时序器件为核心的器件和以查找表为核心的器件依次创建自定义逻辑器件,最后采用增益函数计算对这些自创的逻辑器件进行装箱,是处理各种逻辑单元装箱问题的一种普适性算法。既有广泛代表性,又具有通用性,同时也兼备实用性;时间开销性能优异,适用于大规模的用户电路。

Description

一种现场可编程器件FPGA逻辑单元模型及其通用装箱算法
技术领域
本发明属于现场可编程门阵列(FPGA)的电子设计自动化(Electronic Design Automation,EDA)技术领域中,具体涉及一种FPGA逻辑单元的模型和一种基于查找表的现场可编程门阵列的逻辑单元通用装箱算法。
技术背景
文献【1】指出,逻辑块(Configurable Logic Block)是现场可编程门阵列(Field Programmable Logic Array,FPGA)中用以实现用户电路逻辑的部件,它和互连线资源(Routing Resources)、输入输出块(Configurable I/O Block)是FPGA的三大重要组成部分,如图1所示。
随着FPGA结构的发展,逻辑块逐步发展成为层次化逻辑块,并成为主流。层次化逻辑块(也称簇结构逻辑块,内含多个逻辑单元)把原先需采用互连线资源的线网放在了逻辑块内部成为内部互连(intra connection),减轻了逻辑块与逻辑块之间的布线压力,从而提高了性能。学术研究方面,文献【2】提出一种层次化逻辑块的结构模型,如图2所示。层次逻辑块被称为逻辑簇(Logic Cluster),逻辑簇中有N个逻辑单元,被称为BLE(Basic Logic Element),如图3所示。每个BLE内部仅有一个K输入查找表(Look-up Table,查找表)和一个触发器(DFF),可以实现组合或时序逻辑。逻辑簇中的内部互连是每个BLE的唯一输出端都可以输出到逻辑簇外部或者反馈到逻辑簇I个输入端一起经过一个(I+N)×KN的开关矩阵(Switch Matrix)选通到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-VPack【5】、RPack【6】都是处理针对上述逻辑簇模型(逻辑单元为BLE)的装箱问题。此装箱算法的共同的局限性在于逻辑簇模型过于简单,不能足够用于描述当今商用FPGA器件。美国加利福尼亚大学洛杉矶分校开发了RASP【7】系统,其中集成了3种与FPGA逻辑单元结构有关的装箱模块,分别可以处理Xilinx公司的XC3000系列和XC4000系列FPGA的逻辑单元,以及Altera公司的FLEX-8000系列FPGA的逻辑单元【8】。此装箱算法局限于,仅仅针对早期平面化的商用FPGA器件结构的逻辑单元所设计。虽然【9】也提出了FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法,但是该算法在功能匹配过程中有大量的时间开销,因此并不适用于大规模的用户电路网表。目前没有一种既具有通用性,同时也兼备实用性的逻辑单元的模型和相关算法。
参考文献
【1】Xilinx Inc.,The Programmable Logic Data Book,2000.
【2】V.Betz,J.Rose and A.Marquardt,Architecture and CAD for Deep Submicron FPGAs,Kluwer Academic Publisher,1999.
【3】M.Masud,“FPGA routing structures:A novel switch block and depopulated interconnectmatrix architecture”,MASc Thesis,December 1999.
【4】V.Betz,J.Rose,“VPR:A new packing,placement and routing tool for FPGA research”,Proceedings of the 7th international workshop on field-programmable logic andapplications.London,UK:Springer-Verlag,1997:213-222.
【5】A.Marquardt,V.Betz and J.Rose,“Using Cluster-Based Logic Block andTiming-Driven Packing to Improve FPGA Speed andDensity”,ACM Symposium onFPGAs.1999,pp.37-46.
【6】E.Bozorgzadeh,S.Ogrenci-Memik,M.Sarrafzadeh,“RPack:Routability-driven packingfor cluster based FPGAs”,Proceedings of the Asia-South Pacific design automationconference,Yokohama,Japan:IEEE Press,2001,pp.629-634.
【7】Jason Cong,John Peck and Yuzhong Ding,“RASP:A General Logic Synthesis Systemfor SRAM-based FPGAs”,Proceedings of the 4th ACM International Symposium onFPGAs,1996,pp.137-143.
【8】Altera Inc.,Data Book,1998.
【9】童家榕,倪刚,来金梅,“FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法”,
公开专利号CN 1 786968A,2006
发明内容
本发明旨在寻求一种既简单又实用并含有专用器件的FPGA逻辑单元模型,并在此基础上研究一种具有通用性且适用于大规模用户电路网表的逻辑单元装箱算法。
本发明的技术方案是:
一种现场可编程器件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)相连,IN(K+1)触发705的数据选通端S,以确定OUT(K+1)是选择查找表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。
第二级多路选择器704的数据信号输入端IA和互连线进位输入CIN1相连,而数据信号输入端IB和专用进位输入CIN相连,通过配置多路选择器704的数据选通端S,可以任意选择704的输入信号是互连线输入CIN1还是专用进位输入CIN。多路选择器703的数据信号输入端IA和互连线进位输入CIN0相连,而数据信号输入端IB和多路选择器704的输出端O相连;多路选择器703的输出端O和专用进位输出CO以及互连线进位输出CO0相连,通过配置多路选择器703的数据选通端S,可以任意选择703的输入信号是互连线进位输入还是专用进位输入。
第二级“和输出”专用器件707的两个输入端I0和I1分别与第一级K输入查找表701的输出端O和第二级多路选择器704的输出端O相连,“和输出”专用器件707的输出端O与多路选择器708的IB输入端相连;多路选择器708的IA输入端则与第一级K输入查找表701的输出端O相连,多路选择器708的输出端O与组合输出D0和多路选择器711的IA输入端相连;通过配置多路选择器708的数据选通端S,可以任意选择708的输出是第一级K输入查找表701的输出还是第二级“和输出”专用器件707的输出。“和输出”专用器件709的两个输入端I0和I1分别与查找表702的输出端O和专用进位输入CIN相连,“和输出”专用器件709的输出端O与多路选择器710的IB输入端相连;多路选择器710的IA输入端则与查找表702的输出端O相连,多路选择器710的输出端O与组合输出D1和多路选择器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和时序输出Q1相连。通过配置多路选择器711的数据选通端S,可以任意选择时序器件713的输入是708的组合输出还是时序器件714的移位输出。通过配置多路选择器712的数据选通端S,可以任意选择时序器件714的输入是多路选择器710的组合输出还是移位输入SIN。
一种基于上述逻辑单元模型的通用装箱算法,它的步骤如下:
2.1.读入用户设计电路网表;
2.2.对用户设计电路网表进行遍历,分别获得加法器进位链多路选择器,K+1输入查找表多路选择器,K+2输入查找表多路选择器等专用器件组;
2.3.对已获得的加法器进位链多路选择器专用器件组和与之相连的加法器和输出专用器件以及非专用器件触发器和查找表,分别进行装箱处理;
2.4.对已获得的K+1输入查找表多路选择器专用器件组和与之相连非专用器件触发器和查找表分别进行装箱处理;
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.结束。
主程序步骤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.1.新建一个容器,用于存放加法器进位链多路选择器和与之相连的其他逻辑器件;
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+1输入查找表装箱的步骤如下:
5.1.新建一个容器,用于存放K+1输入查找表多路选择器和与之相连的其他逻辑器件;
5.2.判断K+1输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤5.7;
5.3.判断K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果是,则对该触发器进行标记示意此逻辑器件已经访问过,并压入容器;
5.4.在用户设计电路网表中对连接到K+1输入查找表多路选择器的两个数据输入端的2个K输入查找表压入容器,并进行标记,示意此逻辑器件已经访问过;
5.5.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;
5.6.把存放于容器中的这些器件放入新创建的用户器件SLICE,并更新相应的连接线网;
5.7.结束。
主程序步骤2.5中对K+2输入查找表装箱的步骤如下:
6.1.新建一个容器,用于存放K+2输入查找表多路选择器和与之相连的其他逻辑器件;
6.2.判断K+2输入查找表多路选择器的两个数据输入端所连接的是否为K+1输入查找表多路选择器,如果否,则报错并转到步骤6.17;
6.3.把K+2输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;
6.4.选择其中1个K+1输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;
6.5.判断该K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.7;
6.6.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;
6.7.判断K+1输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤6.17;
6.8.把这2个K输入查找表压入容器并对其进行标记,示意逻辑器件已经访问;
6.9.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;
6.10.清空容器;
6.11.选择另外1个K+1输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;
6.12.判断该K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.14;
6.13.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;
6.14.判断K+1输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤6.17;
6.15.把这2个K输入查找表压入容器并对其进行标记,示意逻辑器件已经访问过;
6.16.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;
6.17.结束。
主程序步骤2.8中动态创建自定义器件LE和所述步骤2.10中动态创建自定义器件SLICE的具体步骤如下:
7.1.选择容器中的任意器件;
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外部的线网数。
所述布通率的增益函数由线网吸收增益和引脚共享增益相加而成,并用比例因子控制线网吸收增益和引脚共享增益两个加数之间的权值。布通率增益函数为:
CG ( X ) = ( 1 - α ) NG ( X , C ) max { NG ( L , C ) | L ∈ e , e ∩ C ≠ φ }
+ α SG ( X , C ) max { SG ( L , C ) | L ∈ e , e ∩ C ≠ φ }
所述线网吸收增益的函数包含:1)将SLICE对LE的直接吸引转化为该LE被装箱到当前SLICE的概率函数;2)把那些没有直接和SLICE相连的线网,分为两类,第一类是该线网上至少有两个节点是和SLICE直接相连,第二类是该线网上只有一个节点和SLICE直接相连,根据不同类型的线网,给出那些没有和SLICE直接相连的LE被装箱到SLICE的概率函数。线网吸收增益函数为:
NG ( X , C ) = Σ { e | e ∩ C ≠ φ , X ∈ e } A ( X , C , e ) + Σ { e | e ∩ C = φ , X ∈ e } g ( X , C , e )
以时序优先为实现目标,首先根据LE的输入输出管脚上的到达时间和所需时间,计算出连接LE线网的时序裕度;再根据这些时序裕度,给出LE的关键值。关键值越大,表明此LE影响时序越大;反之,关键值越小,表明此LE影响时序越小。然后对LE的关键值进行排序,在对种子节点LE的选取时,选择关键值最大的。接下来在选取LE装箱到SLICE时候,以保持时序级数少为准则。在满足算法时序优先目标的同时,也尽量将SLICE装得比较满,并尽量减少连接到SLICE引脚上的线网数,达到减少布局产生的局部拥挤度。
上述算法在进行非全连通结构的装箱操作时,对装箱操作的每一步结果做出评估,检查这种连接关系结果是否违背实际连接关系,并将SLICE内部的连接关系转化成一个图G(V,E),检查连接关系的过程,简化为图中寻找最短路径的问题。
由于现有的技术主要局限于:1)基于简单的层次化的逻辑块,在商用FPGA中并不适用;2)仅仅针对早期平面化的商用FPGA器件结构的逻辑单元所设计;3)FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法,由于功能匹配时间开销,并不适用于大规模的用户电路。本发明与现有技术相比优点在于:逻辑单元的模型能广泛地描述现有商用FPGA芯片逻辑单元结构,基于此模型提出自下而上的通用逻辑单元装箱算法的重要思想在于分别对用户电路中以专用器件为核心的器件、以触发器为核心的器件和以查找表为核心的器件依次创建自定义逻辑器件,最后采用增益函数计算对这些自创的逻辑器件进行装箱,算法是处理各种逻辑单元装箱问题的一种普适性算法。既有广泛代表性,又具有通用性,同时也兼备实用性;采用自下而上的方法,时间开销性能优异,适用于大规模的用户电路。
附图说明
图1是典型的基于查找表的FPGA的结构示意图;
图2是单个BLE的结构示意图;
图3是由BLE组成的层次化结构的逻辑块框图;
图4是Xilinx公司XC4000系列FPGA的逻辑单元结构图;
图5是Xilinx公司Virtex-II系列FPGA的逻辑单元结构图;
图6是Xilinx公司Virtex-4系列FPGA的逻辑单元结构图;
图7是本发明FPGA的逻辑单元模型框图;
图8是本发明FPGA的逻辑单元模型结构图;
图9是本发明逻辑单元通用装箱算法的详细流程图;
图10是线网权重例图;
图11a是SLICE内部非全连通示意图;
图11b是图11a对应的图描述示意图。
图12是在非全连通结构时判断结果是否违背实际连接关系流程图
具体实施方式
附图4、附图5和附图6是Xilinx公司三种系列FPGA的逻辑单元结构图,根据FPGA所能实现的用户电路的功能,可以把电路分成3类:1)由专用器件组成的逻辑功能;2)由查找表和触发器非专用器件组成的逻辑功能;3)由CPU、RAM块、DSP核等IP核组成的逻辑功能。其中由逻辑单元完成的用户电路只有1)和2)。本发明把实现用户电路1)和2)的逻辑单元根据各种不同器件的相互驱动情况,简化成三级模型:第一级为查找表,第二级为专用器件,第三级为时序器件,如图7所示。查找表用于映射任意K输入的组合逻辑,同时通过不同多路选择器选择组成更大输入查找表;专用器件将查找表输出的组合逻辑通过进位转为一位加法组合输出,从而实现全加器功能;专用器件也可以将时序输出通过移位,实现高效地移位功能;同时通过多路选择器传输给时序器件,转为时序输出。
根据上述原理,附图8所示的本发明FPGA的逻辑单元模型结构图中,K输入查找表701用于映射任意K输入的组合逻辑,通过多路选择器708,即可把查找表701输出端O输出为组合输出D0;再通过多路选择器711,把查找表701输出端O输入到时序器件713的输入端D,可以实现组合逻辑的时序输出。类似地,K输入查找表702可以用于映射其他任意K输入的组合逻辑,结合时序器件714,可以实现组合逻辑的时序输出。这两部分映射互不相关,可以各自映射到FPGA逻辑单元中。K输入查找表701和K输入查找表702可以组合用于映射任意K+1输入的组合逻辑;查找表701和查找表702的K输入相同,输出端O分别输入到模型第二级专用器件705的IA和IB端口,K+1的输入端输入到专用器件705的S端,可以实现K+1输入的组合逻辑功能。模型第二级专用器件706的IA和IB端口分别连接K+1输入的组合逻辑的输出,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可以映射的逻辑功能,K输入查找表702输出端O和进位输入CIN分别输入“和输出”专用器件707的I0和I1输入端。“和输出”专用器件709实现了一位全加器和输出的逻辑功能。通过多路选择器710,即可把“和输出”专用器件709输出端O输出为组合输出D0。再通过多路选择器714,把“和输出”专用器件709输出端O输入到时序器件714的输入端D,可以实现一位全加器和输出的时序输出。类似地,在n位加法器的进位列中分别把进位列和K输入查找表,“和输出”专用器件和多路选择器相连,即可实现n位全加器。
上述模型能广泛地描述现有商业领域的FPGA的逻辑单元结构。基于上述FPGA逻辑单元的模型,本发明还提出了具有通用性的逻辑单元装箱算法,算法的详细流程如图9所示。通用性装箱算法的输入项有:1)逻辑单元的管脚描述;2)用户设计的电路网表(工艺映射算法处理后的门级网表)3)如果针对非全连通结构,非全连通的描述。算法的输出项是:用于布局布线的由逻辑单元组成的用户电路网表。
本发明提出了根据用户不同的优化需求或者不同的优化侧重点,针对不同优化目的而采用不同策略偏重的增益函数。如实现目标以布通率优先有其特有的布通率增益函数和实现目标以时序优先有其特有的时序增益函数,分别采用不同权值的策略把这些不同的增益函数归一化成总的增益函数,由此可以自由的得到不同的优化目的。
如果实现目标是布通率优先,本发明通过采用LE和SLICE之间相连的线网来量化它们之间连接的紧密程度,从而表述和SLICE连接紧密程度的LE。假设有一个名为X的LE和一个名为C的SLICE,它们之间有线网e连接,则它们之间的关系即可用吸引计算表示为
A(X,C,e)=w(e)(1+ae)
w ( e ) = 1 p 2
其中αe表示该线网有多少个引脚在SLICE之内。而w(e)为线网权重,p为线网引脚数。很显然,线网上所含的引脚在SLICE内部越多,那么就表示该线网和SLICE内部LE连接数目越多,也就是线网和SLICE的连接越紧密。如果LE和SLICE有多条线网相连,那么SLICE对LE的吸引计算公式为连接它们的每条线网吸引值之和。
如果优化目的是为了让更多的线网被装箱到SLICE内部,而含引脚数较少的线网相对于含引脚数较多的线网,将更有利于被全部装箱到SLICE内部,所以SLICE对LE的吸引计算公式体现了线网对LE增益与线网的权重成正比关系。
对于那些没有直接和SLICE相连的线网,将它们分为两类,第一类是该线网上至少有两个节点是和SLICE直接相连,第二类是该线网上只有一个节点和SLICE直接相连。
对于第一类线网,本发明把该线网所连接的LE也分为两类,一类是LE与SLICE直接相连,此时将SLICE对LE的直接吸引转化为该LE被装箱到当前SLICE的概率,即
P ( X ) = A ( X , C ) max { A ( v , C ) | v ∈ e , e ∩ C ≠ φ }
而另一类没有和SLICE直接相连的LE被装箱到SLICE的概率为
P ( X ) = min { A ( m , C ) | m ∈ e , e ∩ C ≠ φ } 2 × max { A ( v , C ) | v ∈ e , e ∩ C ≠ φ }
将和第一类线网相连并且还和SLICE直接相连的LE装箱到SLICE内部,隐含着另外的一些和该线网相连并且还和SLICE相连的LE将有更大的概率被装箱到SLICE内部,那么意味着该线网将被装箱到SLICE之内。该线网给LE的吸引为一个正值,将该线网的吸引定为该线网被全部装箱到了SLICE内部的概率,也就是该线网上所有未被装箱节点v被装箱到一个SLICE的概率,可以认为这些节点是独立不相关的。含节点数少的线网的应优先于含节点数多的线网,那么线网e对LE单元X的吸引函数为
g ( X , C , e ) = w ( e ) Π { v | v ∈ e , v ∈ UC } P ( v )
其中UC是还没有被装箱的LE构成的集合。
对于第二类线网,如果将和该线网相连并且还和SLICE直接相连的LE装箱到SLICE内部,那么该线网将被跨接在不同的SLICE,从而增加外部的布线压力,所以该线网对LE的吸引应该为一个负值。将这种影响平分到该线网上的每个节点,并且含节点数较少的线网相对于含节点数较多的线网更不应该被跨接在不同的SLICE之间,这里给出线网e对LE单元X的吸引函数为
g ( X , C , e ) = - w ( e ) p
SLICE对LE的吸引为所有和该LE相连线网的对该LE的吸引之和构成,SLICE单元C对LE单元X的吸引函数为
NG ( X , C ) = Σ { e | e ∩ C ≠ φ , X ∈ e } A ( X , C , e ) + Σ { e | e ∩ C = φ , X ∈ e } g ( X , C , e )
基于此函数,可以有效的将更多的线网装入到SLICE之内,而减少SLICE外部的线网数。但仅仅单一减少线网数并不能有效的减少布线所需通道数,而是还和装箱后SLICE所使用引脚数目有关,还需要考虑LE之间的引脚共享,从而减少局部的拥挤度。LE和SLICE之间的引脚数共享增益函数为:
SG(X,C)=|Nets(X)∩Nets(C)|
因此最终布通率益函数为:
CG ( X ) = ( 1 - α ) NG ( X , C ) max { NG ( L , C ) | L ∈ e , e ∩ C ≠ φ }
+ α SG ( X , C ) max { SG ( L , C ) | L ∈ e , e ∩ C ≠ φ }
其中α是用来控制线网吸收增益(式中第一项)和引脚共享增益(式中第二项)之间的比例因子。α取0.2时,该增益函数可以同时优化装箱到SLICE之外的线网数和SLICE使用的引脚数。
表1罗列了不同算法装箱后线网数,可配置逻辑单元数,可配置逻辑单元使用引脚平均数。显而易见本发明提出的算法在性能上得到了极大的改善。
表1装箱后线网数,可配置逻辑单元数,可配置逻辑单元使用引脚平均数
Figure A20091013054800291
如果实现目标是时序优先,首先该算法对电路进行时序分析,算出关键路径,然后再计算每个节点的需求时间和到达时间。最后在将每个节点LE的需求时间和到达时间转换为该节点LE权重,由于SLICE内部LE之间的延时要比SLICE之间连接延时要小很多,所以,目标就是将处在关键路径上的LE尽可能的装箱到一个SLICE,这样就可以缩短在关键路径上的延时,因此提高整个电路的运行速度。通过对电路的时序进行分析,可以得到每个节点LE的需求时间Trequired和到达时间Tarrival,那么每个节点LE的裕度slack为:
slack=Trequired-Tarrival
越靠近关键路径的线网,其裕度越小。通过计算每根线网的slack,确定其中的最大值Maxslack后,通过归一化得到每根线网的关键度Criticality如下式:
Criticality = 1 - slack Maxslack
根据这些关键度值,给出LE的时序增益值。时序增益值越大,表明此LE影响时序越大。反之,增益值越小,表明此LE影响时序越小。先对LE的增益值进行排序;在对种子节点LE的选取时,选择增益值最大的。线网的关键度值越大,表明约需要考虑其对系统时延的影响,在装箱过程中更需要考虑。如图10所示,通常在装箱的时候,有很多LE处在关键路径上,并且它们之间的关键度相差无几,为此,将每个LE影响的关键路径数目考虑进来,显然,如果该LE影响的关键路径数目越多的话,那么该LE对电路的运行速度影响越大,于是该LE的优先级也应比较高。这样就可以将关键路径上的LE尽可能的装箱到一个SLICE,可以大大的提高电路的运行速度。
在满足算法时序优先目标的同时也应尽量将SLICE装的比较满和减少连接到SLICE引脚上的线网数,达到减少布局产生的局部拥挤度。通过有效的权值控制,来尽可能的满足时序和面积最优,因此增益函数如下:
G(X)=(1-β)TG(X)+βCG(X)
其中β用来控制时序增益(式中第一项)和布通率增益(式中第二项)之间的比例因子,TG(G)和CG(G)分别为时序增益和布通率增益。
在进行非全连通结构的装箱操作时,对SLICE内部的连接关系按如下的方式进行处理。将SLICE内部的连接关系转化成一个图G(V,E)。点集合V包括:SLICE外部的输入引脚,同时我们还引进一个源点,如图11a、11b所示,所有外部输入引脚的信号都来自于该源点,LE的输出引脚,以及LE的每个输入引脚也都采用一个点描述。边集合E包括:如果某点的信号能够到达另外一个点,则它们之间将存在一条有向边,边集合就是所有这些有向边构成的集合。对于一个全连通的SLICE而言,每个LE的几个基本输入是完全等效,因为调整每个输入所在的位置对LE最终的逻辑功能没有影响,只要相应的调整编程点信息就可以了。同时SLICE外部的输入也是完全等效的,因为它们和内部每个LE的连接关系是一样的。
寻找路径的过程,我们转化为一个在图中寻找最短路径布线的问题,就是将LE之间的连接关系布线到给定的连线资源中去。需要布线的连线包括SLICE外部输入到LE的输入,LE的反馈到LE的输入。根据输入节点LE的连接度和反馈节点LE的连接度的大小决定是首先对哪一类线网进行布线。算法应该先布线连接度较小的节点LE,因为这些LE连接的LE是相对有限的,如果它们所能连接的LE被占用,那么从该LE出发的线网,将无法寻找到一条路径来布线到资源图中去。在决定首先对哪一类线网进行布线之后,然后对需要布线的线网按含有节点LE数多少以降序的方式进行布线。
上述算法在进行非全连通结构的装箱操作时,对装箱操作的每一步结果做出评估,检查这种连接关系结果是否违背实际连接关系,如图12所示。当不存在没有布线的线网时,得到的结果与实际连接关系一致,而如果存在没有布线的线网时,则可能违背实际连接关系。

Claims (13)

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.1.读入用户设计电路网表;
2.2.对用户设计电路网表进行遍历,分别获得加法器进位链多路选择器,K+1输入查找表多路选择器,K+2输入查找表多路选择器等专用器件组;
2.3.对已获得的加法器进位链多路选择器专用器件组和与之相连的加法器和输出专用器件以及非专用器件触发器和查找表,分别进行装箱处理;
2.4.对已获得的K+1输入查找表多路选择器专用器件组和与之相连非专用器件触发器和查找表分别进行装箱处理;
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.1.新建双向队列,用于存放查找到的加法器进位链多路选择器,该加法器进位链多路选择器形成的链即为加法器进位链;
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.1.新建一个容器,用于存放加法器进位链多路选择器和与之相连的其他逻辑器件;
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输入查找表装箱的步骤如下:
5.1.新建一个容器,用于存放K+1输入查找表多路选择器和与之相连的其他逻辑器件;
5.2.判断K+1输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤5.7;
5.3.判断K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果是,则对该触发器进行标记示意此逻辑器件已经访问过,并压入容器;
5.4.在用户设计电路网表中对连接到K+1输入查找表多路选择器的两个数据输入端的2个K输入查找表压入容器,并进行标记,示意此逻辑器件已经访问过;
5.5.根据容器中存放的逻辑器件输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;
5.6.把存放于容器中的这些器件放入新创建的用户器件SLICE,并更新相应的连接线网;
5.7.结束。
6.根据权利要求2所述通用装箱算法,其特征在于:所述步骤2.5中对K+2输入查找表装箱的步骤如下:
6.1.新建一个容器,用于存放K+2输入查找表多路选择器和与之相连的其他逻辑器件;
6.2.判断K+2输入查找表多路选择器的两个数据输入端所连接的是否为K+1输入查找表多路选择器,如果否,则报错并转到步骤6.17;
6.3.把K+2输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;
6.4.选择其中1个K+1输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;
6.5.判断该K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.7;
6.6.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;
6.7.判断K+1输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤6.17;
6.8.把这2个K输入查找表压入容器并对其进行标记,示意逻辑器件已经访问;
6.9.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;
6.10.清空容器;
6.11.选择另外1个K+1输入查找表多路选择器,压入容器并对其进行标记,示意此逻辑单元已经访问过;
6.12.判断该K+1输入查找表多路选择器的输出端所连接的是否为触发器,如果否,则转到步骤6.14;
6.13.把该触发器压入容器并对其进行标记,示意此逻辑器件已经访问过;
6.14.判断K+1输入查找表多路选择器的两个数据输入端所连接的是否都为查找表,如果否,则报错并转到步骤6.17;
6.15.把这2个K输入查找表压入容器并对其进行标记,示意逻辑器件已经访问过;
6.16.根据容器中逻辑器件的输入输出端口信息,新创建一个用户器件,这个器件称为SLICE;
6.17.结束。
7.根据权利要求2所述通用装箱算法,其特征在于:所述步骤2.8中动态创建自定义器件LE和所述步骤2.10中动态创建自定义器件SLICE的具体步骤如下:
7.1.选择容器中的任意器件;
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),检查连接关系的过程简化为图中寻找最短路径的问题。
CN2009101305487A 2008-12-03 2009-03-27 一种fpga逻辑单元模型及其通用装箱算法 Expired - Fee Related CN101515312B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101305487A CN101515312B (zh) 2008-12-03 2009-03-27 一种fpga逻辑单元模型及其通用装箱算法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN200810203936.9 2008-12-03
CN200810203936 2008-12-03
CN2009101305487A CN101515312B (zh) 2008-12-03 2009-03-27 一种fpga逻辑单元模型及其通用装箱算法

Publications (2)

Publication Number Publication Date
CN101515312A true CN101515312A (zh) 2009-08-26
CN101515312B CN101515312B (zh) 2012-07-18

Family

ID=41039764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101305487A Expired - Fee Related CN101515312B (zh) 2008-12-03 2009-03-27 一种fpga逻辑单元模型及其通用装箱算法

Country Status (1)

Country Link
CN (1) CN101515312B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054110A (zh) * 2011-01-27 2011-05-11 复旦大学 Fpga可编程逻辑块通用装箱方法
CN103425222A (zh) * 2012-05-18 2013-12-04 联发科技(新加坡)私人有限公司 电压调整系统与电压调整方法
CN104242914A (zh) * 2014-10-13 2014-12-24 无锡中微亿芯有限公司 基于多功能可扩展快速连接的可编程逻辑单元结构
US9323320B2 (en) 2012-05-18 2016-04-26 Mediatek Singapore Pte. Ltd. Weighted control in a voltage scaling system
CN105656474A (zh) * 2016-01-26 2016-06-08 北京时代民芯科技有限公司 一种基于信号概率的fpga用户电路逻辑反转优化方法
CN106528920A (zh) * 2016-09-27 2017-03-22 北京深维科技有限公司 一种级联查找表的工艺映射方法
CN106650033A (zh) * 2016-11-30 2017-05-10 北京深维科技有限公司 一种输入输出端口的工艺映射方法
CN107194075A (zh) * 2017-05-24 2017-09-22 上海安路信息科技有限公司 可编程逻辑器件的连线结构以及布线布局系统和方法
CN107885485A (zh) * 2017-11-08 2018-04-06 无锡中微亿芯有限公司 一种基于超前进位实现快速加法的可编程逻辑单元结构
CN107992635A (zh) * 2016-10-26 2018-05-04 上海复旦微电子集团股份有限公司 Fpga的装箱方法及设备
CN108182303A (zh) * 2017-12-13 2018-06-19 京微齐力(北京)科技有限公司 基于混合功能存储单元的可编程器件结构
CN109800468A (zh) * 2018-12-25 2019-05-24 河南工程学院 一种基于寄存器重定时的多流水级时序电路装箱操作方法
CN113642280A (zh) * 2020-04-27 2021-11-12 中国科学院上海微系统与信息技术研究所 超导集成电路的布局方法
CN114489563A (zh) * 2021-12-13 2022-05-13 深圳市紫光同创电子有限公司 一种电路结构
CN115577662A (zh) * 2022-11-23 2023-01-06 山东启芯软件科技有限公司 一种基于多fanout逻辑的时序器件资源优化方法
CN116029238A (zh) * 2023-03-27 2023-04-28 中科亿海微电子科技(苏州)有限公司 一种对加法器进行时序分析的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100388255C (zh) * 2004-10-10 2008-05-14 中兴通讯股份有限公司 一种接口转换模块和对fpga进行配置的方法
CN1786968A (zh) * 2005-12-08 2006-06-14 复旦大学 Fpga逻辑单元的功能模型和通用性逻辑单元装箱算法
CN101086729A (zh) * 2007-07-09 2007-12-12 西安飞鹰科技有限责任公司 一种基于fpga的动态可重构高性能运算方法与装置

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054110A (zh) * 2011-01-27 2011-05-11 复旦大学 Fpga可编程逻辑块通用装箱方法
CN103425222A (zh) * 2012-05-18 2013-12-04 联发科技(新加坡)私人有限公司 电压调整系统与电压调整方法
US9323320B2 (en) 2012-05-18 2016-04-26 Mediatek Singapore Pte. Ltd. Weighted control in a voltage scaling system
CN103425222B (zh) * 2012-05-18 2017-01-18 联发科技(新加坡)私人有限公司 电压调整系统与电压调整方法
CN104242914A (zh) * 2014-10-13 2014-12-24 无锡中微亿芯有限公司 基于多功能可扩展快速连接的可编程逻辑单元结构
CN104242914B (zh) * 2014-10-13 2017-10-17 无锡中微亿芯有限公司 基于多功能可扩展快速连接的可编程逻辑单元结构
CN105656474B (zh) * 2016-01-26 2018-12-21 北京时代民芯科技有限公司 一种基于信号概率的fpga用户电路逻辑反转优化方法
CN105656474A (zh) * 2016-01-26 2016-06-08 北京时代民芯科技有限公司 一种基于信号概率的fpga用户电路逻辑反转优化方法
CN106528920A (zh) * 2016-09-27 2017-03-22 北京深维科技有限公司 一种级联查找表的工艺映射方法
CN106528920B (zh) * 2016-09-27 2019-07-26 京微齐力(北京)科技有限公司 一种级联查找表的工艺映射方法
CN107992635B (zh) * 2016-10-26 2021-05-28 上海复旦微电子集团股份有限公司 Fpga的装箱方法及设备
CN107992635A (zh) * 2016-10-26 2018-05-04 上海复旦微电子集团股份有限公司 Fpga的装箱方法及设备
CN106650033A (zh) * 2016-11-30 2017-05-10 北京深维科技有限公司 一种输入输出端口的工艺映射方法
CN106650033B (zh) * 2016-11-30 2020-01-31 京微齐力(北京)科技有限公司 一种输入输出端口的工艺映射方法
CN107194075A (zh) * 2017-05-24 2017-09-22 上海安路信息科技有限公司 可编程逻辑器件的连线结构以及布线布局系统和方法
CN107885485B (zh) * 2017-11-08 2021-07-06 无锡中微亿芯有限公司 一种基于超前进位实现快速加法的可编程逻辑单元结构
CN107885485A (zh) * 2017-11-08 2018-04-06 无锡中微亿芯有限公司 一种基于超前进位实现快速加法的可编程逻辑单元结构
CN108182303B (zh) * 2017-12-13 2020-08-28 京微齐力(北京)科技有限公司 基于混合功能存储单元的可编程器件结构
CN108182303A (zh) * 2017-12-13 2018-06-19 京微齐力(北京)科技有限公司 基于混合功能存储单元的可编程器件结构
CN109800468A (zh) * 2018-12-25 2019-05-24 河南工程学院 一种基于寄存器重定时的多流水级时序电路装箱操作方法
CN109800468B (zh) * 2018-12-25 2022-09-30 河南工程学院 一种基于寄存器重定时的多流水级时序电路装箱操作方法
CN113642280A (zh) * 2020-04-27 2021-11-12 中国科学院上海微系统与信息技术研究所 超导集成电路的布局方法
CN114489563A (zh) * 2021-12-13 2022-05-13 深圳市紫光同创电子有限公司 一种电路结构
CN114489563B (zh) * 2021-12-13 2023-08-29 深圳市紫光同创电子有限公司 一种电路结构
CN115577662A (zh) * 2022-11-23 2023-01-06 山东启芯软件科技有限公司 一种基于多fanout逻辑的时序器件资源优化方法
CN115577662B (zh) * 2022-11-23 2023-03-10 山东启芯软件科技有限公司 一种基于多fanout逻辑的时序器件资源优化方法
CN116029238A (zh) * 2023-03-27 2023-04-28 中科亿海微电子科技(苏州)有限公司 一种对加法器进行时序分析的方法及装置

Also Published As

Publication number Publication date
CN101515312B (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
CN101515312B (zh) 一种fpga逻辑单元模型及其通用装箱算法
US8117436B2 (en) Hybrid nanotube/CMOS dynamically reconfigurable architecture and an integrated design optimization method and system therefor
Luu et al. Architecture description and packing for logic blocks with hierarchy, modes and complex interconnect
US5734581A (en) Method for implementing tri-state nets in a logic emulation system
CN109684755A (zh) 一种数模混合芯片异步电路全定制方法及系统
Betz Architecture and CAD for speed and area optimization of FPGAs
US7313776B2 (en) Method and apparatus for routing an integrated circuit
CN103914580B (zh) 一种用于fpga电路位流仿真的方法
WO1990004233A1 (en) Method of using electronically reconfigurable gate array logic and apparatus formed thereby
US9740808B2 (en) Method and apparatus for implementing a system-level design tool for design planning and architecture exploration
CN104603784A (zh) 相对定时表征
Chen et al. Simultaneous timing driven clustering and placement for FPGAs
Cong et al. Multiway VLSI circuit partitioning based on dual net representation
CN103959652B (zh) 集成电路内的嵌入式存储器和专用处理器结构
Hauck et al. Software technologies for reconfigurable systems
Xue et al. Routing path reuse maximization for efficient NV-FPGA reconfiguration
Krishnamoorthy et al. Technology mapping algorithms for hybrid FPGAs containing lookup tables and PLAs
US6516453B1 (en) Method for timing analysis during automatic scheduling of operations in the high-level synthesis of digital systems
Tan et al. A physical resource management approach to minimizing fpga partial reconfiguration overhead
Zhang et al. NanoMap: An integrated design optimization flow for a hybrid nanotube/CMOS dynamically reconfigurable architecture
US7836419B1 (en) Method and system for partitioning integrated circuits
Xu et al. Accurate prediction of quality metrics for logic level designs targeted toward lookup-table-based FPGAs
Mehta Time-multiplexed FPGA overlay networks on chip
Upadhyay Wirelength-driven analytical placement for FPGA
Mahani Investigating SystemAda: TLM_FIFO detailed characteristics proof, TLM2. 0 interfaces implementation, simulation time comparison to SystemC

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120718

Termination date: 20150327

EXPY Termination of patent right or utility model