2016-07-20 2 views
1

모니터 run_phase 작업의 uvm 방법론에 대해 잘 모르는 경우 궁금합니다. DUT는 여러 클록 도메인을 분리하지 않고 모니터가보고 확인하는 데이터가있는 여러 클럭을 전송합니다. 그래서 내 실행 단계 작업은 CLK1 및 CLK2에만 posedge 문 중 하나가 실행됩니다 다음 정렬하는 경우입니다uvm monitor methodology & run_phase

forever begin 
fork 
begin @(posedge clk1) begin 
..code to capture data.. 
end end 
begin @(posedge clk2) begin 
..code to capture data in this domain... 
end end 
join_any 
disable fork; 

내 '문제'처럼 보인다. 또한 내 모니터가 세 번째 비동기 도메인에서 다른 작업을 수행하도록하려면 clk1 또는 clk2의 배수로 말하면 세 번째 도메인이 clk1 또는 clk2와 정렬 될 때 문제가 발생합니다.

모니터가 실행 단계에서 영원히 반복되는 여러 클럭 도메인에서 어떻게 작동한다고 가정합니까?

답변

2

일반적으로 두 개의 서로 다른 클럭 도메인을 모니터링 할 때 별도의 영원 루프 스레드로 유지됩니다. 조건 적으로 다른 클럭 도메인을 비활성화하려는 시나리오가있을 수 있지만 이것이 의도하는 바가 아닌지 의심 스럽습니다.

fork 
    forever @(posedge clk1) begin 
    ..code to capture data.. 
    end 
    forever @(posedge clk2) begin 
    ..code to capture data in this domain... 
    end 
join // or join_none