본문 바로가기
Verilog HDL/1. Verilog HDL Basic (문법)

[Testbench] 6. System Tasks

by 한PU 2024. 1. 13.
728x90
반응형
  • verilog는 테스트벤치 작성시 도움이 되는 task와 함수가 내장되어 있음.
  • 이를 통칭 'system tasks or system functions'라고 하며 항상 '$' 기호로 시작
    • $display
    • $monitor
    • $time

$display

  • 시뮬레이션 중 콘솔에 표시되는 메시지 출력에 사용
    • printf 느낌
  • 문자열에 %를 사용하여 신호를 표시할 수도 있음.
    • format letter도 포함해야 함.
      • b : 2진
      • d : 10진
      • h : 16진
        • 위 format 코드 앞에 숫자를 추가하면 자릿수 결정.
// 일반 구문
$display(<string_to_display>, <variables_to_display>);

// Example : x의 값을 다른 진수로 각각 출력
$display("x (bin) = %b, x (hex) = %h, x (decimal) = %d", x, x, x);

 

full list of different formats

Format Code Description
%b or %B 2진수 표현
%d or %D 10진수 표현
%h or %H 12진수 표현
%o or %O 8진수 표현
%c or %C ASCII 문자 표현
%m or %M 모듈의 계층적 이름 표현 (hierarchical name)
%s or %S 문자열 표현
%t or %T 시간 표현

$monitor

  • $display 함수와 매우 유사.
    • $monitor가 조금 더 지능적 행동 함수.
  • 테스트벤치에서 신호의 값을 모니터링
    • 신호 중 하나가 상태 변경시 메시지 표시
    • 신호의 상태 변경 == 트리거
  • RTL code에 $monitor 포함 가능
    • synthesizer에서 무시
    • 일반적인 경우도 아님.
// 일반 구문
$monitor(<message_to_display>, <variables_to_display>);

// Example
$monitor("in_a = %b, in_b = %b\n", in_a, in_b);

$time

  • 현재 시뮬레이션 시간을 가져옴.
  • 일반적으로 $display 또는 $monitor task와 함께 사용
    • 메시지에 시간을 추가
$display("Current simulation time = %t", $time);
728x90
반응형