郭 佳
基于Cosim交换机芯片仿真系统设计
郭 佳
(东华大学 信息学院,上海 201620)
由于现有的仿真器对软硬件的协同开发支持不足,不能有效衔接软硬件割裂的开发环境。Cosim仿真系统是建立在TCP/IP socket通信的server/client上的应用程序。Cosim仿真系统的设计结合C语言,Verilog,Linux操作系统相关知识建立了一个基于软件平台的交换机芯片仿真系统。实现了对交换机系统中数据包路由信息和ASIC通信的系统仿真。
嵌入式;协同开发;仿真器;ASIC
嵌入式系统的软硬件设计中一个重要的问题就是怎样把嵌入式的软件和硬件集成在一起调试。传统的设计方法流程是,首先进行硬件子系统的设计实现,其次再进行软件子系统的设计实现[1-3]。整个系统的开发基本是一个串行的方式,导致软硬件的开发过程割裂。因此在设计方法学上,业界有迫切的需求改变软硬件协同设计的现状,在嵌入式系统设计的早期就可以将软件和硬件联合调试[4-5]。
基于业界的软硬件协同设计和开发的需求,产生了两类大类仿真器:第一类是基于硬件的仿真器,使用诸如FPGA和独立的有CPU和内存的PCB板。硬件仿真器运行的比实际系统慢一个数量级,让设计者可以使用大量的测试例程去测试系统,同时成本较高;第二类是基于软件的仿真器,为系统的所有组件构建软件模型,使用软件模型去仿真来分析系统的行为。它的优点是成本低,运行速度快[6]。
笔者所设计的Cosim仿真器属于软件仿真器。通过对交换机芯片C/System C-model的软件功能建模,实现了对多芯片系统的系统集成功能,接口协议,性能,QOS,向后兼容性的仿真,使得仿真系统模拟在真实硬件上运行软件的效果,达到软硬件协调开发的目的。最终得到Cosim在交换机系统中数据包转发路由和ASIC通信系统的仿真结果[7]。
Cosim是在实际可用的ASIC芯片和PCB板生产出来之前,运行一个硬件的软件仿真环境,用于测试和验证整个系统的架构、系统的完整性、软硬件的稳定性,发现并修复可能存在的错误与缺陷。系统主要由五部分组成:软件客户端software_client,硬件客户端hardware_client,仿真服务器端cosim_server,仿真管理端cosim_manager,运行程序cosim_launcher。系统组成结构图如图1所示:
图1 Cosim 系统构架
Cosim_server主要用C语言写成,用于管理所有客户端之间的TCP/IP通信,它所起的主要用就是将任何源客户端发来的消息转发到目的客户端,无论该消息是从软件客户端发向硬件端还是相反方向;Cosim_manager主要存放客户端之间的通信的路由信息;Hardware_client可以由一个或多个芯片组成,这些芯片用Verilog写成,被编译成一个或多个独立运行的在单个或多个工作站上的客户端;Software_client是由C语言开发的程序,被编译在工作站上运行,程序内部所有与芯片的IO部分都被替换成向对应的硬件客户端发送与接收消息;Cosim_launcher是一个初始化配置和启动服务器端与各个客户端的程序,它从预定义好的XML中读取各个客户端的关系配置,再启动对应的客户端,从而能灵活的根据配置文件构造出不同的系统。
Cosim的客户端之间都是通过Cosim server来通信,他们使用Cosim内部定义的消息格式Cosim message来交换信息。
2.1 Cosim消息的构成
Cosim message主要由两个部分组成:(1) Cosim header是消息头部分,主要由五个部分组成:DA,消息的目的地址;SA,消息的源地址;Type,消息的类型;Tol_len,消息的总长度,包括包头长度;Seq_id,用于调试的消息序列号。(2) Cosim address是消息的地址格式,也由五个字段构成:devId,客户端ID; devInstance,客户端的实例号;slot,客户端所处交换机机架的插槽号;chassis, 客户端所处的交换机的机架号;if_id:客户端内部的接口或端口号。主要地址primary address就是(devId, devInstance, slot, chassis)的集合primary address用于cosim server定位一个客户端并转发消息。绝对地址absolute address由primary address+if_id构成,用于发送消息到客户端的一个特定端口。消息头部中的DA和SA都是绝对地址。
图2 Cosim message
2.2 Cosim消息的类型
Cosim系统中定义的消息类型包括:HELLO,ROUTE_INFO,CONTROL,PKT,TERNINATE。下面依次介绍以上几种消息类型:(1) HELLO消息带有客户端接收端口的证书信息,当一个客户端启动联网后,首先通过Cosim server 发一个HELLO消息给Cosim manager,Cosim server从消息的头部SA中记录客户端的address。然后,Cosim manager保存来自客户端的HELLO消息,并发送ROUTE_INFO消息给客户端。之后,Cosim manager广播收到HELLO消息给所有已存在的其他客户端。证书信息的交换发生在新客户端第一次连接时。(2) ROUTE_INFO:Cosim manager会发送ROUTE_INFO给各个clients,route_info是一个
3.1 芯片硬件功能介绍
该仿真系统所仿真的芯片是交换机系统中的Port ASIC, 简称为SL,该芯片主要对来自XAUI口的的数据包做进一步的处理,如打上内部的TAG和增加VLAN分组的标示,然后通过XGMII口连接到两个交换机中的Bridge ASIC接口。
3.2 基于RTL side的SL软件抽象模块设计
RTL side是一个C语言写的函数库,这个C程序库可以通过simv的DirectC接口直接被simv调用,这个函数库的主要功能是用于管理server和chip之间的socket通信如打开关闭连接,交换数据等等。
每一个芯片都有多个端口可以发送和接收数据。从Server 接收到消息存储在芯片的端口队列里,当simv 准备好接收新的命令时,就从队列里取出消息。发往其他方向的消息不在队列里停留就直接发出去。这样做的目的是因为RTL部分是整个Cosim系统的瓶颈,而Server任何时候都是准备接收进来的消息。simv使用该API去发送请求给server要求建立或者关闭特定芯片的连接。RTL virtual client会转发上面的请求给server,在收到Server发送过来的确认信息后,返回成功或者失败给simv。simv使用该API 接收从server发过来的数据。这包括对来自server的发向当前chip 的socket 消息的非阻塞的读取,所有的信息都会被读取并写入相应端口的队列。每一个消息会由原来的IOS-Server-RTL API的格式转换成RTL-simv API的格式。之后,只有在sim_recv调用参数中指定的端口队列的第一个消息会被读取,并转换为DirectC格式的以供simv读取。simv使用该API发送数据到server。数据以DirectC格式的接收后,立刻被从RTL-simv API格式转成IOS-server API格式,并被以阻塞的方式发送到server上去。
VCS的DirectC功能可以让C语言写的RTL client被编译后和vcs仿真环境一起运行。第三节中描述的库函数以externs方式声明在verilog的Cosim wrapper文件里。这样就可以使得verilog直接取调用它们,而这些库函数本身就像是原生的verilog task/function一样。
在Cosim集成模块中该仿真器主要实现了以下功能(1)初始化所有芯片;(2)通知Cosim server所有芯片的存在;(3)发送chip init done消息给Cosim server;(4)轮询接收消息,如cpu的操作或packet的传输,消息来自client发送到芯片的特定端口;(5)将仿真中产生的消息,如CPU读数据,芯片的数据包输出,中断错误等等,发送回Cosim server。
Cosim 仿真系统共含有四个部分:Cosim launcher, Cosim server, Cosim manager, Cosim 客户端。下面分别给出系统各个部分的仿真结果。
图3中Launcher在读取配置文件后,分别启动了Cosim server,Cosim manager,Cosim client。整个Cosim系统都是通过Cosim launcher 这个perl脚本来启动和初始化其它模块的。主要就是读取Cosim客户端的配置文件,启动Cosim server和Cosim客户端。图4中Cosim server 通过Cosim launcher 被调用运行,它的主要功能就是建立各个客户端之间通信的一个中转服务器,其他的客户端都是通过server彼此连接的。Cosim server在建立socket之后就在不停的监听socket,之后其他的客户端各自连接上了cosim server,发送hello消息给server以及其他客户端。如图5所示,Cosim manager在启动后会打印出当前的路由信息表,路由信息显示当前所有建立连接的Cosim客户端的端口对应关系。Cosim 客户端运行结果如图6所示SL 客户端运行之后会接收来自诊断系统的IO访问指令,返回对应的信息。该客户端打印出了诊断系统访问芯片的寄存器的过程以及数据包的路由信息。
图3 Cosim Launcher 运行结果
图4 Cosim server 运行结果
图5 Cosim manager运行结果
图6 SL芯片硬件客户端仿真结果
本论文首先简单介绍了仿真器的概念、结构以及发展历史,然后介绍了主流的仿真器,分析了现有仿真的局限性,说明了本研究的目的以及文章的组织。接着本文引入了对Cosim的介绍,从它的特点和功能的角度分析了Cosim平台,在此基础上详细阐述了Cosim平台的体系架构和设计要素。由于嵌入式系统的传统仿真器的局限性,它们没有对软硬件协同开发的方法学有强大的支持,在这种背景下,新的协同仿真器应运而生[8-10]。本文后半部分以嵌入式网络ASIC芯片及其驱动开发为基础详细的探讨了Cosim仿真器在开发芯片和驱动过程中的应用。
[1] 熊光泽,詹瑾瑜. 嵌入式软硬件协同设计技术综述[J]. 计算机应用,2006,26(4):279-282.
[2] 鲍华,洪一,郭二辉. 面向Soc的软硬件协同验证平台设计[J]. 计算机工程,2009,35(8):1-4.
[3] 王少平,王京谦,钱玮. 嵌入式系统的软硬件协同设计[J]. 现代电子技术,2005,4(2):5-7.
[4] 郑德春,姚庆栋. 基于软硬件协同仿真平台的仿真测试方法[J]. 电路与系统,2008(6):15-18.
[5] 李京波,董利民,吴武臣. SoC软硬件协同验证中的软件仿真[J]. 电子工程师,2007(1):23-27.
[6] 柴旭东,李伯虎. 复杂产品协同仿真平台的研究与实现[J]. 计算机集成制造系统,2002,(7):37-45.
[7] 熊光楞. 协同仿真与虚拟样机技术[M]. 北京:清华大学出版社,2004.23-87.
[8] 郭斌,熊光楞. 支持复杂产品设计的协同仿真平台研究[J]. 机械与电子,2002,(4):703-706.
[9] 苟凌怡,熊光楞. 支持虚拟样机协同仿真平台关键技术研究[J]. 系统仿真学报,2002,(3):34-38.
[10]燕雪峰,邸彦强. 协同仿真平台中的仿真组件技术及其实现[J]. 计算机集成制造系统,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-),女,硕士,研究方向:控制理论与控制工程.