功能介绍
在mcdf_pkg中,代码主要实现了checker功能,将从fmt_agent中得到的数据与经过refmod,把chnl_agent中数据经过packed以后的数据一起通过do_compare函数进行比对。refmod 模拟了硬件的行为,配置寄存器更新 并对chnl_agent中监测到的数据进行打包处理。
层次分析
- reg_agent、chnl_agent、fmt_agent三个组件中的monitor都会把监测到的数据put进mon_mb中,而mcdf_checker中分别例化了reg_mb,chnl_mb和fmt_mb共五个mailbox,然后将其指向reg_agent、chnl_agent、fmt_agent三个组件中的mon_mb,以便取得其中的数据。
- mcdf_refmod中的do_packed函数会peek到chnl_mb中的数据,将其打包成数据包的格式,然后再put到out_mb中。(chnl_agent监测到的数据是32bit的数据,而fmt_agent监测到的数据是数据包的格式) 同样,do_reg_update函数会从reg_mb中get到寄存器数据,从而更新寄存器值。
- do_compare函数实现: do_compare函数首先从fmt_mb中获取fmt_agent中的数据mont,而mcdf_checker中的exp_mb信箱可以获取out_mb中经过打包的数据,模拟硬件的整形功能,然后do_compare函数get到exp_mb中的数据expt,然后将mont和expt通过compare函数进行比对即可。