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