WB_CAN项目介绍
该模块是飞利浦(PHILIPS)的独立CAN控制器SJA1000,一般用于工业环境中的局域网络控制。SJA1000是一种I/O设备基于内存编址的微控制器。它支持2种模式:BasicCAN模式和PeliCAN模式。复位默认模式是BasicCAN模式。PeliCAN模式支持CAN 2.0B协议规定的完整功能。
SJA1000的主要功能:
- 标准帧(standard frame)和扩展帧(extended frame)发送和接收
- 接收FIFO(64-byte)
- 在标准和扩展格式中都有单/双验收滤波器(含屏蔽和代码寄存器)
- 读/写访问的错误计数器等
CAN模块采用了WISHBONE BUS接口访问控制寄存器,该接口可传输时钟、复位、8位地址/数据、使能等信号。在验证环境中,我们采用了一个AHBtoWISHBONE的Bridge,AHB VIP通过bridge与CAN对接,来访问CAN的寄存器。另一方面,DUT与CAN VIP的接口主要有RX和TX等信号。
CAN模块的7个子模块:
1、接口管理逻辑(IML):解析来自AHB的指令,控制CAN寄存器寻址,提供中断信息和状态信息。
2、发送缓冲器(TXB):与BSP(位流处理器)连接,存储发送到CAN网络上的信息。缓冲器长13个字节,由AHB总线写入、BSP读出。
3、位流处理器(BSP):是一个在发送缓冲器、RXFIFO和CAN总线之间控制数据流的程序装置。
4、验收滤波器(ACF):把它其中的数据和接收的识别码内容相比较,以决定是否接收信息。
5、接收缓冲器(RXB,RXFIFO):是验收滤波器和AHB之间的接口,用来储存从CAN总线上接收信息。接收缓冲器(RXB,13个字节)作为RXFIFO(RXFIFO,长64字节)的一个窗口。
6、位时序逻辑(BTL):监视串口的CAN总线和处理与总线有关的位时序。
7、错误管理逻辑(EM):负责传送层模块的错误管制、进行错误统计。
CAN模块主要的4个寄存器:
1、控制寄存器(CR):复位请求(RR)、发送/接收中断使能等信号。
2、命令寄存器(CMR):对外部控制器是只写存储器,读值固定1111_1111。主要有发送请求(TR),释放接收缓冲器(RRB)等信号。
3、状态寄存器(SR):对外部控制器是只读存储器。主要有接收缓冲器状态(RBS)、发送缓冲器状态(TBS)、接收状态(RS)、发送状态(TS)等信号
4、中断寄存器(IR):对外部控制器是只读存储器,被读后所有位复位。主要有接收中断(RI)、发送中断(TI)、数据溢出中断(DOI)等信号。
验证思路
1、先要针对寄存器的模块,接口时序的满足与否。先针对这两部分写测试用例
2、再针对模块的功能,寄存器每个比特位的控制位去写测试点。
在冒烟测试中,首先对寄存器进行读写测试,主要针对控制寄存器和命令寄存器。然后,分别在BasicCAN模式和PeliCAN模式,测试CAN发送和接收数据帧、远程帧、错误帧、过载帧。此处,发送是指CAN模块向CAN VIP发送,接收是指CAN模块从CAN VIP端接收信息。
在发送缓冲器状态为满或空时进行测试。在发送缓冲器状态满时,继续发送数据,观察设计行为是否符合协议。
测试接收缓冲器状态为满或空时的行为。当CAN VIP不断向CAN发送数据,观察接收缓冲器是否会标记溢出的数据,并观察中断寄存器的状态。当接收缓冲器释放所有数据后,检查缓冲器为空的状态。
此处是难点:一是需要理解清楚数据发送或接收的时序安排;二是需要理解清楚如何读取检查各个寄存器的状态值;三是需要理解如何建立检查模型,模拟发送缓冲器、接收缓冲器、接收FIFO的行为。
测试验收与屏蔽码的功能,验证在ID接受范围内、外的数据传输与比对情况。
搭建2个CAN模块和2个CAN VIP参与的Multi-CAN测试环境,测试该环境发送和接收数据的功能。
绘制验证环境结构
在顶层完成DUT的例化和端口连接,利用了UVM CONFIG机制,将接口set到test层。
在test层get到顶层传递过来的接口配置,再将config去set到env层。
在env层,创建AHB Master Agent、CAN VIP Agent、Virtual sequencer、Scoreboard、predictor、adapter、register model等,并完成它们之间的连接。
在scoreboard中,创建参考模型,处理由monitor传递过来的数据,完成数据比对。
覆盖组,主要涵盖发送和接收各种帧数据模式,如标准帧/扩展帧、数据帧/远程帧等;寄存器地址的访问、状态寄存器bit位覆盖、发送/接收中断、溢出/错误中断等。
——路科验证项目