MCDF实验0:权力的游戏(从verilog到SV的入门lab0)

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

前言:从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)
	  
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值