저번 포스팅에서는 데이타 타입들에 대해서 알아보았다.
이번 포스팅에서는 System Tasks들에 대해서 알아보겠다.
💻 $display
사용법 : $display(p1,p2,p3,...,pn);
우리가 익히 알고 있는 printf와 유사하다.
%d : 10진수
%b : 2진수
%s : 문자열
%h : 16진수
%c : ASCII문자
%m : 계층 이름(인자가 필요하지 않다.)
%v : 강도
%o : 8진수
%t : 현재 시간
%e : 실수를 과학적 표기법으로(ex. 3e10)
%f : 실수를 십진 표기법으로(ex. 2.13)
%g : 실수를 위 둘중 짧은 것으로 출력
예시)
$display("Hello Verilog World"): // Hello Verilog World
reg [4:0] port id;
$display("ID of the port is %b", port_id); // ID of the port is 00101
💻 monitor
사용법 : $monitor(p1,p2,p3,...,pn);
$display와 유사하지만 $monitor는 신호의 값이 변할 때 마다 출력한다.
$monitor는 단 한번만 사용해야 한다.
모니터링을 켜고 끄기 위해서 $monitoron과 $monitoroff가 사용되어진다.
// 시간과 클럭,리셋 신호의 값을 모니터링함.
//클럭은 매 5단위 시간마다 바뀌고, 리셋은 10 단위 시간에 0이 된다.
intital
begin
$monitor($time, " Value of signals clocks = %b reset = %b", clock, reset);
end
-- 0 Value of signals clocks = 0 reset = 1
-- 5 Value of signals clocks = 1 reset = 1
-- 10 Value of signals clocks = 0 reset = 0 ....
💻 $stop
사용법 : $stop;
시뮬레이션을 하는 중 중단을 하는 시스템 테스크이다.
$stop 테스크는 상호 작용 모드의 시뮬레이션에서 사용된다.
설계자가 시뮬레이션 중단을 원하거나,신호의 값을 조사하려고 할 때 사용된다.
💻 $finish
사용법 : $finish;
시뮬레이션을 종료하기 위해 사용된다.
예시)
// 단위 시간 100에 시뮬레이션을 중단하고 결과를 조사.
// 단위 시간 1000에 시뮬레이션을 끝냄.
initial // 시간은 0, 나중에 설명한다고 함.
begin
clock = 0;
reset = 1;
#100 $stop; // 단위 시간 100에 시뮬레이션을 중단.
#900 $finish; // 단위 시간 1000에 시뮬레이션을 종료.
end
💻 'define
parameter랑 유사하다.
허나, 'define은 Code 단위의 매크로이고, parameter는 모듈단위의 매크로이다.
이 특성을 잘 활용하면, 응용해서 사용이 가능해진다.
'define WORD_SIZE 32
'define S $stop //'s를 사용해서 $stop을 사용할 수 있다.
'define WORD_REG reg [31:0] // 'WORD_REG reg32;를 사용해서 32비트 레지스터를 사용할 수 있다.
💻 'include
c언어의 #include와 같은 용도이다.
다른 소스파일의 기능들을 불러오고 싶을때 사용된다.
'2-2 > 디지털 설계 및 실험' 카테고리의 다른 글
[디지털 설계 및 실험] Verilog 외전 (1) | 2022.10.15 |
---|---|
[디지털 설계 및 실험] Verilog 기본 vol.5 Gate-Level Modeling (0) | 2022.10.12 |
[디지털 설계 및 실험] Verilog 기본 vol4.-모듈과 포트 (1) | 2022.09.25 |
[디지털 설계 및 실험] Verilog 기본 vol.2 - Data types (1) | 2022.09.23 |
[디지털 설계 및 실험] Verilog 기초 vol.1 - 구성 요소 (0) | 2022.09.23 |