定义了三个fifo,#8#9就是两个队列,build_phase里new了一下,main_phase里例化。#29和#30两个计数
#46用error会好一些,
#36~52行get apb monitor的端口的数据并进行比对。判断一下apb是wirte,并且地址是0,那就是从apb tx写进去数据由并转串,那就把数据push进队列里;
如果不等于0,那就是读,由rx接口,从队列里pop出来数据。
不是全双工的,只能由一侧读或者写,因为寄存器只有一份。
最后把读的值与写的值进行一个比较,如果一样的话,就是compare成功。1为success,0为error。
check_phase
为什么用三个fifo呢?
因为框架里面有三个port,一个是apb那边monitor的一个port,另外两个是uart那边的tx和rx的monitor的port,
在base_test的build_phase里面创建这些组件,scb用creat,而fifo用new,它不是component也不是object.
在connect——phase里面,把fifo的与这些scb和monitor的port的连接起来。3个fifo用6个连接。
写一个seq启动,先配制寄存器,从uart和apb各写进fifo中9个数据,在uart中写进去再读出来,再用apb写进去,在apb写进fifo中。
空读和满写会报错。