使用VIP加速SoC芯片验证流程


夏晶
海思半导体有限公司

摘要

随着半导体工艺的进步,设计人员可以使用的门级资源越来越丰富,SoC设计变得愈加复杂,产品Time-to-Market的压力逐渐增大,传统的验证方法已经无法很好地满足SoC芯片的验证需求。Synopsys公司基于VMT(Verification Modeling Technology)技术开发了VIP(Verification IP)。VIP包括大量方便、可靠的BFM(Bus Function Model),能够帮助验证人员对组成SoC的IP模块及系统进行功能验证,可以大大地缩短验证时间并提高功能覆盖率。
本文介绍了海思公司某消费类SoC芯片在验证过程中怎样使用VIP协助搭建验证环境,快速、高效地完成模块级、系统级的功能验证,并最终获得成功的实例。

1 引言

随着SoC芯片(System-on-Chip)技术的发展,功能仿真验证已经成为了其设计流程中的瓶颈,这一点在消费类芯片上表现得尤为突出。为了保证协议能够不断更新,增值功能能够不断增强,消费类芯片越来越多地使用带有嵌入式CPU的SoC架构来实现。消费类芯片数据流复杂、接口众多,其验证复杂度非常大,而消费类产品对上市时间又极其敏感,往往争夺的就是稍纵即逝的几个月的商机,这又要求芯片的验证工作能在更短的时间内完成。因此,选择一种更加高效的验证方法和流程就成为了解决消费类SoC芯片验证问题的关键。
VIP是Synopsys公司基于VMT技术开发的验证IP,属于Synopsys的DesignWare库,它包括了AMBA、PCI、USB、I2C等一系列消费类接口的BFM模型及Monitor模型。使用VIP可以帮助验证人员快速搭建Testbench,方便地构造激励,还能够通过一些监测特性获取验证所需要的各种信息。
本消费类SoC芯片(以下简称HiXXX)是海思半导体公司比较重要的消费类芯片项目。正是由于在该芯片的验证环节引入了Synopsys公司的VIP,其验证效率获得了很大的提高。

2 该SoC芯片基本结构及验证流程

HiXXX基本架构如图1所示。该芯片以ARM9处理器为核心,DSP为协处理器,包括多个业务逻辑模块,以及TIMER、VIC、DMAC、DDRC、UART、GPIO、I2C、SSP等丰富的外设。HiXXX使用AMBA2作为总线架构,其中AHB总线为多层架构,按Master可分为ARMI、ARMD、EXP三层独立的Shared Bus,各个Shared Bus通过Crossbar进行互联。APB总线则用以连接一些慢速外设。

Figure1 HiXXX结构框图

HiXXX采用多层次的验证流程对该芯片进行验证,从不同的角度使用不同的验证方法来保证芯片的正确性。在HiXXX验证流程中,涉及到VIP使用的包括模块验证和集成验证两个层次,如图2所示。海思的模块验证流程关注的核心是模块功能的正确性,要求由设计人员以外的验证人员以灰盒的方式通过总线接口充分验证模块的功能。海思的集成验证流程关注的模块互连验证,包括地址译码、中断、DMA连接等,同时还关注业务数据流相关的多Master并行操作的场景,以及一些极限情况。

Figure2 HiXXX模块验证及集成验证框图

和其他的SOC项目一样,在这两个层次的验证中,HiXXX具有如下的特点:1、IP数量多,且包含了多种协议接口;2、验证时间较短,构筑验证平台、模拟业务运行状况困难大;3、ARM公司提供的仿真模型需要包括底层软件在内的软件支持,软硬件联合验证效率较低;4、验证的完整性没有保证,需要支持总线协议全集的激励源和覆盖率统计机制;5、需要支持限定性随机激励,尽可能在SoC验证的早期阶段通过随机验证发现问题,解决问题;6、需要一个快速的仿真环境来确定系统性能是否能够满足应用的需求。基于以上的考虑,HiXXX选用了Synopsys的VIP,VIP提供的AMBA、USB、PCI等总线协议BFM模型和Monitor模型,较好地满足了我们的要求。

3 使用VIP快速搭建Testbench

编写BFM在验证过程中需要花费大量的时间,即使验证工程师在设计工程师疯狂编写RTL代码同时就开始Testbench的开发,也很难在RTL代码提交之前就完成BFM的编写,而且,最后那数以千行记的BFM代码,都是没有经过调试的,可能存在缺陷。VIP能够帮助验证人员快速搭建Testbench,它提供了一种开放的货架式的BFM供使用。这些BFM,不仅仅正确性是已经获得确认的,而且还提供了丰富、易用激励函数模型,为构造各种类型激励提供可能。
按照项目进度来看,以前编写BFM以及BFM Debug的流程都大大的缩短了,如图3所示,验证流程中红色线框所包括的进度被压缩了。相比以前的项目,HiXXX芯片验证环境在代码完成之前就已经搭好,并完成了初步的调试,这为芯片验证时间的缩短做出了重大的贡献。

Figure3 VIP 缩短验证时间

HiXXX典型的模块验证环境如图4所示,该Testbench用以验证自行设计的USB模块,在USB总线侧和AHB总线侧都使用了VIP模型。USB Host VIP功能比较完备,用以充分验证USB Device IP总线设计的正确性;AHB Master VIP主要完成总线读写功能;Scheduler为自己编写的BFM,主要完成Testcase的调度以及对中断、DMA信号的处理;Monitor包括USB Monitor和AHB Monitor,用以确定总线时序的正确性。可以看出,整个Testbench中的大部分组件都直接从VIP中获取,甚至整个Testbench的集成,都可以从VIP的Example中得到参考。验证的主要关注点就集中在Testcase的编写以及Scheduler模块的编写调试上,这为验证质量和进度都提供了很好的保障。

Figure4 用VIP搭建模块验证环境

HiXXX的集成验证环境如图5所示,集成验证首先关注的模块互连验证,包括总线互联、中断、DMA连接等,验证过程中需要保证平台相关的代码在整个验证流程中稳定不变,因此集成验证使用VIP都是嵌入在总线的Master和Slave接口上,如图中的业务模块和处理器。在集成验证时,业务模块和处理器都使用一个保留顶层接口的空壳(Wrapper),然后将VIP的Master和Slave在这个空壳中例化使用。这样对我们的验证有两个好处:1、在项目进度上,业务模块的代码通常不会在SoC集成验证之前就完成,但根据规格,一个包括接口信息的顶层是能够得到的,集成验证此时就可以超前完成;2、集成验证还关注的一些数据流相关的场景可以在验证中进行模拟,模拟的结果对业务模块的设计优化具有很好的参考价值。

Figure5 用VIP搭建模块验证环境

4 VIP激励的封装

验证的激励需要一个良好语言层次结构,我们将验证语言分为四层:功能层、指令层、传输层和信号层。信号层是环境的底层,基于特定协议驱动和采样接口信号;传输层基于固定的帧格式,例如AHB帧,实现帧的封装与比对;指令层则封装了底层的方法而形成Read、Write之类的命令供上层使用;功能层则基于不同的模块功能对基本命令再次封装成基于特定的模块的驱动函数,如DMAC的通道配置函数等,供TC应用。
VIP的信号层、传输层和指令层是被隐藏在编译后的OpenVera库和一个基于时序代码的壳中,面对用户的,是指令层的丰富、易用的激励函数。这种结构具有

很好的扩展性和重用性,上下关系的层次结构使得通讯只能在相邻两层之间发生,每一层都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。我们所需要做的,就是独立地在功能层建立面向事件和情景的函数封装库。在HiXXX中,我们使用了VIP的Verilog时序外壳,该外壳通过$vmc函数提供了函数调用接口,然后我们在SystemC中调用VIP函数编写了功能层的封装库。良好的函数封装保证了任何一层的调整对整个系统的影响都非常小,实际上,HiXXX在后期将Verilog外壳更换为VERA外壳时,系统的底层链接和高层函数都不受任何影响。

Figure6 VIP激励封装结构

VIP为指令层提供了大量丰富、易用激励函数,并支持Queue、Blocking、Stream等多种控制机制。通过SystemC对更高层次的数据结构的支持,在HiXXX中,我们很容易的实现了ahb_rand_xact、ahb_parallel_stream等函数,并基于这些函数构造了数量众多的向量和场景对系统进行了验证。

5 使用VIP进行Protocol检查

VIP Monitor可以检测验证传输是否满足总线规范,当仿真中的时序不满足总线规范时,Monitor会输出错误信息,从使用者的角度来看,此时的Monitor相当于一个基于总线协议的AIP(Assertion IP),使用者只需要将Monitor设置好,然后再构造具有足够覆盖率的测试向量来进行测试即可。在HiXXX芯片中,有大量基于各种总线协议的自行设计的IP模块,正是通过Monitor的协议检查,我们能够在仿真中很快发现总线接口上的Bug。此外,对Monitor检查的每一个协议特性,我们都可以认为是千锤百炼,为业界所公认的,因此,通过Monitor检查,能够让我们对这些自行设计的IP模块的总线协议的兼容性具有很强的信心。

6 VIP的信息机制

不得不提的是VIP的消息机制,这个常常被人遗忘的特性在HiXXX的集成验证中发挥了很重要的作用。在一个系统级的验证环境中,特别是通过随机特性构造业务数据流场景时,系统输出的信息可以说是纷繁复杂。什么问题是关键问题,什么问题需要优先处理,如果用肉眼从中获取我们想要的这些关键路径就如同大海捞针一样困难。所以我们需要一种好的消息机制,它要有统一的句法格式,易于识别,且便于通过脚本对关键信息进行提取和分析。
VIP的消息机制好就好在其所有BFM和Monitor都使用统一的消息格式,而且这种格式的消息通过脚本来提取可以说是比较方便的。因此,HiXXX验证平台中,我们选择了VIP的消息机制为标准,如图7所示,并且让我们自己的BFM和TC都遵从于这种消息格式,再通过脚本获取统计结果,来得到验证中最关键的信息。例如表1中所示,在模拟业务数据流的仿真中,Monitor报告ARMD在访问Slave0时的延迟多次超过16个AHB Cycle,这就表示某业务数据的QoS无法满足,可能需要调整仲裁,或增加Lock传输比例,或调整业务流操作类型。

Figure7 VIP典型消息结构实例
Table 1 VIP典型消息统计实例

7 基于规格覆盖率的随机验证

随机验证使用大量、繁复的激励对DUT进行反复测试,来保证所有边界条件被覆盖,并补充固定TC中可能漏掉的细节上的功能特性。但在SoC的验证中,随机验证是比较难以实现的验证手段,这主要是因为在随机验证中很难保证其测试向量确实地覆盖了所有我们希望覆盖的范围。
在HiXXX上,我们引入了规格覆盖率的概念,它是指基于激励的,在总线上的传输类型及其Cross的统计结果。相对于业界的功能覆盖率,主要是Coverage Group部分的内容。这里我们使用了Monitor的传输统计功能,以VIP中已封装好的start_coverage、report_coverage等函数为主,辅以VMT中的new_coverage_point、add_cp_item等函数,来完成完整的总线协议规格覆盖。VIP的覆盖统计结果示例如图8所示。

Figure8 VIP典型覆盖率报告

在HiXXX中,我们还大量使用了VIP的Notification机制,用以保证Master的读写操作能够实际地正确完成。多个Master的随机读写操作都可以通过Notify进行交互,Master可以获取其他Master已经产生的读写操作,并通过Multi-Stream的方式对其读写操作的结果进行检测。
HiXXX芯片在引入基于规格覆盖率的随机TC之后,传统的固定TC覆盖分析报告就可以结合随机TC覆盖率一起进行分析。随机测试中我们要求所有总线协议上的规格覆盖率达到百分之百,部分无法覆盖的需要给出解释。在我们看来,这种测试为SoC芯片验证的信心提供了很强大的保证。

8 使用VIP仿真实际业务

在系统架构设计中,我们通常会对系统的各个部分权衡考虑,包括选择怎样的处理器、需要多大的Memory、选择怎样的总线层次以提供足够的带宽等等。这种设计通常是基于经验计算或者SystemC的TLM模型仿真完成的,其结果对评估硬件系统的可行性,以及确定和优化系统结构有指导意义。但是,这种计算或者仿真都是在比较高的系统层次进行的,没有涉及到总线上的具体时序,相比总线实际情况,如Arbiter的仲裁、DDR争夺时的效率等还是存在一定的差异。因此HiXXX在集成验证中会验证一些典型的业务数据流场景,我们把这种验证称作系统确认(Validation)。
VIP具有比较快的仿真速度,使用Master的可约束随机激励,包括PTG、TSG、TCG三种CRT对象,能够很方便地模拟业务模块,以及CPU和DMAC数据流。在集成验证期间,业务流的传输特性已经明确,软件基本完成,其大致需要的MIPS通过仿真器也可以获得,此时在系统上进行基于时钟周期精度仿真很接近于实际情况。通过仿真,一方面能够确定系统性能能够满足应用的需求,一方面还能够根据仿真的结果进一步微调系统架构,使系统达到最佳的有效性。

在HiXXX业务仿真中,我们需要收集的数据包括:Master因为Arbiter仲裁造成的Delay;Master因为Crossbar冲突造成的Delay;Slave响应慢造成的Delay等等(VIP Monitor通过设置DW_VIP_AMBA_WATCHDOG_TIMEOUT_PARAM可以监测Slave响应慢造成的Delay)。业务仿真主要关心这些数据的峰值以及在某些时间段的较大值,判定业务的QoS是否能够满足要求,以及处理器的实际MIPS是否能够达到软件的需求。根据分析的结果,我们会尽量将冲突比较多的接口,例如DDRC的数据流尽量按时隙调整为乒乓球结构;对某些QoS要求比较高的数据流,尽量使用Lock传输模式;对某些仲裁延迟较大的业务可以适当调整Arbiter的优先级或延迟水线。
通过实际应用,VIP的这种业务流模拟仿真,确实能够保证芯片的架构设计的正确性,减小后续验证工作的难度,达到了优化设计、缩短验证周期的目的。

9 总结

通过HiXXX项目对VIP的使用,我主要有如下几点体会:
1、 VIP提供了开放的货架式的BFM模式,能够帮助 验证人员快速搭建Testbench。
2、 VIP提供了指令层的丰富、易用激励函数,能够很 方便地调用和封装。
3、 VIP Monitor具有完整、严密的总线监测特性,包 括协议检查及信息统计,为验证的结果提供了很大 的信心保障。
4、 VIP Master的CRT特性能够方便构造各种复杂的 激励,能够对业务模型和一些极限情况进行验证。

10 参考资料清单:

[1] VMT User’s Manual,Synopsys
[2] DesignWare AHB Verification IP Databook, Synopsys
[3] DesignWare APB Verification IP Databook, Synopsys
[4] DesignWare USB On-The-Go Verification IP User Manual,Synopsys