UVM学习之路(6)— 基于MCDF的验证平台
一、前言
MCDF即多通道数据整形器(Multi-Channel Data Formatter)可以将多个通道是数据经过打包后以数据包的形式发送出去,其输入输出如下所示,其中输出的数据包的数据长度由寄存器设置。
二、设计描述
MCDF的设计结构如下所示 其主要分为如下几部分
- 通道从端(Channel Slave):接受输入的上行数据,然后存储到其FIFO中;
- 仲裁器(Arbiter):选择从不同的FIFO中读取数据,然后将数据进一步传送至整形器(Formatter);
- 整形器(Formatter):将数据按照一定的接口时序发送出去;
- 寄存器(Register):设置MCDF的某些功能参数,反应MCDF的某些状态。
然后其信号列表如下所示: 寄存器列表如下所示
三、接口时序
数据输入的通道从端接口时序如下所示,当ready 为高时表示可以输入数据,然后将valid 拉高即表示当前data 输入的数据有效,需要写入。 整形器是按照数据包的形式发送数据的,数据包的长度有4、8、16、32可选,整形器必须完整发送完某一个通道的数据包后,才可以准备发送下一个通道的数据包,且相邻数据包之间应至少有一个时钟周期的空闲。 数据输出的整形器接口时序如下所示,当整形器准备发送数据包时,将fmt_req 信号置为高,同时将fmt_chid 和fmt_length 设置好,然后等待后端给出fmt_grant 信号允许发送数据包,当fmt_grant 拉高表示允许发送后,应该在一个周期后将fmt_req 拉低表示结束请求,然后开始发送数据,将fmt_start 拉高一个时钟周期表示数据包第一个数据开始发送,接着将整个数据包发送完成,之间不允许有空闲周期,直到发送最后一个数据时将fmt_end 拉高一个时钟周期表示当前为最后一个数据,然后fmt_end 拉低后需经一个时钟周期fmt_req 才可以被拉高以保证相邻数据包之间应至少有一个时钟周期的空闲。 寄存器控制的接口时序如下所示,在寄存器控制接口上,需要在每一个时钟解析cmd 信号,当cmd 为写指令时,需要把数据cmd_data_in 写入到cmd_addr 对应的寄存器中;当cmd 为读指令时,即需要从cmd_addr 对应的寄存器中读取数据,并在下一个周期,将数据放在cmd_data_out 上发送出来。
四、验证环境
基于UVM搭建的验证环境如下所示 其中sequence组织方式如下所示
|