郭 佳
基于Cosim交換機(jī)芯片仿真系統(tǒng)設(shè)計(jì)
郭 佳
(東華大學(xué) 信息學(xué)院,上海 201620)
由于現(xiàn)有的仿真器對(duì)軟硬件的協(xié)同開發(fā)支持不足,不能有效銜接軟硬件割裂的開發(fā)環(huán)境。Cosim仿真系統(tǒng)是建立在TCP/IP socket通信的server/client上的應(yīng)用程序。Cosim仿真系統(tǒng)的設(shè)計(jì)結(jié)合C語(yǔ)言,Verilog,Linux操作系統(tǒng)相關(guān)知識(shí)建立了一個(gè)基于軟件平臺(tái)的交換機(jī)芯片仿真系統(tǒng)。實(shí)現(xiàn)了對(duì)交換機(jī)系統(tǒng)中數(shù)據(jù)包路由信息和ASIC通信的系統(tǒng)仿真。
嵌入式;協(xié)同開發(fā);仿真器;ASIC
嵌入式系統(tǒng)的軟硬件設(shè)計(jì)中一個(gè)重要的問(wèn)題就是怎樣把嵌入式的軟件和硬件集成在一起調(diào)試。傳統(tǒng)的設(shè)計(jì)方法流程是,首先進(jìn)行硬件子系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn),其次再進(jìn)行軟件子系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)[1-3]。整個(gè)系統(tǒng)的開發(fā)基本是一個(gè)串行的方式,導(dǎo)致軟硬件的開發(fā)過(guò)程割裂。因此在設(shè)計(jì)方法學(xué)上,業(yè)界有迫切的需求改變軟硬件協(xié)同設(shè)計(jì)的現(xiàn)狀,在嵌入式系統(tǒng)設(shè)計(jì)的早期就可以將軟件和硬件聯(lián)合調(diào)試[4-5]。
基于業(yè)界的軟硬件協(xié)同設(shè)計(jì)和開發(fā)的需求,產(chǎn)生了兩類大類仿真器:第一類是基于硬件的仿真器,使用諸如FPGA和獨(dú)立的有CPU和內(nèi)存的PCB板。硬件仿真器運(yùn)行的比實(shí)際系統(tǒng)慢一個(gè)數(shù)量級(jí),讓設(shè)計(jì)者可以使用大量的測(cè)試?yán)倘y(cè)試系統(tǒng),同時(shí)成本較高;第二類是基于軟件的仿真器,為系統(tǒng)的所有組件構(gòu)建軟件模型,使用軟件模型去仿真來(lái)分析系統(tǒng)的行為。它的優(yōu)點(diǎn)是成本低,運(yùn)行速度快[6]。
筆者所設(shè)計(jì)的Cosim仿真器屬于軟件仿真器。通過(guò)對(duì)交換機(jī)芯片C/System C-model的軟件功能建模,實(shí)現(xiàn)了對(duì)多芯片系統(tǒng)的系統(tǒng)集成功能,接口協(xié)議,性能,QOS,向后兼容性的仿真,使得仿真系統(tǒng)模擬在真實(shí)硬件上運(yùn)行軟件的效果,達(dá)到軟硬件協(xié)調(diào)開發(fā)的目的。最終得到Cosim在交換機(jī)系統(tǒng)中數(shù)據(jù)包轉(zhuǎn)發(fā)路由和ASIC通信系統(tǒng)的仿真結(jié)果[7]。
Cosim是在實(shí)際可用的ASIC芯片和PCB板生產(chǎn)出來(lái)之前,運(yùn)行一個(gè)硬件的軟件仿真環(huán)境,用于測(cè)試和驗(yàn)證整個(gè)系統(tǒng)的架構(gòu)、系統(tǒng)的完整性、軟硬件的穩(wěn)定性,發(fā)現(xiàn)并修復(fù)可能存在的錯(cuò)誤與缺陷。系統(tǒng)主要由五部分組成:軟件客戶端software_client,硬件客戶端hardware_client,仿真服務(wù)器端cosim_server,仿真管理端cosim_manager,運(yùn)行程序cosim_launcher。系統(tǒng)組成結(jié)構(gòu)圖如圖1所示:
圖1 Cosim 系統(tǒng)構(gòu)架
Cosim_server主要用C語(yǔ)言寫成,用于管理所有客戶端之間的TCP/IP通信,它所起的主要用就是將任何源客戶端發(fā)來(lái)的消息轉(zhuǎn)發(fā)到目的客戶端,無(wú)論該消息是從軟件客戶端發(fā)向硬件端還是相反方向;Cosim_manager主要存放客戶端之間的通信的路由信息;Hardware_client可以由一個(gè)或多個(gè)芯片組成,這些芯片用Verilog寫成,被編譯成一個(gè)或多個(gè)獨(dú)立運(yùn)行的在單個(gè)或多個(gè)工作站上的客戶端;Software_client是由C語(yǔ)言開發(fā)的程序,被編譯在工作站上運(yùn)行,程序內(nèi)部所有與芯片的IO部分都被替換成向?qū)?yīng)的硬件客戶端發(fā)送與接收消息;Cosim_launcher是一個(gè)初始化配置和啟動(dòng)服務(wù)器端與各個(gè)客戶端的程序,它從預(yù)定義好的XML中讀取各個(gè)客戶端的關(guān)系配置,再啟動(dòng)對(duì)應(yīng)的客戶端,從而能靈活的根據(jù)配置文件構(gòu)造出不同的系統(tǒng)。
Cosim的客戶端之間都是通過(guò)Cosim server來(lái)通信,他們使用Cosim內(nèi)部定義的消息格式Cosim message來(lái)交換信息。
2.1 Cosim消息的構(gòu)成
Cosim message主要由兩個(gè)部分組成:(1) Cosim header是消息頭部分,主要由五個(gè)部分組成:DA,消息的目的地址;SA,消息的源地址;Type,消息的類型;Tol_len,消息的總長(zhǎng)度,包括包頭長(zhǎng)度;Seq_id,用于調(diào)試的消息序列號(hào)。(2) Cosim address是消息的地址格式,也由五個(gè)字段構(gòu)成:devId,客戶端ID; devInstance,客戶端的實(shí)例號(hào);slot,客戶端所處交換機(jī)機(jī)架的插槽號(hào);chassis, 客戶端所處的交換機(jī)的機(jī)架號(hào);if_id:客戶端內(nèi)部的接口或端口號(hào)。主要地址primary address就是(devId, devInstance, slot, chassis)的集合primary address用于cosim server定位一個(gè)客戶端并轉(zhuǎn)發(fā)消息。絕對(duì)地址absolute address由primary address+if_id構(gòu)成,用于發(fā)送消息到客戶端的一個(gè)特定端口。消息頭部中的DA和SA都是絕對(duì)地址。
圖2 Cosim message
2.2 Cosim消息的類型
Cosim系統(tǒng)中定義的消息類型包括:HELLO,ROUTE_INFO,CONTROL,PKT,TERNINATE。下面依次介紹以上幾種消息類型:(1) HELLO消息帶有客戶端接收端口的證書信息,當(dāng)一個(gè)客戶端啟動(dòng)聯(lián)網(wǎng)后,首先通過(guò)Cosim server 發(fā)一個(gè)HELLO消息給Cosim manager,Cosim server從消息的頭部SA中記錄客戶端的address。然后,Cosim manager保存來(lái)自客戶端的HELLO消息,并發(fā)送ROUTE_INFO消息給客戶端。之后,Cosim manager廣播收到HELLO消息給所有已存在的其他客戶端。證書信息的交換發(fā)生在新客戶端第一次連接時(shí)。(2) ROUTE_INFO:Cosim manager會(huì)發(fā)送ROUTE_INFO給各個(gè)clients,route_info是一個(gè)
3.1 芯片硬件功能介紹
該仿真系統(tǒng)所仿真的芯片是交換機(jī)系統(tǒng)中的Port ASIC, 簡(jiǎn)稱為SL,該芯片主要對(duì)來(lái)自XAUI口的的數(shù)據(jù)包做進(jìn)一步的處理,如打上內(nèi)部的TAG和增加VLAN分組的標(biāo)示,然后通過(guò)XGMII口連接到兩個(gè)交換機(jī)中的Bridge ASIC接口。
3.2 基于RTL side的SL軟件抽象模塊設(shè)計(jì)
RTL side是一個(gè)C語(yǔ)言寫的函數(shù)庫(kù),這個(gè)C程序庫(kù)可以通過(guò)simv的DirectC接口直接被simv調(diào)用,這個(gè)函數(shù)庫(kù)的主要功能是用于管理server和chip之間的socket通信如打開關(guān)閉連接,交換數(shù)據(jù)等等。
每一個(gè)芯片都有多個(gè)端口可以發(fā)送和接收數(shù)據(jù)。從Server 接收到消息存儲(chǔ)在芯片的端口隊(duì)列里,當(dāng)simv 準(zhǔn)備好接收新的命令時(shí),就從隊(duì)列里取出消息。發(fā)往其他方向的消息不在隊(duì)列里停留就直接發(fā)出去。這樣做的目的是因?yàn)镽TL部分是整個(gè)Cosim系統(tǒng)的瓶頸,而Server任何時(shí)候都是準(zhǔn)備接收進(jìn)來(lái)的消息。simv使用該API去發(fā)送請(qǐng)求給server要求建立或者關(guān)閉特定芯片的連接。RTL virtual client會(huì)轉(zhuǎn)發(fā)上面的請(qǐng)求給server,在收到Server發(fā)送過(guò)來(lái)的確認(rèn)信息后,返回成功或者失敗給simv。simv使用該API 接收從server發(fā)過(guò)來(lái)的數(shù)據(jù)。這包括對(duì)來(lái)自server的發(fā)向當(dāng)前chip 的socket 消息的非阻塞的讀取,所有的信息都會(huì)被讀取并寫入相應(yīng)端口的隊(duì)列。每一個(gè)消息會(huì)由原來(lái)的IOS-Server-RTL API的格式轉(zhuǎn)換成RTL-simv API的格式。之后,只有在sim_recv調(diào)用參數(shù)中指定的端口隊(duì)列的第一個(gè)消息會(huì)被讀取,并轉(zhuǎn)換為DirectC格式的以供simv讀取。simv使用該API發(fā)送數(shù)據(jù)到server。數(shù)據(jù)以DirectC格式的接收后,立刻被從RTL-simv API格式轉(zhuǎn)成IOS-server API格式,并被以阻塞的方式發(fā)送到server上去。
VCS的DirectC功能可以讓C語(yǔ)言寫的RTL client被編譯后和vcs仿真環(huán)境一起運(yùn)行。第三節(jié)中描述的庫(kù)函數(shù)以externs方式聲明在verilog的Cosim wrapper文件里。這樣就可以使得verilog直接取調(diào)用它們,而這些庫(kù)函數(shù)本身就像是原生的verilog task/function一樣。
在Cosim集成模塊中該仿真器主要實(shí)現(xiàn)了以下功能(1)初始化所有芯片;(2)通知Cosim server所有芯片的存在;(3)發(fā)送chip init done消息給Cosim server;(4)輪詢接收消息,如cpu的操作或packet的傳輸,消息來(lái)自client發(fā)送到芯片的特定端口;(5)將仿真中產(chǎn)生的消息,如CPU讀數(shù)據(jù),芯片的數(shù)據(jù)包輸出,中斷錯(cuò)誤等等,發(fā)送回Cosim server。
Cosim 仿真系統(tǒng)共含有四個(gè)部分:Cosim launcher, Cosim server, Cosim manager, Cosim 客戶端。下面分別給出系統(tǒng)各個(gè)部分的仿真結(jié)果。
圖3中Launcher在讀取配置文件后,分別啟動(dòng)了Cosim server,Cosim manager,Cosim client。整個(gè)Cosim系統(tǒng)都是通過(guò)Cosim launcher 這個(gè)perl腳本來(lái)啟動(dòng)和初始化其它模塊的。主要就是讀取Cosim客戶端的配置文件,啟動(dòng)Cosim server和Cosim客戶端。圖4中Cosim server 通過(guò)Cosim launcher 被調(diào)用運(yùn)行,它的主要功能就是建立各個(gè)客戶端之間通信的一個(gè)中轉(zhuǎn)服務(wù)器,其他的客戶端都是通過(guò)server彼此連接的。Cosim server在建立socket之后就在不停的監(jiān)聽socket,之后其他的客戶端各自連接上了cosim server,發(fā)送hello消息給server以及其他客戶端。如圖5所示,Cosim manager在啟動(dòng)后會(huì)打印出當(dāng)前的路由信息表,路由信息顯示當(dāng)前所有建立連接的Cosim客戶端的端口對(duì)應(yīng)關(guān)系。Cosim 客戶端運(yùn)行結(jié)果如圖6所示SL 客戶端運(yùn)行之后會(huì)接收來(lái)自診斷系統(tǒng)的IO訪問(wèn)指令,返回對(duì)應(yīng)的信息。該客戶端打印出了診斷系統(tǒng)訪問(wèn)芯片的寄存器的過(guò)程以及數(shù)據(jù)包的路由信息。
圖3 Cosim Launcher 運(yùn)行結(jié)果
圖4 Cosim server 運(yùn)行結(jié)果
圖5 Cosim manager運(yùn)行結(jié)果
圖6 SL芯片硬件客戶端仿真結(jié)果
本論文首先簡(jiǎn)單介紹了仿真器的概念、結(jié)構(gòu)以及發(fā)展歷史,然后介紹了主流的仿真器,分析了現(xiàn)有仿真的局限性,說(shuō)明了本研究的目的以及文章的組織。接著本文引入了對(duì)Cosim的介紹,從它的特點(diǎn)和功能的角度分析了Cosim平臺(tái),在此基礎(chǔ)上詳細(xì)闡述了Cosim平臺(tái)的體系架構(gòu)和設(shè)計(jì)要素。由于嵌入式系統(tǒng)的傳統(tǒng)仿真器的局限性,它們沒(méi)有對(duì)軟硬件協(xié)同開發(fā)的方法學(xué)有強(qiáng)大的支持,在這種背景下,新的協(xié)同仿真器應(yīng)運(yùn)而生[8-10]。本文后半部分以嵌入式網(wǎng)絡(luò)ASIC芯片及其驅(qū)動(dòng)開發(fā)為基礎(chǔ)詳細(xì)的探討了Cosim仿真器在開發(fā)芯片和驅(qū)動(dòng)過(guò)程中的應(yīng)用。
[1] 熊光澤,詹瑾瑜. 嵌入式軟硬件協(xié)同設(shè)計(jì)技術(shù)綜述[J]. 計(jì)算機(jī)應(yīng)用,2006,26(4):279-282.
[2] 鮑華,洪一,郭二輝. 面向Soc的軟硬件協(xié)同驗(yàn)證平臺(tái)設(shè)計(jì)[J]. 計(jì)算機(jī)工程,2009,35(8):1-4.
[3] 王少平,王京謙,錢瑋. 嵌入式系統(tǒng)的軟硬件協(xié)同設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù),2005,4(2):5-7.
[4] 鄭德春,姚慶棟. 基于軟硬件協(xié)同仿真平臺(tái)的仿真測(cè)試方法[J]. 電路與系統(tǒng),2008(6):15-18.
[5] 李京波,董利民,吳武臣. SoC軟硬件協(xié)同驗(yàn)證中的軟件仿真[J]. 電子工程師,2007(1):23-27.
[6] 柴旭東,李伯虎. 復(fù)雜產(chǎn)品協(xié)同仿真平臺(tái)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)集成制造系統(tǒng),2002,(7):37-45.
[7] 熊光楞. 協(xié)同仿真與虛擬樣機(jī)技術(shù)[M]. 北京:清華大學(xué)出版社,2004.23-87.
[8] 郭斌,熊光楞. 支持復(fù)雜產(chǎn)品設(shè)計(jì)的協(xié)同仿真平臺(tái)研究[J]. 機(jī)械與電子,2002,(4):703-706.
[9] 茍凌怡,熊光楞. 支持虛擬樣機(jī)協(xié)同仿真平臺(tái)關(guān)鍵技術(shù)研究[J]. 系統(tǒng)仿真學(xué)報(bào),2002,(3):34-38.
[10]燕雪峰,邸彥強(qiáng). 協(xié)同仿真平臺(tái)中的仿真組件技術(shù)及其實(shí)現(xiàn)[J]. 計(jì)算機(jī)集成制造系統(tǒng),2004,(10):32-35.
Switch ASIC Co-simulation System Design Based on Cosim
GUO Jia
(School of Information Science & Technology, Donghua University, Shanghai 201620, China)
In current background, the traditional development methodology has been unable to follow the market requirement due to its separated way of hardware and software development. For the limit of current simulators, we design and develop a new collaborative simulation platform called Cosim, which based on TCP/IP socket communication application program.Cosim simulation system is developed based on C language, Verilog, Linux. It is a switch ASIC simulation system based on software platform. Cosim simulation system demonstrates switch system’s packet transfer, router info and ASIC communication.
Embedded System; Co-development; Simulator; ASIC
TN91
A
1009-5160(2012)03-0077-04
郭佳(1986-),女,碩士,研究方向:控制理論與控制工程.