ブロッキングのportにtlm_fifoをつなげちゃ駄目だよね。

driver<->sequencer間をfifoでつなげようと

tlm_fifo #(dmac_data) fifo
......
fifo = new("dmac_fifo", null, 8) ;
......
// connect
function void connect();
driver.seq_item_port.connect(fifo.get_export);
sequencer.seq_item_port.connect(fifo.put_export);
...
endfunction

なんてしたらリンク時エラー発生

# ** Error: (vsim-3567) ../../verilog/BENCH/ovm_tb/dmac_agent.sv(68): No field named 'seq_item_port'.
# Region: /dmac_top_tb
# ** Error: (vsim-3567) ../../verilog/BENCH/ovm_tb/dmac_agent.sv(68): No field named 'seq_item_port'.
# Region: /dmac_top_tb
# ** Error: (vsim-3978) ../../verilog/BENCH/ovm_tb/dmac_agent.sv(67): Illegal assignment to variable of class ovm_port_base #(class sqr_if_base__2) from variable of class ovm_get_peek_imp #(class dmac_reg_data, class tlm_fifo_base__2)

よく考えると。。seq_item_portはブロッキングでデータのやり取り(rspを返す!!)を行う
portじゃないですか。
OMVなんて全く分かってない”おこちゃま”でした。。。汗
benchの構成を考え直さないと。。

systemverilog OVM OVM2.0 回路検証 LSI検証