專利名稱:用于fpga映射的電路改寫指令系統(tǒng)的制作方法
用于FPGA映射的電路改寫指令系統(tǒng)技術(shù)領(lǐng)域
本發(fā)明屬于電子設(shè)計自動化(Electronic Design Automation, EDA)技術(shù)領(lǐng)域, 具體涉及一種FPGA映射的電路改寫指令系統(tǒng)。
背景技術(shù):
隨著電路規(guī)模的不斷增大,電子電路設(shè)計必須使用EDA軟件進(jìn)行輔助設(shè)計。而在 EDA軟件自身的設(shè)計過程中,由于用戶的要求是多種多樣,設(shè)計出一種能夠靈活處理用戶不 同請求的EDA軟件越發(fā)困難。
目前電子產(chǎn)品的更新速度越來越快,要在短時間內(nèi)開發(fā)出一種滿足用戶要求的電 路芯片,設(shè)計廠商經(jīng)常采用現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)進(jìn) 行原型設(shè)計。FPGA芯片結(jié)構(gòu)[1]包括可編程邏輯塊(Configurable Logic Block, CLB), 可編程輸入輸出(IOB)和可編程互連,具有電路功能可重配置、開發(fā)周期短、設(shè)計成本低等 優(yōu)點。FPGA的軟件設(shè)計流程主要包括邏輯綜合,工藝映射,裝箱,布局和布線。其中裝箱 是根據(jù)目標(biāo)芯片的功能配置對工藝映射后的電路進(jìn)行劃分,再映射到芯片的可編程邏輯塊 中。這個過程嚴(yán)重依賴于目標(biāo)芯片結(jié)構(gòu),對于不同的FPGA芯片,要采用不同的裝箱算法,這 就對裝箱模塊的程序設(shè)計提出很大的挑戰(zhàn)[2]。
目前普遍采用的方法是針對不同的芯片結(jié)構(gòu)編寫一套相應(yīng)的代碼,但是這樣代碼 的可重用性差,軟件開發(fā)效率低下。本發(fā)明提出的電路改寫指令系統(tǒng)可以很好的解決這個 問題,程序代碼主要是對指令系統(tǒng)的解析和執(zhí)行,所有電路改寫過程都由指令指導(dǎo)程序進(jìn) 行。這樣就能實現(xiàn)在不用修改程序的前提下,只需改動不同的指令描述,就能實現(xiàn)對不同目 標(biāo)芯片的裝箱工作。
參考文獻(xiàn)[1] Betz V,Rose J, Marquardt Α.深亞微米FPGA結(jié)構(gòu)與CAD設(shè)計[Μ].王伶俐等, 譯.北京電子工業(yè)出版社,2008。
[2]龔愛慧,等.CSPack 采用CSP圖匹配的新型裝箱算法[J].計算機輔助設(shè)計 與圖形學(xué)學(xué)報,2010,22 (11) :1998-2003。
Jinmei. Circuit design of a novel FPGA chip FDP2008 [J], Journal of Semiconductors, 2009, 30(11): 115009-6。發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種用于FPGA映射的電路改寫指令系統(tǒng),通過這套指令 系統(tǒng),EDA軟件可以在避免修改代碼的情況下完成各種目標(biāo)電路的改寫。
這套指令系統(tǒng)的提出基于一個前提,那就是每個電路的改寫過程都可以分解為一 些簡單的子過程的集合,而這些簡單的子過程有著很大的重復(fù)性和通用性,比如斷開線網(wǎng), 連接線網(wǎng)等操作。因此只要將具有通用性的這些操作提取出來,歸納成文字描述的形式,就 形成了指令系統(tǒng)中的基本指令。
本發(fā)明提出的指令系統(tǒng)包括測試指令和操作指令兩類測試指令用于過程控制, 通過對電路特征的分析判斷來決定采用不同的改寫策略;操作指令則是描述具體的電路改 寫方法。操作指令必須要包含在測試指令之中。
指令格式包含兩部分指令名和參數(shù)列表,指令名后跟一對圓括號,參數(shù)列表放在 圓括號之中,每個參數(shù)用逗號分割。測試指令之前還可以加上取反操作符,表示對測試結(jié)果 的取反。
通用的指令格式表示為instr—name (paraml,param2,…)或者 ! instr—name (paraml, param2,…)由于電路網(wǎng)表具有層次化結(jié)構(gòu),這里定義“.”來描述對低層次結(jié)構(gòu)的引用。比如一個 觸發(fā)器DFF具有不同的端口 CLK,RST, D,Q,分別表示時鐘端,復(fù)位端,數(shù)據(jù)輸入端,數(shù)據(jù)輸 出端。要引用觸發(fā)器器件的時鐘端,可以描述為DFF. CLK。此外器件上通常保存有某種屬 性property,這些屬性可以用一組(key,value)對來表示,例如對于觸發(fā)器的初始狀態(tài)為 0還是1,可以這樣描述INIT: :0或者INIT: :1, INIT是觸發(fā)器的初始狀態(tài)屬性,0和1為值, 用“”隔開。
指令中用到的一些名稱說明type,網(wǎng)表中的器件類型,比如觸發(fā)器類型DFF; inst,網(wǎng)表中的具體器件名稱,比如一個觸發(fā)器實例dffl (類型為DFF);pin,器件上端口的 名稱,比如時鐘端CLK ;net,網(wǎng)表中的線網(wǎng)名稱;lib,描述器件原型的庫文件。
1,測試指令集合 1) true用法:true說明測試指令的結(jié)果始終為真,一般將一些必須要執(zhí)行的操作指令包含在這個指令 范圍內(nèi)。不帶任何參數(shù)。
2) if_inst_used 用法:if_inst_used (inst)說明判斷inst這個器件是否被使用過,如果用過的話測試為真。
3) if一ρ in一used用法if_pin_used (inst. pin)說明判斷inst器件上的pin端口是否被使用,如果用過的話測試為真。
4) if_clb_full 用法if_clb_full說明判斷當(dāng)前正在裝箱的CLB是否已經(jīng)滿了,如果已經(jīng)填滿的話測試為真。這個指令 一般用在FPGA的裝箱過程中。不帶任何參數(shù)。
5)取反操作符(!) 用法! test_instruction說明將當(dāng)前測試指令的結(jié)果取反。取反操作符為單目操作符,只能用在測試指令前
2,操作指令集合1) create_inst用法:create_inst (inst, type, lib)說明依據(jù)lib單元器件庫中的type類型的器件為原型,創(chuàng)建出一個名為inst的新器件。
舉例createjnst (dffl, DFF, Lib),是指創(chuàng)建一個名為dffl的觸發(fā)器,它的原 型是Lib單元庫中的DFF器件。
2) create_net用法:create_net (net, instl. pinl, inst2. pin2)說明創(chuàng)建一條名為net的線網(wǎng),它連接instl器件的pinl端口和inst2器件的pin2 端口。其中pinl端口是這條線網(wǎng)的驅(qū)動端(source), pin2是線網(wǎng)的接受端(sink)。
舉例create_net(netl, dffl. Q, dff2. D),是指創(chuàng)建一個名為 netl 的線網(wǎng),它 連接dffl觸發(fā)器的輸出端Q和dff2觸發(fā)器的輸入端D。
3) create_clb用法:create_clb (clb, type, lib)說明依據(jù)lib單元器件庫中的type類型的器件為原型,創(chuàng)建出一個名為clb的新器 件。這個指令一般用在FPGA的裝箱過程,clb的type類型可以為可編程邏輯塊CLB,以及 FPGA內(nèi)帶的存儲器,乘法器等,需要根據(jù)不同的FPGA芯片而定。
舉例create_clb (clbl, CLB, Lib),是指創(chuàng)建一個名為clbl的可編程邏輯塊, 它的原型是Lib單元庫中的FPGA可編程邏輯塊。
4) create_iob用法:create_iob (iob, type, lib)說明依據(jù)lib單元器件庫中的type類型的端口為原型,創(chuàng)建出一個名為iob的電路 端口。type類型一般可以為輸入端口 hput,輸出端口 Output,以及雙向端口 hout。
舉例create_iob (inl, Input, Lib),是指創(chuàng)建一個名為inl的輸入端口。
5) unconnect用法unconnect (inst. pin)說明將inst器件的pin端口上的線網(wǎng)斷開連接。
舉例unconnect (dffl. CLK),是斷開dffl器件的CLK端口的時鐘線網(wǎng)。
6) connect用法:connect (instl. pinl, inst2. pin2)說明將instl器件的pinl端口和inst2器件的pin2端口通過線網(wǎng)連接起來。類似 于createjet指令,但是沒有新創(chuàng)建線網(wǎng),要求pinl或者pin2有且僅有一個端口連有線 網(wǎng)。pinl和pin2的方向不能相同,即一個為輸出端口,另一個為輸入端口。
舉例connect (dffl. Q, dff2. D),將 dffl 的 Q 端口和 dff2 的 D 端 口連接起來。
7) reconnect用法:reconnect (instl. pinl, inst2. pin2)說明斷開instl器件的pinl端口上的線網(wǎng),重新連接到inst2器件的pin2端口上。 要求pinl和pin2的方向必須相同。reconnect指令通常情況下是unconnect和connect 兩條指令的組合,由于在電路改寫中廣泛使用,所以合并為一條通用指令單獨列出。
舉例reconnect (dffl. D, dff2. D),斷開dffl器件的D端口的線網(wǎng),重新連接到dff2器件的D端口上。假設(shè)原來dffl. D端口和dffO. Q端口相連,則這條reconnect指令 等價于 unconnect (dffl. D), connect (dffO. Q, dff2. D)兩條指令。
8) set_property用法set_property (inst, pname: :pvalue) 說明將inst器件的pname屬性的值設(shè)置為pvalue。
舉例Set_pr0perty (dff, INIT: 0),將dff器件的初始值屬性INIT的值設(shè)置為 O0
9) copy_property用法:copy_property (instl, pname 1, inst2, pname2)說明將instl器件的pnamel屬性值拷貝給inst2器件的pname2屬性。
舉例copy_property(dffl, INIT1, dff2, INIT2),將 dff 1 器件的 INITl 屬性 值拷貝給dff2的INIT2屬性。
10) use用法:use (inst. pin)說明顯式標(biāo)記inst器件的pin端口已經(jīng)使用。通常和if_pin_uSed這個測試指令配 合使用,use指令用來標(biāo)記已經(jīng)處理過的端口,測試指令則在后續(xù)的處理過程中測試端口是 否已經(jīng)被處理過。經(jīng)過connect和reconrmect指令處理過的端口會默認(rèn)調(diào)用use指令,而 unconnect指令處理的端口則會將使用標(biāo)記清除。
舉例Use (dff. CLK),標(biāo)記dff器件的CLK端口已經(jīng)使用,比如已經(jīng)連接上時鐘線。
上述指令系統(tǒng)包含涉及電路設(shè)計和改寫基本步驟的指令,可以指導(dǎo)程序進(jìn)行電路 設(shè)計和改寫工作;配套程序的主要功能是做指令解析和執(zhí)行,程序中不包含具體的電路改 寫方法,僅通過額外提供的指令文件進(jìn)行電路設(shè)計和改寫。
圖1加法器電路圖。
圖2 FDP2008可編程邏輯塊結(jié)構(gòu)框圖。
具體實施方式
這里用FPGA的裝箱過程為例,說明如何通過設(shè)計一套指令集合指導(dǎo)裝箱程序進(jìn) 行功能電路的裝箱操作。裝箱過程實際上就是一個FPGA映射的電路改寫過程,找出用戶電 路網(wǎng)表中的功能電路,將這部分電路從網(wǎng)表中取出,用一個等功能的可編程邏輯塊加以替 換。當(dāng)用戶電路中所有功能都用FPGA中的特定器件替換時,裝箱過程也就結(jié)束了。
假設(shè)用戶電路中有一個加法器邏輯,其電路圖如圖1所示。這個加法電路一共有 5個輸入端口 4個加數(shù)輸入(LUT輸入,實際上只需用到2位),1個CIN進(jìn)位輸入(MUX的一 個輸入端);2個輸出端口 1個和輸出(X0R的輸出),一個COUT進(jìn)位輸出(MUX輸出)。裝箱 過程是要將其替換為FPGA中的可編程邏輯塊CLB[3],如圖2所示。下面要設(shè)計一套指令集 合,完成這個電路改寫過程。
1、判斷之前的一個CLB是否已經(jīng)填滿,填滿的話創(chuàng)建一個新的CLB。可以用指令create_clb (clb, CLB, cell_lib)。
2、將輸入端口的線網(wǎng)重新連接,即把Iut中Al、4端口的輸入線網(wǎng)斷開,連接到 clb的Al、4端,把mux中Il端的進(jìn)位線網(wǎng)連接到clb的CIN端。用reconnect指令來實 現(xiàn)reconnect (lut. Al, clb. Al)。同時要注意將xor的B端連接斷開。
3、將輸出端口的線網(wǎng)重新連接,即把mux中的0端口的進(jìn)位輸出線網(wǎng)連接到clb 的COUT端,把M)R的和輸出線網(wǎng)連接至Clb的OA輸出。同樣用reconnect指令實現(xiàn) reconnect (xor.0, clb.OA)。
4、給CLB內(nèi)部打上位流碼點,同時把原加法電路中的屬性值拷貝到CLB中??梢?用才旨令 set—property 禾口 copy—property 實現(xiàn)。
5、裝箱結(jié)束,原加法電路的各個端口已經(jīng)被斷開,形成一塊孤立的子電路,而將 CLB替換到原始的用戶網(wǎng)表中。這樣就完成了一次電路改寫。
完整的替換指令集合如下,用XML格式來描述指令集合 〈operations target=〃FPGA〃>〈test cond="if—slice—full"><op>create—slice(clb, CLB</test>〈test cond=〃true〃><op>reconnect(lut. Al,clb <op>reconnect(lut. A2,clb <op>reconnect(lut. A3,clb <op>reconnect(lut. A4,clb <op>reconnect(mux. II,clb <op>unhook (xor. B)</op></test>〈test cond=〃true〃><op>reconnect (xor. 0,clb. OA)</op> <op>reconnect (mux. 0,clb. C0UT)</op></test>〈test cond=〃true〃><op>set—property (clb, OAUSED::1)</op> <op>set—property(clb, CINUSED::1) </op> <op>set—property(clb,C0UTUSED::l)</op> <op>copy—property(lut, RAMBITjclb, RAMBIT)</op> <op>copy—property(lut, NAME, clb, NAME)</op></test> 〈/operations〉。,cell—lib)</op> Al)〈/op> A2)</op> A3)</op> A4)</op> CIN)</op>
權(quán)利要求
1.一種FPGA映射的電路改寫指令系統(tǒng),其特征在于該指令系統(tǒng)包含電路測試指令和 操作指令兩類;所述測試指令用于過程控制,通過對電路特征的分析判斷來決定采用不同 的改寫策略;所述操作指令則是描述具體的電路改寫方法,操作指令包含在測試指令之中; 其中指令格式為包括指令名和參數(shù)列表,指令名后跟一對圓括號,參數(shù)列表放在圓括號之 中,每個參數(shù)用逗號分割,測試指令之前還可以加上取反操作符,表示對測試結(jié)果的取反,形式為 instr_name (paraml, param2,…)或者! instr_name (paraml, param2, …);測試指令為true 測試指令結(jié)果始終為真; if_inst_used 測試器件是否已經(jīng)被使用; if_pin_used 測試端口是否已經(jīng)被使用; if_clb_full 測試FPGA的可編程邏輯塊是否填滿; !取反操作符,將前面測試指令的結(jié)果取反; 操作指令為create_inst 創(chuàng)建一個新器件;create_net 創(chuàng)建一條新線網(wǎng);create_clb 創(chuàng)建一個新的FPGA可編程邏輯塊;create_iob 創(chuàng)建一個新的輸入輸出端口 ;unconnect 斷開端口的線網(wǎng)連接;connect 將兩個端口用線網(wǎng)相連;reconnect 將線網(wǎng)從一個端口上斷開,再連接至另一個端口 ; set_property 設(shè)置器件的屬性值; copy_property 將屬性值從一個器件拷貝至另一個器件; use:顯式的設(shè)置端口被使用。
2.進(jìn)行電路設(shè)計和改寫的方法,其特征是運用如權(quán)利要求1所述指令系統(tǒng)指導(dǎo)程序 進(jìn)行電路設(shè)計和改寫工作。
全文摘要
本發(fā)明屬于電子技術(shù)領(lǐng)域,具體為一種用于FPGA映射的電路改寫指令系統(tǒng)。指令系統(tǒng)中包括測試指令和操作指令兩類,測試指令用于過程控制,通過對電路特性的分析判斷來決定不同的電路改寫策略,操作指令用于描述實際的電路改寫方法。由于在電子設(shè)計自動化工具中經(jīng)常涉及到對電路的修改和等價性替換,用基于文本的指令系統(tǒng)來描述電路網(wǎng)表的修改過程,可以使用戶避免修改程序代碼就能靈活處理復(fù)雜多變的電路修改要求。
文檔編號G06F9/445GK102033772SQ20101060819
公開日2011年4月27日 申請日期2010年12月28日 優(yōu)先權(quán)日2010年12月28日
發(fā)明者梁紹池, 王伶俐, 陳志輝, 龔愛慧 申請人:復(fù)旦大學(xué)