在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 7573|回复: 13

[求助] 关于sequence位置的问题

[复制链接]
发表于 2018-4-21 16:08:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
在验证时,verfication环境通过interface与rtl进行交互,在这个交互中,我们做的事情其实主要是配置rtl的寄存器,rtl根据这些寄存器配置实现ref_mdl中期待的行为,输出相应的data在scob中进行比较。
配置这些寄存器,做在了sequnce上。每一个register是一个sequence,case中发出一个sequence_list到drv上,完成寄存器配置。那么问题是,一般来说寄存器配置是在哪一个phase中完成呢?
1.在post_configure_phase中发送这些sequence。但是环境中还有另外一个数据通路的drv是在main_phase中工作,这样会导致无法使用virtual_sequencer。virtual_sequencer只能发送virtual_sequence到某一个phase,如main_phase(还是说我理解错了,virutal_sequencer发送的virtual_sequence 能够在发送之后的所有phase被drv get到,在post_configure_phase中发送sequence可在main_phase中get到这个sequence)
2.直接在main_phase中做一个virtual_sequncer,在这个phase中进行cfg_sequence和data_sequnce的交互发送。这样实现是很简单的,如果这样实现,那main_phase之前的cfg_phase的存在是为了什么, 只是为了兼容以前的验证方法吗?

another问题:
uvm是如何去check某些实时变化的RO寄存器?这些寄存器在rtl running的过程中会不断的变化
发表于 2019-2-11 23:56:00 | 显示全部楼层
回复 11# zqq624723237


    第一个问题:做工程是团队协作,在什么phase做什么事一般是项目组的明确规定,利于环境开发与维护;
    第二个问题:在复杂的验证环境中,多domain是有特定应用场景的,同一domian下phase是同步的,但是有些场景下不希望同步进行;
回复 支持 反对

使用道具 举报

发表于 2019-2-11 23:51:44 | 显示全部楼层
回复 6# e_epsh


   是的,可以这么任务,uvm提供了一套接口,你要给个层次路径实现后门访问,uvm_hdl_read(string path,value)
回复 支持 反对

使用道具 举报

发表于 2019-1-31 02:18:12 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

发表于 2018-8-7 16:08:33 | 显示全部楼层
回复 10# yvhksovo


我刚接触sv和UVM,问老师两个问题。1)这12个phase只是人为定义的,是不是并不一定要在特定名字的phase干特定的事,比如我在main phase做reset?
2)run phase 和那12个phase都是做test?实际用一个domain就好了,为什么要这么定义呢?同时用会有race condition吧?
回复 支持 反对

使用道具 举报

发表于 2018-4-29 22:59:33 | 显示全部楼层
楼主同学;config_phase作寄存器的下发/main_phase 下发业务数据本身是没有任何问题的;12个run-time phase顺序执行;和一个run_phase 并行执行;uvm这样作,就是为了让我们实现更精细化的控制,不要将寄存器的配置和业务数据的发送混在一个phase中执行;当然有的业务类型要求在业务发送过程中进行软件的干预,另当别论;
具体到你的问题;
virtual_sequncer负责协调我们的sequence和driver之间的transactiton发送;具体的说就是 在sequence中有一个成员变量seq_item_port;在sequncer中有成员变量seq_iterm_export;这两个通道在agent的connect_phase 中进行了链接;并不需要我们手动去作,uvm内部源码已经实现;然后driver通过get_next_item函数不断的获取sequence里面的内容进行发送;我的理解是当你的driver的get_next_item实现在哪个phase的时候,你就在哪个phase去产生你的激励;
回复 支持 反对

使用道具 举报

发表于 2018-4-26 01:15:35 | 显示全部楼层
run_phase中的各个task其实都是可有可无的,UVM中提供的 各个phase 中没有 raise/drop,激励发完则立刻终结,main_phase其实是作为一个扩展task提供给user来自行定义raise/drop做定制化控制的;
所谓的各个pre_main phase,不管被定义为何种行为,有一点是共同的,他们对仿真的结果无直接意义,不参与checker的 校验过程;而由用户自行定义的激励通常是需要产生相应的输出进行check的;而main_phase之后的 各个phase也是如此;至于为什么提供这么多个细化的区分,你可以理解为为了验证环境重用的考量;

寄存器模型的backdoor方式的读写不需要消耗仿真时间,要追根溯源要找一个 VCS版本查阅ral_usrguide,UVM的寄存器模型是从那来的,你可以通过这个文档深刻认识寄存器模型
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-25 19:47:43 | 显示全部楼层
感谢楼上各位
看来需要做各种sequence的同步交互之类的动作都是在同一个phase中完成比较好,这样做可以做的明确简单,也只需要一个virtual seqence 在环境中,其余组件都是可以随便的重载
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-25 19:45:31 | 显示全部楼层
回复 5# 飞扬紫百合


    uvm的寄存器模型是通过hierarchy引出ro register的值还是需要将寄存器在总线上读出来?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-25 19:44:42 | 显示全部楼层
回复 4# yamahill

UVM的后门功能是指
uvm其实也只是通过hierarchy将信号线引出来吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-13 04:25 , Processed in 0.017280 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表