Could anyone please help me with this issue ?
I am creating my own example to learn & code different features of UVM, and I am hitting these errors :
Error-[MFNF] Member not found
base_mon.sv, 37
“this.m_port.”
Could not find member ‘write_BEFORE’ in class ‘uvm_analysis_port’, at
“/apps/vcsmx/vcs/Q-2020.03-SP1-1//etc/uvm-1.2/src/tlm1/uvm_analysis_port.svh”,
56.
Error-[MFNF] Member not found
base_mon_passive.sv, 34
“this.p_m_port.”
Could not find member ‘write_AFTER’ in class ‘uvm_analysis_port’, at
“/apps/vcsmx/vcs/Q-2020.03-SP1-1//etc/uvm-1.2/src/tlm1/uvm_analysis_port.svh”,
56.
(There may be additional errors in code but I need help only for these uvm_analysis_imp_decl related errors)
Code is very messy (logic wise, my DUT is also imaginary). Asked in conversation here :
but since that is old conversation, I am not sure if it is active thread. so I am posting this issue as a seperate post. I will update the other place when it is resolved.
Code structure:
base_mon, base_mon_passive (two monitor classes)
class base_mon extends uvm_monitor;
`uvm_component_utils(base_mon)
uvm_analysis_port#(base_tr) m_port;
...
virtual task run_phase (uvm_phase phase);
...
m_port.write_BEFORE(tr);
...
and
class base_mon_passive extends uvm_monitor;
`uvm_component_utils(base_mon_passive)
uvm_analysis_port#(base_tr) p_m_port;
...
virtual task run_phase (uvm_phase phase);
...
p_m_port.write_AFTER(tr);
...
these two monitor classes are built in base_agent class
mon = base_mon::type_id::create("mon", this);
mon_p = base_mon_passive::type_id::create("mon_p", this);
base_env class have analysis_port and analysis_imp connection
agent.mon.m_port.connect(scbd.s_imp_BEFORE);
agent.mon_p.p_m_port.connect(scbd.s_imp_AFTER);
Scoreboard defination is here:
`uvm_analysis_imp_decl(_AFTER)
`uvm_analysis_imp_decl(_BEFORE)
class base_scbd extends uvm_component;
`uvm_component_utils(base_scbd)
uvm_analysis_imp_AFTER#(base_tr, base_scbd) s_imp_AFTER;
uvm_analysis_imp_BEFORE#(base_tr, base_scbd) s_imp_BEFORE;
virtual function void write_BEFORE(base_tr tr); // type and handle
...
endfunction
virtual function void write_AFTER(base_tr tr); // type and handle
...
endfunction