基于速度匹配軟件的網(wǎng)絡(luò)芯片仿真方法
對(duì)微處理器、圖形芯片或復(fù)雜設(shè)計(jì)的仿真通常要求降低目標(biāo)系統(tǒng)的速度,因?yàn)榧词箍焖貴PGA也可能跟不上高速目標(biāo)系統(tǒng)的速度,本文介紹一種基于速度匹配軟件的網(wǎng)絡(luò)芯片仿真方法,并指出采用這種新技術(shù)需要注意的事項(xiàng),值得(中國(guó))集成電路設(shè)計(jì)工程師關(guān)注。
本文引用地址:http://www.ex-cimer.com/article/193868.htm在今天四通八達(dá)的寬帶互聯(lián)世界中,網(wǎng)絡(luò)設(shè)備的智能、速度和集成度正變得越來(lái)越高,隨著復(fù)雜度的增加,針對(duì)硬件設(shè)計(jì)的軟件仿真 變得越來(lái)越費(fèi)時(shí),難度也越來(lái)越高。而采用軟件仿真方法對(duì)實(shí)際狀態(tài)和邊緣情況進(jìn)行建模的難度也在增加。這些問(wèn)題的出現(xiàn)已經(jīng)有段時(shí)間了,幾乎所有微處理器廠商 都開(kāi)始轉(zhuǎn)用硬件仿真。但硬件仿真也有其弱點(diǎn),硬件仿真不僅需要昂貴的無(wú)法隨意更改物理層接口的專(zhuān)用硬件,還要求目標(biāo)系統(tǒng)放慢速度,因此無(wú)法再現(xiàn)實(shí)際的運(yùn)行 環(huán)境。
本文介紹第三種方案,該方案克服上述缺點(diǎn),采用安裝了速度匹配軟件的標(biāo)準(zhǔn)PC,能夠極大地加快并簡(jiǎn)化仿真過(guò)程,同時(shí)提供更接近實(shí)際情形的仿真結(jié)果,本文著重介紹采用最新的方法需要特別注意的地方。
設(shè)備仿真
仿真過(guò)程的第一步是將設(shè)計(jì)(通常是RTL級(jí))裝載進(jìn)第三方廠商提供的仿真器。被仿真的設(shè)計(jì)再通過(guò)指形交叉連接器插入實(shí)際的母 板中,然后啟動(dòng)操作系統(tǒng)。最終測(cè)試將是運(yùn)行一個(gè)實(shí)際應(yīng)用,比如字處理器。當(dāng)然,這種情況下仿真器的速度要比實(shí)際芯片慢好幾個(gè)數(shù)量級(jí),但這個(gè)過(guò)程確實(shí)是將設(shè) 計(jì)投入到了實(shí)際的運(yùn)行中。隨著近年來(lái)FPGA密度、速度和復(fù)雜度的不斷提高,許多公司開(kāi)始為他們的芯片創(chuàng)建定制的FPGA原型。
仿真微處理器、圖形芯片或其它復(fù)雜的設(shè)計(jì)通常要求降低目標(biāo)系統(tǒng)的速度,使之與較慢的仿真速度相匹配。即使是高速FPGA也 可能跟不上高速目標(biāo)系統(tǒng)的速度。對(duì)于具有固定頻率并獨(dú)立于處理器的總線或必須以固定時(shí)間間隔產(chǎn)生的中斷來(lái)說(shuō),目標(biāo)系統(tǒng)速度太快會(huì)造成某些功能上的問(wèn)題。一 般情況下,一個(gè)專(zhuān)用慢速目標(biāo)板通常會(huì)通過(guò)慢速的外圍設(shè)備與慢速仿真器進(jìn)行通信。
但這種慢速解決方案并不適合用來(lái)仿真網(wǎng)絡(luò)設(shè)備。對(duì)網(wǎng)絡(luò)設(shè)備的仿真目的是要用真實(shí)的數(shù)據(jù)包測(cè)試在實(shí)際網(wǎng)絡(luò)中運(yùn)行的網(wǎng)絡(luò)設(shè)備性 能,以確認(rèn)新設(shè)計(jì)在實(shí)際環(huán)境下中的表現(xiàn)。一個(gè)網(wǎng)絡(luò)一般由數(shù)十個(gè)、上百個(gè)-在因特網(wǎng)中-甚至是數(shù)百萬(wàn)個(gè)網(wǎng)絡(luò)設(shè)備組成,要把所有這些設(shè)備的速度降下來(lái)是不現(xiàn)實(shí) 的。同時(shí)還有與網(wǎng)絡(luò)有關(guān)的低層及高層時(shí)序約束條件。例如,連接以太網(wǎng)物理芯片與交換ASIC芯片的簡(jiǎn)化介質(zhì)獨(dú)立接口(RMII)就規(guī)定必須使用帶特殊占空 比的50MHz時(shí)鐘,而大多數(shù)商用仿真器無(wú)法以如此高的頻率運(yùn)行。更高層的協(xié)議要求設(shè)備確認(rèn)數(shù)據(jù)包的到達(dá),如果在規(guī)定時(shí)間內(nèi)沒(méi)有應(yīng)答確認(rèn)信號(hào),數(shù)據(jù)包就會(huì) 重發(fā)。如果仿真器響應(yīng)速度不夠快,那么它就會(huì)被重復(fù)的數(shù)據(jù)包所淹沒(méi)。
仿真接口也是一個(gè)問(wèn)題。仿真器是一個(gè)純數(shù)字的設(shè)備,而物理網(wǎng)絡(luò)連接要求物理層對(duì)仿真信號(hào)進(jìn)行整形,以使連接的對(duì)端能夠正確 接收。同樣,物理層接收到仿真信號(hào)后需要將它轉(zhuǎn)換成數(shù)字信號(hào)。仿真器與網(wǎng)絡(luò)直接相連時(shí)需要使用一個(gè)專(zhuān)門(mén)的仿真接口,用來(lái)將慢速數(shù)字信號(hào)轉(zhuǎn)換成正確的仿真信 號(hào)。
這時(shí)的速度失配問(wèn)題通常用硬件方法來(lái)解決,即電路板的一端是一個(gè)以太網(wǎng)適配器,另一端是與仿真器相連的數(shù)字接口,但這種解 決方案實(shí)施起來(lái)有一定的難度。首先,硬件的制造成本很高,并且需要較長(zhǎng)的開(kāi)發(fā)周期。向一個(gè)實(shí)際芯片問(wèn)世后就失去用處的原型投入大量的人力物力是毫無(wú)價(jià)值 的。
其次,針對(duì)以太網(wǎng)、光纖信道或ATM等不同的網(wǎng)絡(luò)接口需要設(shè)計(jì)不同的仿真電路,因此每個(gè)被測(cè)試的接口都需要不同的電路板。
第三,接口板上還需要用到緩沖器來(lái)存儲(chǔ)因網(wǎng)絡(luò)速度太快仿真器不能及時(shí)處理突發(fā)數(shù)據(jù)的問(wèn)題。這些緩沖器將這些分組數(shù)據(jù)儲(chǔ)存好后 再以較慢的速度送給仿真器。而管理這些緩沖器還需要使用相當(dāng)復(fù)雜的狀態(tài)機(jī),這會(huì)給硬件實(shí)現(xiàn)帶來(lái)很大的困難。此外,一旦接口板設(shè)計(jì)好后緩沖器的最大容量也就 固定下來(lái)了,今后要擴(kuò)展的話還需要重新設(shè)計(jì)電路板。
而下面的軟件解決方案能更好地解決這一速度失配問(wèn)題。此時(shí)被仿真的網(wǎng)絡(luò)設(shè)備需要通過(guò)一臺(tái)運(yùn)行某種速度匹配軟件的標(biāo)準(zhǔn)電腦再與 網(wǎng)絡(luò)連接。仿真器則通過(guò)簡(jiǎn)單的并行口線與標(biāo)準(zhǔn)電腦的并行口相連,電腦與網(wǎng)絡(luò)的連接則是通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口卡(NIC)。這種速度匹配軟件不僅能夠處理使網(wǎng) 絡(luò)保持暢通的所有底層握手協(xié)議,也能正確處理并行口上的低層接口信號(hào),從而使仿真器得以正確運(yùn)行。速度匹配軟件將來(lái)自于網(wǎng)絡(luò)的數(shù)據(jù)包緩存于電腦內(nèi)存中,因 此再大的突發(fā)數(shù)據(jù)包也不會(huì)丟失。緩存于電腦內(nèi)存中的數(shù)據(jù)包再以較慢的速度發(fā)送給仿真器,此時(shí)的存儲(chǔ)管理是由電腦上的操作系統(tǒng)完成的,因此緩存容量可以與電 腦的RAM容量一樣大,需要的話甚至可以使用操作系統(tǒng)的虛擬內(nèi)存將數(shù)據(jù)包存放在磁盤(pán)上。
這種成熟的內(nèi)存管理技術(shù)用硬件實(shí)現(xiàn)是相當(dāng)困難的,并且成本很高,但用軟件實(shí)現(xiàn)卻相當(dāng)容易。
速度匹配軟件如同各種應(yīng)用軟件那樣運(yùn)行于操作系統(tǒng)平臺(tái)之上(圖1)。通常一個(gè)應(yīng)用程序訪問(wèn)硬件時(shí)需要調(diào)用操作系統(tǒng)的應(yīng)用程序 接口(API)。但速度匹配軟件卻不同,它可以直接控制并行口和網(wǎng)卡的驅(qū)動(dòng)程序。這樣,速度匹配軟件就能獨(dú)立于操作系統(tǒng),并利用經(jīng)過(guò)完整測(cè)試的硬件驅(qū)動(dòng)程 序自由地訪問(wèn)數(shù)據(jù)。
軟件方面的注意事項(xiàng)
使用速度匹配軟件時(shí)要注意以下幾個(gè)問(wèn)題。首先是與被仿真設(shè)備的接口問(wèn)題。并行口是非常好的一個(gè)接口,它簡(jiǎn)單通用,幾乎每臺(tái)電 腦上都有,但也有許多限制。第一,并行口的最大吞吐量理論上是2Mbps,但由于端口服務(wù)開(kāi)銷(xiāo)的存在,要達(dá)到這一速率是不可能的。雖然可以使用更快的 SCSI或USB等接口,但它們相對(duì)都較復(fù)雜,并且這些接口的物理層要求網(wǎng)絡(luò)設(shè)備原型上有專(zhuān)門(mén)的收發(fā)器,因此會(huì)造成額外的硬件設(shè)計(jì)與調(diào)試開(kāi)銷(xiāo)。另外,這些 接口的協(xié)議比較復(fù)雜,也即意味著原型中用來(lái)在這些接口上收發(fā)數(shù)據(jù)包的邏輯設(shè)計(jì)與調(diào)試會(huì)變得更加困難。因此采用這些接口會(huì)減弱軟件解決方案所帶來(lái)的優(yōu)勢(shì)。
專(zhuān)用的高速并行口也許是一種更好的選擇。目前已有多家公司在出售可以插入電腦或安裝在PCMCIA卡上的快速寬總線并行口卡。從電路與協(xié)議角度看這些快速并行口仍屬于簡(jiǎn)單類(lèi)型的接口,只是數(shù)據(jù)總線變成了16位或32位寬,但它們的吞吐量卻可以達(dá)到標(biāo)準(zhǔn)并行口的2倍或4倍。
當(dāng)采用電腦上的并行口進(jìn)行連接時(shí),要注意并行口有好幾種類(lèi)型,包括雙向、增強(qiáng)型并行口(EPP)和擴(kuò)展功能并行口 (ECP)。這些并行口的協(xié)議是用硬件控制的,因此具體能夠提供的協(xié)議與所用的芯片有關(guān)。在許多情況下,用戶需要改變CMOS設(shè)置來(lái)啟動(dòng)某個(gè)特殊的并行口 協(xié)議。許多高級(jí)的協(xié)議都包含有不能變更的超時(shí)設(shè)定(timeout)。如果原型網(wǎng)絡(luò)設(shè)備不能及時(shí)響應(yīng),并行口芯片就會(huì)超時(shí),從而導(dǎo)致字節(jié)丟失。用戶一般可 以通過(guò)直接操作信號(hào)來(lái)創(chuàng)建不包含超時(shí)設(shè)定的自定義并行口協(xié)議。不過(guò)在任何情況下以這樣低的層次訪問(wèn)并行口都需要用到能夠訪問(wèn)操作系統(tǒng)內(nèi)核的代碼,雖然生成 這段代碼是可能的,但不同的操作系統(tǒng)代碼是不一樣的,有時(shí)會(huì)相當(dāng)困難,因此可移植性較差。
網(wǎng)絡(luò)方面的注意事項(xiàng)
在仿真系統(tǒng)的網(wǎng)絡(luò)側(cè)要確保關(guān)閉了電腦上的所有網(wǎng)絡(luò)進(jìn)程,進(jìn)行仿真時(shí)人們都不希望來(lái)回傳送的任何數(shù)據(jù)包被電腦上的操作系統(tǒng)所截 獲。有時(shí)也會(huì)有難以關(guān)閉的低層活動(dòng)網(wǎng)絡(luò)進(jìn)程,這種情況的一個(gè)典型癥狀是出現(xiàn)不知從哪里冒出來(lái)的數(shù)據(jù)包,這些數(shù)據(jù)包會(huì)被發(fā)送給原型或網(wǎng)絡(luò)。當(dāng)這種情況發(fā)生 時(shí),意味著有些后臺(tái)任務(wù)正在偵測(cè)網(wǎng)絡(luò),最好是關(guān)閉所有的后臺(tái)任務(wù)。
下面用硬件仿真器實(shí)現(xiàn)網(wǎng)橋來(lái)舉例說(shuō)明速度匹配軟件技術(shù)的應(yīng)用。該網(wǎng)橋以點(diǎn)到點(diǎn)的網(wǎng)絡(luò)配置形式連接二臺(tái)PC機(jī)PC1和 PC2。PC1和PC2通過(guò)兩個(gè)獨(dú)立的PC連接到仿真器的輸入輸出端口,每個(gè)PC上都運(yùn)行有速度匹配軟件。對(duì)PC1來(lái)說(shuō),與PC2是直接相連的,中間運(yùn)行 速度匹配軟件的PC或仿真器是透明的,看不見(jiàn)的,PC2也同樣如此。文件可以通過(guò)中間仿真的網(wǎng)橋在PC1與PC2間直接傳送。
上述的網(wǎng)橋可以用Verilog語(yǔ)言編寫(xiě),圖2給出了網(wǎng)橋的示意圖。來(lái)自于兩個(gè)轉(zhuǎn)接PC并行口的數(shù)據(jù)包被速度匹配軟件轉(zhuǎn)換 成專(zhuān)為并行口優(yōu)化過(guò)的協(xié)議,然后通過(guò)PC并行口送給仿真器。數(shù)據(jù)包到達(dá)仿真器后被裝載進(jìn)容量為1,514字節(jié)的緩沖器(FIFO的一部分)。1,514是 以太網(wǎng)標(biāo)準(zhǔn)中規(guī)定的最大數(shù)據(jù)包長(zhǎng)度。
不幸的是,小于最大尺寸的數(shù)據(jù)包不會(huì)用完所有的字節(jié),從而導(dǎo)致仿真器內(nèi)存的利用率非常低。然而,如前所述,用Verilog編寫(xiě)的硬件方式的內(nèi)存管理要比軟件管理困難復(fù)雜得多。因此創(chuàng)建這種簡(jiǎn)化的FIFO結(jié)構(gòu)可以降低復(fù)雜性,從而降低整體開(kāi)發(fā)時(shí)間。
當(dāng)數(shù)據(jù)經(jīng)過(guò)FIFO后再在另外一端讀出來(lái),這時(shí)的數(shù)據(jù)仍是RMII協(xié)議規(guī)格,因此需要轉(zhuǎn)換成速度匹配軟件使用的非標(biāo)準(zhǔn)并行口協(xié)議,然后送給另外一臺(tái)PC機(jī)。
還有一些狀態(tài)寄存器沒(méi)有顯示在圖2中。PC機(jī)可以通過(guò)并行口訪問(wèn)到這些狀態(tài)寄存器,PC上的速度匹配軟件通過(guò)這些狀態(tài)寄存器 可以知道FIFO是滿的還是空的、可以讀還是可以寫(xiě)。這樣速度匹配軟件就能了解到網(wǎng)橋的狀態(tài),抑制數(shù)據(jù)包的傳送,從而使網(wǎng)橋變得更有效率。網(wǎng)絡(luò)協(xié)議允許不 會(huì)引起嚴(yán)重后果的數(shù)據(jù)包丟失,但盡可能少丟包是設(shè)計(jì)的最終目標(biāo)。圖2中沒(méi)有顯示的內(nèi)容還包括控制兩個(gè)接口數(shù)據(jù)包讀寫(xiě)的狀態(tài)機(jī)以及轉(zhuǎn)換數(shù)據(jù)協(xié)議所需的邏輯。
評(píng)論