UVM和System verilog笔记总结(二)


TLM1.0 interface object(在其他的验证方法学里面继承发展,如systemC和OVM)
export(中间部分)、port、imp、fifo/put() 、get() write()

FIFO和write()用的较多;

在上面的问题中,为什么TLM不能实现config_db? 因为麻烦!

interface只能在driver和monitor用得到,其他的无。

put mode用法.
先写输出端:
1:extends uvm_component;
2:uvm_bloking_put_port #(transaction) put_port;这出现了blocking,non_blocking会出现数据丢失
3:put_port=new(“put_port”,this);
4:virtual task 把put_port.put(tr);put出去
再写接收端:
1:extends uvm_component;
2:uvm_bloking_put_imp #(transaction,consumer) put_export;使用到重写task的部分写imp
3:put_export=new(“put_export”,this);
4:virtual task put(transaction tr); 此刻,输出端tr的内容连接,重写put(重要)
process(tr);收到数据后进行更改
最后连接起来:
1:environment extends uvm_env;
producer p;
consumer c;
2:virtual function void connect_phase(uvm_phase phase);
p.put_port.connect(c.put_export);从左向右连接


put相反;
FIFO写一个连接和connect。


接下来要用到scoreboard class,功能是检验来自monitor的信号的计分板。

其实put、get用的很少,
定义了一个新的东西:uvm_analysic_port,用了多个connect实现1对N的连接
在这里插入图片描述 调用write function 里的自定义功能,在env里面将producer和subscriber connect起来,