편지함에 글을 쓰려고 할 때 UVM SV 테스트 벤치에서 편지함을 사용 중입니다. 데이터 writetrans (*) 함수에 모든 방법을 도착하고 결국 공간이 사서함이 있지만도 쓰기에 실패이야 ... 내가 무엇이 잘못되었는지 확실히 확실하지 않다systemverilog 편지함에 쓰지 못함
class my_seqyuence extends uvm_sequence;
mailbox data;
some_user_defined_type mydata;
function new(string name = "my_sequence");
super.new(name);
data=new();
endfunction
task body();
forever begin
// blocking-get. program is blocked here... not why get is not returning...!
data.get(mydata);
decode_mydata_and_do_something_here;
end
endtask
function void writetrans(some_user_defined_type trans);
// I used print statements with mailbox size and i can see that valid trans is arriving here and successfully writing to mailbox.
data.try_put(trans)
endfunction
endclass
: 내 코드는 울부 짖는 소리처럼 보인다 .
uvm_component를 확장하여 분석 포트를 만들었습니다. 분석 포트는 DUT 요청을 받기 위해 모니터 트랜잭션 포트와 연결됩니다. 분석 포트의 쓰기 구현 내에서, 위의 코드에서 언급 한 writetrans (*) 함수를 호출하여 수신 된 req를 전달합니다. 사서함에 데이터가 쓰여지고 있습니다. get()이 작동하지 않는 이유를 알 수 없으므로 다소 잃어 버렸습니다 ... – newbie