原创 VStation硬件辅助验证平台在高性能CPU功能验证中的应用

2007-11-22 18:07 2396 7 7 分类: 软件与OS
现代集成电路设计中,半导体制造工艺已逐渐向亚微米、深亚微米发展,90纳米、65纳米工艺已经成熟应用于生产,基于IP复用技术在SoC设计中广泛采用,这促使芯片的规模越来越大,功能也日益复杂。为了保证所设计芯片功能的正确性,需要投入比以往更多的时间和人力,难度也大幅增加。功能验证就是确认所进行的芯片设计是否达到预先设定功能要求的过程。而目前功能验证能力已经远远落后于设计能力,功能验证正成为大规模芯片设计的瓶颈。如何建立一个高效的功能验证环境是IC设计和验证领域应该重视和研究的课题。

点击看大图



  传统的验证技术中,最重要的就是基于仿真的验证。过去主要的仿真工作都是在软件仿真器上实现的,当被验证设计的规模变得很大,到达上百万门甚至上千万门时,测试向量数量也变得巨大,用纯软件仿真器进行仿真验证,将会耗用大量的验证时间,特别是对门级代码进行仿真验证时,所需要的验证时间将会长得超过项目所能容许的时间。同时,用软件模型来模拟目标系统,并不一定总是准确,有时输入输出物理问题是很难用软件来模拟的,这时候我们需要借助硬件进行仿真加速验证。硬件加速仿真的目的是利用物理硬件高速运行的特点消除软件仿真器导致的


仿真性能瓶颈,使得系统仿真的速度得到成千上万倍的提高,并可以模拟实际环境提高验证的准确性。

  同济大学微电子中心自主研发的的64位CPU具有高性能、低功耗的特点,其设计规模比较大,应用于功能验证的工作中。在验证环节中,我们使用了业界最先进的功能验证平台之一:Mentor Graphics的VStation Pro硬件辅助验证平台,在保证了设计的功能正确性基础上,大大缩短了验证周期。

  VStation硬件辅助验证平台

  Mentor Graphics公司高性能VStation硬件加速仿真系统能为各种复杂设计提供全面的、功能强大的验证环境,该平台提供业界领先的满足当今以及将来复杂SoC验证要求的性能和容量。VStation基于成熟的VirtualWires技术,提供快速、高效的In-Circuit验证,高达1MHz的仿真速度,支持VHDL、Verilog、以及混合语言的输入,高度可靠和自动的编译器,具有友好的图形界面,任意时刻、所有信号100%可见性,可加载任意长度和宽度的测试向量。与软件模拟相比,VStation可以在更短的时间内运行大量的随机测试去找到设计中隐藏的问题,它是以门级实现逻辑功能,并行执行设计代码,更接近真实芯片,更容易发现竞争冒险等错误,而且它可以实现芯片的系统级验证,可以更快地完成回归测试。目前,VStation Pro是其第六代产品,最大可以支持1.2亿万门的设计。

  VStation硬件辅助验证平台支持灵活的使用模式,有Co-Simulation、Co-Modeling、ICE三种模式(如图1)。Co-Simulation允许HDL行为级testbench在workstation端的软件仿真器运行,可综合部分的testbench及DUT(Design Under Test)综合进Vstation硬件加速器,结合了软件模拟和硬件仿真。在进行仿真的时候,workstation端的软件仿真器通过HDL_Link的接口跟Vstation硬件加速器上的设计进行数据交互,完成软件模拟。Vstation支持业界流行的软件仿真器,如Cadence公司的NC-Verilog、Verilog-XL,Synopsys公司的VCS,还有Mentor的ModelSim。这个模式使用简单,并可以提供7倍~20倍的加速。Co-Modeling是一种基于事务级的验证方法,支持HVL(High-Level Verification Language,例如C/C++, System C,System Verilog)编写的testbench和Vstation硬件加速器交互仿真,消除了软件仿真器和Vstation硬件加速器交互导致的性能瓶颈,通过可综合的事务驱动器 (Transator)实现事务级到信号级的数据交换,进而可以把仿真速度提高100倍~10000倍。Co-Modeling有助于验证工程师进行真正的系统级验证工作,诸如嵌入式OS启动,嵌入式应用软件运行和各种数据包的执行。ICE(In-Circuit Emualtion)模式可以通过使用搭建目标电路板(Target Board)为被测设计提供激励,更进一步模拟实际运行环境,实现接近实际电路的运行速度。


点击看大图



  VStation以其灵活的使用模式,快速运行速度,强大的调试能力,成为3G无线,多媒体图像和嵌入式处理器等复杂SoC验证工作的最佳选择。


  VStation的基本验证流程

  VirtuaLogic软件是VStation的一个集成开发和调试环境,它为支持Co-simulation的HDL-Link软件和支持Co-modeling的TBX软件提供了管理和使用VStation的平台。其集成了RTL Compiler(综合工具)、VirtuaLogic Compiler(Mentor Graphics专利技术Virtual Wires实现工具)、后端的布局布线管理器和Virtual probe分析工具。


VirtuaLogic支持脚本和GUI两种开发方式,在此我们以VirtuaLogic GUI为基础介绍VStation的基本验证流程。其包括设计输入、信号设定、编译、设置Trigger、运行仿真与调试。

  第一步,设计输入。这一步分析RTL和行为级的DUT,检查语法和语义错误,为编译做准备。VStation支持VHDL、Verilog以及混合语言的RTL设计,也支持门级的网表,对于门级网表只要在技术库映射处指定相应厂家的标准单元库即可。原设计中的memory经过编译之后映射到VStation阵列板上的SRAM,用户可以根据所给的规范编写memory的行为级代码,软件能够自动推断并且映射到SRAM上,也可以在VirtuaLogic的Memory窗口中手动设定。VStation


支持异步时钟设计,保证了模型的精确性和验证的正确性;在时序的设定过程中,用户可以根据实际情况指定不同的时钟域,设置接口信号与某个时钟域的时序关系,以帮助编译器更好地为设计生成一个时序优化的正确模型。

  第二步,信号设定。默认条件下通过状态重现技术,100%信号可见性,只有在设置Trigger中使用到的信号才需明确指定为triggerable或者probed&triggerable。为了提高调试效率和对特定信号的捕获,VStation也支持用户明确指定某些信号无需状态重现而直接可见。

  第三步,编译,分三个阶段。第一阶段综合,RTL Compiler(RTLC)将DUT的 RTL代码编译生成一个包含Verilog网表的数据库和一个RTL的调试数据库。第二阶段优化, VirtuaLogic(Vsyn Compiler)采用virtual wires的专利技术对网表进行基于时序的综合和连接综合,并把设计划分到各个FPGA资源中。第三阶段,FPGA Compiler(vtask)完成逻辑板上所有FPGA的布局布线工作,最终生成可以下载到VStation的比特文件,这个过程可以借助PC Farm来提高编译效率。

  第四步,设置Trigger。Trigger中用到的信号在信号设定时都必须要明确指定,当布局布线完成之后,所需要的信号就会出现在Trigger窗口。用户可以通过使用类HDL语言来编写Trigger的状态转移和触发条件,完成之后GUI会以状态机图来显示该trigger,使得trigger的设置更加直观,也便于修改;用户还可以根据自己需求设置Trigger的location参数获取不同位置的波形。

  第五步,仿真。这一步对VStation进行硬件设置并下载设计,最后开始仿真的过程。在Setup中设置好跟VStation相连的主机名,然后用Connect连接VStation,Load Design下载设计到仿真器中,在Enable IO成功之后,就可以Load&Run Trigger调用并运行我们的测试。仿真已经开始,当Trigger的条件满足时,仿真结束。对于大规模的SoC,需要有多个不同测试程序,针对SoC中的各种特性进行测试。

  第六步,调试分析。在trigger发生后,若测试程序返回正确结果,说明设计功能正确;若测试程序运行不正常,用户可以upload wave并做状态重现,把信号波形以fsdb或者vcd的格式保存下来作后调试。用户可以使用VirtuaLogic中集成的Debussy或者Virsim进行信号分析,查找设计存在的bug。


  VStation在高性能CPU功能验证上的应用

  同济大学微电子中心自主研发的的64位CPU应用于功能验证工作中。使用传统的软件仿真速度不理想,使用FPGA原型验证可调试性又比较差,所以我们采用了Mentor Graphics的VStation Pro硬件辅助验证平台,既提高了速度又提供了良好的调试界面,使我们的验证工作取得了事半功倍的效果。

  下面以64位CPU在VStation Pro中的一个验证特例介绍其应用过程。我们通过修改原来的Testbench,在memory中存放测试激励,期望输出和实际输出,实现一个自比较的验证环境,并在采用了Stand Alone使用模式。

  首先,我们导入设计的源代码,即CPU所有模块的RTL,以及可综合的testbench;指定相应类型的Memory,一类memory存放测试向量,只有读端口没有写端口,一类memory存放数据及中间结果,具有读/写端口;然后添加时钟域,时钟和设置信号时序关系。


设定信号时,我们选取设置Trigger需要的rstn、self_test、test_done、trace_error信号指定为probed&triggerable。其中rstn是复位信号,在复位信号给出后,芯片初始化,初始化完成以后信号self_test拉高表明测试可以开始,测试数据运行后进入自比较状态;自比较运行结束后,信号test_done会置为1,如果中间出错,信号trace_error就会置为1。

  然后,开始综合编译(rtlc),优化编译(vsyn),利用PC Farm配合做P&R(vtask)生成比特文件。在做vsyn的过程中,我们根据需求通过编写vmw.pod中约束顶层引脚的位置,并把clk和rstn绑定到VStation系统提供的user bits上,为整个运行环境提供运行时钟和复位控制信号。在下载运行前,按照测试目标编写好Trigger的理想触发和异常触发条件。

  最后,开始硬件仿真的步骤。首先在Setup中设置好跟Vstation相连的Workstation的hostname,在Memory Contents


查看要放入memory的内容(即测试向量和相关的数据)是否正确,然后点击Connect连接VStation,连接好以后,点击Load Design,下载设计和memory的内容到仿真器中,并根据需求设置运行时钟频率和User Bits;接着Load&Run Trigger下载和设置trigger,在Enable IO成功之后,用户通过使用user bit,trigger状态机就一步一步地进行下去,从初始复位到满足触发条件,仿真完成。

  在回归测试的过程中,我们可以采用脚本批量运行不同的测试向量。每次通过改写vmw.mem_contents文件,用Reload memory将需要的新向量放入memory中,然后Reload Design,就可以对设计做不同的测试。仿真完成后,可以upload waveform做状态重现,通过Debussy或者Virsim查看波形, 同时可以借助Path Browser查看到门级,进行查错和调试。状态重现保证了Vstation具有任意时刻所有信号的100%可见性,为我们分析和调试设计提供了巨大的能力。

  在高性能64位CPU的验证中,我们对整个芯片的不同功能的测试都使用了Vstation进行仿真加速,仿真速度是650kHz。与软件仿真比较,仿真加速结果如上表。

  由表格可以看出,使用VStation平台后,仿真速度提高了二十倍之多,在回归测试,系统验证中起到了关键的作用。


  结论

  在功能验证中,软件仿真随着芯片规模的增大,测试向量的增多,速度明显下降;使用FPGA原型来进行功能验证可以提供快速的运行速度,但不能提供很好的可调试性。而VStation可以大大缩短验证周期,并有友好的图形界面,方便调试,大容量,可以提供快速的仿真速度和良好的调试环境,综合了软件仿真和FPGA的优点,很好的填补了FPGA原型验证的高速、不易调试和软件仿真的可调试、低速之间的空白。

  在Mentor Graphics的Vstation Pro硬件辅助验证平台和其技术支持团队的帮助下,我们的功能验证工作快速高效,并在保证芯片功能正确性这非常重要的一环上,获得了满意的验证速度和结果。今后,我们还将在更多项目的验证中使用VStation,以保证我们的验证工作顺利而有效的进行。

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条