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