浅谈SoC模块级与系统级的验证

2012-01-16 07:47叶琼茹杨冠鲁
张家口职业技术学院学报 2012年1期
关键词:参考模型控制器模块

叶琼茹,杨冠鲁

(1.黎明职业大学机电工程系福建泉州362000;2.华侨大学信息科学与工程学院福建泉州362021)

浅谈SoC模块级与系统级的验证

叶琼茹1,杨冠鲁2

(1.黎明职业大学机电工程系福建泉州362000;2.华侨大学信息科学与工程学院福建泉州362021)

SoC芯片通常包含有复杂的数据通路,对复杂的数据通路的验证非常具有挑战性。无线通信SoC中包括很多功能模块,为了验证其复杂的数据通路的正确性,需要对每个功能模块进行模块级的验证。由于SoC验证已经成为整个流程中的重心,所以努力研发新的验证方法及设备,不断完善SoC验证计划和平台是当前的主要任务。以SD控制器和芯片系统(SoC)为例,探讨SoC模块级和系统级的验证,先确定验证策略并编写测试计划,再创建测试平台,最后对复杂的数据进行测试。

SoC模块级;SoC系统级;SD控制器;验证

引言

现今的SoC芯片通常包含有复杂的数据通路(datapath),尤其是音视频、图象处理等数字信号处理系统。如何检查数据通路的正确性,常常让验证人员头疼。数据信号之间和信号前后时序的相关性比较少或者难以表示,所以,对复杂数据通路的验证非常具有挑战性。幸运的是,在RTL设计前一般进行算法的实现评估,比如开发定点模型,或者数据通路模型。基于这些模型,验证人员可以很容易开发出用于仿真的参考模型。将参考模型与RTL一起仿真并实时地进行比较,这就是基于参考模型的验证方法。它是对复杂数据通路最有效的验证方法。[1]

无线通信SoC中包括很多系统和功能模块,每个系统和功能模块都需要进行模块级的验证。本文初步探讨一下SoC模块级和系统级的验证问题。

1 SoC的验证策略概述

验证技术的选择,是需要全面考虑、权衡的,并没有一个简单、同一的规则。不同的设计,需要不同的验证方法。但是,经过不断积累和沉淀,验证策略也存在一些应该遵守的原则:[2][3]

(1)自底而上的验证流程。一般,先做模块级验证,再做顶层验证,最后做系统级的数模联合仿真。对于复杂的系统,在做顶层验证前,可能会插入子系统级的验证,这尤其适合不同办公地点的合作。模块级验证,关注该模块的全部功能以及代码和功能覆盖率(基本上希望达到100%的覆盖);而顶层验证侧重于各模块的连接和功能实现时的配合;数模联合仿真常常只关注于数字和模拟部分的连线和相关逻辑的配合。这种自底而上的验证流程,一层层地保证功能的准确,因而效率比较高,容易发现和定位错误。

(2)尽量提高测试平台和测试激励的重用性。传统的基于Verilog的验证方法,重用性比较差,常常模块级的测试平台和激励很难用到顶层验证中去。如今的主流方法,如VMM和OVM,在重用性上有了极大的改善。通过以下讲述,读者能体会到如何重用测试平台。

(3)先做测试计划,再做具体仿真。在测试计划中,首先会根据设计规范详细地列出需要测试的功能点(常常称为check-list)。这不仅是验证工作完成的依据,也方便定义功能覆盖点。

(4)尽量做到自动检查行为的正确性。一般,对于时序关系,采用断言比较适合;而对于数据通路,采用行为参考模型比较适合。

2 SoC模块级的验证

2.1 SoC模块级的验证流程

功能验证具有其基本的流程,与传统的验证流程相似,如图1所示。

第1步是确定验证策略并编写测试计划。验证策略一般包括方法的选择(是采用随机测试还是直接测试,需不需要参考模型,要不要断言等)、语言的选择(SystemVerilog还是SystemC,断言是SVA还是PSL,参考模型是否需要DPI等)、仿真工具的选择(工具各有特色:选择了VMM就最好选择VCS,使用OVM则可选Mentor的QuestaSim也可选Cadence的Incisive),以及编程风格的定义等。

图1 功能验证的流程图

众所周知,EDA软件价格非常昂贵,一般公司只有一两种仿真工具。所以,通常是结合仿真工具和设计的特点来选择相应的验证方法,比如控制逻辑常常采用断言,而数据比较则一般需要参考模型。确定了验证方法,就比较容易选择语言;语言一经选定,编程风格和规范才能确定。

确定了验证策略所有细节,就需要编写测试计划。这是对设计的功能细化,即将设计细分为一条条的子功能,以便对验证工作进行核查。需要注意的是,测试计划需要包括一些特殊情况,比如输入了非法(不允许)的激励等。[2][3]

第2步是创建验证平台。验证平台包括测试平台(testbench)和仿真脚本(script)两部分。测试平台根据验证策略所定的验证方法,采用所选择的语言进行编写。而仿真脚本是基于仿真器的测试管理工具,一般包括仿真环境的设置、仿真参数、仿真结果的分析和管理等。仿真脚本非常重要,它可以实现测试的自动化、批量处理,是仿真效率的保证之一。

第3步是编写测试激励并进行仿真。一般的验证是随机测试和直接测试结合,一些特殊的激励(常称为边际情况)需要直接测试。激励编写好了就可以进行仿真,以检查设计和分析覆盖率情况。

如果仿真发现错误(bug),则一般需要通过波形文件(waveform)来分析和定位错误,然后再修改相应的RTL设计。如果没有错误,则合并覆盖率并看看是否达到预设目标值。一旦达到了,就可以编写验证报告——验证完成。反之,覆盖率不够,一般也是通过工具分析哪些部分没有覆盖到,然后编写一些直接测试激励来提高覆盖率。

2.2 SD控制器的验证策略

SD卡是一种存储器。众所周知,存储器的访问是非常随机的,可能是连续的多次读写,也可能是单次读写,还可能读写交替等等。正因为这种随机性,验证也最好采用带约束的随机测试方法。既然是随机测试,就需要数据的自动比较,才能让验证自动化。[4]这样,SD控制器的验证策略如下:

(1)随机产生激励,激励主要是读写访问的参数:方向、地址、数据、次数等;

(2)采用记分板(Scoreboard)实现数据的自动比较;

(3)功能覆盖率驱动。

2.3 SD控制器的测试计划

根据SD控制器的功能和设计规范,可以列举出其各个测试项,如下表1 所示:[5]

表 1SD控制器的测试列表

2.4 SD控制器的测试平台

SD控制器在Wishbone总线上是一个从设备,所以,需要一个Wishbone的主设备模型与之相连,以构成一个Wishbone最小系统。其测试平台,如图2所示:激励生成器(wgen)不断随机产生出不同的寄存器配置;通过Wishbone主设备行为模型(wb_mst)写入给SD控制器;该控制器产生相应的命令通过SPI总线发给SD卡行为模型。记分板负责进行数据的比较;断言(SVA)实时地检测定时器的行为是否符合规范;仿真工具也实时地计算着覆盖率,并反馈给激励生成器以决定是否继续产生激励。[6]

图 2SD控制器的测试平台

3 SoC系统级的验证

随着设计规模的不断扩大,片上系统(SoC)也越来越复杂。由于大量IP核的存在,设计可以重用这些IP核而大大简化,高效率、具有可重用性的验证方法对SoC设计尤其重要。现在详细讲解一下如何结合各种验证方法,来组建一个可重用的验证平台。

3.1 SoC系统级的测试计划

被测的SoC是一个基于Wishbone的无线通信系统,它包含了2个主设备和6个从设备。对应Wishbone总线,传输总是由主设备发起,而且这两个主设备均为处理器性质;也就是说,它们具有几乎相同的地位,都可以访问6个从设备。这样,我们将验证分为3个阶段:

第1阶段,主设备只接微处理器的行为模型。其目的是,验证Wishbone总线结构和各从设备连接的正确性。

第2阶段,微处理器由一个Wishbone主设备行为模型代替。其目的是验证Wishbone的仲裁器以及两主设备协同工作情况。

第3阶段,连接真正的微处理器。其目的是,软硬件协同仿真以模拟真实的系统。

这3阶段中,第1阶段任务比较重,随机化测试为主,将验证SoC的大部分功能,确保系统的连接正确;第2阶段比较难,除了基本的随机化测试,还需要编写部分的直接测试激励,以保证覆盖率;第3阶段比较简单,主要是完成软件和硬件的协同仿真流程,功能方面,只需测试一些经典功能的例子。[6]

表2 无线通信SoC的测试列表

3.2 SoC系统级的测试平台

与设计相似,SoC的顶层验证像搭积木那样,把模块级的测试组件连接起来,构成一个完整的测试平台,如图3所示:

图3 无线通信SoC系统级验证平台框图

该测试平台支持所有阶段的验证,在不同阶段,启动不同的激励生成器即可。

4 总结

随着半导体制造技术不断、快速的发展,作为便携式的存储器,SD卡发展非常迅速,其应用也越来越广泛。特别是现在精细到微纳米工艺后,SoC系统的开发更容易出现信号不完整、设计不完备等问题。关于SoC芯片数据通路的正确性,要在短时间内对其进行验证是一项非常艰巨的任务。[2]SoC验证已经成为整个流程中的重心。本文重点讲述如何基于SystemVerilog、结合多种验证技术进行SD控制器的模块级和SoC系统级的验证,介绍了验证策略、验证流程以及测试计划和测试平台。今后还需要努力研发新的验证方法及设备,并不断完善SoC验证计划和平台。因此,SoC的验证任务越来越具有挑战性。

[1]王欣(译).高级验证方法学[M].西安:电子科技大学出版社,2007.20-27.

[2]赵鹏,朱正学,李金才.SoC系统开发从实践到提高[M].北京:中国电力出版社,2007.46-52.

[3]郭兵,沈艳,林永宏,韩磊.SoC技术原理与应用[M].北京:清华大学出版社,2006.68-81.

[4]王道宪,刘丽.SoC原理、实现与应用[M].北京:国防工业出版社,2005.34-39.

[5]柴远波.现代SoC设计技术[M].北京:电子工业出版社,2009.102-114.

[6]郭炜,郭筝,谢憧.SoC设计方法与实现[M].北京:电子工业出版社,2007.43-57.

On the SoC Module Level and System Level Validation

YE Qiong-ru1,YANG Guan-lu2
(1.Information science and engineering college of Huaqiao University,Fujian,Quanzhou 362000;2.Department of Electronics Engineering,Liming Vocational University,Fujian,Quanzhou 362021)

SoC chip usually contains complex data access,which is very challenging for complex data access validation.Wireless communication SoC includes many function modules.In order to verify the correctness of the complex path of data,we need to verify each functional module at the module level.Since SoC verification has become the center of gravity in the process,it is the main task to develop new validation methods and equipment and constantly improve the SoC verification plan and platform.This essay,taking SD controller and chip system(SoC)as an example,showing SoC module level and system level validation,determines validation strategy and works out a test plan before creating test platform and testing the complex data.

SoC module level;SoC system level;SD controller;validation

TN47;TN407

A

1008-8156(2012)01-0057-04

2012-03-01

2012-03-12

叶琼茹(1984-),女,福建泉州人,黎明职业大学机电工程系助教,学士。研究方向:电子与通信专业教学与研究。

本文系福建省自然科学基金资助项目(项目编号:2009J01257)、厦门市科技计划项目(项目编号:3502Z20093027)的研究成果。

猜你喜欢
参考模型控制器模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
工商业IC卡控制器改造为物联网控制器实践
适应性学习支持系统参考模型研究现状及发展趋势
基于环境的军事信息系统需求参考模型
适应性学习系统的参考模型对比研究
语义网络P2P参考模型的查询过程构建
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器