最近日常(96)mcdf代码结构
作者:互联网
https://gitee.com/bai-mengwei/mcdf
总体结构
Channel module
一共三个slave
spec
Input
Output
---->mcdt_data(31:0)
---->mcdt_val(0)
---->mcdt_id(1:0)
Interface
- 对于driver。需要输入端口的数据clockblocking,方向为向外驱动。
- 对于monitor。也需要输入端口的数据clockblocking,方向全为input。
- 一共3个slave,需要分配id。
- 输入数据和输出数据,需要分配data。data为可长可短的数据包。
- 数据包内是否需要空闲周期,data之间的空闲周期
- 数据包需要id。
- 数据包之间空闲周期nidles、
- 给予响应rsp(bit类型,和数据包无关,和driver的响应有关)。
- id本来应该限制到1-3个,但是如果有更多的slave,则为了更好的接入,建议soft
- data的大小,soft限制到4-32个。data的内容不限(但是应该有意义吧)
- 数据包的id不限
- 数据包内的数据空闲0-2
- 数据包之间的数据空闲1-10
Transaction
content
constraint
function
sprint
driver
content
- 数据包需要id,识别出哪个数据包,driver需要名字,作为driver本身
- driver需要interface
- driver需要接受来自generator的mailbox,返回给generator的mailbox
- reset until rstn is high
- drive when get data from mailbox
run task
2.1 drive and clone to rsp, write data to rsp, put to mailbox
function
new、set_interface
generator
content
- 包括transaction的各个部分(除去响应部分)
- transaction的数量n_trans
- req\rsp的mailbox,和driver链接
constraint
对content的内容简单约束soft
run task
- start
- send_trans for each start item
function
new、sprint、post_randomize
packed (data id)
monitor
content
- name用于标记
- interface
- mailbox发送,给比较
run task
mon_trans
function
new\set_interface
agent
content
- name
- driver
- monitor
- 并行的driver和monitor
run task
formate module
一个整形
spec
input
- arbiter信号束
- slaveX信号束,X为号码
- grant信号
output
start、end、data、req、length
enum
fifo深度:小中大超大
带宽:低中高超高
fmt_trans
content
- 比较数据:id
- 比较数据:data
- 比较数据:length
- 类型信息:fifo深度
- 类型信息:带宽
- 返回信息:rsp
constraint
常规soft(可以是fifo深度、带宽)
function
sprint\clone\compare
fmt_driver
content
- name
- interface
- 接收邮箱req_mb
- 返回邮箱rsp_mb
- 局部变量:邮箱 fifo
- 局部变量:int:fifo边界
- 局部变量:int:数据耗时
run task
并行:
- do_receive
等待请求,等待指定长度边界的数据,发起准许,等待数据开始后,关闭准许,每个下降沿将数据存入局部变量的fifo邮箱。
- do_consume
当局部变量的fifo邮箱有数据则取出、然后等待1-数据耗时的随机周期。
- do_config
接收邮箱接收,配置fifo深度、本地实例化局部变量邮箱fifo、
配置耗时、复制、响应、返回邮箱
- do_reset
配置grant为0如果是复位
function
new、set_interface
generator
content
- fifo类型
- bandwidth带宽
- 发送邮箱
- 接收邮箱
constraint
常规,类型和带宽
run task
发送给driver,和接收响应。
function
new\post_randomize\sprint
monitor
content
- name
- interface
- 邮箱mon_mb
run task
监控起始数据,获取数据信息,发送。
function
new、set_interface
agent
content
- name
- driver
- monitor
run task
run monitor、driver
function
set_interface、new
reg module
spec
input
cmd\addr\data_in
output
data_out
reg_trans
content
- addr
- cmd
- data
- 返回rsp
constraint
软约束:地址范围、命令范围、地址和命令的关系。
function
clone、sprint
driver
content
- name
- 接收邮箱
- 响应邮箱
- interface
run task
并行:
do_drive->reg_write->reg_idle
do_reset
function
new\set_interface
generator
content
- addr
- cmd
- data
- 发送邮箱
- 响应邮箱
- reg_req队列
run_task
send_trans:实例化、随机化、发送、等待响应
function
new、sprint、post_randomzie
monitor
content
- name
- interface
- 发送邮箱mb
run task
mon_trans:监控数据并放入邮箱
function
new、set_interface
agent
content
- name
- driver
- monitor
- interface
run task
driver.run\monitor.run
function
new\set_interface
mcdf module
全局
结构体:mcdf_reg_t:长度、优先级、使能、可用性
枚举:mcdf_field_t:长度、优先级、使能、可用性
reference model
content
- name
- mcdf_interface
- reg[0-2]
- reg_mb:
- in_mbs:channel_trans
- out_mbs:fmt_trans
run task
并行:
do_reset:复位长度、优先级、使能、可用性
do_reg_update:根据来值更新寄存器reg[0-2]
do_packet(0-2):get数据从in_mbs,put数据到out_mbs
function
set_interface
mcdf checker
content
- name
- 数量统计:total
- 数量统计:error
- 数量统计:chnl_cnt
- 接口:chnl*3
- 接口:arb*1
- 接口:mcdf_vif*1
- 参考模型:refmod
- 邮箱:chnl*3
- 邮箱:fmt*1
- 邮箱:reg*1
- 邮箱:exp_mb*3:链接refmod的邮箱
run task
并行:
- do_channel_disable_check*3:检查时序当en为0,但valid和ready为1则为错误。
- do_arbiter_priority_check:
- do_compare:
- refmod.run:
function
new、set_interface、get_slave_id_with_prio、do_report
mcdf coverage
content
- name
- chnl_vif[3]
- arb_if
- fmt_if
- reg_if
- mcdf_if
- delay_req_to_grant
- 寄存器读写:地址、命令、地址和命令的交叉
- 寄存器非法访问读写:合法非法地址、命令、合法非法写数据、合法非法读数据、交叉
- 通道disable:0-2的使能、合法、以及交叉
- 仲裁器的优先级:0-2通道的仲裁器优先级0-3(是否需要非法)
- 整形器的长度:合法非法id、合法非法长度
- 整形器的准许:合法非法延迟长度
- do_reg_sample: 寄存器读写、寄存器非法访问读写
- do_channel_sample:
- do_arbiter_sample:
- do_formater_sample:
coverage
run task
function
new、do_report、set_interface
mcdf env
content
- name
- reg_agent
- fmt_agent
- chnl_agent*3
- checker
- coverage
run task
并行:agent、check、coverage,run
function
new、do_config、do_report
base test
content
- name
- fmt_generator
- reg_generator
- chnl_generator
- env
- 局部变量:超时timeout=10
run task
新进程:env.run
do_reg
do_formatter
any:
do_data
do_watchdog
do_report
function
new、set_interface
继承
数据连续性测试
读写寄存器测试
寄存器稳定性测试
mcdf全随机测试
mcdf下行低带宽测试
标签:function,do,run,代码,content,interface,邮箱,mcdf,96 来源: https://www.cnblogs.com/bai2022/p/16390157.html