UVM理论知识
文章平均质量分 84
季月三吃蛋炒饭
这个作者很懒,什么都没留下…
展开
-
UVM知识之phase机制
注意,这里domain只能把run_time的phase给隔离开来,对于其它的phase,其实还是同步的,即两个domain的run_phase依然是同步的,其它的function phase也是同步的。(2) 结束仿真,主要是根据run_phase()来决定是否结束仿真的,通常的做法是在顶层的run_phase()中,调用phase.raise_objection()来挂起。(1) 开始仿真,在顶层的uvm_root中,调用run_test(),例化顶层的uvm_test。原创 2023-07-19 17:22:54 · 403 阅读 · 0 评论 -
UVM知识之寄存器模型
一个uvm_reg_map:uvm_reg_map通过使用add_reg对uvm_reg_block中定义的reg与实际硬件中的寄存器模型的地址做映射。例如在配置寄存器时,在顶层的寄存器模型中调用uvm_reg的build函数,而uvm_reg的build函数会进一步调用uvm_reg_field的configure函数,从而实现配置。在没有寄存器模型时,寄存器的访问是靠sequence来挂载到reg的sequencer上的,然后在sequence的body里面发送item数据,但是有了寄存器模型之后,原创 2023-07-19 17:20:56 · 608 阅读 · 0 评论 -
UVM知识之TLM通信
因为在自己的类里面没有mailbox句柄会报错),且如果你按照绝对的规范,每一层都有port、export做过渡,那么你总是维护当前层次下的连接就行了,再底层的连接是由那个模块的人负责,复用性变好了。实际上,将(1)包装起来就是一个uvm_tlm_fifo,内置的端口都是imp类型的,如果要实现一端对多端,则使用uvm_tlm_analysis_fifo。如果是TLM,一方面,即使后面组件层次有修改,对于维护当前组件的人来说,并不需要在组件内部做修改,只需在顶层的connect_phase修改端口的连接,原创 2023-07-19 17:19:04 · 284 阅读 · 0 评论 -
UVM知识之UVM序列
(3) 若要返回rsp,可以通过item_done(rsp)传递,回传的rsp会压入sequencer的tlm fifo中,每个rsp需打上标号,否则无法得知是从哪个sequencer来的。sequencer端: uvm_seq_item_pull_imp #(REQ, RSP, this_type) seq_item_imp。(1) 采用各自例化好的TLM端口以及成对的方法get_next_item()/item_done()原创 2023-07-19 17:14:47 · 334 阅读 · 0 评论