基于速度匹配软件的网络芯片仿真方法
扫描二维码
随时随地手机看文章
对微处理器、图形芯片或复杂设计的仿真通常要求降低目标系统的速度,因为即使快速FPGA也可能跟不上高速目标系统的速度,本文介绍一种基于速度匹配软件的网络芯片仿真方法,并指出采用这种新技术需要注意的事项,值得(中国)集成电路设计工程师关注。
在今天四通八达的宽带互联世界中,网络设备的智能、速度和集成度正变得越来越高,随着复杂度的增加,针对硬件设计的软件仿真 变得越来越费时,难度也越来越高。而采用软件仿真方法对实际状态和边缘情况进行建模的难度也在增加。这些问题的出现已经有段时间了,几乎所有微处理器厂商 都开始转用硬件仿真。但硬件仿真也有其弱点,硬件仿真不仅需要昂贵的无法随意更改物理层接口的专用硬件,还要求目标系统放慢速度,因此无法再现实际的运行 环境。
本文介绍第三种方案,该方案克服上述缺点,采用安装了速度匹配软件的标准PC,能够极大地加快并简化仿真过程,同时提供更接近实际情形的仿真结果,本文着重介绍采用最新的方法需要特别注意的地方。
设备仿真
仿真过程的第一步是将设计(通常是RTL级)装载进第三方厂商提供的仿真器。被仿真的设计再通过指形交叉连接器插入实际的母 板中,然后启动操作系统。最终测试将是运行一个实际应用,比如字处理器。当然,这种情况下仿真器的速度要比实际芯片慢好几个数量级,但这个过程确实是将设 计投入到了实际的运行中。随着近年来FPGA密度、速度和复杂度的不断提高,许多公司开始为他们的芯片创建定制的FPGA原型。
仿真微处理器、图形芯片或其它复杂的设计通常要求降低目标系统的速度,使之与较慢的仿真速度相匹配。即使是高速FPGA也 可能跟不上高速目标系统的速度。对于具有固定频率并独立于处理器的总线或必须以固定时间间隔产生的中断来说,目标系统速度太快会造成某些功能上的问题。一 般情况下,一个专用慢速目标板通常会通过慢速的外围设备与慢速仿真器进行通信。
但这种慢速解决方案并不适合用来仿真网络设备。对网络设备的仿真目的是要用真实的数据包测试在实际网络中运行的网络设备性 能,以确认新设计在实际环境下中的表现。一个网络一般由数十个、上百个-在因特网中-甚至是数百万个网络设备组成,要把所有这些设备的速度降下来是不现实 的。同时还有与网络有关的低层及高层时序约束条件。例如,连接以太网物理芯片与交换ASIC芯片的简化介质独立接口(RMII)就规定必须使用带特殊占空 比的50MHz时钟,而大多数商用仿真器无法以如此高的频率运行。更高层的协议要求设备确认数据包的到达,如果在规定时间内没有应答确认信号,数据包就会 重发。如果仿真器响应速度不够快,那么它就会被重复的数据包所淹没。
仿真接口也是一个问题。仿真器是一个纯数字的设备,而物理网络连接要求物理层对仿真信号进行整形,以使连接的对端能够正确 接收。同样,物理层接收到仿真信号后需要将它转换成数字信号。仿真器与网络直接相连时需要使用一个专门的仿真接口,用来将慢速数字信号转换成正确的仿真信 号。
这时的速度失配问题通常用硬件方法来解决,即电路板的一端是一个以太网适配器,另一端是与仿真器相连的数字接口,但这种解 决方案实施起来有一定的难度。首先,硬件的制造成本很高,并且需要较长的开发周期。向一个实际芯片问世后就失去用处的原型投入大量的人力物力是毫无价值 的。
其次,针对以太网、光纤信道或ATM等不同的网络接口需要设计不同的仿真电路,因此每个被测试的接口都需要不同的电路板。
第三,接口板上还需要用到缓冲器来存储因网络速度太快仿真器不能及时处理突发数据的问题。这些缓冲器将这些分组数据储存好后 再以较慢的速度送给仿真器。而管理这些缓冲器还需要使用相当复杂的状态机,这会给硬件实现带来很大的困难。此外,一旦接口板设计好后缓冲器的最大容量也就 固定下来了,今后要扩展的话还需要重新设计电路板。
而下面的软件解决方案能更好地解决这一速度失配问题。此时被仿真的网络设备需要通过一台运行某种速度匹配软件的标准电脑再与 网络连接。仿真器则通过简单的并行口线与标准电脑的并行口相连,电脑与网络的连接则是通过标准的网络接口卡(NIC)。这种速度匹配软件不仅能够处理使网 络保持畅通的所有底层握手协议,也能正确处理并行口上的低层接口信号,从而使仿真器得以正确运行。速度匹配软件将来自于网络的数据包缓存于电脑内存中,因 此再大的突发数据包也不会丢失。缓存于电脑内存中的数据包再以较慢的速度发送给仿真器,此时的存储管理是由电脑上的操作系统完成的,因此缓存容量可以与电 脑的RAM容量一样大,需要的话甚至可以使用操作系统的虚拟内存将数据包存放在磁盘上。
这种成熟的内存管理技术用硬件实现是相当困难的,并且成本很高,但用软件实现却相当容易。
速度匹配软件如同各种应用软件那样运行于操作系统平台之上(图1)。通常一个应用程序访问硬件时需要调用操作系统的应用程序 接口(API)。但速度匹配软件却不同,它可以直接控制并行口和网卡的驱动程序。这样,速度匹配软件就能独立于操作系统,并利用经过完整测试的硬件驱动程 序自由地访问数据。
软件方面的注意事项
使用速度匹配软件时要注意以下几个问题。首先是与被仿真设备的接口问题。并行口是非常好的一个接口,它简单通用,几乎每台电 脑上都有,但也有许多限制。第一,并行口的最大吞吐量理论上是2Mbps,但由于端口服务开销的存在,要达到这一速率是不可能的。虽然可以使用更快的 SCSI或USB等接口,但它们相对都较复杂,并且这些接口的物理层要求网络设备原型上有专门的收发器,因此会造成额外的硬件设计与调试开销。另外,这些 接口的协议比较复杂,也即意味着原型中用来在这些接口上收发数据包的逻辑设计与调试会变得更加困难。因此采用这些接口会减弱软件解决方案所带来的优势。
专用的高速并行口也许是一种更好的选择。目前已有多家公司在出售可以插入电脑或安装在PCMCIA卡上的快速宽总线并行口卡。从电路与协议角度看这些快速并行口仍属于简单类型的接口,只是数据总线变成了16位或32位宽,但它们的吞吐量却可以达到标准并行口的2倍或4倍。
当采用电脑上的并行口进行连接时,要注意并行口有好几种类型,包括双向、增强型并行口(EPP)和扩展功能并行口 (ECP)。这些并行口的协议是用硬件控制的,因此具体能够提供的协议与所用的芯片有关。在许多情况下,用户需要改变CMOS设置来启动某个特殊的并行口 协议。许多高级的协议都包含有不能变更的超时设定(timeout)。如果原型网络设备不能及时响应,并行口芯片就会超时,从而导致字节丢失。用户一般可 以通过直接操作信号来创建不包含超时设定的自定义并行口协议。不过在任何情况下以这样低的层次访问并行口都需要用到能够访问操作系统内核的代码,虽然生成 这段代码是可能的,但不同的操作系统代码是不一样的,有时会相当困难,因此可移植性较差。
网络方面的注意事项
在仿真系统的网络侧要确保关闭了电脑上的所有网络进程,进行仿真时人们都不希望来回传送的任何数据包被电脑上的操作系统所截 获。有时也会有难以关闭的低层活动网络进程,这种情况的一个典型症状是出现不知从哪里冒出来的数据包,这些数据包会被发送给原型或网络。当这种情况发生 时,意味着有些后台任务正在侦测网络,最好是关闭所有的后台任务。
下面用硬件仿真器实现网桥来举例说明速度匹配软件技术的应用。该网桥以点到点的网络配置形式连接二台PC机PC1和 PC2。PC1和PC2通过两个独立的PC连接到仿真器的输入输出端口,每个PC上都运行有速度匹配软件。对PC1来说,与PC2是直接相连的,中间运行 速度匹配软件的PC或仿真器是透明的,看不见的,PC2也同样如此。文件可以通过中间仿真的网桥在PC1与PC2间直接传送。
上述的网桥可以用Verilog语言编写,图2给出了网桥的示意图。来自于两个转接PC并行口的数据包被速度匹配软件转换 成专为并行口优化过的协议,然后通过PC并行口送给仿真器。数据包到达仿真器后被装载进容量为1,514字节的缓冲器(FIFO的一部分)。1,514是 以太网标准中规定的最大数据包长度。
不幸的是,小于最大尺寸的数据包不会用完所有的字节,从而导致仿真器内存的利用率非常低。然而,如前所述,用Verilog编写的硬件方式的内存管理要比软件管理困难复杂得多。因此创建这种简化的FIFO结构可以降低复杂性,从而降低整体开发时间。
当数据经过FIFO后再在另外一端读出来,这时的数据仍是RMII协议规格,因此需要转换成速度匹配软件使用的非标准并行口协议,然后送给另外一台PC机。
还有一些状态寄存器没有显示在图2中。PC机可以通过并行口访问到这些状态寄存器,PC上的速度匹配软件通过这些状态寄存器 可以知道FIFO是满的还是空的、可以读还是可以写。这样速度匹配软件就能了解到网桥的状态,抑制数据包的传送,从而使网桥变得更有效率。网络协议允许不 会引起严重后果的数据包丢失,但尽可能少丢包是设计的最终目标。图2中没有显示的内容还包括控制两个接口数据包读写的状态机以及转换数据协议所需的逻辑。