前言:从MCDF实验来更全面的了解IC验证,将从权力的游戏、列王的纷争、冰雨的风暴、群鸦的盛宴、魔龙的狂舞和凛冬的寒风这六个章节,一步一步讲解实验。
种一棵树最好的时间是十年前,其次是现在。不是吗?
简述MCDF
MC代表多通道,有很多通道让数据传输进来。从Slave输送进来数据,数据存储在fifo,3个fifo再把数据送到Arbiter,Arbiter每次只能从一个fifo接收数据(仲裁)。Arbiter把选择的数据输送到Formater。Formater把多个数据整合在一起。Register是一个功能模块,可以控制哪些模块工作不工作,控制哪个fifo输送数据。
- 在第0次实验,将mcdf的功能做了简化。简化后的功能已经用verilog完成设计,我们需要完成的是tb部分的工作。
实验0 lab.0
简化后的结构图:

- 从框图来看,我们需要给slave传送一些数据,看arbiter能不能选择数据,并输出。
- 同时输入给slave的数据需要满足时序的要求。
- 所以只需要在tb中完成时钟的编写、dut的例化,给slave发送符合时序的数据这几个部分。
有没有很简单呢?
选择发送数据的方式是定义task chnl_write,来发送固定的数据。当然还有别的办法,源代码如下:
`timescale 1ns/1ps //时间精度
module tb1;
reg clk;
reg rstn;
reg [31:0] ch0_data;
reg ch0_valid;
wire ch0_ready;
wire [ 4:0] ch0_margin;
reg [31:0] ch1_data;
reg ch1_valid;
wire ch1_ready;
wire [ 4:0] ch1_margin;
reg [31:0] ch2_data;
reg ch2_valid;
wire ch2_ready;
wire [ 4:0] ch2_margin;
wire [31:0] mcdt_data;
wire mcdt_val;
wire [ 1:0] mcdt_id;
mcdt dut( //dut的例化
.clk_i(clk)
,.rstn_i(rstn)

本文通过《权力的游戏》等六个章节详细介绍了MCDF实验,旨在深入理解IC验证。MCDF涉及多通道数据传输,数据从Slave经fifo、Arbiter到Formater。实验0简化了MCDF结构,重点在于时钟、复位信号的设置,以及给Slave发送数据的tb部分。实验中使用taskchnl_write发送测试数据,并检查 Arbiter 的数据选择和输出。
最低0.47元/天 解锁文章
1429





