目前,因特网应用正呈现爆炸式增长的趋势,数据和语音合并势在必行,网络芯片的设计验证已经成为加快网络芯片上市的主要瓶颈。为了实现完全测试,必须对路由信息包进行优先级处理并增加信息包长度,这样必然增加仿真时间。RCC协处理器技术提供了易用、快捷、完全的流线型验证流程。本文向中国集成电路设计工程师介绍可重配置计算(RCC)协处理器验证技术。
Eric Shieh
Shieh Resources咨询公司
目前,为了将语音和数据集成到一个数据网络中,网络供应商正努力提高端口密度、增大端口带宽、增大信息包长度并提供先进的通信管制功能,以便提高网络数据服务产品的附加值。为此,要设计具备上述所有功能的网络芯片,就必须增加测试项目来验证日益增加的各个功能组,从而使单个和回归测试项目的仿真时间大为增加。
在提高仿真速度的所有方法中,RCC协处理器技术是加速设计验证的最有力工具,它使用方便,能够沿用现有的设计方法和动态校验、热交换以及波形提取等调试工具,因而是大型系统级芯片(SoC)设计验证的明智选择。
集成度等同于复杂性
过去,网络器件相对都比较简单,它由一个网络端口、一个存储端口、一个CPU配置端口以及一个或多个专有系统端口构成。当网络数据出现时,器件的主要功能是将网络数据发送到系统端口。通常,网络器件配备一个FIFO存储器按顺序将数据从网络传送到系统。这些器件的验证过程简单,通过接口以各种速率产生和发送长度不同的信息包,并保证由系统输出的信息包在正确的目的地端口能够完整无缺地接收。
一个基于SoC技术的增强性网络系统芯片的组成部分可能包括:若干具有多个队列的网络端口、一个具有链接表结构的大型快速存储端口、高级IP安全功能(Ipsec)、一个系统或光纤端口以及一个或多个嵌入式处理器或DSP。过去,这种系统可能由多家设计公司或多个设计团队开发,然后由网络供应商将多个芯片集成到电路板上,每个设计团队或公司分别设计和验证每种芯片。利用高密SoC技术,现在可以把上述所有组件集成到单芯片上,因而网络供应商可以自行开发单个模块或购买IP来设计芯片,但是设计完成之后,必须验证所有组件和接口的功能。
多网络端口和高带宽要求意味着需要更高级更复杂的内存管理子系统,该子系统管理的功能包括:多队列和多数据路径、多任务控制/多数据缓冲区描述信息、循环缓冲区以及其他功能。具备数据加密和压缩的IP安全结构要集成到数据路径之中,就像用数据流算法来减少处理时间和延迟一样,其结构之复杂要求必须验证所有的内存访问组合以及数据路径。
此外,嵌入式处理器子系统的应用也在增加。设计人员对嵌入式处理器进行编程,来完成系统管理和接口、控制信息包的解析、确定优先级以及确保信息包进入恰当的队列。在可编程处理器中,要采用协同验证方法,它不仅需要进行硬件验证,还要利用尽可能多的应用程序代码进行软件仿真。由于软件和硬件紧密依存,如果芯片的功能或接口未得到充分验证,那么该芯片就有可能报废,或者达不到预期的功能,或者削弱系统的性能。
增加功能验证覆盖的方法之一是采用随机仿真,该方法尽可能地将设计和测试基准的参数进行随机处理,以便找到过去未曾识别到的情形。大多数的随机仿真利用由HDL语言程序设计的随机数发生器,为确保随机仿真具备真正的随机性,需要执行大量重复的仿真。
设计验证的新方法
网络供应商正在其芯片中执行数据流量生成算法以传送可区分的服务类型。保护带宽和服务质量是下一代系统的基本性能。实现保护带宽的方法之一是自适应信息包标记,该方法根据网络支持的情况,采用优先级技术对经过适当标记的信息包进行处理,并依靠网络边缘的智能传输控制机制实现所要求的数据吞吐量。与随机早期终止(RED)算法结合,队列管理机制在区别服务方面取得了巨大进展。当队列长度超过某一个阈值时,RED方法按照给定的概率随机终止信息包的传输。终止概率取决于队列长度和最后一个信息包终止传输所花费的时间。由于分配给经过标记的信息包的终止概率小于未经标记的信息包,队列管理机制优先处理经过标记的信息包,优先级较高的信息包能获得保护带宽。
传统的验证技术不包括所有可能的工作条件,网络算法如此高级,使得设计验证面临更大的困难。过去,验证技术对单独的设计功能独立测试,并且在多个工作站上同时进行验证,许多网络公司已经采用这种验证技术在工作站农场上并行执行多个仿真。可是,随着RED和自适应信息包标记等更高级算法的普及应用,仿真时间要比过去长得多才能验证所实现的算法之功效,并发现过去由随机仿真难以识别的故障。
收敛时间
与纯数据网络相比,话音网络对信息包大小的要求更高。然而,对于话音和数据合一网络,信息包大小的动态变化取决于发送的信息类型。压缩话音信息包的清晰度在一定程度上依赖于信息包丢失率和等待迟到信息包所花费的时间。可接受的信息包丢失率是信息包大小的函数。对于包含20ms话音数据的极小信息包,丢失50%的话音是可以接受的。在一个具有自适应拥塞控制的因特网协议网络中,信息包大小可以根据网络状态调整,另一方面,信息包呈现增大的趋势,这样可以降低处理开销,并增加大型数据包的传输吞吐量。使用较长数据信息包和压缩话音信息包进行仿真,可以验证器件在两个极端情况下的行为,同时需要更多仿真时间和更多计算资源。
验证吞吐量难以提高的原因很多,它们包括:系统复杂度和验证要求的不断增加;随机仿真和回归仿真的运行更长;更新的高级算法不断涌现;嵌入式处理器协同验证和大型信息包的应用等。在最快的工作站中采用最快的编译仿真器,系统级仿真每秒占用2到10个机器周期是正常的。在不改变设计方法的条件下,任何提高仿真性能的方法都是适当的。
经过加速的仿真方法
硬件系统能够把仿真速度提高一个数量级,这些硬件系统包括:硬件模拟、硬件加速和可重配置计算。
在可重配置计算协处理器技术中,所采用的协处理器包含可对每个设计专门配置的巨量并行计算单元结构,一个计算单元就是专门执行一个函数运算的小型精简处理器,例如由Verilog RTL的“case”和“if”语句构成的仿真。
经过评估各种加速仿真技术,我们决定选用RCC技术,其运行环境是Axis系统公司提供的Xcite软件和Sun微系统公司提供的工作站,Xcite软件支持软件和硬件验证并提供透明接入RCC技术的支持。Xcite软件工具还包含运行在Sun微处理器上的已编译仿真器,从而可运行和验证行为级Verilog和C语言应用程序,并利用RCC技术加速RTL和门级验证。
验证实例是用于吉比交换路由器的百万门级Verilog SoC设计。该设计包含500Kb存储器。逻辑模块由大约一百万个ASIC门构成,内部包括若干门控时钟电路和9个物理时钟。设计采用Verilog RTL形式描述,通过一个测试基准在行为级Verilog和定制C应用程序代码上仿真芯片,行为级Verilog和定制C应用程序代码之间通过Verilog编程设计语言接口(PLI)链接。
仿真是关键环节
在编写Verilog代码之前,要用C语言编写仿真模型来仿真网络路由器的体系结构。而在硬件设计之前,要用C参考模型来仿真和验证结构的实现,这包括数据队列数、加密与压缩方法以及信息包优先处理方法。通过全模型的应用,结构仿真就可以最小软保护带宽验证预期的信息包延迟,此外,结构仿真也可以根据队列长度终止的随机信息包来测试RED。
由于本设计的复杂度很高,结构C模型可作为预期结果的参考模型,因此,C模型要集成到仿真过程之中,以便在仿真失配发生时检测失配。要从C环境产生所有的测试项目,并将激励施加到关键C模型和Verilog RTL设计上。
为了识别调试失配,结构C模型包含与硬件模型匹配的内部状态。通过比较设计内部状态可以检测出失配的原因。为了确定RTL仿真出错的原因,必须捕获RTL仿真的所有关键的内部状态。
在使用RCC仿真加速技术之前,通常要将仿真工作分配给由二十多个Sun工作站和服务器构成的计算农场。有时需要几周时间,仿真才能检测出设计错误,到那时,RTL设计的原始仿真模型通常已经发生了很大变化,因而不得不重新仿真最新的设计或者修正设计,这个过程需要花费数周的仿真时间以便验证所做的变化是否正确。显然,提高仿真速度将提高设计效率。
优化RTL设计
在RTL设计中,设计人员插入综合控制指令,以指导逻辑综合门级编译过程,取得最佳性能和最小门数量,然而,这些综合指令并不是仿真模型,它们只是RTL设计注释。结果,当比较RTL仿真和门级仿真结果时,额外的综合控制指令常常导致仿真失配。
为了在门级运行逻辑综合或者在仿真之前尽早识别和隔离RTL级的设计问题,要采用新的分类工具组,以便在仿真时执行动态核查,例如采用Axis公司的Xsim Xaminer工具。动态核查工具可以在RTL仿真时精确查找潜在的设计实现问题。与静态设计核查相比,RTL动态核查工具具备根据综合控制指令和自动检测仿真结果差异的内在智能特性。动态核查还可以检测过去静态工具不易发现的设计问题。
Xsim Xaminer工具组便于检测并纠正并行事件冲突、完全事件冲突、设计竞争以及未经测试的复位序列,所有检测都在RTL级完成。通过执行动态核查工具,可以在RTL级隔离潜在的门级问题。这样,就可在设计早期探测设计实现问题,减少综合迭代次数,从而降低成本。
仿真加速
将设计编译到RCC技术的过程很简单,因为设计仿真已经在Synopsys VCS仿真环境完成。经过若干较小的修改和设置,不用两个小时就能够完成编译设计。在此期间,RCC编译器自动地将RTL和门组件映射为RCC计算元件,在本地编译仿真器和RCC技术之间设置适当的通信序列,并对所有可编程逻辑器件(PLD)执行布局和布线。
RCC是一个弥补静态时序分析阱的功能仿真过程,可以将功能验证和时序验证分为两个单独的步骤,进而集中精力首先获得正确的RTL功能,这是设计过程中耗时最多的部分。
过去的硬件辅助仿真之所以难用,是因为缺乏调试工具以及设置过程冗长。相比之下,RCC仿真技术易于使用,调试工具先进。RCC容许在仿真时将源于编译仿真器的仿真状态热交换到RCC。热交换性能的两个最佳功能是快速仿真执行和全电路调试。有了热交换功能,就可以在编译仿真器内仿真复位序列。在复位完成后,将仿真状态交换到RCC,然后在RCC中加速仿真,最后,将仿真状态从RCC交换到编译仿真器进行设计调试。
RCC还可以压缩所有的节点变化,并在仿真过程的任何时域提取波形文件。利用这些功能,可以尽可能快地仿真设计错误,并在不必重新启动仿真过程的条件下,观测所有节点的变化。波形的提取简单快捷,仿真和磁盘的开销很少。例如,仿真进行五小时之后发现设计错误,此时,不需要重新开始仿真,可以在任意时间范围和设计层内提取所有节点的波形变化。
RCC技术能够极大地提高仿真吞吐量。采用编译仿真器可以达到最大每秒200个时钟周期,相比之下,RCC技术可以达到每秒12,000个时钟周期(速度提高60倍)。
总之,验证是网络芯片设计面临的最大的设计瓶颈。为了实现完全测试,必须对路由信息包进行优先级处理并增加信息包长度,这样必然增加仿真时间。RCC协处理器技术提供了易用、快捷、完全的流线型验证流程。
作者简介:
作者Eric Shieh是Shieh Resources咨询公司的负责人,专门从事网络器件验证咨询业务。