UVM::TLM
2014-08-31 12:28
99 查看
TLM : transaction level modeling
TLM classes
uvm_*_export
uvm_*_imp
uvm_*_port
uvm_*_fifo
uvm_*_socket
PUSH mode
producer call port.put();
consumer implement put();
class producer extends uvm_component;
uvm_blocking_put_port #(packet) put_port;
function void_build_phase(uvm_phase phase);
put_port = new("put_port", this);
endfunction
virtual task initial_tr();
put_port.put(tr);
endtask
endmodule
class consumer extends uvm_component();
uvm_blocking_put_imp #(packet, consumer) put_export;
function void_build_phase(uvm_phase phase);
put_export = new("put_export", this);
endfunction
virtual task put(packet tr);
process_tr(tr);
endtask
endmodule
class env_test extends uvm_env;
producer p;
consumer c;
virtual function void connect_phase(uvm_phase phase);
p.put_port.connect(c.put_export);
endfunction
endclass
PULL mode
FIFO mode
class env_test extends uvm_env;
producer p;
consumer c;
uvm_tlm_fifo #(packet) tr_fifo;
virtual function void build_phase(uvm_phase phase);
p = producer::type_id::creare("p",this);
c = consumer::type_id::create("c",this);
tr_fifo = new("tr_fifo",this);
endfunction
virtual function void connect_phase(uvm_phase phase);
//p.put_port.connect(c.put_export); // push mode
p.put_port.connect(tr_fifo.put_export);
c.get_port.connect(tr_fifo.get_export);
endfunction
endclass
一般是push/pull + fifo 来使用
TLM classes
uvm_*_export
uvm_*_imp
uvm_*_port
uvm_*_fifo
uvm_*_socket
PUSH mode
producer call port.put();
consumer implement put();
class producer extends uvm_component;
uvm_blocking_put_port #(packet) put_port;
function void_build_phase(uvm_phase phase);
put_port = new("put_port", this);
endfunction
virtual task initial_tr();
put_port.put(tr);
endtask
endmodule
class consumer extends uvm_component();
uvm_blocking_put_imp #(packet, consumer) put_export;
function void_build_phase(uvm_phase phase);
put_export = new("put_export", this);
endfunction
virtual task put(packet tr);
process_tr(tr);
endtask
endmodule
class env_test extends uvm_env;
producer p;
consumer c;
virtual function void connect_phase(uvm_phase phase);
p.put_port.connect(c.put_export);
endfunction
endclass
PULL mode
FIFO mode
class env_test extends uvm_env;
producer p;
consumer c;
uvm_tlm_fifo #(packet) tr_fifo;
virtual function void build_phase(uvm_phase phase);
p = producer::type_id::creare("p",this);
c = consumer::type_id::create("c",this);
tr_fifo = new("tr_fifo",this);
endfunction
virtual function void connect_phase(uvm_phase phase);
//p.put_port.connect(c.put_export); // push mode
p.put_port.connect(tr_fifo.put_export);
c.get_port.connect(tr_fifo.get_export);
endfunction
endclass
一般是push/pull + fifo 来使用
相关文章推荐
- uvm_tlm——TLM1事务级建模方法(一)
- uvm_analysis_port——TLM1事务级建模方法(二)
- uvm uvm_tlm_fifo的使用
- uvm_tlm_if_base——TLM1事务级建模方法(三)
- uvm_sqr_ifs——TLM1事务级建模方法(四)
- uvm_port_base——TLM1事务级建模方法(五)
- tlm源码分析——uvm**port/export/imp class的实现
- uvm设计分析——tlm
- VMM Callbacks Versus TLM Analysis Ports
- UVM基础之-------uvm report机制的使用
- 关于我的UVM验证的第一个程序
- UVM中的regmodel建模(二)
- gns3 1.3.9升级到gns3 1.3.11后,升级gns3 iouvm解决版本不匹配问题
- UVM系统验证基础知识1(基于UVM的verilog验证 )
- 在UVM中添加env
- Modelsim建立UVM环境
- factory源码分析——uvm_default_factory
- uvm_pkg——老板,打包带走
- uvm_reg_block——寄存器模型(七)
- modelsim10.4 搭建uvm平台