Fpga逻辑单元的功能模型和通用性逻辑单元装箱算法的制作方法

文档序号:6649694阅读:234来源:国知局
专利名称:Fpga逻辑单元的功能模型和通用性逻辑单元装箱算法的制作方法
技术领域
本发明属于电子设计自动化(Electronic Design Automation,EDA)技术领域,具体涉及一种FPGA逻辑单元的功能模型和通用性逻辑单元装箱算法。
背景技术
文献[1]指出,逻辑块(Logic block)是现场可编程门阵列(Filed Programmable Logic Array,FPGA)中实现用户电路逻辑的部件,它和连线资源(Connection resource)、输入输出块(I/Oblock)是FPGA的三大组成部分,如图1所示。
逻辑块按内部是否含有互连资源来分,可分为平面逻辑块(也称逻辑单元,不含内部互连)和层次逻辑块(也称簇结构逻辑块,内含多个逻辑单元和内部互连开关矩阵)。随着FPGA结构的发展,层次逻辑块已逐渐替代了平面逻辑块成为主流。
学术研究方面,文献[4]对于层次化逻辑块的结构,提出一种模型如图2所示,层次逻辑块被称为逻辑簇(logic cluster),Logic cluster中有N个逻辑单元,被称为BLE(Basic LogicElement),每个BLE内部仅有一个k输入查找表(Look-up Table,LUT)和一个触发器(DFF),可以实现组合和/或时序逻辑。Logic cluster中的内部互连是每个BLE的唯一输出端都可以输出到logic cluster外部或者是进行反馈同logic cluster的I个输入端一起经过一个(I+N)×kN的开关矩阵(Switch MUX)选通到N个BLE的任一输入端。Logic cluster是层次化逻辑块的一种最简单的结构模型,它内部的逻辑单元BLE和内部互连开关矩阵都采用了最简化的方式,它的不足之处在于第一,逻辑单元BLE结构是能够实现组合和时序逻辑的最简单的结构,功能简单,不含有任何专用的功能元件,这样对FPGA的实际应用领域并不优化;第二,内部互连开关矩阵是全连通的,这样很浪费版图面积。
商用FPGA方面,Xilinx和Altera作为世界两大FPGA供应商,推出多种系列的FPGA。从文献[2,3]来看,这些FPGA产品的逻辑块也由过去的平面化向如今的层次化发展。商用FPGA逻辑单元的结构复杂度远大于学术界的logic cluster模型中的BLE,例如图4所示的为Xilinx公司XC4000系列FPGA的逻辑单元结构。同时,商用FPGA层次化逻辑块中的内部互连开关矩阵也不是全连通的。因此,学术界的logic cluster模型是无法描述实际FPGA的逻辑块的。
针对logic cluster模型的第二点不足,文献[5]研究了非全连通的内部互连开关矩阵,提出了几种内部互连开关矩阵的模式,如图3所示。
当逻辑单元结构复杂后,它的功能也复杂起来而且很难直接从结构上看出功能。因此逻辑单元的功能的建模成为亟待解决的问题,可惜的是国际上尚无此项研究。
另一方面,对于FPGA的CAD流程,装箱是工艺映射的一个子步骤,如图5所示。装箱的目标就是在考虑约束(如一个逻辑块中所容纳的查找表、不同的输入信号和时钟的数目等等)情况下,把电路网表中的功能元件进行组合尽可能的放到一个逻辑块中,装箱完成后就可以进行逻辑块的布局[4]。已有的装箱算法T-VPack[6]、RPack[7]都是处理针对上述logic cluster模型(逻辑单元为BLE)的装箱问题。美国加利福尼亚大学洛杉矶分校开发了RASP[8]系统,其中集成了3种与FPGA逻辑单元结构有关的装箱模块,分别可以处理Xilinx公司的XC3000系列和XC4000系列FPGA的逻辑单元,以及Altera公司的FLEX-8000系列FPGA的逻辑单元的装箱问题。上述这些装箱算法的共同局限在于,它们都是专门针对某一具体结构的逻辑单元所设计的,因此都是与逻辑单元结构有关的装箱算法,没有通用性。究其原因,正是因为对不同的逻辑单元结构,没有好的通用的逻辑单元的功能模型。

发明内容
本发明的目的在于寻求一种FPGA的逻辑单元的功能模型,并研究一种具有通用性的逻辑单元装箱算法。
本发明提出的FPGA的逻辑单元的功能模型,其建模过程如下(一)提取逻辑单元中的功能元件。
构成逻辑单元的功能元件概括起来有两类1)开关多路选通器(Switch MUX)逻辑单元内部由编程点(1位SRAM)控制的,起开关作用的多路选通器。开关多路选通器存在于各种不同的逻辑单元中,其本身不具有逻辑功能。2)功能元件(Function Device)在逻辑单元内部典型的、有特定的逻辑功能的电路元件。功能元件按在逻辑单元中出现的频率又分两类(1)通用功能元件,如a)查找表,是基于查找表的FPGA中实现组合逻辑的基本元件;b)多路选择器,是基于多路选择器的FPGA中实现组合逻辑的基本元件;c)触发器,是实现时序逻辑的基本元件。(2)专用功能元件,如快速进位链(CarryChain)、1位全加器、等等。不同逻辑单元中的功能元件种类并不完全相同。
(二)用功能元件和开关多路选通器的连接描述逻辑单元的结构。FPGA的逻辑单元通常就是由一定数量的开关多路选通器和功能元件连接组成。不同的逻辑单元中的功能元件的数量和种类、开关多路选通器的数量、元件间的连接都是不相同的。因此,可以用功能元件和开关多路选通器这二大类元件间的连接关系来描述一个逻辑单元的结构。
(三)生成逻辑单元的有效功能电路。通过配置各个开关多路选通器上的编程点的值(设定为0或者1),每个开关多路选通器仅有一路选通,这样得到的功能元件间的一种确定的连接称为逻辑单元的一个功能电路。假设逻辑单元中各个开关多路选通器上的编程点共有n位,那么理论上功能电路应该有2n个,然而,去除冗余、重复和不合理的情况,剩下的是有效功能电路,个数是有限的。因此,通过对逻辑单元的不同配置(即对逻辑单元中的开关多路选通器进行编程,生成许多仅由功能元件连接而成的有效功能电路。
(四)用功能电路描述逻辑单元的逻辑功能。从逻辑单元的一个结构,可以得到它的多个有效功能电路,这些功能电路描述了逻辑单元的多种功能。
逻辑单元的功能模型格式如下PLC version,plctype,infoPINLIST pin1,pin2...
SMUXLIST smux1,smux2...
PATTERNpatternparameter1=value1;patternparameter2=value2;……SYM lable,typesymparameter1=value1;symparameter2=value2;……END SYMSYM……END SYMEND PATTERNPATTERN……END PATTERNEND PLC格式中的关键字和语法具体说明如下●PLCPLC关键字语句说明当前文件是一个可编程逻辑单元的功能模型文件,必须放在文件的开头,后接空格分隔。version,plctype,info等参数可以给出该PLC的一些信息,如版本号、名称、说明等,可选。
●PINLIST逻辑单元管脚列表关键字,后接每个管脚名,以空格分隔。
●SMUXLIST逻辑单元中开关多路选通器列表关键字,后按顺序显示控制每个开关多路选通器的编程点的名称,以空格分隔。
●PATTERN/END PATTERN一组对应的PATTERN/END PATTERN之间的语句描述了在各编程点的一组编程值下逻辑单元内部的功能元件间的一种连接,即一个有效功能电路描述。附加参数pattemparameter=value,以分号“;”加回车结束一个参数的说明。
该处参数说明如下(1)NAME=circuit name;功能电路名称;(2)SRAMBIT=binary number;开关多路选通器列表的二进制编程值序列;●SYM/END SYMSYM关键字标明一个元件说明语句的开始,后接空格分隔,后面是label和type两个参数,label和type之间以逗号分隔,最后以回车结束SYM语句。label参数是该元件的标识符,在整个网表文件中必须是唯一的。type参数是该元件的类型。
END SYM关键字标明一个元件说明语句的结束,以回车结束END SYM语句。
在SYM和END SYM语句之间是元件的附加参数,附加参数的格式为parameter=value,以分号“;”加回车结束一个参数的说明。
各种参数的具体说明如下(1)原始输入端口type=PIPIN=netname输入端连接的线网名,在一个单元说明语句中只能有一个。
(2)原始输出端口type=POPIN=netname输出端连接的线网名,在一个单元说明语句中只能有一个。
(3)LUTtype=LUTINNUM=number;LUT的输入端个数;IN1/IN2/?=netname;每一个输入端相连的线网名称;OUT=netname;输出端的线网名称。
注每个输入端各占一行。输出端只有一个占一行。
(4)D触发器type=DFF
DIN=netname;触发器的D输入端;QOUT=netname;触发器的Q输出端;CLK=netname;触发器的时钟输入端;RESET=netname;触发器的异步清零端;SET=netname;触发器的异步置1端。
VALID=low/high;触发器复位控制的有效电平。
ENABLE=netname;触发器的时钟使能端。
ENVALID=low/high;触发器时钟使能的有效电平。
注DIN/QOUT/CLK行必须存在。RESET/SET/VALID/ENABLE/ENVALID行根据触发器元件的实际情况,可选。
(5)功能元件(LUT和D触发器除外)type=FESUBTYPE=MUX/ADDER/?;功能元件的其他若干种类型,参数值是功能元件名称关键字。
INNUM=number;输入端个数(冗余信息,但可使编程方便);IN1/IN2/?=netname;每一个输入端相连的线网名称(通过不同名字,确定一个顺序);OUTNUM=number;输出端个数(冗余信息,但可使编程方便);OUT1/OUT2/?=netname;每一个输出端相连的线网名称;注若需要其他参数行,今后可以扩充。
●END PLCEND PLC关键字标明所有有效功能电路描述的结束。END PLC之后的部分都忽略。
●注释语句注释语句是以“###”开头,一行中“###”之后的部分都被视为是注释而忽略。
上述模型不仅能广泛地描述现有商业和学术领域的FPGA的逻辑单元结构,还可以由逻辑单元对应的有效功能电路方便地得到逻辑单元的逻辑功能。
基于上述FPGA逻辑单元功能模型,本发明还提出了通用性的逻辑单元装箱算法。
通用性装箱算法FDUPack的输入项有1)逻辑单元的功能模型文件,也就是逻辑单元的所有有效功能电路的描述;2)用户设计的电路网表,在经过工艺映射中的映射算法处理后从基本门级被转换到功能元件级。FDUPack算法的输出项是完全由逻辑单元组成的用户电路网表。图6是采用通用性逻辑单元装箱算法FDUPack的FPGA工艺映射详细流程。
FDUPack算法的思想就是在用户设计电路中依次不断匹配逻辑单元的每个有效功能电路,匹配成功的话就用一个FPGA的逻辑单元替换用户实际电路中的相应部分,直到用户电路全部由逻辑单元组成。FUDPack算法的总体步骤为1.01将所有有效功能电路按对逻辑单元利用率设置匹配的优先级,利用率高的匹配优先级高,按优先级降序将所有有效功能电路放入功能电路队列Q中;1.02检查功能电路队列Q是否为空,如果为空,转到1.09;1.03从Q中出队一个功能电路FC;1.04在用户设计的电路UC中匹配功能电路FC,即在UC中找和FC完全相同的子电路;1.05检查功能电路FC在UC中是否找到匹配,匹配失败的话转到1.07;1.06把一个逻辑单元作为元件替换UC中和FC匹配的部分电路,再转到1.04;1.07检查UC是否完全由逻辑单元这种元件组成,即UC中的所有电路部分都已被功能电路匹配到。否的话转到1.02;1.08装箱以成功告终,转到1.10;1.09装箱以失败告终;1.10结束。
FDUPack算法的总体流程图如图7所示。其中1.04在UC中匹配FC的具体步骤为2.01匹配初始化;2.02检查FC的元件待匹配队列是否为空,是的话,转到2.04;2.03功能元件的匹配,再转到2.02;2.04检查FC的线网待匹配队列是否为空,是的话,转到2.06;2.05线网匹配,再转到2.02;2.06检查匹配标志,匹配标志为失败的话,直接转到2.0.8;2.07检查FC中的功能元件是否都已经匹配,否的话,转到2.01;2.08匹配结果处理;2.09结束。
图8即是在用户设计电路中匹配一个功能电路的流程。其中2.01匹配初始化的具体步骤为3.01从FC的元件链表中依次取出一个元件;3.02检查是否已经到达链表尾,是的话直接转到3.073.03检查取出的元件是否为原始输出端,否的话转到3.01;3.04找到与原始输出端相连的一个元件,检查此元件是否已经匹配,是的话转到3.01;3.05从UC的元件链表中取出一个相同类型的未匹配的功能元件;3.06将这两个元件分别放入FC的元件待匹配队列和UC的元件待匹配队列;
3.07结束。
图9即是电路匹配初始化的具体流程。2.08匹配结果处理的具体步骤是4.01检查匹配标志,标志为失败的话,直接转到4.04;4.02从UC中删除已和FC匹配的相应元件和线网;4.03在UC中插入一个逻辑单元;4.04将UC和FC各自的元件和线网匹配栈清空,各自的元件指针重置到链表头;4.05结束。
图10即是电路匹配结果处理的流程图。2.03功能元件匹配的具体步骤为5.00从UC的元件待匹配队列中pop出一个元件;5.01统计FC元件待匹配队列中的元素个数,计为n;5.02检查n是否大于0?否的话,匹配失败,直接转到5.07;5.03从FC的元件待匹配队列中pop出一个元件;5.04比较两个元件类型是否一致,并且两元件的输入输出管脚数目是否一致,都一致的话转到5.06;5.05将FC的元件Push回FC元件待匹配队列,n减小1,转到5.02;5.06将两个元件分别放入FC和UC各自的元件匹配栈中,将与两个元件各自相连的没有匹配标记的线网分别放入FC和UC的线网待匹配队列中,匹配成功;5.07结束。
2.05线网匹配的具体步骤是6.01统计FC的线网待匹配队列中pop出一根线网;6.02统计UC线网待匹配队列的元素个数,计为n;6.03检查n是否大于0,否的话,匹配失败,直接转到6.086.04从UC的线网待匹配队列中pop出一根线网;6.05比较两根线网各自连接的元件的数量和类型是否一致,都一致的话转到6.07;6.06将UC的线网Push回UC的线网待匹配队列,n减小1,转到6.03;6.07将两线网分别放入FC和UC各自的线网匹配栈中,将与两根线网各自相连的没有匹配标记的元件分别放入FC和UC的元件待匹配队列中,匹配成功;6.08结束。
图11和图12分别是功能元件匹配和线网匹配的具体流程图。
本发明提出一种新颖的逻辑单元的功能模型,采用多个有效功能电路来描述一个逻辑单元的功能,并在此基础上研究了一种对逻辑单元各种结构皆通用的装箱算法FDUPack。


图1典型的FPGA的结构示意。
图2由BLE组成的簇结构的逻辑块。
图3内部互连开关矩阵的几种模式。
图4XC4000的逻辑单元结构。
图5工艺映射流程。
图6采用FDUPack算法的工艺映射详细流程。
图7FDUPack算法的总体流程。
图8在用户设计电路中匹配一个功能电路的流程。
图9电路匹配初始化流程。
图10电路匹配结果处理流程。
图11功能元件匹配流程。
图12线网匹配流程。
图13XC4000逻辑单元中的编程点R1-R10。
图14XC4000逻辑单元在0010101111编程值下得到的功能电路。
具体实施例方式
图4是Xilinx公司XC4000系列FPGA的逻辑单元结构图,从图中很难直接看出它具有的逻辑功能,按下面的步骤对它进行功能的建模。
(一)提取功能元件和开关多路选通器。
功能元件有2个4输入LUT,1个3输入LUT,2个D触发器,还有多个开关多路选通器(由编程点R1~R10控制)。编程点见图13中的标注。
(二)描述逻辑单元结构。
XC4000的逻辑单元就是由(一)中的这些功能元件和开关多路选通器连接而成的。可以用verilog HDL描述图13的逻辑单元结构。
(三)配置编程点的值,得到一系列功能电路。
图14显示了XC4000的逻辑单元在编程点R1~R10=0010101111值下得到的功能电路。而XC4000的逻辑单元的所有有效功能电路和编程点值的对应关系见表1。
表1XC4000逻辑单元的有效功能电路和编程点值的对应表

(四)描述逻辑单元的功能,即描述逻辑单元的所有有效功能电路。
采用上面介绍的逻辑单元的功能模型格式来具体描述XC4000逻辑单元的功能模型如下PLC XC4000,V1.0,PATTERNNUM=8PINLIST F1 F2 F3 F4 G1 G2 G3 G4 H1DIN/H2 SR/H0 EC K X XQ Y YQSMUXLIST R1 R2 R3 R4 R5 R6 R7 R8 R9 R10PATTERNNAME=CIRCUIT_1;SRAMBIT=0010101111;SYM G4,PIPIN=G4;END SYMSYM G3,PIPIN=G3;END SYMSYM G2,PIPIN=G2;END SYMSYM G1,PIPIN=G1;END SYMSYM F4,PIPIN=F4;END SYMSYM F3,PIPIN=F3;
END SYMSYM F2,PIPIN=F2;END SYMSYM F1,PIPIN=F1;END SYMSYM H1,PIPIN=H1;END SYMSYM K,PIPIN=K;END SYMSYM SR/H0,PIPIN=SR/H0;END SYMSYM DIN/H2,PIPIN=DIN/H2;END SYMSYM YQ,POPIN=YQ;END SYMSYM Y,POPIN=Y;END SYMSYM XQ,POPIN=XQ;END SYMSYM X,POPIN=X;END SYMSYM G-LUT,LUTINNUM=4;IN1=G4;IN2=G3;
IN3=G2;IN4=G1;OUT=G_OUT;END SYMSYM F-LUT,LUTINNUM=4;IN1=F4;IN2=F3;IN3=F2;IN4=F1;OUT=X;END SYMSYM H-LUT,LUTINUM=3;IN1=H1;IN2=SR/H0;IN3=DIN/H2;OUT=Y;END SYMSYM DFFY,DFFDIN=G_OUT;QOUT=YQ;CLK=K;END SYMSYM DFFX,DFFDIN=X;QOUT=XQ;CLK=K;END SYMEND PATTERNPATTERN…… ###此处省略对其它7个功能电路的描述END PATTERNEND PLC
用同样的格式,描述logic cluster模型的逻辑单元BLE(如图2a所示)的功能模型如下PLC 1.0,BasicLogicElement,patternnum=3PINLIST A B C D OUT CLKSMUXLIST R1PATTERNNAME=PATTERN1;SRAMBIT=1;SYMA,PIPIN=_IN1;END SYMSYM B,PIPIN=_IN2;END SYMSYM C,PIPIN=_IN3;END SYMSYM D,PIPIN=_IN4;END SYMSYMCLK,PIPIN=_CLK;END SYMSYM OUT,POPIN=_OUT;END SYMSYM LUT1,LUTINNUM=4;IN1=_IN1;IN2=_IN2;IN3=_IN3;IN4=_IN4;OUT=_DIN;END SYMSYM DFF1,DFF
DIN=_DIN;CLK=_CLK;QOUT=_OUT;END SYMEND PATTERNPATTERNNAME=PATTERRN2;SRAMBIT=0;SYM A,PIPIN=_IN1;END SYMSYM B,PIPIN=_IN2;END SYMSYM C,PIPIN=_IN3;END SYMSYMD,PIPIN=_IN4;END SYMSYM OUT,POPIN=_OUT;END SYMSYM LUT1,LUTINNUM=4;IN1=_IN1;IN2=_IN2;IN3=_IN3;IN4=_IN4;OUT=_OUT;END SYMEND PATTERNPATTERNNAME=PATTERN3;SRAMBIT=1;
LUT=LUT1; ###表示LUT1已配置RAMBIT=0000000011111111;###LUT1被配置成一根直通线SYM A,PIPIN=_IN1;END SYM;SYM CLK,PIPIN=_CLK;END SYMSYM OUT,POPIN=_OUT;END SYMSYM DFF1,DFFDIN=_IN1;CLK=_CLK;QOUT=_OUT;
END SYMEND PATTERNEND PCL除了XC4000的逻辑单元和logic cluster模型中的逻辑单元BLE外,我们还对复旦大学自主开发的FPGA芯片FDT200k的逻辑单元进行了功能建模。然后用通用性装箱算法FDUPack将大量的测试电路装箱到以上三种逻辑单元中。为了比较,我们使用已有的专用装箱算法T-VPack将相同的测试电路装箱到BLE中,使用另一种已有的专用装箱算法lut2xc4k将相同的测试电路装箱到XC4000的逻辑单元中。实验数据见表2所示。
从表2中可以看出,对于BLE这种结构简单的逻辑单元,FDUPack的装箱结果和T-VPack相同;对于XC4000的逻辑单元,FDUPack的装箱结果比lut2xc4k稍差。然而,T-VPack和lut2xc4k都是针对特定逻辑单元结构的装箱算法,一旦逻辑单元结构变化就无法处理,因此通用性上远不及FDUPack。只要预先对逻辑单元的功能进行建模得到功能模型,都可以用FDUPack算法进行装箱处理。
表2通用性装箱算法FDUPack和两种专用装箱算法的结果对比

参考文献[1]S.Brown,R.Francis,J.Rose and Z.Vranesic.Filed-Programmable Gate Arrays[M].Kluwer AcademicPublishers,1992.4-6. Xilinx Inc.,The Programmable Logic Data Book,2000[M]. Altera Inc.,Data Book,1998[M]. V.Betz,J.Rose and A.Marquardt.Architecture and CAD for Deep Submicron FPGAs[M].KluwerAcademic Publishers,1999.19-20. Muhammad Imran Masud.FPGA routing structuresA novel switch block and depopulated interconnectmatrix architectures.Master Thesis.Chapter 4.1999. A.Marquardt,V.Betz and J.Rose.Using Cluster-Based Logic Blocks and Timing-Driven Packing toImprove FPGA Speed and Density[A].ACM Symp.on FPGAs[C].1999.37-46. E.Bozorgzadeh,S.Ogrenci Memik,M.Sarrafzadeh.RPackRoutability-driven Packing forCluster-based FPGAs[A].Asia South Pacific Design Automation Conference [C].Jan.2001.629-634. Jason Cong,John Peck and Yuzheng Ding.RASPA General Logic Synthesis System for SRAM-basedFPGAs [A].Proc.ACM 4th International Symp.On FPGA[C].Feb.1996.137-143.
权利要求
1.一种FPGA逻辑单元的功能模型的建立方法,其特征在于具体步骤如下(一)提取逻辑单元中的功能元件逻辑单元的功能元件有两类1)开关多路选通器逻辑单元内部由编程点控制的,起开关作用的多路选通器;2)功能元件在逻辑单元内部典型的、有特定的逻辑功能的电路元件;(二)用功能元件和开关多路选通器的连接描述逻辑单元的结构;(三)通过对逻辑单元的不同配置,生成仅由功能元件连接而成的有效功能电路;(四)用功能电路描述逻辑单元的逻辑功能,从逻辑单元的一个结构,得到它的多个有效功能电路,这些功能电路描述了逻辑单元的多种功能;这里FPGA为现场可编程门阵列。
2.一种FPGA逻辑单元功能模型,其特征在于具体格式如下PLC version,plctypr,infoPINLIST pin1,pin2...SMUXLIST smux1,smux2...PATTERNpatternparameter1=value1;patternparameter2=value2;……SYM lable,typesymparameter1=value1;symparameter2=value2;……END SYMSYM……END SYMEND PATTERNPATTERN……END PATTERNEND PLC格式中的关键字和语法具体说明如下●PLCPLC关键字语句说明当前文件是一个可编程逻辑单元的功能模型文件,必须放在文件的开头,后接空格分隔;version,plctype,info等参数给出该PLC的一些信息;●PINLIST逻辑单元管脚列表关键字,后接每个管脚名,以空格分隔;●SMUXLIST逻辑单元中开关多路选通器列表关键字,后按顺序显示控制每个开关多路选通器的编程点的名称,以空格分隔;●PATTERN/END PATTERN一组对应的PATTERN/END PATTERN之间的语句,描述了在各编程点的一组编程值下逻辑单元内部的功能元件间的一种连接;附加参数patternparameter=value,以分号“;”加回车结束一个参数的说明;该处参数说明如下(1)NAME=circuit name;功能电路名称;(2)SRAMBIT=binary number;开关多路选通器列表的二进制编程值序列;●SYM/END SYMSYM关键字标明一个元件说明语句的开始,后接空格分隔,后面是label和type两个参数,label和type之间以逗号分隔,最后以回车结束SYM语句;label参数是该元件的标识符,在整个网表文件中必须是唯一的;type参数是该元件的类型;END SYM关键字标明一个元件说明语句的结束,以回车结束END SYM语句;在SYM和END SYM语句之间是元件的附加参数,附加参数的格式为parameter=value,以分号“;”加回车结束一个参数的说明;各种参数的具体说明如下(1)原始输入端口type=PIPIN=netname输入端连接的线网名,在一个单元说明语句中只能有一个;(2)原始输出端口type=POPIN=netname输出端连接的线网名,在一个单元说明语句中只能有一个;(3)LUTtype=LUTINNUM=number;LUT的输入端个数;IN1/IN2/?=netname;每一个输入端相连的线网名称;OUT=netname;输出端的线网名称;注每个输入端各占一行;输出端只有一个占一行;(4)D触发器type=DFFDIN=netname;触发器的D输入端;QOUT=netname;触发器的Q输出端;CLK=netname;触发器的时钟输入端;RESET=netname;触发器的异步清零端;SET=netname;触发器的异步置1端;VALID=low/high;触发器复位控制的有效电平;ENABLE=netname;触发器的时钟使能端;ENVALID=low/high;触发器时钟使能的有效电平;注DIN/QOUT/CLK行必须存在;RESET/SET/VALID/ENABLE/ENVALID行根据触发器元件的实际情况,可选;(5)功能元件type=FE,LUT和D触发器除外SUBTYPE=MUX/ADDER/?;功能元件的其他若干种类型,参数值是功能元件名称关键字;INNUM=number;输入端个数;IN1/IN2/?=netname;每一个输入端相连的线网名称;OUTNUM=number;输出端个数;OUT1/OUT2/?=netname;每一个输出端相连的线网名称;●END PLCEND PLC关键字标明所有有效功能电路描述的结束;END PLC之后的部分都忽略;●注释语句注释语句是以“###”开头,一行中“###”之后的部分都被视为是注释而忽略。
3.一种相应于权利要求2所述的一种FPGA逻辑单元的功能模型的逻辑单元装箱算法,其特征在于在用户设计电路中依次不断匹配逻辑单元的每个有效功能电路,匹配成功的话就用一个FPGA的逻辑单元替换用户实际电路中的相应部分,直到用户电路全部由逻辑单元组成,具体体步骤为1.01将所有有效功能电路按对逻辑单元利用率设置匹配的优先级,利用率高的匹配优先级高,按优先级降序将所有有效功能电路放入功能电路队列Q中;1.02检查功能电路队列Q是否为空,如果为空,转到1.09;1.03从Q中出队一个功能电路FC;1.04在用户设计的电路UC中匹配功能电路FC,即在UC中找和FC完全相同的子电路;1.05检查功能电路FC在UC中是否找到匹配,匹配失败的话转到1.07;1.06把一个逻辑单元作为元件替换UC中和FC匹配的部分电路,再转到1.04;1.07检查UC是否完全由逻辑单元这种元件组成,即UC中的所有电路部分都已被功能电路匹配到。否的话转到1.02;1.08装箱以成功告终,转到1.10;1.09装箱以失败告终;1.10结束。
4.根据权利要求2所述的FPGA逻辑单元的功能模型的逻辑单元装箱算法,其特征在于步骤1.04在UC中匹配FC的具体步骤为2.01匹配初始化;2.02检查FC的元件待匹配队列是否为空,是的话,转到2.04;2.03功能元件的匹配,再转到2.02;2.04检查FC的线网待匹配队列是否为空,是的话,转到2.06;2.05线网匹配,再转到2.02;2.06检查匹配标志,匹配标志为失败的话,直接转到2.0.8;2.07检查FC中的功能元件是否都已经匹配,否的话,转到2.01;2.08匹配结果处理;2.09结束。
5.根据权利要求2所述的FPGA逻辑单元的功能模型的逻辑单元装箱算法,其特征在于步骤2.01匹配初始化的具体步骤为3.01从FC的元件链表中依次取出一个元件;3.02检查是否已经到达链表尾,是的话直接转到3.073.03检查取出的元件是否为原始输出端,否的话转到3.01;3.04找到与原始输出端相连的一个元件,检查此元件是否已经匹配,是的话转到3.01;3.05从UC的元件链表中取出一个相同类型的未匹配的功能元件;3.06将这两个元件分别放入FC的元件待匹配队列和UC的元件待匹配队列;3.07结束。
6.根据权利要求4所述的FPGA逻辑单元的功能模型的逻辑单元装箱算法,其特征在于步骤2.08匹配结果处理的具体步骤是4.01检查匹配标志,标志为失败的话,直接转到4.04;4.02从UC中删除已和FC匹配的相应元件和线网;4.03在UC中插入一个逻辑单元;4.04将UC和FC各自的元件和线网匹配栈清空,各自的元件指针重置到链表头;4.05结束。
7.根据权利要求4所述的FPGA逻辑单元的功能模型的逻辑单元装箱算法,其特征在于步骤2.03功能元件匹配的具体步骤为5.00从UC的元件待匹配队列中pop出一个元件;5.01统计FC元件待匹配队列中的元素个数,计为n;5.02检查n是否大于0?否的话,匹配失败,直接转到5.07;5.03从FC的元件待匹配队列中pop出一个元件;5.04比较两个元件类型是否一致,并且两元件的输入输出管脚数目是否一致,都一致的话转到5.06;5.05将FC的元件Push回FC元件待匹配队列,n减小1,转到5.02;5.06将两个元件分别放入FC和UC各自的元件匹配栈中,将与两个元件各自相连的没有匹配标记的线网分别放入FC和UC的线网待匹配队列中,匹配成功;5.07结束。
8.根据权利要求4所述的FPGA逻辑单元的功能模型的逻辑单元装箱算法,其特征在于步骤2.05线网匹配的具体步骤是6.01统计FC的线网待匹配队列中pop出一根线网;6.02统计UC线网待匹配队列的元素个数,计为n;6.03检查n是否大于0,否的话,匹配失败,直接转到6.086.04从UC的线网待匹配队列中pop出一根线网;6.05比较两根线网各自连接的元件的数量和类型是否一致,都一致的话转到6.07;6.06将UC的线网Push回UC的线网待匹配队列,n减小1,转到6.03;6.07将两线网分别放入FC和UC各自的线网匹配栈中,将与两根线网各自相连的没有匹配标记的元件分别放入FC和UC的元件待匹配队列中,匹配成功;6.08结束。
全文摘要
本发明属于电子设计自动化技术领域,具体为一种FPGA逻辑单元的功能模型及通用性逻辑单元装箱算法。该模型首先提取出FPGA逻辑单元中的功能元件,然后用功能元件和开关多路选择器的连接描述整个逻辑单元的结构,接着通过对逻辑单元进行不同的配置,生成许多仅由功能元件连接而成的有效功能电路,该模型能广泛地描述现有FPGA的逻辑单元的结构,并可由逻辑单元对应的有效功能电路得到逻辑单元的所有逻辑功能。基于此FPGA逻辑单元的功能模型,提出了通用性逻辑单元装箱算法FDUPack。FDUPack算法的核心思想是在用户电路中对每个有效功能电路反复进行电路图的模式匹配,是处理各种逻辑单元装箱问题的一种普适性算法。
文档编号G06F17/50GK1786968SQ200510111269
公开日2006年6月14日 申请日期2005年12月8日 优先权日2005年12月8日
发明者童家榕, 倪刚, 来金梅 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1