728x90
반응형
- verilog는 테스트벤치 작성시 도움이 되는 task와 함수가 내장되어 있음.
- 이를 통칭 'system tasks or system functions'라고 하며 항상 '$' 기호로 시작
- $display
- $monitor
- $time
$display
- 시뮬레이션 중 콘솔에 표시되는 메시지 출력에 사용
- printf 느낌
- 문자열에 %를 사용하여 신호를 표시할 수도 있음.
- format letter도 포함해야 함.
- b : 2진
- d : 10진
- h : 16진
- 위 format 코드 앞에 숫자를 추가하면 자릿수 결정.
- format letter도 포함해야 함.
// 일반 구문
$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
반응형
'Verilog HDL > 1. Verilog HDL Basic (문법)' 카테고리의 다른 글
[Testbench] 8. 예제 풀이 (0) | 2024.01.13 |
---|---|
[Testbench] 7. 테스트벤치 full 작성 (1) | 2024.01.13 |
[Testbench] 5. forever loop (0) | 2024.01.13 |
[Testbench] 4. initial block (0) | 2024.01.13 |
[Testbench] 3. Time 모델링 (1) | 2024.01.10 |