首次流片成功取決于整個(gè)系統(tǒng)硬件和相關(guān)軟件的驗(yàn)證,有些公司提供的快速原型生成平臺(tái)具有許多調(diào)試功能,,但這些平臺(tái)的價(jià)格非常高,因此最流行的做法是 根據(jù)DUT和具體應(yīng)用設(shè)計(jì)復(fù)合FPGA板,,驗(yàn)證這些板的原理圖通常是很麻煩的,本文提出一種利用FPGA實(shí)現(xiàn)原型板原理圖驗(yàn)證的新方法,。
由于價(jià)格競(jìng)爭(zhēng)越來越激烈,,首次流片成功或只需少量的修改變得越來越重要。為了達(dá)到這一目標(biāo),,對(duì)整個(gè)系統(tǒng)(即硬件和相關(guān)軟件)的驗(yàn)證成為重中之重,。業(yè) 界也涌現(xiàn)了許多策略來幫助設(shè)計(jì)師完成RTL上的軟件運(yùn)行。這些策略提供了在最終硬件還在醞釀之時(shí)就開發(fā)軟件的一種途徑,。這種措施也許還不夠,,原因還有兩 個(gè):一是仿真系統(tǒng)可能與實(shí)際系統(tǒng)有較大的區(qū)別,二是系統(tǒng)運(yùn)行速度非常慢,。因此可以考慮先將完整的設(shè)計(jì)映射到FPGA中,,再運(yùn)行目標(biāo)應(yīng)用程序。這樣做可能達(dá) 不到最終硅片的常規(guī)指標(biāo),,但可以測(cè)試整個(gè)硬件的功能,,系統(tǒng)能夠得到全面的驗(yàn)證,其中一些測(cè)試案例可能是在仿真中根本無法完成的,。另外,,可用于演示的完整系 統(tǒng)原型在硅片成功之前就可以很好地引起客戶的興趣。
有些公司提供的快速原型生成平臺(tái)具有許多調(diào)試功能,。這些電路板平臺(tái)具有可編程的互連,,可以將FPGA插接在上面,,并將DUT(被測(cè)設(shè)計(jì))映射進(jìn)這些 FPGA中。但這些平臺(tái)的價(jià)格非常高,。因此最流行的做法還是根據(jù)DUT和具體應(yīng)用設(shè)計(jì)復(fù)合FPGA板,。當(dāng)然,這些板同樣也能用于測(cè)試目標(biāo)應(yīng)用中的最終硅 片,。
驗(yàn)證這些板的原理圖通常是很麻煩的,,因?yàn)樵韴D中一些小錯(cuò)誤會(huì)嚴(yán)重影響到設(shè)計(jì)進(jìn)度,。原理圖驗(yàn)證工作是人工完成的,,因此錯(cuò)誤也就在所難免。如果能夠復(fù) 用DUT 驗(yàn)證環(huán)境驗(yàn)證電路板原理圖,,那么原理圖驗(yàn)證就可以派上用場(chǎng)了,。本文將討論如何通過編寫少量腳本和修改DUT驗(yàn)證環(huán)境達(dá)到這一目的。
方法簡(jiǎn)介
基本想法是設(shè)法對(duì)原理圖進(jìn)行仿真,。這了做到這一點(diǎn),,先將原理圖網(wǎng)表轉(zhuǎn)換成Verilog網(wǎng)表。電路板上安裝的不同元件(如FPGA,、處理器,、PCI 卡、 SDRAM等)要么用RTL代替,,要么用RTL驗(yàn)證過程中使用的行為模型替代,。值得注意的是,我們已假設(shè)整個(gè)設(shè)計(jì)的Verilog/VHDL代碼是現(xiàn)成 的,。至于電路板上需要用于測(cè)試DUT的處理器,、SDRAM、PCI器件等其它元件,,也假設(shè)已經(jīng)存在相應(yīng)的BFM(總線功能模型)/模型,。由于這一階段是在 功能驗(yàn)證之后,而這些元件需要用來測(cè)試DUT,,并模擬整個(gè)系統(tǒng),,因此它們的等效行為模型應(yīng)該在功能驗(yàn)證中已經(jīng)得到使用,現(xiàn)在只是重復(fù)使用罷了,,即經(jīng)過少許 的努力就能使用相同的環(huán)境和測(cè)試案例,。
上述概念經(jīng)過拓展就可以驗(yàn)證硅片生成板的原理圖,基本的假設(shè)是設(shè)計(jì)團(tuán)隊(duì)擁有硅片的 HDL描述,。這才是要點(diǎn)所在,。對(duì)于FPGA板,可以通過某種變通的方法配置FPGA引腳來克服由于原理圖中的錯(cuò)誤連接導(dǎo)致的問題,,即設(shè)計(jì)師可以管理并解決 這些錯(cuò)誤,。但對(duì)于準(zhǔn)備用來測(cè)試最終硅片的板子來說幾乎是不可能的,。
生成Verilog網(wǎng)表
可以用好幾種原理圖輸入工具生成Verilog網(wǎng)表?;谝韵聨追N限制原因,,這種網(wǎng)表實(shí)際上是不能使用的:
1.它將板上的每個(gè)元件都看作是一個(gè)模塊,因此生成的Verilog文件中包含所有元件的實(shí)例,,如FPGA,、電容、上拉電阻或晶振,,而不管這些元件能否在Verilog中建模,。其中有些元件(如串接電阻、去耦電容)可以簡(jiǎn)單地從網(wǎng)表中刪除,。
2. 原理圖中的總線通常被連接到符號(hào)上的一個(gè)個(gè)引腳,,而在Verilog模塊中總線可能只有一個(gè)端口。因此可能沒有一對(duì)一的對(duì)應(yīng)關(guān)系,。例如在Verilog模 塊中一個(gè)四位輸出地址總線將被聲明為:output [3:0] Address;但原理圖中所有這四個(gè)引腳是被獨(dú)立聲明的,。這樣會(huì)導(dǎo)致原理圖中使用的符號(hào)的引腳輸出與Verilog模塊中相應(yīng)符號(hào)的可用功能不兼容。
因此,,設(shè)計(jì)師需要編寫一個(gè)簡(jiǎn)單的腳本,,要么修改這個(gè)Verilog網(wǎng)表,要么根據(jù)原理圖輸入工具支持的其它格式創(chuàng)建一個(gè)新的網(wǎng)表,。目的是刪除電阻,、電容、電感等模擬元件,,或用等效的Verilog代碼替換它們,。
為了更好地實(shí)現(xiàn)這一目的,可以利用對(duì)模擬元件的命名慣例,,或?qū)⑺鼈兌x在一個(gè)文件中作為腳本的輸入,。例如,電阻可以被命名為R1,、R23等,,不遵循這個(gè)命名慣例的元件可以被定義在約束文件中,這樣腳本就可以將它們關(guān)聯(lián)到等效模型,,或假定短路將它們從網(wǎng)表中去除,。
一般來說,針對(duì)電路板上的不同元件可以采用以下一些慣例:
1. 元件的大多數(shù)電源引腳可以被忽略,。
2. 通常電容都是用作去耦的,,可以被簡(jiǎn)單的忽略掉,因?yàn)檫@樣做并不會(huì)影響即將被仿真的其它數(shù)字元件之間的互連關(guān)系,。
3. 電感也可以忽略,,在仿真時(shí)用短路代替,。
4. 電阻可以用Verilog的上拉/下拉或簡(jiǎn)單的線按需要替換。
5. 晶振可以用Verilog庫(kù)中提供的時(shí)鐘模塊替換,。
可以在約束文件中定義某些特殊情況,,并作為腳本的輸入??梢詾閂erilog模塊編寫Wrappers以克服總線聲明問題,。這種頂層Verilog網(wǎng)表可以代替DUT功能驗(yàn)證中早已使用的頂層Verilog文件,并用于驗(yàn)證環(huán)境中,。
FPGA原型板網(wǎng)表的仿真
至此頂層Verilog文件中包含了原型板上除工具刪除的元件外的所有元件,。設(shè)計(jì)師可以復(fù)用DUT功能驗(yàn)證使用的已有仿真環(huán)境。這種方法的優(yōu)點(diǎn)在于,,可以復(fù)用相同的測(cè)試向量和驗(yàn)證環(huán)境驗(yàn)證原理圖,。
任何驗(yàn)證環(huán)境的基本原理都是一樣的,即為DUT提供某種形式的測(cè)試向量,,然后對(duì)測(cè)試結(jié)果與期望值進(jìn)行比較。根據(jù)設(shè)計(jì)的復(fù)雜性有多種達(dá)成的方式,。通過 下面這個(gè)非常簡(jiǎn)單的例子就很好理解了,。例子是一個(gè)基于x86處理器的SOC。為了簡(jiǎn)單起見,,我們只考慮圖1所示SOC中的少量重要元件,。DUT由x86處 理器、主橋(Host Bridge),、SDRAM控制器和PCI橋組成,。在驗(yàn)證環(huán)境中,為了提高仿真速度,,可以把x86處理器看作是一個(gè)BFM,,同時(shí)提供某種PCI從模型。簡(jiǎn) 單地說,,x86 BFM具有某種形式的讀/寫命令,,能產(chǎn)生總線周期,因此設(shè)計(jì)可以運(yùn)行起來,。

圖1:DUT由x86處理器,、主橋(Host Bridge)、SDRAM控制器和PCI橋組成,。
如圖2所示,,主橋和SDRAM控制器被映射進(jìn)FPGA1,,PCI橋被映射時(shí)FPGA2。由腳本產(chǎn)生的頂層Verilog文件包含如圖2所示的所有元 件,。至此就可以在驗(yàn)證環(huán)境中方便地使用這個(gè)頂層Verilog文件,,并附于相同的驗(yàn)證測(cè)試向量。要注意的是還需要為各個(gè)Verilog模塊創(chuàng)建 wrapper以匹配元件的引腳,。對(duì)于SDRAM和PCI槽道來說,,可以使用與RTL驗(yàn)證環(huán)境中使用的相同模型(即SDRAM模型和PCI主/從模型)。 參考圖3,,將 FPGA1作為案例進(jìn)行說明,。

圖2:包含x86處理器芯片、2個(gè)FPGA,、SDRAM和1個(gè)PCI槽道的原型板,。

圖3:Verilog模塊創(chuàng)建wrapper以匹配元件的引腳,。
由于只對(duì)環(huán)境作了少量修改,,如在編譯列表中增加很少的Verilog文件(wrapper模型),用新創(chuàng)建的文件替換頂層文件,,因此可以對(duì)原理圖列 表實(shí)施驗(yàn)證,。這些事情可以通過簡(jiǎn)單的perl或shell腳本實(shí)現(xiàn)自動(dòng)處理,整個(gè)任務(wù)將減少到僅指定一些特殊選項(xiàng),,同時(shí)從命令行運(yùn)行仿真,。
如果有任何錯(cuò)誤的連接,或某些連接被遺忘,,那么仿真結(jié)果就會(huì)有相應(yīng)的提示,。這種方法可以實(shí)現(xiàn)對(duì)與模擬元件的連接的部分測(cè)試,因?yàn)檫@部分元件有的從網(wǎng)表中刪除了,,有的被等效行為模型所代替,。然而,有些錯(cuò)誤還是可以被檢出的,。
硅片生成板網(wǎng)表的仿真
上述方法同樣可以用來仿真設(shè)計(jì)用于測(cè)試最終硅片的電路板的網(wǎng)表,。這種方法更適用于對(duì)這些板的驗(yàn)證,因?yàn)檎G闆r下制造出來的許多板其芯片的并行測(cè)試 都是可以完成的,。此外,,通過某種途徑配置FPGA引腳可以消除基于FPGA的板上的錯(cuò)誤。下面繼續(xù)以上文的例子說明如何將同一概念應(yīng)用到硅片生成板上。
如圖1所示,,硅片等效于DUT,。根據(jù)相同的流程創(chuàng)建一個(gè)Verilog網(wǎng)表,這個(gè)網(wǎng)表將DUT看作是板上的一個(gè)芯片和其它外圍設(shè)備,。這是在驗(yàn)證環(huán)境 中必須使用的頂層文件?,F(xiàn)在我們已經(jīng)有了DUT的完整Verilog描述,因此只需要?jiǎng)?chuàng)建圖4所示的Verilog wrapper,,讓引腳輸出與電路板上的芯片相匹配,。
綜上所述,這個(gè)網(wǎng)表是可以利用以前使用的同一測(cè)試向量進(jìn)行操作的,。
本文小結(jié)
這種方法已經(jīng)過測(cè)試,,目前正用于原理圖的驗(yàn)證。該方法為原理圖驗(yàn)證增加了新的方案,。原型/生成板的原理圖的驗(yàn)證和錯(cuò)誤檢測(cè)可以在極易產(chǎn)生嚴(yán)重問題并 影響設(shè)計(jì)周期的早期階段進(jìn)行,。另外,驗(yàn)證無需額外的開銷,,因?yàn)檫@種方法基于的是業(yè)界常說的‘復(fù)用’原理,,在本案例中復(fù)用的是測(cè)試向量和驗(yàn)證環(huán)境。