SPI SVT VIP一些使用问题

一,RM中spi transaction发到FIFO,数据为0情况

在项目中遇到了使用SPI VIP的transaction 时,无法将monitor 收到的数据处理后,发送给FIFO,spi transaction的data queue一直为空,导致发送不出去的问题。
SVT SPI VIP transaction在制作RM时,不能write到FIFO的情况。
在这里插入图片描述

因为RM里的SPI transaction没有cfg,所以每次给了数据都发不出去,需要在RM里把cfg文件加上。从test中set cfg,然后在RM这里get
在这里插入图片描述
new一个新的spi transaction ,把get到的cfg,传递到spi_out_tr transaction中。就可以把spi的cfg设置进来。
在这里插入图片描述
transaction cfg传递好了之后,通过randmize with的方式,把data送到transaction中。
在这里插入图片描述
最后再把这个transaction write 到FIFO就可以发出去了。
在这里插入图片描述
在这里插入图片描述

二、SPI VIP 每次CS有效数据量大小设置

看SVT SPI transaction.sv,发现数据量大小的约束
在这里插入图片描述
所以,只需要添加宏定义,将SVT_SPI_MAX_DATA_TRANSFER设的大一点,就可以实现,一次cs有效发送多个byte

三、两笔cs有效之间的间隔

通过在test中set config db transmit delay来控制
在这里插入图片描述

四、任意bit数的spi word发送

在env中的cfg phase里,reconfig data_frame_size
在这里插入图片描述
在env_cfg里的set_cfg phase中的 enable_configurable_data_frame_width设置成1
在这里插入图片描述

五、spi的interface cfg(SPI特殊于其他VIP)

在env_cfg中把spi的agent cfg例化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在ENV中把interface和spi agent cfg中的interface相连,此处为SPI VIP特殊之处,需要将interface 与agent_cfg.interface连接,我猜测因为SPI可以当slv也可以当作mst 的时钟控制有关
在这里插入图片描述
在这里插入图片描述
在connect中把spi的interface set到env中
在这里插入图片描述

SPI VIP在不复位的情况下切换时钟频率(spr sppr)

需要在case中重新随机env.cfg.spi_agent.cfg

在这里插入图片描述
随机之后,使用reconfigure函数将SPI的agent按照新的agent_cfg参数进行重新配置
在这里插入图片描述
可以实现SPI VIP频率的切换,spr sppr 从2 6 ,切换到了0 4
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值