FPGA應用設計中一種嶄新的硬宏開(kāi)發(fā)流程

發(fā)布時(shí)間:2010-9-25 23:45    發(fā)布者:eetech
在現今應用FPGA進(jìn)行芯片電路設計的領(lǐng)域,已經(jīng)使用HDL語(yǔ)言以及擁有強大功能的邏輯綜合工具來(lái)進(jìn)行設計。同時(shí),高速電路也越來(lái)越被普遍使用,這一趨勢使得芯片設計工程師把眼光越來(lái)越多的投向對后端布局布線(xiàn)的控制,因為對于高速設計,精細的后端控制是保障電路可靠運行的重要條件。在實(shí)踐中,精細的后端控制也越來(lái)越顯出它的重要性,同時(shí)要求設計者投入到這個(gè)方面的時(shí)間也越來(lái)越多。  

問(wèn)題的提出  

實(shí)際的應用中,由于綜合工具的介入,由它所輸出的網(wǎng)表,有時(shí)候是非常難被設計者所理解的。這主要由三個(gè)方面的原因引起:1. 網(wǎng)表中除了在源程序中的寄存器能夠被明顯標志以外,其它的組合邏輯被映射(Map)到LUT中,但綜合工具并沒(méi)有提供一種很有效且有意義的方式進(jìn)行對組合邏輯的命名,這使得設計者不容易找到組合邏輯的對應關(guān)系;2. 網(wǎng)表中元件(Component)之間的連接變得非常復雜;3. 由于綜合工具的運用,會(huì )“優(yōu)化”掉一些它認為是“冗余”的邏輯或增加一些它認為是“必要”的邏輯。  

上述因素直接影響到后端的布局布線(xiàn)控制。當然,設計者可以在約束文件(UCF)中使用用戶(hù)套(U_Set)、層次套(HU_Set)以及設置一個(gè)設計層次中元件相對的距離等措施來(lái)做一些后端控制。這樣的設置可以很好的控制寄存器的布局和布線(xiàn),但并不能夠很好地完成對組合電路的布局布線(xiàn)控制。很明顯,對于高速設計,這樣的控制顯然是非常必要的。這使得我們要找到一種更好的方法來(lái)控制組合電路。  

這個(gè)新方法應該滿(mǎn)足以下兩個(gè)條件。1. 對于高速設計,當通?刂品椒y以達到要求的時(shí)候,這個(gè)新方法應該能夠完全控制模塊內部的布局布線(xiàn);2. 用這個(gè)新方法建立的模塊在上層調用的時(shí)候所采用的仿真模型應該很容易建立,并且很容易保證它和建立模塊的功能上的一致性。滿(mǎn)足這兩個(gè)要求的方法就是建立宏模塊,更準確的說(shuō)是建立硬件宏模塊,簡(jiǎn)稱(chēng)硬宏。  

傳統的建立硬宏的方式是在Xilinx提供的FPGA Editor中直接在FPGA內部來(lái)建立目標電路,然后把它存為一個(gè)宏文件。然后,在上層進(jìn)行調用。這種方法的弊端是顯而易見(jiàn)的。1. 要在這樣一個(gè)“艱苦”的環(huán)境下建立一個(gè)硬宏是一件非常麻煩的事情。設計者必須進(jìn)入到Slice內部,來(lái)控制一個(gè)Slice內部的器件選擇和器件之間的連線(xiàn),同時(shí)也正由于它非常的麻煩,導致了設計很容易出錯;2. 這樣設計出來(lái)的宏的功能驗證非常繁瑣;3. 要為這樣的宏建立仿真模型也很麻煩,一般的方法是人為的直接編寫(xiě)一個(gè)行為仿真模型,然后在上層設計中調用這個(gè)仿真模型,然而要保證仿真模型和宏之間的一致性也是一件不太容易的事情。另外還有一種使用Xilinx的Foundation建立宏的方法,這個(gè)方法在進(jìn)一步討論部分將會(huì )提到它的不足之處。  

解決方法  

鑒于以上的原因,現在采用另外一個(gè)新的流程(圖1)來(lái)設計并建立一個(gè)宏。  



第一步,為了使設計者不必進(jìn)入到Slice里面進(jìn)行電路的設計,而有一個(gè)很好的設計環(huán)境,使用Aldec公司的Active-HDL來(lái)進(jìn)行宏內部電路的輸入。在A(yíng)ctive-HDL中,有一個(gè)庫管理(Library Manager)功能,在這個(gè)庫管理中,有很多子庫,每個(gè)子庫都有它不同的用途。在這些子庫中,Schematic子庫專(zhuān)門(mén)為Xilinx提供圖形輸入的。設計者調用這類(lèi)庫的元件來(lái)建立宏的內部電路。  

這一步需要注意:1.時(shí)鐘進(jìn)入芯片的時(shí)候,應該通過(guò)BUFGP進(jìn)入。通過(guò)BUFGP把時(shí)鐘引入全局時(shí)鐘網(wǎng)絡(luò )。BUFGP并不是一個(gè)物理上對應的元件,Xilinx只是為了方便設計者的調用,而把IBUFG和BUFG在表示上合成一個(gè)元件。但當用到DLL或其他時(shí)鐘連接方式的時(shí)候,應該把BUFGP拆開(kāi),單獨的使用IBUFG和BUFG;2.在各個(gè)PIN的位置,要加上相應電氣參數的IBUF或OBUF;3. 強烈建議對SLICE里面的元件進(jìn)行詳細的了解;4.對于寄存器,寄存器和組合邏輯之間的連線(xiàn),組合邏輯和組合邏輯之間的連線(xiàn),都使用有意義的名字,以方便在下端工具中查看電路時(shí),與上端電路圖的對應;5.在設計的時(shí)候應該把關(guān)鍵路徑記錄下來(lái),在下端檢查的時(shí)候要防止出現組合電路競爭。  

第二步,直接對這個(gè)電路進(jìn)行功能仿真。Schematic庫中的元件可以直接支持基于門(mén)級的功能仿真。直接對這個(gè)電路圖仿真可以從一開(kāi)始就保證宏的功能正確性。Active-HDL提供了一個(gè)非常友好的仿真界面。它可以把仿真波形進(jìn)行存儲,而且,在以后的仿真中可以把第一次仿真所存儲的輸入向量波形當成激勵。這樣的做法大大地提高了效率,因為不用再為了一個(gè)小模塊而專(zhuān)門(mén)編寫(xiě)它的測試基準(Test Bench)。  

第三步,由Active-HDL直接輸出EDIF網(wǎng)表,在這個(gè)網(wǎng)表中記錄了宏的內部電路信息。Active-HDL可以把圖形轉換成三種語(yǔ)言形式的網(wǎng)表,VHDL、Verilog HDL和EDIF。而其他的上層輸入工具一般只能輸出兩種,VHDL和Verilog HDL,如Mentor Graphics的HDL Design Series。選擇Diagram菜單中的Set Target HDL選項來(lái)實(shí)現這一語(yǔ)言的切換。請注意,Set Target HDL選項只有在圖形輸入方式的時(shí)候才出現在Diagram菜單中。

第四步,把Active-HDL產(chǎn)生的這個(gè)EDIF網(wǎng)表直接交給Xilinx的后端工具進(jìn)行處理。這樣,就繞開(kāi)了綜合工具的干預,使得精細的下端控制成為可能。值得注意的是,由于繞開(kāi)了綜合工具,很多綜合工具原來(lái)要做的工作就必須由設計者自己去做。這就是為什么第一步提到要添加相應電氣參數的IBUF和OBUF以及時(shí)鐘引腳要添加全局時(shí)鐘緩沖器(BUFG)的原因。如果在第一步中忘記了這一點(diǎn),會(huì )直接導致后端的映射工具把設計中的電路全部清空,然后報告出錯。后端工具只需要進(jìn)行三個(gè)步驟的處理就可以了,即翻譯、映射以及布局和布線(xiàn),其他的處理都不需要。處理完后會(huì )生成一些關(guān)鍵的文件,分別是project_name.ngd、project_name.ncd和map.ncd。  

第五步,把處理得到的project_name.ncd文件拿到FPGA Editor中進(jìn)行宏的生成。注意在使用FPGA Editor打開(kāi)這個(gè)文件的時(shí)候,應該選擇Read Write模式進(jìn)入。進(jìn)入之后,首先應該做的工作就是把設計中所有的IBUF和OBUF全部刪除。這可以在LIST窗口來(lái)進(jìn)行。在刪除的同時(shí),與這些IBUF和OBUF連接的連線(xiàn)也被同步刪除。這樣一來(lái),就只剩下了功能部分。值得一提的是,在第四步中映射對電路進(jìn)行處理的時(shí)候會(huì )完成把組合電路映射到LUT的功能。但由于在第一步中對組合電路和組合電路之間的連線(xiàn)使用了有意義的名稱(chēng)命名,使得在這一步中要找到原始電路圖中的對應并不難。這一點(diǎn)是使用綜合工具流程所不能實(shí)現的。設計者通過(guò)名字的對應,就找到在第一步中記錄的關(guān)鍵路徑,通過(guò)使用Delay功能來(lái)顯示線(xiàn)路延遲,從而判斷電路是否可以工作。如果不行,使用FPGA Editor中的相應工具來(lái)進(jìn)行路徑的重新布線(xiàn),這個(gè)布線(xiàn)可以使用人工布線(xiàn)。在這一步中嚴禁進(jìn)行邏輯修改,而只允許進(jìn)行布線(xiàn)修改。具體怎么使用FPGA Editor可以參考FPGA Editor用戶(hù)指南。當完成了修改過(guò)后,把NCD文件另存為NMC文件,這樣就生成了需要的硬宏。  

第六步,生成宏的邏輯仿真模型。再回到Active-HDL中,打開(kāi)宏的電路圖,使用Set Target HDL的語(yǔ)言切換功能,把圖形轉成Verilog HDL網(wǎng)表或是VHDL網(wǎng)表。這個(gè)網(wǎng)表就可以作為宏的仿真模型。因為這個(gè)網(wǎng)表是由標準HDL形成,那么它可以在任何HDL仿真器中調用,如ModelSim和VCS等。  

至此整個(gè)流程的介紹全部完成。  

進(jìn)一步的討論  

關(guān)于流程的替代方案。事實(shí)上,整個(gè)流程似乎用Xilinx的Foundation也能完成。但是,有一個(gè)關(guān)鍵的步驟Foundation是不能完成的,那就是Foundation不能根據電路圖輸出基于Verilog HDL和VHDL的仿真模型,這樣直接影響了宏的仿真通用性。另外,Foundation自己提供的仿真環(huán)境又相當不完善。  

關(guān)于仿真模型和宏的功能一致性。由于仿真模型和宏的網(wǎng)表都來(lái)自于一個(gè)電路圖,這樣從上層保證了兩者的一致性。另外,在第五步中,嚴禁進(jìn)行邏輯修改,又進(jìn)一步的保證兩者的功能一致性,排除第二次建模的可能,從而把人為的錯誤減到最低。  

關(guān)于完全控制后端布局布線(xiàn)。在FPGA Editor中,設計者可以根據上下層名稱(chēng)對應來(lái)確定關(guān)鍵路徑,從而進(jìn)行完全人為的布局布線(xiàn)控制,這就是在第一步中使用有意義名稱(chēng)的原因所在。  

很明顯的一點(diǎn),這個(gè)流程不應該作為一個(gè)大項目的主要開(kāi)發(fā)流程,因為,這樣人力消耗太多,同時(shí)也失去了使用HDL語(yǔ)言和開(kāi)發(fā)綜合工具的意義。比較合適的一種用法是把它使用在關(guān)鍵路徑模塊和常規控制不能達到預期要求的模塊上,因為它可以提供對后端的完全人為的控制,排除工具對設計的干擾。將基于HDL語(yǔ)言的設計方法與這種建立并使用硬宏的方法相結合,對基于FPGA的高速電路設計大有裨益。
本文地址:http://selenalain.com/thread-29231-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页