CN102033772A - 用于fpga映射的电路改写指令系统 - Google Patents
用于fpga映射的电路改写指令系统 Download PDFInfo
- Publication number
- CN102033772A CN102033772A CN2010106081911A CN201010608191A CN102033772A CN 102033772 A CN102033772 A CN 102033772A CN 2010106081911 A CN2010106081911 A CN 2010106081911A CN 201010608191 A CN201010608191 A CN 201010608191A CN 102033772 A CN102033772 A CN 102033772A
- Authority
- CN
- China
- Prior art keywords
- circuit
- create
- port
- test
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明属于电子技术领域,具体为一种用于FPGA映射的电路改写指令系统。指令系统中包括测试指令和操作指令两类,测试指令用于过程控制,通过对电路特性的分析判断来决定不同的电路改写策略,操作指令用于描述实际的电路改写方法。由于在电子设计自动化工具中经常涉及到对电路的修改和等价性替换,用基于文本的指令系统来描述电路网表的修改过程,可以使用户避免修改程序代码就能灵活处理复杂多变的电路修改要求。
Description
技术领域
本发明属于电子设计自动化(Electronic Design Automation, EDA)技术领域,具体涉及一种FPGA映射的电路改写指令系统。
背景技术
随着电路规模的不断增大,电子电路设计必须使用EDA软件进行辅助设计。而在EDA软件自身的设计过程中,由于用户的要求是多种多样,设计出一种能够灵活处理用户不同请求的EDA软件越发困难。
目前电子产品的更新速度越来越快,要在短时间内开发出一种满足用户要求的电路芯片,设计厂商经常采用现场可编程门阵列(Field Programmable Gate Array,FPGA)进行原型设计。FPGA芯片结构[1]包括可编程逻辑块(Configurable Logic Block,CLB)、可编程输入输出(IOB)和可编程互连,具有电路功能可重配置、开发周期短、设计成本低等优点。FPGA的软件设计流程主要包括:逻辑综合,工艺映射,装箱,布局和布线。其中装箱是根据目标芯片的功能配置对工艺映射后的电路进行划分,再映射到芯片的可编程逻辑块中。这个过程严重依赖于目标芯片结构,对于不同的FPGA芯片,要采用不同的装箱算法,这就对装箱模块的程序设计提出很大的挑战[2]。
目前普遍采用的方法是针对不同的芯片结构编写一套相应的代码,但是这样代码的可重用性差,软件开发效率低下。本发明提出的电路改写指令系统可以很好的解决这个问题,程序代码主要是对指令系统的解析和执行,所有电路改写过程都由指令指导程序进行。这样就能实现在不用修改程序的前提下,只需改动不同的指令描述,就能实现对不同目标芯片的装箱工作。
参考文献
[1] Betz V, Rose J, Marquardt A. 深亚微米FPGA结构与CAD设计[M]. 王伶俐等, 译. 北京: 电子工业出版社, 2008。
[2] 龚爱慧,等.CSPack:采用CSP图匹配的新型装箱算法[J]. 计算机辅助设计与图形学学报,2010,22(11):1998-2003。
Jinmei. Circuit design of a novel FPGA chip FDP2008 [J]. Journal of Semiconductors, 2009,30(11): 115009-6。
发明内容
本发明的目的在于提出一种用于FPGA映射的电路改写指令系统,通过这套指令系统,EDA软件可以在避免修改代码的情况下完成各种目标电路的改写。
这套指令系统的提出基于一个前提,那就是每个电路的改写过程都可以分解为一些简单的子过程的集合,而这些简单的子过程有着很大的重复性和通用性,比如断开线网,连接线网等操作。因此只要将具有通用性的这些操作提取出来,归纳成文字描述的形式,就形成了指令系统中的基本指令。
本发明提出的指令系统包括测试指令和操作指令两类:测试指令用于过程控制,通过对电路特征的分析判断来决定采用不同的改写策略;操作指令则是描述具体的电路改写方法。操作指令必须要包含在测试指令之中。
指令格式包含两部分:指令名和参数列表,指令名后跟一对圆括号,参数列表放在圆括号之中,每个参数用逗号分割。测试指令之前还可以加上取反操作符,表示对测试结果的取反。
通用的指令格式表示为:
instr_name (param1, param2, …) 或者
! instr_name (param1, param2, …)
由于电路网表具有层次化结构,这里定义“.”来描述对低层次结构的引用。比如一个触发器DFF具有不同的端口:CLK,RST,D,Q,分别表示时钟端,复位端,数据输入端,数据输出端。要引用触发器器件的时钟端,可以描述为DFF.CLK。此外器件上通常保存有某种属性property,这些属性可以用一组(key, value)对来表示,例如对于触发器的初始状态为0还是1,可以这样描述INIT::0或者INIT::1,INIT是触发器的初始状态属性,0和1为值,用“::”隔开。
指令中用到的一些名称说明:type,网表中的器件类型,比如触发器类型DFF;inst,网表中的具体器件名称,比如一个触发器实例dff1(类型为DFF);pin,器件上端口的名称,比如时钟端CLK;net,网表中的线网名称;lib,描述器件原型的库文件。
1,测试指令集合:
1)true
用法:true
说明:测试指令的结果始终为真,一般将一些必须要执行的操作指令包含在这个指令范围内。不带任何参数。
2) if_inst_used
用法:if_inst_used (inst)
说明:判断inst这个器件是否被使用过,如果用过的话测试为真。
3) if_pin_used
用法:if_pin_used (inst.pin)
说明:判断inst器件上的pin端口是否被使用,如果用过的话测试为真。
4) if_clb_full
用法:if_clb_full
说明:判断当前正在装箱的CLB是否已经满了,如果已经填满的话测试为真。这个指令一般用在FPGA的装箱过程中。不带任何参数。
5) 取反操作符(!)
用法:!test_instruction
说明:将当前测试指令的结果取反。取反操作符为单目操作符,只能用在测试指令前面。
2,操作指令集合:
1)create_inst
用法:create_inst (inst, type, lib)
说明:依据lib单元器件库中的type类型的器件为原型,创建出一个名为inst的新器件。
举例:create_inst (dff1, DFF, Lib),是指创建一个名为dff1的触发器,它的原型是Lib单元库中的DFF器件。
2) create_net
用法:create_net (net, inst1.pin1, inst2.pin2)
说明:创建一条名为net的线网,它连接inst1器件的pin1端口和inst2器件的pin2端口。其中pin1端口是这条线网的驱动端(source),pin2是线网的接受端(sink)。
举例:create_net (net1, dff1.Q, dff2.D),是指创建一个名为net1的线网,它连接dff1触发器的输出端Q和dff2触发器的输入端D。
3)create_clb
用法:create_clb (clb, type, lib)
说明:依据lib单元器件库中的type类型的器件为原型,创建出一个名为clb的新器件。这个指令一般用在FPGA的装箱过程,clb的type类型可以为可编程逻辑块CLB,以及FPGA内带的存储器,乘法器等,需要根据不同的FPGA芯片而定。
举例:create_clb (clb1, CLB, Lib),是指创建一个名为clb1的可编程逻辑块,它的原型是Lib单元库中的FPGA可编程逻辑块。
4)create_iob
用法:create_iob (iob, type, lib)
说明:依据lib单元器件库中的type类型的端口为原型,创建出一个名为iob的电路端口。type类型一般可以为输入端口Input,输出端口Output,以及双向端口Inout。
举例:create_iob (in1, Input, Lib),是指创建一个名为in1的输入端口。
5)unconnect
用法:unconnect (inst.pin)
说明:将inst器件的pin端口上的线网断开连接。
举例:unconnect (dff1.CLK),是断开dff1器件的CLK端口的时钟线网。
6)connect
用法:connect (inst1.pin1, inst2.pin2)
说明:将inst1器件的pin1端口和inst2器件的pin2端口通过线网连接起来。类似于create_net指令,但是没有新创建线网,要求pin1或者pin2有且仅有一个端口连有线网。pin1和pin2的方向不能相同,即一个为输出端口,另一个为输入端口。
举例:connect (dff1.Q, dff2.D),将dff1的Q端口和dff2的D端口连接起来。
7)reconnect
用法:reconnect (inst1.pin1, inst2.pin2)
说明:断开inst1器件的pin1端口上的线网,重新连接到inst2器件的pin2端口上。要求pin1和pin2的方向必须相同。reconnect指令通常情况下是unconnect和connect两条指令的组合,由于在电路改写中广泛使用,所以合并为一条通用指令单独列出。
举例:reconnect (dff1.D, dff2.D),断开dff1器件的D端口的线网,重新连接到dff2器件的D端口上。假设原来dff1.D端口和dff0.Q端口相连,则这条reconnect指令等价于unconnect (dff1.D),connect (dff0.Q, dff2.D)两条指令。
8)set_property
用法:set_property (inst, pname::pvalue)
说明:将inst器件的pname属性的值设置为pvalue。
举例:set_property (dff, INIT::0),将dff器件的初始值属性INIT的值设置为0。
9)copy_property
用法:copy_property (inst1, pname1, inst2, pname2)
说明:将inst1器件的pname1属性值拷贝给inst2器件的pname2属性。
举例:copy_property (dff1, INIT1, dff2, INIT2),将dff1器件的INIT1属性值拷贝给dff2的INIT2属性。
10)use
用法:use (inst.pin)
说明:显式标记inst器件的pin端口已经使用。通常和if_pin_used这个测试指令配合使用,use指令用来标记已经处理过的端口,测试指令则在后续的处理过程中测试端口是否已经被处理过。经过connect和reconnnect指令处理过的端口会默认调用use指令,而unconnect指令处理的端口则会将使用标记清除。
举例:use (dff.CLK),标记dff器件的CLK端口已经使用,比如已经连接上时钟线。
上述指令系统包含涉及电路设计和改写基本步骤的指令,可以指导程序进行电路设计和改写工作;配套程序的主要功能是做指令解析和执行,程序中不包含具体的电路改写方法,仅通过额外提供的指令文件进行电路设计和改写。
附图说明
图1 加法器电路图。
图2 FDP2008可编程逻辑块结构框图。
具体实施方式
这里用FPGA的装箱过程为例,说明如何通过设计一套指令集合指导装箱程序进行功能电路的装箱操作。装箱过程实际上就是一个FPGA映射的电路改写过程,找出用户电路网表中的功能电路,将这部分电路从网表中取出,用一个等功能的可编程逻辑块加以替换。当用户电路中所有功能都用FPGA中的特定器件替换时,装箱过程也就结束了。
假设用户电路中有一个加法器逻辑,其电路图如图1所示。这个加法电路一共有5个输入端口:4个加数输入(LUT输入,实际上只需用到2位),1个CIN进位输入(MUX的一个输入端);2个输出端口:1个和输出(XOR的输出),一个COUT进位输出(MUX输出)。装箱过程是要将其替换为FPGA中的可编程逻辑块CLB[3],如图2所示。下面要设计一套指令集合,完成这个电路改写过程。
1、判断之前的一个CLB是否已经填满,填满的话创建一个新的CLB。可以用指令create_clb (clb, CLB, cell_lib)。
2、将输入端口的线网重新连接,即把lut中A1~A4端口的输入线网断开,连接到clb的A1~A4端,把mux中I1端的进位线网连接到clb的CIN端。用reconnect指令来实现:reconnect (lut.A1, clb.A1)。同时要注意将xor的B端连接断开。
3、将输出端口的线网重新连接,即把mux中的O端口的进位输出线网连接到clb的COUT端,把XOR的和输出线网连接至clb的OA输出。同样用reconnect指令实现:reconnect (xor.O, clb.OA)。
4、给CLB内部打上位流码点,同时把原加法电路中的属性值拷贝到CLB中。可以用指令set_property和copy_property实现。
5、装箱结束,原加法电路的各个端口已经被断开,形成一块孤立的子电路,而将CLB替换到原始的用户网表中。这样就完成了一次电路改写。
完整的替换指令集合如下,用XML格式来描述指令集合:
<operations target="FPGA">
<test cond="if_slice_full">
<op>create_slice(clb,CLB,cell_lib)</op>
</test>
<test cond="true">
<op>reconnect(lut.A1,clb.A1)</op>
<op>reconnect(lut.A2,clb.A2)</op>
<op>reconnect(lut.A3,clb.A3)</op>
<op>reconnect(lut.A4,clb.A4)</op>
<op>reconnect(mux.I1,clb.CIN)</op>
<op>unhook(xor.B)</op>
</test>
<test cond="true">
<op>reconnect(xor.O,clb.OA)</op>
<op>reconnect(mux.O,clb.COUT)</op>
</test>
<test cond="true">
<op>set_property(clb,OAUSED::1)</op>
<op>set_property(clb,CINUSED::1)</op>
<op>set_property(clb,COUTUSED::1)</op>
<op>copy_property(lut,RAMBIT,clb,RAMBIT)</op>
<op>copy_property(lut,NAME,clb,NAME)</op>
</test>
</operations>。
Claims (2)
1.一种FPGA映射的电路改写指令系统,其特征在于该指令系统包含电路测试指令和操作指令两类;所述测试指令用于过程控制,通过对电路特征的分析判断来决定采用不同的改写策略;所述操作指令则是描述具体的电路改写方法,操作指令包含在测试指令之中;其中:
指令格式为:包括指令名和参数列表,指令名后跟一对圆括号,参数列表放在圆括号之中,每个参数用逗号分割,测试指令之前还可以加上取反操作符,表示对测试结果的取反,
形式为 instr_name (param1, param2, …) 或者 ! instr_name (param1, param2, …);
测试指令为:
true:测试指令结果始终为真;
if_inst_used:测试器件是否已经被使用;
if_pin_used:测试端口是否已经被使用;
if_clb_full:测试FPGA的可编程逻辑块是否填满;
!:取反操作符,将前面测试指令的结果取反;
操作指令为:
create_inst:创建一个新器件;
create_net:创建一条新线网;
create_clb:创建一个新的FPGA可编程逻辑块;
create_iob:创建一个新的输入输出端口;
unconnect:断开端口的线网连接;
connect:将两个端口用线网相连;
reconnect:将线网从一个端口上断开,再连接至另一个端口;
set_property:设置器件的属性值;
copy_property:将属性值从一个器件拷贝至另一个器件;
use:显式的设置端口被使用。
2.进行电路设计和改写的方法,其特征是:运用如权利要求1所述指令系统指导程序进行电路设计和改写工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106081911A CN102033772A (zh) | 2010-12-28 | 2010-12-28 | 用于fpga映射的电路改写指令系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106081911A CN102033772A (zh) | 2010-12-28 | 2010-12-28 | 用于fpga映射的电路改写指令系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102033772A true CN102033772A (zh) | 2011-04-27 |
Family
ID=43886706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106081911A Pending CN102033772A (zh) | 2010-12-28 | 2010-12-28 | 用于fpga映射的电路改写指令系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102033772A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789512A (zh) * | 2011-05-20 | 2012-11-21 | 中国科学院微电子研究所 | multi-FPGA系统的EDA工具设计方法和装置 |
CN104571063A (zh) * | 2015-01-27 | 2015-04-29 | 史玉强 | 可编程过程控制器 |
CN109086520A (zh) * | 2018-08-02 | 2018-12-25 | 深圳市精嘉微电子有限公司 | 一种提高同步逻辑实时运行可靠性的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0651343B1 (en) * | 1988-10-05 | 2004-04-28 | Quickturn Design Systems, Inc. | Method of using electronically reconfigurable gate array logic and apparatus formed thereby |
CN1786968A (zh) * | 2005-12-08 | 2006-06-14 | 复旦大学 | Fpga逻辑单元的功能模型和通用性逻辑单元装箱算法 |
CN101246516A (zh) * | 2007-03-09 | 2008-08-20 | 知亿科技股份有限公司 | 可执行于计算机系统的电路设计修改方法 |
-
2010
- 2010-12-28 CN CN2010106081911A patent/CN102033772A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0651343B1 (en) * | 1988-10-05 | 2004-04-28 | Quickturn Design Systems, Inc. | Method of using electronically reconfigurable gate array logic and apparatus formed thereby |
CN1786968A (zh) * | 2005-12-08 | 2006-06-14 | 复旦大学 | Fpga逻辑单元的功能模型和通用性逻辑单元装箱算法 |
CN101246516A (zh) * | 2007-03-09 | 2008-08-20 | 知亿科技股份有限公司 | 可执行于计算机系统的电路设计修改方法 |
Non-Patent Citations (2)
Title |
---|
胡云等: "层次化结构的FPGA装箱算法", 《复旦学报(自然科学版)》 * |
龚爱慧等: "CSPack:采用CSP图匹配的新型装箱算法", 《计算机辅助设计与图形学学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789512A (zh) * | 2011-05-20 | 2012-11-21 | 中国科学院微电子研究所 | multi-FPGA系统的EDA工具设计方法和装置 |
CN102789512B (zh) * | 2011-05-20 | 2015-02-04 | 中国科学院微电子研究所 | multi-FPGA系统的EDA工具设计方法和装置 |
CN104571063A (zh) * | 2015-01-27 | 2015-04-29 | 史玉强 | 可编程过程控制器 |
CN109086520A (zh) * | 2018-08-02 | 2018-12-25 | 深圳市精嘉微电子有限公司 | 一种提高同步逻辑实时运行可靠性的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pham et al. | BITMAN: A tool and API for FPGA bitstream manipulations | |
Luu et al. | VPR 5.0: FPGA CAD and architecture exploration tools with single-driver routing, heterogeneity and process scaling | |
WO2002061630A2 (en) | System, method and article of manufacture for distributing ip cores | |
WO2002061633A2 (en) | System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures | |
CN103870390A (zh) | 用于支持统一的调试环境的方法和装置 | |
CN101317179A (zh) | 并入soc分层设计的定时约束 | |
CN105653744A (zh) | 版图布局的设计方法及装置 | |
Li et al. | PRGA: An open-source FPGA research and prototyping framework | |
CN102033772A (zh) | 用于fpga映射的电路改写指令系统 | |
US9824173B1 (en) | Software development-based compilation flow for hardware implementation | |
Marlow et al. | An enhanced and embedded GNU radio flow | |
Silva et al. | Support for partial run-time reconfiguration of platform FPGAs | |
GB2603402A (en) | Systems and methods for assembling and developing an soc efficiently using templates and designer input data | |
Ha et al. | Building a virtual framework for networked reconfigurable hardware and software objects | |
CN107608255A (zh) | 一种芯片架构重构方法和装置 | |
US8359557B1 (en) | Method and apparatus for generating data bus interface circuitry | |
Litovski et al. | Mixed-signal modeling with AleC++: Specific features of the HDL | |
Kinage et al. | Design and implementation of FPGA soft core processor for low power multicore Embedded system using VHDL | |
Klingauf et al. | From TLM to FPGA: rapid prototyping with SystemC and transaction level modeling | |
O'Nils | Specification, synthesis and validation of hardware/software interfaces | |
CN101807049A (zh) | 基于嵌入式arm cpu实现并行总线外部扩展的方法 | |
Economakos et al. | AGENDA: An attribute grammar driven environment for the design automation of digital systems | |
Salunke et al. | Design of embedded web server based on NIOS-II soft core processor | |
Turki et al. | Towards synthetic benchmarks generator for CAD tool evaluation | |
KR20040034071A (ko) | 통합 시뮬레이션 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110427 |