1 芯片简介、验证计划及验证策略
1.1 芯片简介
八通道串行通信控制器(以下称通信控制器)用于实现高级链路控制协议的高速串行通信。该芯片支持同步协议、异步协议、HDLC/SDLC等协议,可以在Intel总线模式和Motorola总线模式下使用,是为电信业务特别优化的串行通信控制器,广泛用于时分复用通信应用系统,如时分分组交换网络,局域网网关、网桥等。
该通信控制器的总体结构如图1所示,按照功能原理,其硬件结构可分为两个组成部分:总线接口和串行通道控制电路。总线接口包括16位数据总线(DO~D15)、9位地址总线(A0~A8)、控制输入信号、终端请求输出信号、直接内存存取(direct memory access,DMA)接口信号以及地址锁存允许(address latch enable,ALE)信号;串行通道控制电路包括8个相同的、独立的全双工串行接口(串行通道0~7)。每个通道又包括控制逻辑和接收发送FIFO。控制逻辑主要是波特率发生器(BRG),数字锁相环(DPLL),时隙分配电路(TSA),协议控制电路,定时器和编解码电路等模块。同时,该通信控制器具有一个28位的可配置输入、输出全局端口(PA0-7,PB0-7,PC0-7,PDO-3)。
1.2 验证策略分析及验证计划制定
该芯片的验证难点在于,通信控制器支持的协议多,功能复杂,各种划分方式以及功能的排列组合数量非常多。具体而言,通信控制器有8个通道,每个通道有32个8位配置寄存器,平均每个配置寄存器约有10种配置值,寄存器配置排列组合的数量更是惊人。
针对上述难点,所采取的验证策略是,芯片的功能验证分类按数据传送协议将验证分为异步、同步、HDLC和并口四类,每一类按照总线接口又分为Intel总线和Motorola总线,再按照数据传送类型分为中断模式和DMA模式,基于该分类方法验证通信控制器的各项可配置功能,如CRC检验、奇偶校验、流量控制等。
在验证层次上,由于组成通信控制器芯片的8个通道是独立的、相同的,故采取先在子系统级验证一个单通道的数据传送,继而再验证全芯片8个通道的数据传送的层次化验证方法,而如果每一个层次都需要构造一个测试平台,任务就非常复杂。本文采取在两个层次采用统一的验证环境的方法,从而降低了验证的复杂度,大大提高验证效率,缩短整个芯片的设计周期。开始验证之前首先需要制定一个完整的验证计划。验证计划的制定要针对设计中可能出现的问题,并涵盖设计要实现的所有功能。通信控制器需要验证各种数据传输操作和一些其他功能。表1列出了该通信控制器的部分验证计划,完整的验证计划远比表1庞大,限于篇幅在此不一一给出。
2 验证方案
2.1 采用总线功能模型构造验证平台
总线功能模型(BFM)是近年在测试平台中广泛采用的一种能提高验证重用效率的激励生成方法。总线功能模型的作用是通过封装低层总线的时序,向高层提供一个调用接口。总线功能模型的构建有状态机和任务库两种方式。通信控制器的验证采用了任务库的方式来进行总线功能模型设计。采用模块的封装方式把内部操作的细节封装起来,通过“模块名,任务名”的方式复用模块,从而建立结构化的testbench。基于总线功能模型的验证环境如图2所示。
验证环境的下层是BFM和通信控制器逻辑电路组成的物理层。在这一层,BFM与通信控制器的引脚连接,根据总线协议驱动总线信号,同时将这种驱动行为抽象成能够被上层调用的任务(task)。上层是testcase组成的测试层,testcase根据所验证的功能产生测试数据,通过调用下层提供的任务,将产生的测试数据激励输入到被测电路中并监测数据处理结果。可以看出,BFM通过对总线信号的时序进行抽象和封装,使测试环境有了层次化的结构特点。这种层次化的特点能提高测试环境的开发效率和可重用性,从而满足验证通信控制器的如下要求。
首先,验证环境层次化的结构保证了在各个层次的验证模块开发可以同时进行,提高开发效率。BFM将通信控制器测试环境的开发强度和复杂程度分散到了物理层和测试层两个不同的抽象层。在物理层,BFM专注于实现Intel总线或者Motorola总线的各个时序操作;在测试层,testcase专注于针对通信控制器待验证的功能来设计测试向量。上层的testease和下层的BFM在定义了任务接口后,物理层和测试层的测试模块可以进行同时并行开发。其次,由于testease和BFM处于两个不同层次,所以可以在各自的层次上实现复用。处于上层的testcase,可以在后仿真阶段直接复用;而处于下层的BFM不仅可以复用在后仿真阶段,在引脚接口信号通信协议相类似的项目开发中亦可重用。