uvm
IC小白进行中
这个作者很懒,什么都没留下…
展开
-
uvm基础(3)phase机制-深入分析phase机制的原因
引入phase机制的原因我们虽然可以通过new函数来实现对象例化,但是new函数无法保证验证环境在实现层次化时保证例化的先后关系,以及各个组件例化后的连接。因此uvm引入了phase机制。phase执行机制phase按是否消耗仿真时间,分为俩大类,一类是function phase,如build_phase,connect_phase这些不消耗时间在零时刻就可以完成。另一类是task phase,如run_phase。这类是消耗仿真时间的。phase的执行顺序build_phase是自上而下执行的原创 2020-06-10 10:50:08 · 2154 阅读 · 0 评论 -
uvm基础(3)config机制-重点
virtual interface的传递主要注意一下几点:1.接口传递应该放在run_ test之前。保证在build_phase之前,vif已经传到了uvm_config_tb中。2.用户应该把virtual interface 与interface区分开。传递的类型应该vif。例如:在顶层set:uvm_config_tb #(virtual intf)::set(uvm_root::get(),“uvm_test_top.c1‘’,“vif”,intf);在C1中get:uvm_config原创 2020-06-08 22:16:41 · 630 阅读 · 0 评论 -
uvm基础(2)TLM通信,看这一篇就够了
tlm通信概述tlm通信的步骤:1.分辨出initiator和target,producer和consumer。2.在target中实现tlm通信方法。3.在俩个对象中创建tlm端口。4.在更高层次中将俩个对象进行连接。-端口类型有三种:1.port,一般是initiator的发起端。2.export,作为initiator和target的中间端口。3.imp,只能作为target接受request的末端。4.多个port可以连接同一个export或imp,但是单个port或export原创 2020-06-07 18:33:04 · 4663 阅读 · 1 评论 -
uvm基础(1)factory机制
工厂的意义uvm工厂的存在是为了更方便地替换验证环境中的实例或已注册的类型。用来替换的对象或类型应该满足注册和多态的要求。工厂提供的便利factory的步骤:1.将类注册到工厂。通过uvm_component_utils,uvm_object_utils。2.例化前设置覆盖对象和类型。3.对象创建。工厂创建为什么要将uvm_component和uvm_object区分开呢?因为uvm_component创建出来的组件最终会表示在uvm层次中,而uvm_object不会。这也可以从原创 2020-06-06 22:17:19 · 639 阅读 · 0 评论