當(dāng)前位置:首頁 > 公眾號精選 > Linux閱碼場
[導(dǎo)讀]作者簡介甄建勇,高級架構(gòu)師(某國際大廠),十年以上半導(dǎo)體從業(yè)經(jīng)驗。主要研究領(lǐng)域:CPU/GPU/NPU架構(gòu)與微架構(gòu)設(shè)計。感興趣領(lǐng)域:經(jīng)濟學(xué)、心理學(xué)、哲學(xué)。?設(shè)計流程IC設(shè)計處在整個半導(dǎo)體產(chǎn)業(yè)鏈的頂端,而設(shè)計出性能高,功耗小,成本低的CPU更是一項具有挑戰(zhàn)性工作,困難除了設(shè)計難度大...

作者簡介


甄建勇,高級架構(gòu)師(某國際大廠),十年以上半導(dǎo)體從業(yè)經(jīng)驗。主要研究領(lǐng)域:CPU/GPU/NPU架構(gòu)與微架構(gòu)設(shè)計。感興趣領(lǐng)域:經(jīng)濟學(xué)、心理學(xué)、哲學(xué)。






設(shè)計流程



IC設(shè)計處在整個半導(dǎo)體產(chǎn)業(yè)鏈的頂端,而設(shè)計出性能高,功耗小,成本低的CPU更是一項具有挑戰(zhàn)性工作,困難除了設(shè)計難度大之外,設(shè)計周期長,設(shè)計環(huán)節(jié)多是另一方面。本小節(jié),我們將介紹體系結(jié)構(gòu)設(shè)計的一般步驟和階段。




圖 2   體系結(jié)構(gòu)設(shè)計流程



首先要確定應(yīng)用領(lǐng)域,找出對應(yīng)的benchmark,根據(jù)對benchmark的分析,設(shè)計相應(yīng)的體系結(jié)構(gòu),并編寫這個結(jié)構(gòu)的模擬器。根據(jù)模擬器的模擬結(jié)果,反復(fù)優(yōu)化和改進體系結(jié)構(gòu)。


一旦體系結(jié)構(gòu)暫時確定下來之后,就可以開始FPGA驗證階段了,這一階段也需要反復(fù)優(yōu)化和改進體系結(jié)構(gòu)。


在FPGA驗證完成后,就可以開始ASIC的工作了,這樣就會得到這個體系結(jié)構(gòu)的實際芯片,再經(jīng)過對芯片的測試和驗證,來進一步完善體系結(jié)構(gòu)。


計算機體系結(jié)構(gòu)設(shè)計工作是一個長期復(fù)雜的過程,涉及到很多領(lǐng)域,上面只是大體的設(shè)計過程,為了更深的理解這個過程,本小節(jié)就對上述幾個過程單獨闡述一下。



profile


CPU的作用就是執(zhí)行程序指令,所以CPU設(shè)計成什么樣子,不是拍腦袋想出來的,而是有其特定的條件的,其所執(zhí)行的程序是決定CPU結(jié)構(gòu)的主要原因,所以在設(shè)計CPU之前,必須首先要對程序進行仔細(xì)分析。


在進行程序分析時,需要一些程序分析器。程序分析器有靜態(tài)分析器和動態(tài)分析器之分。咱們常用的編輯軟件,如SourceInsight,notepad ,UE等都或多或少有程序分析的功能,他能知道哪些是函數(shù)接口,哪些是全局變量,哪些是局部變量等等。pclint就是咱們常用的稍微專業(yè)點的靜態(tài)代碼檢查工具了,再專業(yè)點的比如Testbed等。相對于靜態(tài)代碼檢查工具,動態(tài)代碼分析工具就更專業(yè)一點了,可以分析二進制代碼的詳細(xì)的屬性,比如instruction mix,call graph,memory leak等等。pin最常用,由intel公司維護,提供豐富API,不提供source。而valgrind是開源的,我們可以看到其全部源代碼。此外LLVM也具有強大的程序分析功能。


Pin是一個Intel公司maintain針對IA-32和X86-64體系結(jié)構(gòu)的動態(tài)二進制指令分析的framework。可以對基于LINUX和Windows平臺的user space的程序進行分析。既然是Dynamic的程序分析tool,所以我們就可以利用其來分析程序?qū)嶋H運行時的一些參數(shù)。與valgrind不同,pin不是開源的,但他提供了非常rich的API,我們可以用這些API,開發(fā)設(shè)計出我們想要的程序分析工具。就好像用OS的API可能編出很多不同功能的軟件一樣。


關(guān)于Pin ,valgrind,以及LLVM,請參考參考文獻中相關(guān)內(nèi)容。



simulator


“三歲看大,七歲看老”說的是早期教育的重要性,體系結(jié)構(gòu)的設(shè)計也是這樣,要想設(shè)計出一個優(yōu)秀的體系結(jié)構(gòu),必須首先要設(shè)計其對應(yīng)的模擬器(simulator),可以這么說,一旦模擬器最終設(shè)計,改進,完成之后,也就成功一半了。


模擬器是體系結(jié)構(gòu)設(shè)計和研究的重要工具,無論是在學(xué)術(shù)界還是在工業(yè)界,模擬器的使用都非常廣泛。尤其是軟件全系統(tǒng)模擬器,由于其開發(fā)速度快,成本較低,并且易于修改,在計算機系統(tǒng)設(shè)計,驗證,系統(tǒng)軟件開發(fā),調(diào)優(yōu)等方面,起著重要的作用。


在計算機系統(tǒng)的設(shè)計初期,模擬器可以用來對各種設(shè)計方案進行粗粒度模擬,通過比較多種模擬結(jié)果,最終選擇最優(yōu)方案;在設(shè)計中期,模擬器可以用來對各種微結(jié)構(gòu)的設(shè)計進行評估,對多個選擇進行折中;在設(shè)計后期,模擬器可以用來進行目標(biāo)系統(tǒng)軟件的開發(fā),這樣,軟件和硬件就可以同步進行,加快系統(tǒng)開發(fā)進度。此外,模擬器可以獲得豐富的trace信息,根據(jù)這些trace信息,就可以得到系統(tǒng)的性能瓶頸,便于進一步優(yōu)化。


模擬器有三個衡量指標(biāo):速度,精度和靈活性。速度,是指模擬器執(zhí)行模擬任務(wù)的快慢,一般用相同的應(yīng)用程序在模擬器執(zhí)行時間和在宿主機上執(zhí)行時間的比(減速比,slowdown)來表示。精度,是指由模擬器模擬出來的系統(tǒng)和真實系統(tǒng)的相似程度,一般用模擬器模擬得到的CPI(sycleper instruction)和實際的CPI偏離的百分比表示。靈活性,是指模擬器通過配置來模擬不同體系結(jié)構(gòu)的方便程度。


一個理想的模擬器,要求執(zhí)行速度快,模擬精度高,還要可以靈活的配置出可以模擬的體系結(jié)構(gòu)。“魚與熊掌,不可得兼”,實際中這三者是相互制約的,只能根據(jù)不同的情況有所取舍。一般來說,設(shè)計初期要求靈活性好,精度可以適當(dāng)?shù)鸵恍6谠O(shè)計后期和末期,則要求模擬精度高,靈活性可適當(dāng)降低。然而,無論是設(shè)計初期,還是設(shè)計中期和后期,模擬器的速度要求則一刻也不能放松。


由于模擬器的重要性,學(xué)術(shù)界和工業(yè)界都開發(fā)了大量的模擬器,學(xué)術(shù)界常用的模擬器有SimpleScalar,SimOS,MG5,Liberty等,工業(yè)界主要有IBM的Mambo,AMD的SimNow等。


對于想學(xué)習(xí)研究體系結(jié)構(gòu)設(shè)計但沒有硬件基礎(chǔ)的讀者來說,通過閱讀模擬器的實現(xiàn)代碼,也可以獲得豐富的體系結(jié)構(gòu)設(shè)計知識。



FPGA設(shè)計


在學(xué)習(xí)使用FPGA之前,一定弄明白一件事情,就是,F(xiàn)PGA到底是什么?弄明白了這個問題,下一節(jié)開始說verilog語言的問題。


眾所周知,F(xiàn)PGA不同于ASIC的最要的特性就是,F(xiàn)PGA是可重配置的??芍嘏渲茫褪沁@個芯片的功能是可重新定義的。配置什么呢,配置邏輯,什么是邏輯?邏輯由最小邏輯單元和連線兩部分內(nèi)容組成。如果配置內(nèi)容的邏輯部分(真值表)是通過RAM存放的,那么這個FPGA就是基于RAM的。如果配置內(nèi)容的邏輯部分(真值表)是通過FLASH存放的,那么這個FPGA就是基于FLASH的。如果配置內(nèi)容的邏輯部分(真值表)是那都沒存,直接修改硬連線,那么這個FPGA就是基于熔絲/反熔絲的。這種只能配置一次,嚴(yán)格意義上說不算FPGA。由于存在FLASH或RAM的內(nèi)容在高輻射等影響下,容易發(fā)生變化,所以我猜,神九上面的FPGA是基于熔絲/反熔絲的。


FPGA是有很多最基本的單元組成的,那么這些最小單元又是什么呢?altera公司叫LE。xilux有另外一個名字。其實都一樣。下面就親眼看一下LE到底是什么,怎么看呢?打開quartusII,找到chipplaner,你會看到好多小格子,逐級放大,然后雙擊一個小格子,你會看到幾個門,和很多線,有的線是灰的,有的線是藍(lán)的。有的門是灰的,有的門是藍(lán)的。配置文件就是描述哪些門是灰的,哪些是藍(lán)的,哪些線是灰的,哪些線是藍(lán)的。再雙擊一個小格子,你會發(fā)現(xiàn)和剛才那個小格子一樣,好了,有很多很多。芯片型號EP2C8Q。。。其中‘C’后面的‘8’就是8K,就是LE的數(shù)量。FPGA芯片有的是4線的,5線的,什么意思呢,其實FPGA的最小單元就是一個多路選擇器。4線就是4選16路選擇器。16路的內(nèi)容存在的memery(可以是RAM或FLASH)里,內(nèi)容就是真值表的輸出。通過修改真值表,就可以實現(xiàn)不同的邏輯。通過修改很多很多個LE的真值表,就可以修改整個FPGA芯片的邏輯,即,重配置。


FPGA的應(yīng)用領(lǐng)域很多,其中作為ASIC設(shè)計中的驗證系統(tǒng)是其中之一。如果把werilog語言描述的電路映射成FPGA的單元(LE),那么就是FGPA。如果把werilog語言描述的電路映射成制造IC的公司的元件,布線,像制造PCB那樣,(只不過電阻和電容都很小)那么就是ASIC。在流片之前要用FPGA驗證。


自己寫完verilog代碼,到底會生成什么樣的電路呢?打開qartusII,找到RTL vewer,然后你就可以看到你的代碼生成什么樣的電路了。就像你畫完原理圖得到的結(jié)果。就像是一個尺寸很小的PCB一樣。可以這樣認(rèn)為,一個小芯片,就是一個濃縮版的PCB板子。


那么,verilog代碼是如何生成ASIC的?用notepad 等編輯器寫代碼,用modulesim等仿真工具進行RTL仿真:前仿真,用QartusII等軟件進行編譯,生成中間表示形式,然后進行邏輯優(yōu)化,綜合,生成門級表示形式,和自帶的元件庫(也是用verilog寫的,只不過是開關(guān)級的),用modulesim等仿真工具進行門級,開關(guān)級仿真:后仿真,將QartusII綜合后的配置文件(sof,pof)燒到板子上,驗證,ASIC back endflow ,sign off。讓ASIC廠子造幾片,驗證,批量造。


其實FPGA不是從天上掉下來的,有他一步步的發(fā)展過程。和傳統(tǒng)PCB制造,軟件編譯等領(lǐng)域有很多聯(lián)系啊,對比一下,會比較容易理解。


一般情況下,如果FPGA的資源限制了我們設(shè)計的電路的大小。比如,如果你選則的某個FPGA芯片只有22K個LE,那么我們用HDL語言編寫的電路模塊,在綜合之后的資源使用總量就不能超過22K。但是,有一些FPGA芯片實現(xiàn)了動態(tài)配置,如果是這樣的話,我們的電路在綜合之后就可以超過22K。FPGA動態(tài)配置機制的本質(zhì),也是局部性原理。


FPGA設(shè)計人體分為設(shè)計輸入、綜合、功能仿真(前仿真)、實現(xiàn)、時序仿真(后仿真)、配置下載等六個步驟,設(shè)計流程如圖1-28所示。下面分別介紹各個設(shè)計步驟。





圖3   FPGA設(shè)計流程



1 設(shè)計輸入



設(shè)計輸入包括使用硬件描述語言HDL、狀態(tài)圖與原理圖輸入三種方式。HDL設(shè)計方式是現(xiàn)今設(shè)計大規(guī)模數(shù)字集成電路的良好形式,除IEEE標(biāo)準(zhǔn)中VHDL與Verilog HDL兩種形式外,尚有各自FPGA廠家推出的專用語言,如Quartus下的AHDL。HDL語言描述在狀態(tài)機、控制邏輯、總線功能方面較強,使其描述的電路能特定綜合器(如Synopsys公司的FPGA CompilerII或FPGA Express)作用下以具體硬件單元較好地實現(xiàn);而原理圖輸入在頂層設(shè)計、數(shù)據(jù)通路邏輯、手工最優(yōu)化電路等方面具有圖形化強、單元節(jié)儉、功能明確等特點,另外,在Altera公司Quartus軟件環(huán)境下,可以使用Momory Editor對內(nèi)部memory進行直接編輯置入數(shù)據(jù)。常用方式是以HDL語言為主,原理圖為輔,進行混合設(shè)計以發(fā)揮二者各自特色。


通常,F(xiàn)PGA廠商軟件與第三方軟件設(shè)有接口,可以把第三方設(shè)計文件導(dǎo)入進行處理。如Quartus與Foundation都可以把EDIF網(wǎng)表作為輸入網(wǎng)表而直接進行布局布線,布局布線后,可再將生成的相應(yīng)文件交給第三方進行后續(xù)處理。



2 設(shè)計綜合



綜合,就是針對給定的電路實現(xiàn)功能和實現(xiàn)此電路的約束條件,如速度、功耗、成本及電路類型等,通過計算機進行優(yōu)化處理,獲得一個能滿足上述要求的電路設(shè)計方案。也就是是說,被綜合的文件是HDL文件(或相應(yīng)文件等),綜合的依據(jù)是邏輯設(shè)計的描述和各種約束條件,綜合的結(jié)果則是一個硬件電路的實現(xiàn)方案,該方案必須同時滿足預(yù)期的功能和約束條件。對于綜合來說,滿足要求的方案可能有多個,綜合器將產(chǎn)生一個最優(yōu)的或接近最優(yōu)的結(jié)果。因此,綜合的過程也就是設(shè)計目標(biāo)的優(yōu)化過程,最后獲得的結(jié)構(gòu)與綜合器的工作性能有關(guān)。


FPGA Compiler II是一個完善的FPGA邏輯分析、綜合和優(yōu)化工具,它從HDL形式未優(yōu)化的網(wǎng)表中產(chǎn)生優(yōu)化的網(wǎng)表文件,包括分析、綜合和優(yōu)化三個步驟。其中,分析是采用Synopsys標(biāo)準(zhǔn)的HDL語法規(guī)則對HDL源文件進行分析并糾正語法錯誤;綜合是以選定的FPGA結(jié)構(gòu)和器件為目標(biāo),對HDL和FPGA網(wǎng)表文件進行邏輯綜合;而優(yōu)化則是根據(jù)用戶的設(shè)計約束對速度和面積進行邏輯優(yōu)化,產(chǎn)生一個優(yōu)化的FPGA網(wǎng)表文件,以供FPGA布局和布線工具使用,即將電路優(yōu)化于特定廠家器件庫,獨立于硅持性,但可以被約束條件所驅(qū)動。


利用FPGA Compiler II進行設(shè)計綜合時,應(yīng)在當(dāng)前Project下導(dǎo)入設(shè)計源文件,自動進行語法分析,在語法無誤并確定綜合方式、目標(biāo)器件、綜合強度、多層保持選擇、優(yōu)化目標(biāo)等設(shè)置后,即可進行綜合與優(yōu)化。在此可以將兩步獨立進行,在兩步之間進行約束指定,如時鐘的確定、通路與端口的延時、模塊的算子共享、寄存器的扇出等。如果設(shè)計模型較大,可以采用層次化方式進行綜合,先綜合下級模塊,后綜合上級模塊。在進行上級模塊綜合埋設(shè)置下級模塊為Don't Touch,使設(shè)計與綜合過程合理化。綜合后形成的網(wǎng)表可以以EDIF格式輸出,也可以以VHDL或Verilog HDL格式輸出,將其導(dǎo)入FPGA設(shè)計廠商提供的可支持第三方設(shè)計輸入的專用軟件中,就可進行后續(xù)的FPGA芯片的實現(xiàn)。綜合完成后可以輸出報告文件,列出綜合狀態(tài)與綜合結(jié)果,如資源使用情況、綜合后層次信息等。



3 仿真驗證




從廣義上講,設(shè)計驗證包括功能與時序仿真和電路驗證。仿真是指使用設(shè)計軟件包對已實現(xiàn)的設(shè)計進行完整測試,模擬實際物理環(huán)境下的工作情況。前仿真是指僅對邏輯功能進行測試模擬,以了解其實現(xiàn)的功能否滿足原設(shè)計的要求,仿真過程沒有加入時序信息,不涉及具體器件的硬件特性,如延時特性;而在布局布線后,提取有關(guān)的器件延遲、連線延時等時序參數(shù),并在此基礎(chǔ)上進行的仿真稱為后仿真,它是接近真實器件運行的仿真。



4 設(shè)計實現(xiàn)




實現(xiàn)可理解為利用實現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能連接的布線通道進行連線,并產(chǎn)生相應(yīng)文件(如配置文件與相關(guān)報告)。通常可分為如下五個步驟。(1)轉(zhuǎn)換:將多個設(shè)計文件進行轉(zhuǎn)換并合并到一個設(shè)計庫文件中。(2)映射:將網(wǎng)表中邏輯門映射成物理元素,即把邏輯設(shè)計分割到構(gòu)成可編程邏輯陣列內(nèi)的可配置邏輯塊與輸入輸出塊及其它資源中的過程。(3)布局與布線:布局是指從映射取出定義的邏輯和輸入輸出塊,并把它們分配到FPGA內(nèi)部的物理位置,通?;谀撤N先進的算法,如最小分割、模擬退火和一般的受力方向張弛等來完成;布線是指利用自動布線軟件使用布線資源選擇路徑試著完成所有的邏輯連接。因最新的設(shè)計實現(xiàn)工具是時序驅(qū)動的,即在器件的布局布線期間對整個信號通道執(zhí)行時序分析,因此可以使用約束條件操作布線軟件,完成設(shè)計規(guī)定的性能要求。在布局布線過程中,可同時提取時序信息形成報靠。(4)時序提?。寒a(chǎn)生一反標(biāo)文件,供給后續(xù)的時序仿真使用。(5)配置:產(chǎn)生FPGA配置時的需要的位流文件。


在實現(xiàn)過程中可以進行選項設(shè)置。因其支持增量設(shè)計,可以使其重復(fù)多次布線,且每次布線利用上一次布線信息以使布線更優(yōu)或達(dá)到設(shè)計目標(biāo)。在實現(xiàn)過程中應(yīng)設(shè)置默認(rèn)配置的下載形式,以使后續(xù)位流下載正常。



5 時序分析




在設(shè)計實現(xiàn)過程中,在映射后需要對一個設(shè)計的實際功能塊的延時和估計的布線延時進行時序分析;而在布局布線后,也要對實際布局布線的功能塊延時和實際布線延時進行靜態(tài)時序分析。從某種程序來講,靜態(tài)時序分析可以說是整個FPGA設(shè)計中最重要的步驟,它允許設(shè)計者詳盡地分析所有關(guān)鍵路徑并得出一個有次序的報告,而且報告中含有其它調(diào)試信息,比如每個網(wǎng)絡(luò)節(jié)點的扇出或容性負(fù)載等。靜態(tài)時序分析器可以用來檢查設(shè)計的邏輯和時序,以便計算各通中性能,識別可靠的蹤跡,檢測建立和保持時間的配合,時序分析器不要求用戶產(chǎn)生輸入激勵或測試矢量。雖然Xilinx與Altera在FPGA開發(fā)套件上擁有時序分析工具,但在擁有第三方專門時序分析工具的情況下,僅利用FPGA廠家設(shè)計工具進行布局布線,而使用第三方的專門時序分析工具進行時序分析,一般FPGA廠商在其設(shè)計環(huán)境下皆有與第三方時序分析工具的接口。Synopsys公司的PrimeTime是一個很好的時序分析工具,利用它可以達(dá)到更好的效果。將綜合后的網(wǎng)表文件保存為db格式,可在PrimeTime環(huán)境下打開。利用此軟件查看關(guān)鍵路徑或設(shè)計者感興趣的通路的時序,并對其進行分析,再次對原來的設(shè)計進行時序結(jié)束,可以提高工作主頻或減少關(guān)鍵路徑的躚時。與綜合過程相似,靜態(tài)時序分析也是一個重復(fù)的過程,它與布局布線步驟緊密相連,這個操作通常要進行多次直到時序約束得到很好的滿足。


在綜合與時序仿真過程中交互使用PrimeTime進行時序分析,滿足設(shè)計要求后即可進行FPGA芯片投片前的最終物理驗證。



6 下載驗證




下載是在功能仿真與時序仿真正確的前提下,將綜合后形成的位流下載到具體的FPGA芯片中,也叫芯片配置。FPGA設(shè)計有兩種配置形式:直接由計算機經(jīng)過專用下載電纜進行配置;由外圍配置芯片進行上電時自動配置。因FPGA具有掉電信息丟失的性質(zhì),因此可在驗證初期使用電纜直接下載位流,如有必要再將燒錄配置芯片中(如Xilinx的XC18V系列,Altera的EPC2系列)。使用電纜下載時有多種直載方式,如對Xilinx公司的FPGA下載可以使用JTAG Programmer、HardwareProgrammer、PROM Programmer三種方式,而對Altera公司的FPGA可以選擇JTAG方式或Passive Serial方式。因FPGA大多支持IEEE的JTAG標(biāo)準(zhǔn),所以使用芯片上的JTAG口是常用下載方式。


將位流文件下載到FPGA器件內(nèi)部后進行實際器件的物理測試即為電路驗證,當(dāng)?shù)玫秸_的驗證結(jié)果后就證明了設(shè)計的正確性。電路驗證對FPGA投片生產(chǎn)具有較大意義。


其實,F(xiàn)PGA的設(shè)計流程中可能會用到很多種FPGA工具,那么,基于多種EDA工具的FPGA設(shè)計是怎樣的呢?


仿真工具Modelsim與綜合工具FPGACompiler II及布線工具Foundation Series或Quartus相配合實現(xiàn)FPGA設(shè)計流程圖如圖2所示。


在設(shè)計輸入階段,因Modelsim僅支持VHDL或Verilog HDL,所以在選用多種設(shè)計輸入工具時,可以使用文本編輯器完成HDL語言的輸入,也可以利用相應(yīng)的工具以圖形方式完成輸入,但必須能夠?qū)С鰧?yīng)的VHDL或Verilog HDL格式。近年來出現(xiàn)的圖形化HDL設(shè)計工具,可以接收邏輯結(jié)構(gòu)圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)流圖、控制流程圖及真值表等輸入方式,并通過配置的翻譯器將這些圖形格式轉(zhuǎn)化為HDL文件,如Mentor Graphics公司的Renoir,Xilinx公司的Foundation Series都帶有將狀態(tài)轉(zhuǎn)換圖翻譯成HDL文本的設(shè)計工具。在這方面,Summit公司(現(xiàn)在已經(jīng)合并為Innoveda)的圖形化界面友好程度較高,且可以導(dǎo)出相應(yīng)的HDL格式。


從圖1-29中可以看到有三處可以由Modelsim進行仿真:第一處是寄存器傳輸級(RTL)仿真,此級仿真是對設(shè)計的語法和基本功能進行驗證(不含時序信息);第二處是針對特定的FPGA廠有技術(shù)的仿真,此級偽真是在綜合后、實現(xiàn)前而進行的功能級仿真,功能級仿真一般驗證綜合后是否可以得到設(shè)計者所需要的正確功能;第三處仿真是門級仿真,此級仿真是針對門級時序進行的仿真,門級仿真體現(xiàn)出由于布局布線而產(chǎn)生的實際延時。




圖4  利用多種EDA工具實現(xiàn)FPGA設(shè)計的流程



在RTL仿真階段,應(yīng)該建立一個測試臺。此測試臺可以在整個FPGA流程中進行仿真驗證(RTL級、功能級、時序門級)。測試臺不但提供測試激勵與接收響應(yīng)信息,而且可以測試HDL仿真流程中的關(guān)鍵功能(如運算部件輸出值的正確性等)。測試臺的產(chǎn)生可以直接使用文本編程得到,也可以使用圖形化工具輸入,再由軟件翻譯為HDL格式,例如使用HDL Bencher軟件利用其良好的波形輸入界面輸入測試激勵,再由其自動轉(zhuǎn)化為HDL格式而得到。


在功能級仿真階段,一般驗證綜合后是否仍與RTL級仿真結(jié)果相同。


在門級仿真階段,由于已經(jīng)針對具體的FPGA廠家技術(shù)進行了功能級仿真,因此可以通過布局布線得到標(biāo)準(zhǔn)延格式下的時序信息進行門級仿真。


Mentor Graphics公司的Modelsim是業(yè)界較好的仿真工具,其仿真功能強大,且圖形化界面友好,而且具有結(jié)構(gòu)、信號、波形、進程、數(shù)據(jù)流等窗口。將FPGA設(shè)計(以HDL方式)輸入后進行編譯即可進行前仿真,其最新版本Modelsim SE/Plus 5.5支持VHDL與Verilog HDL混合仿真。在仿真時可以編寫HDL激勵文件或執(zhí)行組模式方式。組模式方式類似批處理方式,可以連續(xù)執(zhí)行事先在文件中寫好的多個執(zhí)行命令,這對重新仿真或重復(fù)執(zhí)行多個命令特別有效。在仿真過程中可以執(zhí)行性能分析與代碼覆蓋分析。性能分析在程序代碼執(zhí)行過程中可以分析出各部分代碼執(zhí)行時占用整個執(zhí)行時間的百分率。在此信息下,設(shè)計者可以找到設(shè)計的瓶頸并通過優(yōu)化代碼減少仿真時間。代碼覆蓋分析可以使設(shè)計者確切知道在測試臺上正在進行的代碼位置,以方便設(shè)計者調(diào)試。


由Modelsim進行仿真,需要導(dǎo)出VHDL或Verilog HDL網(wǎng)表。此網(wǎng)表是由針對特定FPGA器件的基本單元組成的。這些基本單元在FPGA廠家提供的廠家?guī)熘泻衅涠x和特性,且廠家一般提供其功能的VHDL或Verilog VDL庫。因此,在Modelsim下進行仿真,需要設(shè)置廠家?guī)煨畔ⅰH缡褂肁ltera公司的Apex20ke系列,需要將Apex20ke_atoms.v(或.vhd)與Apex20ke_component.v文件設(shè)置或編譯到工程項目的對應(yīng)庫中。除網(wǎng)表外,還需要布局布線輸出的標(biāo)準(zhǔn)延時文件(sdf),將sdf文件加入仿真可以在窗口化界面設(shè)置加入,或通過激勵指定。如使用Verilog HDL時加入反標(biāo)語句$sdf_annotate(“”,Top)通過參數(shù)路徑指定即可。


在綜合階段,應(yīng)利用設(shè)計指定的約束文件將RTL級設(shè)計功能實現(xiàn)并優(yōu)化到具有相等功能且具有單元延時(但不含時序信息)的基本器件中,如觸發(fā)器、邏輯門等,得到的結(jié)果是功能獨立于FPGA的網(wǎng)表。它不含時序信息,可作為后續(xù)的布局布線使用。使用FPGA Compiler II進行綜合后可以導(dǎo)出EDIF網(wǎng)絡(luò)。


在實際階段,主要是利用綜合后生成的EDIF網(wǎng)表并基于FPGA內(nèi)的基本器件進行布局布線。可以利用布線工具Foundation Series選用具體器件(如Virtex系列器件)進行布局布線加以實現(xiàn),也可以使用布線工具Quartus選用Apex20ke系列器件進行布局布線加以實現(xiàn),同時輸出相應(yīng)的VHDL或Verilog HDL格式,以便在Modelsim下進行仿真。


在數(shù)字系統(tǒng)設(shè)計的今天,利用多種EDA工具進行處理,同時使用FPGA快速設(shè)計專用系統(tǒng)或作為檢驗手段已經(jīng)成為數(shù)字系統(tǒng)設(shè)計中不可或缺的一種方式,了解并熟悉其設(shè)計流程應(yīng)成為現(xiàn)今電子工程師的一種必備知識。



ASIC


前面我們介紹了程序分析,模擬器設(shè)計,F(xiàn)PGA設(shè)計這幾個階段的大體流程,對于很多工程,一般完成FPGA驗證之后就結(jié)束了,但是由于FPGA在成本,功耗,頻率方面的限制,對于另外一些工程,我們完成FPGA驗證之后,還要走ASIC流程,進行流片(tapeout)驗證。ASIC流程是怎樣的呢?


本小節(jié)著重介紹國內(nèi)設(shè)計公司薄弱的后端設(shè)計,介紹其流程并對在設(shè)計過程中的關(guān)鍵步驟進行一些討論。傳統(tǒng)的后端設(shè)計流程指的是從門級網(wǎng)表(gate level netlist)開始的,根據(jù)設(shè)計要求的不同,后端流程可以分為扁平流程(flat flow)和層次化流程(hierarchyflow)兩種,在深亞微米DSM(deepsub-micron)領(lǐng)域,又增加了布局加邏輯合成的前后端合二為一的扁平流程(flat flow)和分層流程(hierarchyflow)。



1扁平流程(Flat flow)


集成電路的各種后端設(shè)計流程中,扁平式物理設(shè)計師最基本的一種方法,在實際應(yīng)用中,標(biāo)準(zhǔn)庫的建立是最常見的例子之一。扁平式流程,采用了自下而上的方法,先設(shè)計好晶體管,然后進行仿真,再建立版圖,最后再對邏輯門單元進行仿真建模。而對于稍大一些的模塊,一般寫經(jīng)過設(shè)計和仿真,然后再調(diào)用基本單元來實現(xiàn)版圖的設(shè)計,最后再對整個模塊進行仿真建模。


隨著技術(shù)的進步,上面的很多工作一般都有相應(yīng)的工具幫助我們完成。現(xiàn)在,在實際工作中,后端流程的開始一般是從前端提供了門級網(wǎng)表,時序約束,和時序分析報告開始的。


我們一旦拿到這三樣?xùn)|西之后,就意味著后端工作正式開始了。對于扁平式流程,整個后端一般分為三個階段:前期檢查,布局布線,和靜態(tài)時序分析。


其中前期檢查,是指,我們把網(wǎng)表文件送到EDA工具內(nèi)部開始布局布線之前,需要對前端送過來的內(nèi)容進行詳細(xì)的檢查,那么都需要檢查什么呢?不同的廠家和軟件對此都會有一些限制,一般為了方便后續(xù)工作,可以定義一套比較嚴(yán)格的網(wǎng)表書寫規(guī)則。比如文法錯誤,連接短路,無任何連接的net,無驅(qū)動的輸入引腳(pin),assign語句, wire類型以外的net,使用了由"\"開始的特別字符,數(shù)據(jù)總線的寫法,名字的長度等。


如果前期檢查發(fā)現(xiàn)問題,要跟前端反復(fù)溝通,直到雙方達(dá)成一致。然后就可以開始布局布線了。這個階段的順序一般是先進行I/O單元的布置,然后再布置megacell,然后生成行通道,最后是電源和時鐘樹的布置。


經(jīng)過前面兩個階段的工作,我們已經(jīng)有了一個完整的布局結(jié)果,如果沒有擁塞問題的話,我們就可以開始第三個階段的工作了,即按預(yù)估線長提取延遲數(shù)據(jù)作靜態(tài)時序分析和再優(yōu)化了。由于這時布線已經(jīng)完成,提取出來的延遲數(shù)據(jù)應(yīng)該是十分真實的了,在此基礎(chǔ)上作的再優(yōu)化應(yīng)該能夠有效地去除任何setup和hold沖突 (violation)。


一切工作完成之后,就可以sign off了。以上是對傳統(tǒng)的后端flat流程的簡單介紹,在實際工作中,還可能會有很多附加的工作。




2層次化流程(Hierarchy flow)


扁平式流程適用于較小規(guī)模的芯片設(shè)計,但如果芯片的規(guī)模很大,軟件的承受能力和運行時間都會受限,我們就必須使用層次化流程。與扁平(flat)流程相比,層次化流程有不少附加的工作要做,這些附加的工作一般包括,頂層布局規(guī)劃(Top floorplan),創(chuàng)建和布置宏單元,. 全局引腳優(yōu)化,時序分配預(yù)算,頂層布局等。


其實,現(xiàn)在的半導(dǎo)體行業(yè)拼的不只是芯片本身,也不單純是由CPU架構(gòu)的領(lǐng)先程度來決定的,這涉及到操作系統(tǒng),應(yīng)用程序,編譯器等方方面面。一款CPU的成功與否,甚至和很多非技術(shù)因素有關(guān),這里不再贅述。總之,ASIC需要一個完整,成熟,健康的生態(tài)系統(tǒng)。


自此,我們了解了ASIC的整體過程。其實,對于芯片設(shè)計的前端和后端的劃分,不同的公司可能有不同的定義,上面之所以引用這些內(nèi)容,是為了說明和展示一般ASIC的大體設(shè)計流程。









本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

電感是導(dǎo)線內(nèi)通過交流電流時,在導(dǎo)線的內(nèi)部及其周圍產(chǎn)生交變磁通,導(dǎo)線的磁通量與生產(chǎn)此磁通的電流之比。電感器也叫電感線圈,是利用電磁感應(yīng)原理制成的,由導(dǎo)線在絕緣管上單層或多層繞制而成的,導(dǎo)線彼此互相絕緣,而絕緣管可以是空心的...

關(guān)鍵字: 電感 磁通量 電感器

根據(jù)交通運輸部水運科學(xué)研究院提出的智慧港口的概念,智慧港口是利用新一代信息技術(shù),將港口相關(guān)業(yè)務(wù)和管理創(chuàng)新深度融合,使港口更加集約、高效、便捷、安全、綠色,創(chuàng)新港口發(fā)展模式,實現(xiàn)港口科學(xué)可持續(xù)發(fā)展。

關(guān)鍵字: 智慧港口 信息技術(shù) 業(yè)務(wù)

近年來,世界主要汽車大國紛紛加強新能源汽車戰(zhàn)略謀劃、強化政策支持、完善產(chǎn)業(yè)布局,新能源汽車已成為全球汽車產(chǎn)業(yè)轉(zhuǎn)型發(fā)展的主要方向和促進世界經(jīng)濟持續(xù)增長的重要引擎。2021年,全國新能源汽車實現(xiàn)產(chǎn)量354.5萬輛,銷量352...

關(guān)鍵字: 新能源 汽車 引擎

2007-2021年,全球針狀焦行業(yè)專利申請人數(shù)量及專利申請量總體呈現(xiàn)增長態(tài)勢。雖然2021年全球針狀焦行業(yè)專利申請人數(shù)量及專利申請量有所下降,但是這兩大指標(biāo)數(shù)量仍較多。整體來看,全球針狀焦技術(shù)處于成長期。

關(guān)鍵字: 針狀焦行業(yè) 專利申請人 增長態(tài)勢

按企業(yè)主營業(yè)務(wù)類型分,我國智能家居行業(yè)競爭派系可分為傳統(tǒng)家電企業(yè)、互聯(lián)網(wǎng)企業(yè)以及其他企業(yè)三派。傳統(tǒng)家電企業(yè)代表有海爾智家、美的集團、格力電器等,具有供應(yīng)鏈和銷售渠道,制造能力和品牌優(yōu)勢突出;互聯(lián)網(wǎng)企業(yè)代表有小米集團、百度...

關(guān)鍵字: 智能家居 互聯(lián)網(wǎng)企業(yè) 供應(yīng)鏈

軍工電子是集紅外技術(shù)、激光技術(shù)、半導(dǎo)體及嵌入式技術(shù)與虛擬仿真技術(shù)為一體的綜合性軍工技術(shù)體系,是國防信息化建設(shè)的基石。軍工電子行業(yè)包含在軍工行業(yè)內(nèi),專注于軍工行業(yè)電子產(chǎn)品布局。根據(jù)其軍工產(chǎn)品的不同可分為衛(wèi)星導(dǎo)航、通信指揮、...

關(guān)鍵字: 軍工電子 嵌入式技術(shù) 信息化建設(shè)

我國汽車零配件行業(yè)細(xì)分種類眾多,從汽車零配件主要產(chǎn)品來看,發(fā)動機系統(tǒng)行業(yè)內(nèi)有濰柴動力、華域汽車等主要從業(yè)企業(yè);在車身零部件領(lǐng)域內(nèi),福耀玻璃、中策橡膠具有一定的規(guī)模優(yōu)勢;行駛系統(tǒng)領(lǐng)域內(nèi)有中策橡膠提供的輪胎以及華為等企業(yè)提供...

關(guān)鍵字: 汽車零配件 發(fā)動機 行駛系統(tǒng)

茶飲料是指以茶葉或茶葉的水提取液、濃縮液、茶粉(包括速溶茶粉、研磨茶粉)或直接以茶的鮮葉為原料添加或不添加食品原輔料和(或)食品添加劑,經(jīng)加工制成的液體飲料。根據(jù)國家標(biāo)準(zhǔn)《茶飲料(GB/T 21733-2008)》的規(guī)定...

關(guān)鍵字: 茶飲料 茶葉的水 食品添加劑

全球液壓行業(yè)專利技術(shù)在21世紀(jì)初得到初步發(fā)展,這一時期液壓專利申請人數(shù)量和申請量處于較低水平。2011-2012年,液壓行業(yè)專利技術(shù)的發(fā)展總體處于成長期,2012年以后中全球液壓行業(yè)專利技術(shù)申請量或申請人數(shù)量整體處于波動...

關(guān)鍵字: 液壓行業(yè) 專利授權(quán) 技術(shù)類型

從上市企業(yè)的總市值情況來看,2022年7月28日,中芯國際、紫光國微和韋爾股份總市值遙遙領(lǐng)先,中芯國際總市值達(dá)到3238.21億元,紫光國微總市值達(dá)到1358.77億元,韋爾股份總市值達(dá)到1277.07億元;其次是兆易創(chuàng)...

關(guān)鍵字: 上市企業(yè) 集成電路 行業(yè)

Linux閱碼場

174 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉