在現(xiàn)今應(yīng)用FPGA進(jìn)行芯片電路設(shè)計的領(lǐng)域,已經(jīng)使用HDL語言以及擁有強(qiáng)大功能的邏輯綜合工具來進(jìn)行設(shè)計。同時,高速電路也越來越被普遍使用,這一趨勢使得芯片設(shè)計工程師把眼光越來越多的投向?qū)蠖瞬季植季€的控制,因?yàn)閷τ诟咚僭O(shè)計,精細(xì)的后端控制是保障電路可靠運(yùn)行的重要條件。在實(shí)踐中,精細(xì)的后端控制也越來越顯出它的重要性,同時要求設(shè)計者投入到這個方面的時間也越來越多。
問題的提出
實(shí)際的應(yīng)用中,由于綜合工具的介入,由它所輸出的網(wǎng)表,有時候是非常難被設(shè)計者所理解的。這主要由三個方面的原因引起:1. 網(wǎng)表中除了在源程序中的寄存器能夠被明顯標(biāo)志以外,其它的組合邏輯被映射(Map)到LUT中,但綜合工具并沒有提供一種很有效且有意義的方式進(jìn)行對組合邏輯的命名,這使得設(shè)計者不容易找到組合邏輯的對應(yīng)關(guān)系;2. 網(wǎng)表中元件(Component)之間的連接變得非常復(fù)雜;3. 由于綜合工具的運(yùn)用,會“優(yōu)化”掉一些它認(rèn)為是“冗余”的邏輯或增加一些它認(rèn)為是“必要”的邏輯。
上述因素直接影響到后端的布局布線控制。當(dāng)然,設(shè)計者可以在約束文件(UCF)中使用用戶套(U_Set)、層次套(HU_Set)以及設(shè)置一個設(shè)計層次中元件相對的距離等措施來做一些后端控制。這樣的設(shè)置可以很好的控制寄存器的布局和布線,但并不能夠很好地完成對組合電路的布局布線控制。很明顯,對于高速設(shè)計,這樣的控制顯然是非常必要的。這使得我們要找到一種更好的方法來控制組合電路。
這個新方法應(yīng)該滿足以下兩個條件。1. 對于高速設(shè)計,當(dāng)通??刂品椒y以達(dá)到要求的時候,這個新方法應(yīng)該能夠完全控制模塊內(nèi)部的布局布線;2. 用這個新方法建立的模塊在上層調(diào)用的時候所采用的仿真模型應(yīng)該很容易建立,并且很容易保證它和建立模塊的功能上的一致性。滿足這兩個要求的方法就是建立宏模塊,更準(zhǔn)確的說是建立硬件宏模塊,簡稱硬宏。
傳統(tǒng)的建立硬宏的方式是在Xilinx提供的FPGA Editor中直接在FPGA內(nèi)部來建立目標(biāo)電路,然后把它存為一個宏文件。然后,在上層進(jìn)行調(diào)用。這種方法的弊端是顯而易見的。1. 要在這樣一個“艱苦”的環(huán)境下建立一個硬宏是一件非常麻煩的事情。設(shè)計者必須進(jìn)入到Slice內(nèi)部,來控制一個Slice內(nèi)部的器件選擇和器件之間的連線,同時也正由于它非常的麻煩,導(dǎo)致了設(shè)計很容易出錯;2. 這樣設(shè)計出來的宏的功能驗(yàn)證非常繁瑣;3. 要為這樣的宏建立仿真模型也很麻煩,一般的方法是人為的直接編寫一個行為仿真模型,然后在上層設(shè)計中調(diào)用這個仿真模型,然而要保證仿真模型和宏之間的一致性也是一件不太容易的事情。另外還有一種使用Xilinx的Foundation建立宏的方法,這個方法在進(jìn)一步討論部分將會提到它的不足之處。
解決方法
鑒于以上的原因,現(xiàn)在采用另外一個新的流程(圖1)來設(shè)計并建立一個宏。
第一步,為了使設(shè)計者不必進(jìn)入到Slice里面進(jìn)行電路的設(shè)計,而有一個很好的設(shè)計環(huán)境,使用Aldec公司的Active-HDL來進(jìn)行宏內(nèi)部電路的輸入。在Active-HDL中,有一個庫管理(Library Manager)功能,在這個庫管理中,有很多子庫,每個子庫都有它不同的用途。在這些子庫中,Schematic子庫專門為Xilinx提供圖形輸入的。設(shè)計者調(diào)用這類庫的元件來建立宏的內(nèi)部電路。
這一步需要注意:1.時鐘進(jìn)入芯片的時候,應(yīng)該通過BUFGP進(jìn)入。通過BUFGP把時鐘引入全局時鐘網(wǎng)絡(luò)。BUFGP并不是一個物理上對應(yīng)的元件,Xilinx只是為了方便設(shè)計者的調(diào)用,而把IBUFG和BUFG在表示上合成一個元件。但當(dāng)用到DLL或其他時鐘連接方式的時候,應(yīng)該把BUFGP拆開,單獨(dú)的使用IBUFG和BUFG;2.在各個PIN的位置,要加上相應(yīng)電氣參數(shù)的IBUF或OBUF;3. 強(qiáng)烈建議對SLICE里面的元件進(jìn)行詳細(xì)的了解;4.對于寄存器,寄存器和組合邏輯之間的連線,組合邏輯和組合邏輯之間的連線,都使用有意義的名字,以方便在下端工具中查看電路時,與上端電路圖的對應(yīng);5.在設(shè)計的時候應(yīng)該把關(guān)鍵路徑記錄下來,在下端檢查的時候要防止出現(xiàn)組合電路競爭。
第二步,直接對這個電路進(jìn)行功能仿真。Schematic庫中的元件可以直接支持基于門級的功能仿真。直接對這個電路圖仿真可以從一開始就保證宏的功能正確性。Active-HDL提供了一個非常友好的仿真界面。它可以把仿真波形進(jìn)行存儲,而且,在以后的仿真中可以把第一次仿真所存儲的輸入向量波形當(dāng)成激勵。這樣的做法大大地提高了效率,因?yàn)椴挥迷贋榱艘粋€小模塊而專門編寫它的測試基準(zhǔn)(Test Bench)。
第三步,由Active-HDL直接輸出EDIF網(wǎng)表,在這個網(wǎng)表中記錄了宏的內(nèi)部電路信息。Active-HDL可以把圖形轉(zhuǎn)換成三種語言形式的網(wǎng)表,VHDL、Verilog HDL和EDIF。而其他的上層輸入工具一般只能輸出兩種,VHDL和Verilog HDL,如Mentor Graphics的HDL Design Series。選擇Diagram菜單中的Set Target HDL選項(xiàng)來實(shí)現(xiàn)這一語言的切換。請注意,Set Target HDL選項(xiàng)只有在圖形輸入方式的時候才出現(xiàn)在Diagram菜單中。
第四步,把Active-HDL產(chǎn)生的這個EDIF網(wǎng)表直接交給Xilinx的后端工具進(jìn)行處理。這樣,就繞開了綜合工具的干預(yù),使得精細(xì)的下端控制成為可能。值得注意的是,由于繞開了綜合工具,很多綜合工具原來要做的工作就必須由設(shè)計者自己去做。這就是為什么第一步提到要添加相應(yīng)電氣參數(shù)的IBUF和OBUF以及時鐘引腳要添加全局時鐘緩沖器(BUFG)的原因。如果在第一步中忘記了這一點(diǎn),會直接導(dǎo)致后端的映射工具把設(shè)計中的電路全部清空,然后報告出錯。后端工具只需要進(jìn)行三個步驟的處理就可以了,即翻譯、映射以及布局和布線,其他的處理都不需要。處理完后會生成一些關(guān)鍵的文件,分別是project_name.ngd、project_name.ncd和map.ncd。
第五步,把處理得到的project_name.ncd文件拿到FPGA Editor中進(jìn)行宏的生成。注意在使用FPGA Editor打開這個文件的時候,應(yīng)該選擇Read Write模式進(jìn)入。進(jìn)入之后,首先應(yīng)該做的工作就是把設(shè)計中所有的IBUF和OBUF全部刪除。這可以在LIST窗口來進(jìn)行。在刪除的同時,與這些IBUF和OBUF連接的連線也被同步刪除。這樣一來,就只剩下了功能部分。值得一提的是,在第四步中映射對電路進(jìn)行處理的時候會完成把組合電路映射到LUT的功能。但由于在第一步中對組合電路和組合電路之間的連線使用了有意義的名稱命名,使得在這一步中要找到原始電路圖中的對應(yīng)并不難。這一點(diǎn)是使用綜合工具流程所不能實(shí)現(xiàn)的。設(shè)計者通過名字的對應(yīng),就找到在第一步中記錄的關(guān)鍵路徑,通過使用Delay功能來顯示線路延遲,從而判斷電路是否可以工作。如果不行,使用FPGA Editor中的相應(yīng)工具來進(jìn)行路徑的重新布線,這個布線可以使用人工布線。在這一步中嚴(yán)禁進(jìn)行邏輯修改,而只允許進(jìn)行布線修改。具體怎么使用FPGA Editor可以參考FPGA Editor用戶指南。當(dāng)完成了修改過后,把NCD文件另存為NMC文件,這樣就生成了需要的硬宏。
第六步,生成宏的邏輯仿真模型。再回到Active-HDL中,打開宏的電路圖,使用Set Target HDL的語言切換功能,把圖形轉(zhuǎn)成Verilog HDL網(wǎng)表或是VHDL網(wǎng)表。這個網(wǎng)表就可以作為宏的仿真模型。因?yàn)檫@個網(wǎng)表是由標(biāo)準(zhǔn)HDL形成,那么它可以在任何HDL仿真器中調(diào)用,如ModelSim和VCS等。
至此整個流程的介紹全部完成。
進(jìn)一步的討論
關(guān)于流程的替代方案。事實(shí)上,整個流程似乎用Xilinx的Foundation也能完成。但是,有一個關(guān)鍵的步驟Foundation是不能完成的,那就是Foundation不能根據(jù)電路圖輸出基于Verilog HDL和VHDL的仿真模型,這樣直接影響了宏的仿真通用性。另外,F(xiàn)oundation自己提供的仿真環(huán)境又相當(dāng)不完善。
關(guān)于仿真模型和宏的功能一致性。由于仿真模型和宏的網(wǎng)表都來自于一個電路圖,這樣從上層保證了兩者的一致性。另外,在第五步中,嚴(yán)禁進(jìn)行邏輯修改,又進(jìn)一步的保證兩者的功能一致性,排除第二次建模的可能,從而把人為的錯誤減到最低。
關(guān)于完全控制后端布局布線。在FPGA Editor中,設(shè)計者可以根據(jù)上下層名稱對應(yīng)來確定關(guān)鍵路徑,從而進(jìn)行完全人為的布局布線控制,這就是在第一步中使用有意義名稱的原因所在。
很明顯的一點(diǎn),這個流程不應(yīng)該作為一個大項(xiàng)目的主要開發(fā)流程,因?yàn)?,這樣人力消耗太多,同時也失去了使用HDL語言和開發(fā)綜合工具的意義。比較合適的一種用法是把它使用在關(guān)鍵路徑模塊和常規(guī)控制不能達(dá)到預(yù)期要求的模塊上,因?yàn)樗梢蕴峁蠖说耐耆藶榈目刂?,排除工具對設(shè)計的干擾。將基于HDL語言的設(shè)計方法與這種建立并使用硬宏的方法相結(jié)合,對基于FPGA的高速電路設(shè)計大有裨益。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618732 -
芯片
+關(guān)注
關(guān)注
460文章
52520瀏覽量
441228 -
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124582
發(fā)布評論請先 登錄
請問怎么設(shè)計一種新型射頻開關(guān)轉(zhuǎn)換電路?
請問怎樣去設(shè)計一種新型電壓基準(zhǔn)電路?
如何去實(shí)現(xiàn)一種基于FPGA芯片的可重構(gòu)數(shù)字電路設(shè)計
Lorenz混沌電路的一種新型設(shè)計方法
一種基于DSP和FPGA的雷達(dá)信號分選電路設(shè)計
高速SDRAM存儲器接口電路設(shè)計(Altera FPGA開發(fā)板)

一種基于FPGA的以太網(wǎng)高速傳輸平臺
一種新型的鍵盤與顯示電路設(shè)計
研究人員開發(fā)了一種新型的磁力驅(qū)動高速軟件機(jī)器人
一種提升芯片硬宏供電可靠性的方法
一種新型的鍵盤與顯示電路設(shè)計

評論