
验证项目
文章平均质量分 83
验证项目总结:此专栏相关资料为网上收集的资料、所编辑内容均为自己做的思考和总结,如果相关资料侵权,请及时联系删除。
GGbao_
误入歧途,及时止损!
展开
-
i2c_SLAVE
下图仅仅为数据分析线程。如果是10bitADDR,先判断地址高两位是否一致,不一致则回复NACK,一致的话,回复ACK并判断读写位,是写,则接收第二byte数据判断是否匹配,不匹配则回复NACK,匹配的话,就回复ACK并释放总线,(如果是读,那么这里主机会产生RS,收集数据这里就不会执行)接收总线上传来的数据。如果是DEVICE_ID,回ACK,然后判断读写位是1还是0,是0 的话,continue,接着从forever头开始执行,等待START。匹配回复ACK,如果是写,释放总线,接收SDA上数据。原创 2023-08-03 23:13:47 · 997 阅读 · 0 评论 -
QSPI项目DUT
32、DATA_TX;PAGE_PROGRAMMING即一般的数据写操作,将数据发送给device,READ_DATA即读数据,此命令一般在写过数据之后再执行,将device中存的数据读出,WRITE_DISABLE和WRITE_ENABLE都只传输cmd命令,无实际地址和数据的传递。spi_oe0、spi_oe1、spi_oe2、spi_oe3(这四个信号表示通道使能信号,当此信号为1时候,代表对应的spi_sdo通道的数据有效,DUT内部利用这4个信号控制spi的工作模式,单线还是多线模式。原创 2023-06-06 21:50:00 · 695 阅读 · 0 评论 -
QSPI项目结构
结构:验证环境中例化了apb端的agent,此agent包含apb_drv、apb_mon、sqr以及一个agent_ap端口,此端口与apb_mon中的mon_ap端口相连,目的是将apb_mon中监控到的数据送到scoreboard中。scoreboard中声明了两个export端口分别连接apb_agent中的ap端口以及qspi_mon中的ap端口,将数据收集并存入内部数组做比较。apb端的接口vif直接与DUT以及apb_drv、apb_mon相连,其与apb连接时候端口一一对应。原创 2023-06-06 10:48:11 · 582 阅读 · 0 评论 -
QSPI项目qspi_monitor和device
如果command是READ_DATA,那么根据数据格式,下一步应该发送地址,此时就要判断vif上地址宽度是否为0,如果不是0,那么下一个周期就应该直接跳转到ADDRE状态,如果是0,那么根据数据格式,下一步应该发送dummy周期,所以就要判断dummy周期是否为0,如果dummy周期不是0,那么下一个周期就应该跳转至RDATA_ADDR_DUMMY状态,如果dummy周期是0,那么根据数据格式,下一步应该发送rdata数据,所以下一个周期应该跳转至RDATA状态。原创 2023-05-31 13:37:17 · 510 阅读 · 0 评论 -
QSPI项目seq波形详解
在写阶段,最开始写入TXFIFO的数据是12345678,但是,将CTRL寄存器第五位(清空FIFO)设置为1后,FIFO被清空,之前写入的12345678都被清除,然后重新向TXFIFO中写入了55aaaa55,那么QSPI总线上就传输55aaaa55这个数据,读阶段,在传输开始,又将FIFO清空,但是此次清空无任何影响,因为清空在读回数据之前,接下来读来的数据会重新写进FIFO中,读回来的数据就是写入的55aaaa55。激励:向qspi device 写数据,然后读qspi 的数据。原创 2023-05-31 13:38:06 · 1007 阅读 · 0 评论 -
QSPI的scoreboard
如果是读,那么一般来说一定是从模块的RX_FIFO寄存器中读取数据(因为其他寄存器都是用来写,对模块进行传输设置,只有这个寄存器里面是存储从device端读来的数据),那么如果是从这个寄存器中读取数据,接着判断rdata_fifo(qspi_monitor此时已经将device端的读出的数据收集到,一般来说肯定是非空的)是否非空,是非空就将其中数据弹出,存入real_data数组,并将此数组数据与apb_txn中的pdata数据进行比较。然后将qspi_is_write_busy置0,。原创 2023-05-29 22:40:45 · 344 阅读 · 0 评论 -
QSPI功能覆盖率
将每个数据位宽的可能性都建一个仓,即0-8-16-24-32位宽的5个仓。在模式1和模式0,都有对应的4中command,所以将两个仓交叉覆盖。在模式1和模式0,都有对应的5种命令长度,所以将两个仓交叉覆盖。在模式1和模式0,都有对应的3种数据长度,所以将两个仓交叉覆盖。建仓分别覆盖0和1的值,从而可以覆盖读写的值。将从qspi_monitor端传来的事务中的数据提取。将从qspi_monitor端传来的事务中的数据提取。将从qspi_monitor端传来的事务中的数据提取。将接口传来的数据进行采集。原创 2023-05-29 22:40:35 · 434 阅读 · 0 评论 -
I2C项目问题总结
1、项目里面用到哪些接口?都是怎么用的?项目里面用到了rkv_i2c_if、lvc_i2c_if、lvc_apb_if。rkv_i2c_if用来将DUT内部的intr中断信号、debug信号、ic_en使能信号、i2c和apb的时钟复位信号引出,在接口中声明了一个大位宽信号用来表示intr中断的所有信号,每一位代表一个中断信号,每个debug信号对应声明一个单独的信号,内部有wait_apb和wait_intr任务,wait_intr(id)任务等待对应id位的变化。get_intr(id)函数返回对应in原创 2023-05-16 15:57:46 · 1008 阅读 · 0 评论 -
I2C功能覆盖率
1、寄存器(UVM内建测试寄存器的方法)1.1、 硬件复位值(uvm_reg_hw_reset_seq)全部复位结束后,创建seq,rgm寄存器reset,把rgm寄存器赋值给seq的model,start启动。1.2、 bit_bash(uvm_reg_bit_bash_seq)1.3、 register_access(uvm_reg_access_seq)2、i2c协议2.1、目标和从地址(IC_TAR、IC_SAR寄存器的设置)target_address_and_sl原创 2023-04-25 12:37:26 · 1444 阅读 · 0 评论 -
DW_APB_SPI
创建。原创 2023-04-25 12:40:24 · 1377 阅读 · 0 评论 -
I2C局部架构
reform中声明了一个寄存器模型暂存数据,当apb_trans_observed中有数据,就接收过来,并将其中的data数据放入本地暂存寄存器,如果事务中是write且寄存器模型中命令也是write,那么将暂存寄存器中数据写入write_data_expected中,如果事务中是read且寄存器模型中命令也是read,那么将暂存寄存器中数据写入read_data_expected中。接着mirror检查IC_TX_ABRT_SOURCE寄存器,17个中断源哪个对应为1,就是触发了哪个中断。原创 2023-04-25 12:38:16 · 1155 阅读 · 0 评论 -
MCDF的UVM验证
MCDF(网上找的路科的项目作为基础学习项目)原创 2023-01-06 19:46:00 · 579 阅读 · 0 评论 -
I2C项目
配置为10位地址,IC_RESTART=0(禁止i2c主机产生restart),TX_EMPTY_CTRL=1(打开TX_EMPTY中断),SPECIAL=1(允许gener_call或者Start_byte),GC_OR_START=1(start_byte传输,=0表示gen_call)。负责将传入的中断对应的中断清除。清除对应的IC_ACTIVITY_INTR_ID、IC_START_DET_INTR_ID、IC_STOP_DET_INCR_ID中断(直接读取dut中此值就可以清除中断)。原创 2023-04-17 13:58:45 · 1362 阅读 · 2 评论