自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Probable cause: sequence exited or has been killed提示是什么原因

该uvm_info语句是在调用put_response()函数时报出的,报出原因是根据该sequence id寻找该sequence时没有找到该sequence,那为什么没找到呢?根据另一篇博文“sequence,sequencer,driver的交互秘密探索”里的内容已经可以知道,是因为已经调用item_done()了。了,发现的确如此,不过这样也是没有错误的,因为该sequence调用get_response()放在了fork join_none里面,并且也不需要拿到rsp来使用。

2024-05-31 15:41:22 250

原创 自动化生成uvm框架脚本

使用python写了个脚本,用于生成uvm的一些组件模版,模版内容主要是根据自己使用习惯来的,如有需要,可参考使用,如需转载,请注明出处哈~第一行python解释器的位置需要改为你自己的path~

2024-05-28 14:38:04 754

原创 UVM:常用的seq_item_port.get_next_item()的解析

seq_item_port.get_next_item()究竟做了什么?一探究竟

2024-04-24 16:45:16 573

原创 UVM的port和export

用这个uvm_tlm_if_base # (T, T)类的句柄tif的目的如下,为了指向imp的实例,imp也是uvm_tlm_if_base # (T, T)的子类的子类。所以再回到uvm_analysis_port中来,就是调用每个和当前port相连的imp的write()函数,后面的imp的调用过程在imp的文章里面也解析过了。uvm_analysis_port也是参数化的类,有一个参数,使用时填的是传递的transaction类型,也是继承自uvm_port_base类。

2024-01-30 15:24:52 649 1

原创 UVM的imp类型解析

第二个参数是一个字符串,是这个imp的名字:”uvm_analysis_imp”,第三个参数传进来的是uvm_analysis_imp的第二个参数,是imp所在的component类。这是uvm_put_imp的全部内容,和uvm_analysis_imp是类似的,最终的task都是在所在的component中同名task实现的。可以看到,uvm_analysis_imp是个参数化的类,有两个参数,第一个是要传递的transaction的类型,第二个是所在的component类型。

2024-01-30 10:59:35 393 1

原创 uvm callback机制的探究(一)

uvm的callback机制对于初学者来说听起来很深奥和难用,对于初学者也不是必须要使用的,所以一般初学者可能会避开callback,但是对于重用性的考虑特别是VIP的构建来说,callback是非常好用并且是不可避免的。uvm的实现原理也是基于此的,不过实际做法会复杂的多,我们就来看看使用uvm的callback的一般做法。综上看来,uvm使用callback的原理就是基于sv,使用起来和sv使用的步骤也很相似,不过中间的实现对用户隐藏了,有机会我们再对中间的实现源码做具体分析哈~//空的函数或者任务。

2024-01-29 11:25:34 470

原创 sequence,sequencer,driver的交互秘密探索(二)

这个任务调用了imp的get_next_item任务,这里这个imp就是TLM里面讲的port连接的终点必须是imp,这里有机会的话以后也会去拓展一下,这里知道调用了imp的get_next_item就足够了,然后imp的get_next_item会调用所在的component(这里是sequencer)里的get_next_item().所以在driver里面调用seq_item_port.get_next_item(),最终是执行sequencer的get_next_item任务。

2024-01-03 11:13:42 1182

原创 sequence,sequencer,driver的交互秘密探索(一)

sequencer.send_request(this, item):主要做的事是设置transaction_id和sequence_id,然后把这个tr放进m_req_fifo中。如果括号内参数为transaction,也就是继承自uvm_sequence_item类型的,可以概括为3件事:`uvm_create_on(),start_item(),finish_item()。其他的`uvm_do_on等等都是类似的,只不过是`uvm_do_on_pri_with的参数变化而已,不需要给的就是默认值。

2023-12-27 17:11:14 1216 1

原创 Uvm宏注册的秘密探索(一):

每次写一个新类继承自uvm_object或者uvm_component或者他们的子类时,我们习惯上都会写上uvm_object_utils或者uvm_component_utils进行宏注册,那么写上这两句话时到底被替换成了什么呢?一直很好奇,今天有空看了下源码,把这两句宏定义的替换过程找了出来,如下所示:(如有不足,请见谅哈)有了这个宏就可以使用type_id::create的方式创建实例。和上方object的宏为同一个宏。

2023-12-21 14:18:44 422

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除