uvm中的monitor的作用主要是捕捉interface上面的信号, 转换成transaction, 然后发送给其他的component。因此需要下面2个要素:
- 要观测的virtual interface
- 申明tlm_analysis_port, 然后广播要传输的数据。
monitor的作用
monitor由[uvm_monitor]这个class派生出来, 基本的作用如下:
- 通过virtual interface收集总线信号;
- 收集用于cheker和coverage分析的数据;
- 通过analysis_port传输数据
如下图所示:
创建monitor
- 由[uvm_monitor]创建一个自定义的class, 注册, 然后创建new函数:
1 | // my_monitor is user-given name for this class that has been derived from "uvm_monitor" |
- 申明analysisport和virtual interface
1 | // Actual interface object is later obtained by doing a get() call on uvm_config_db |
- 在build_phase中实例化analysis_port并且配置virtual interface。
1 | virtual function void build_phase (uvm_phase phase); |
- 编写run_phase
1 | // This is the main piece of monitor code which decides how it has to decode |
参考
本文图片和code来源于网站: http://www.chipverify.com/uvm/monitor