TL;DR;

$finish;를 이용하세요.

 

기본적으로 Verilog의 always 블럭은 영원히 돌아가게 되어있다.

그런데 만약 테스트 벤치에 특정 클럭 시점까지의 행동들만 들어있다면 그 이후에는 의미없는 행동이 계속 돌아갈 것이다.

Vivado나 Modelsim을 이용하는 경우라면 시뮬레이션 때 특정 단위의 클럭만큼 나누어 실행할 수 있지만 리눅스에서 iverilog를 이용한다면 Ctrl+C를 누르지 않는 한 시뮬레이터인 vvp가 영원히 돌아갈 것이다. 따라서 코드 단계에서 return 0;와 같은 프로그램의 종료 시점을 명시해주는 것이 편하다.

아래는 5클럭 주기로 간단한 Moore FSM을 돌리는 프로그램의 코드이다.

약 130클럭까지의 행동을 정해준 후 $finish;를 호출해 프로그램이 종료되도록 하였다.

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.