先从channel_pkg,reg_pkg,formater_pkg开始,这三个包的结构都是一样的。分别收发的是通道输入端、寄存器、整形器的数据
包含:数据包ch_trans, reg_trans, fmt_trans,driver,generator,monitor,agent
agent
代理连接和例化driver+monitor,
monitor
采集检测数据
generator
mailbox在这里例化,负责对mailbox进行存取和打印
driver
负责数据的传送
数据包_trans
包含每个包想要传输的数据
具体的,通道包的目标是通道数据及其id,以及数据之间的间隔,包与包之间的间隔。
寄存器的目标是指令,地址,数据
整形器的目标是一个可以选择大小和带宽的内置fifo,收发数据遵循文档描述
formater中,在trans中引用了rpt_pkg的rpt_msg函数,补充以下知识
$fopen
$fwrite
arbiter package也是包含上述五个部分,但是全部为空,本实验还用不上。
可以看到mcdf_pkg import了上面4个pkg,还有一个是rpt_pkg,先放着,先看mcdf_pkg。
mcdf_pkg
refmod模拟mcdf的硬件行为
首先是复位功能,复位寄存器处的信号,清空整形器处的邮箱
然后是更新寄存器功能,对接寄存器的读写,写的话就把寄存器的数据拿过来,读的话就把寄存器的data给到available
最后是打包功能,将monitor到的输入端数据变换长度后给到输出端整形器,完成整形,
checker
例化了输入端通道邮箱,整形器邮箱,寄存器邮箱,refmod
比较输入端和输出端的数据是否一样
env
把checker中的通道邮箱、寄存器邮箱、整形器邮箱给到对应的agent的monitor
base_test
三大:通道,寄存器,整形器
例化三大generator,将req和rsp邮箱给到env中的代理的driver的对应邮箱,驱动数据发送
接口包括:通道端,寄存器端,整形器端,mcdf端
data_consistence_basic_test
已经不知道自己在画什么了,就这样吧。