关于AHB-RAM的一些内容2

首先讲一下再ahb driver和monitor实现过程中的一些细节。首先,drvier在实现驱动时序的时候,我们需要注意,write_data中,要等到grant信号拉高之后,我们将driver拿到的transaction中的地址以及控制信号驱动到接口中相应的信号,完成地址阶段的传送,下一周期将总线驱动为IDLE,同时将写入的数据驱动到接口上,同时在下降沿检查ready信号是否为高,如果为低的就保持数据,直到完成数据的传输。而read_data也一样,再等到有效的grant信号后,将接口上的地址以及控制信号值个相应的transaction,完成地址和控制阶段的读取,下一周期将总线驱动为IDLE,再下一拍先判断ready的值是否为高,如果是低的话就保持,如果是高的话就对他进行读取,完成数据读取阶段。

在driver中应该注意的细节:

1.注意会影响到传输类型的信号,这些信号的取值会直接影响到总线传输的事务的类型,进而影响到传输信号以及其时序:比如AHB中的burst_size(这是数据的位宽,例burst_size=BURST_SIZE_8BIT时,发送的数据只有低8位有效),再比如XACT_TYPE(exat定义了一个枚举类型XACT_TYPE_ENUM,这个枚举类型控制了读操作还是写操作)

接下来讲一讲monitor检测时序时的一些细节。我们要注意,monitor再对数据阶段进行检测的时候,要兼顾考虑ready信号为高时采样数据。采用三目运算符对写入数据或者读取数据进行采样。除此之外,在monitor中立化声明了uvm_analysis_port端口,用于将检测到的transaction广播给cov或者scoreboard等subscriber性质的组件。

在比较数据时,AHBRAM在sequence和在scoreboard做数据比对的实现方式有一些不同之处,需要我们认真分析。首先sequence自定义函数compare进行数据比对, 时对不同的地址进行一次性读写,写操作时对seq进行挂载和随机化时将wdata层层传递到req再通过driver传递到总线,而读操作时req读取总线上的rdata并且通过rsp返回给virt_seq与写数据进行对比。这种方式更加适用于寄存器读写测试这些结构较为简单的数据比对。

而scoreboard时通过monitor观测总线上检测到的写数据按照地址以及协议要求的对其方式存入所声明的关联数组中,将所储存的数据和检测到的数据进行比较,金策到的数据时通过monitor的analysis_port广播进来的,并且考虑到设计中对数据的写入有地址迁移的要求,再scoreboard中实现数据存储时也要按照迁移地址进行存储。因此再比较数据时,我们只需要按照地址偏移写入的数据进行有效位的提取就可以进行比较。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值