2011-10-26 2 views
0

cbValueChange VPI 콜백이란 무엇이며 어떻게 작동합니까?Verilog VPI 콜백

신호 X (약 2000주기)의 posedge에서 함수를 실행한다고 가정합니다. cbValueChange 콜백을 사용하거나 테스트 벤치에서 코드를 호출해야합니까?

always @posedge(X) 
begin 
    $pli 
end 

어느 것이 더 효율적입니까?

+0

으로 볼 수 있습니다. 어떤 시뮬레이터를 사용하고 있습니까? – Andy

답변

0

효율성은별로 중요하지 않습니다. 귀하의 상황을 더 잘 이해하지 못하면 충고를하는 것이 힘들지 만 귀하의 예에서와 같이 $ pli 통화를 권합니다. cbValueChange를 사용한다는 것은 변수의 값이 바뀔 때 시뮬레이터가 실행할 C 코드를 등록하는 것을 의미합니다. 이것은 값이 변경 될 때 호출되는 사용자 정의 $ pli 루틴없이 발생합니다. Verilog 코드를 읽는 사람에게는 이것이 전혀 보이지 않기 때문에 C 코드가 시뮬레이션에 영향을주는 변경을하면 어떤 일이 벌어지고 있는지 이해하려고하는 사람은 누구나 좌절 할 것입니다.

0

cbValueChangevpi_register_cb()을 통해 등록 된 신호에 대한 값 변경 이벤트를 등록/수신하는 이유입니다. 따라서 신호 값이 반전되거나 변경되면 시뮬레이터는 적절한 시뮬레이션 단계에서 콜백 함수를 호출합니다. 자신 만의 PLI/VPI 기능을 호출하려는 경우 자세한 예제를 http://www.asic-world.com/verilog/pli5.html