본문 바로가기

그냥 간단한 노트 겸 저장, 기본적으로는 run_phase 에서 메인 코드가 도는데 희안하게 uvm_sequence 에서는 

task body();

여기서 메인 코드가 수행됨

https://www.eunchan.kim/research/uvm/uvm-flow.html

run_phase 는 실제 동작이 구현되는 부분이니 이 코드가 들어갈만한 곳은 uvm_driver나 uvm_monitor, uvm_sequence
정도 일것 같습니다.

각 블럭은 다음 글에서 설명드릴텐데, uvm_driver 나 uvm_monitor 는
run_phase
에서 실행되는 게 맞으나, 

uvm_sequence는 
body
task에서 메인 코드가 실행됩니다.

 

예제를 보면,

 

    /* "body()" is a task that is invoked by either a sequencer associated with
    the sequence's start method or a sequence with a null sequencer.
    */
    task body;
        `uvm_info("TEST_SEQ", "Inside body task!", UVM_HIGH)
        super.body();  // Call base sequence body for the reset sequence
        `uvm_info("TEST_SEQ", "Starting AXI transaction sequence...", UVM_HIGH)
        // Address 1 Write and Read
         item = my_sequence_item::type_id::create("item");
         start_item(item);
         item.read = 0;  // Write operation
         item.addr = 32'h0001;
         item.data = 32'hAAAA;
         finish_item(item);
         `uvm_info("TEST_SEQ", $sformatf("Write to Addr=%0h Data=%0h", item.addr, item.data), UVM_HIGH)
    endtask: body

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.