UVM验证
文章平均质量分 92
通过UVM平台实现对各种功能语法的验证
KikoLeg
这个作者很懒,什么都没留下…
展开
-
基于UVM对AHB-SRAM模块验证(1.sequence输入激励)
sram_csn如下,haddr_sel为地址的最后两位,haddr_sel=sram_addr[1:0],hsize_sel表示传输数据的位宽,如上所述,当为10时,32位,四片全选,当为01时,16位,只选两片,当为0时,8位只选一片。----------------------------------------------------分割线------------------------------------------------------------------原创 2024-06-17 15:25:04 · 753 阅读 · 2 评论 -
基于UVM平台对异步FIFO的验证(2.建立sequence)
在非满,且能写的情况下对interface中的wr_data进行赋值,赋的值为req.data,这个是在事务transaction中定义的,req相当于一个数据包。在build_phase 中创建、获取并配置相关资源:获取top层中的interface到m_env_cfg.m_agent_cfg.m_vif中,使用了default sequence方法调用sequence。env中需要例化agent,以及env的配置参数,其中env中的配置参数中也包含了agent的配置参数,在factory中注册。原创 2024-05-24 21:40:38 · 608 阅读 · 1 评论 -
基于UVM平台对异步FIFO的验证(1.基本的FIFO知识)
针对这种情况后续会在UVM验证平台解决。这是UVM的结构图,首先需要搭建top层,top层中要包含DUT(即rtl代码,testcase,env,scoreboard,write-master,read-monitor,driver,sequencer,以及事务transaction等等)。由于异步FIFO是工作在两个不同的时钟域中,如果读地址在某一时刻从0111->1000转变 ,恰好写时钟要在这时刻采样读地址,那么得到的值有可能是000-1111中的任一值,这个不确定的读地址值会导致空满状态判断错误。原创 2024-05-24 18:38:16 · 707 阅读 · 2 评论 -
基于调用C语言作为reference_model的UVM对全加器的验证
加法器的设计语言中,共有三个状态,INITIAL/WAIT/SEND,rst为1时是复位信号,开始置零和置X,状态转为INITIAL态,下一个状态为WAIT状态,此刻输入信号的ready置一,表示准备好接收输入,下一个状态为SEND,在输入信号valid的情况下,开始赋值输出为输入之和,并输出的valid为1,在输出的ready为1时,进入WAIT,表示开始接收下一轮的数据。首先DUT为加法器,但是舒服不仅是加数和被加数,还有ready和valid,输出也不止是和,还有valid和ready。原创 2024-05-31 10:35:29 · 812 阅读 · 0 评论 -
基于UVM平台对异步FIFO的验证(3.建立读写agent)
5. 接下来就是testcase,他负责启动virtual sequence,在这里我没有采用之前default sequence的自动启动方法啊,而是采用的手动启动sequence,启动的是virtual sequence。3.top层包含了所有用到的子文件,并启动test,在这里我们还通过sequence配置了读写时钟,分别通过读写agent中的m_sequencer 启动相应的时钟配置sequence,来对顶层文件进行配置。1.env的配置文件中也例化了两个agent的配置参数。原创 2024-05-26 17:22:14 · 855 阅读 · 0 评论