DUT是用Verilog写成的时序电路,而reference model则可以直接使用systemverilog高级语言的特性,同时还可以通过DPI等接口调用其他语言来完成与DUT相同的功能。 uvm_agent:所有的agent要派生自uvm_agent。与前面几个比起来,uvm_agent的作用并不是那么明显,它只是把driver和monitor封装在一起,根据参数值来确定只是例化monitor还...
1)uvm_agent是component,要用uvm_component_utils宏注册。 2)用is_active决定是否创建driver。is_acitve是uvm_agent的成员变量。uvm_agent.svh源代码如下: 3)uvm_active_passive_enum是枚举类型:原型为:(注释说通常用在agent) 4)uvm_agent中,is_active默认是UVM_ACTIVE,例化driver的。其实可以在is_active 中做...
在env中直接连接agent的端口到scoreboard的端口。此方式能体现出明显的层次关系,实现也较简单,推荐此方式。 class my_agent extends uvm_agent; uvm_analysis_port #(my_transaction) ap; function void my_agent::connect_phase(uvm_phase phase); ap = mon.ap; endfunction endclass function void my_...
agent的存在是为了验证环境的复用。按照总线的传输方向划分可以分为master和slave,master agent是用来向DUT发起transaction的,slave agent是用来响应DUT的events的。 在my_agent中声明了build_phase和connect_phase,在外部定义。is_active的配置可以通过外部使用config_db的方式配置。 scoreboard uvm_scoreboard承担的功能就是...
uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 在enc的set语句如下: uvm_config_db#(int)::set(this,”agent.driver”,”pre_num_max”,99); 那么driver中get到的值是100还是99呢?答案是100.UVM规定层次越高,那么他set的优先级越高。在整个UVM树中,uvm_test_top的位...
uvm_agent:所有的agent要派生自uvm_agent。与前面几个比起来,uvm_agent的作用并不是那么明显。它只是把driver和monitor封装在一起,根据参数值来决定是只实例化monitor还是要同时实例化driver和monitor。 uvm_env:所有的env(environment的缩写)要派生自uvm_env。env将验证平台上用到的固定不变的component都封装在一起...
config_db机制用于在UVM验证平台间传递参数。它们通常都是成对出现的。 set函数是寄信, get函数是收信。 如在某个测试用例的build_phase中可以使用如下方式寄信: //寄信方式uvm_config_db#(int)::set(this,"env.i_agt.drv","pre_num",100);//第一个和第二个参数联合起来组成目标路径,与此路径符合的目标...
一个基本的 uvm 验证环境结构如下图所示,包含两个 agent,其中 in_agent 用于驱动 DUT ,同时将驱动数据同时传递给 reference model, out_agent 用于按照协议采集 DUT 的输出数据,并将数据传递给 scoreboard,在 scoreboard 收集到 reference model 的运算结果后,再进行比对验证。
uvm_config_db#(int)::set(this,”env.agent.driver”,”pre_num_max”,100); 那么在driver的build_phase中要这样做: uvm_config_db#(int)::get(this,””,”pre_num_max”,pre_num_max); 这样,设置的pre_num_max的数值100就会传递给driver的pre_num_max。
agent的子组件的拓扑结构(确定要构造哪些子组件) driver和monitor代理使用的BFM虚接口的句柄 agent的行为 按照约定,UVM agent config类有一个类型为uvm_active_passive_enum的枚举类型变量,该变量定义了agent是构造了sequencer和driver的UVM_ACTIVE还是二者均未构造的UVM_PASSIVE。这个参数称为active,默认值为UVM_ACTIVE。