2024. 8. 11. 17:53ㆍ(System)Verilog 시스템 베릴로그
베릴로그와 시스템베릴로그의 차이에 대한 이전 편
[Verilog/SystemVerilog] 베릴로그와 시스템베릴로그의 차이(1) | 문자 값 할당 | 데이터 타입, 오브젝트
문자값 할당Verilog 언어는 Vector에 모두 0, X, Z를 넣는 것이 쉽다.parameter SIZE = 64;reg [SIZE -1 :0] data;data = 0; // 모든 비트를 0으로 채움data = 'bz; // 모든 비트를 Z로 채움data = 'bx; // 모든 비트를 X로 채움
wolleyneerg.tistory.com
이번 글에서는 베릴로그(Verilog)와 시스템 베릴로그(SystemVerilog)의 중요한 기능 차이점 중 하나인 모듈 포트와 인터페이스에 대해 비교해 보았습니다.
베릴로그 모듈포트 (Modport)
베릴로그에서 모듈포트는 모듈 간의 신호를 연결하는 기본적인 방법이다.
module adder (
input wire [3:0] A,
input wire [3:0] B,
output wire [4:0] SUM
);
assign SUM = A + B;
endmodule
위 예제는 두개의 4비트 입력을 받아 5비트 출력으로 합을 계산하는 간단한 덧셈기 모듈이다.
여기서 모듈포트는 'input', 'output' 키워드를 사용하여 정의한다.
이러한 모듈 포트를 정의했으면 아래 예제처럼 상위 모듈에서 모듈 사이를 연결한다.
베릴로그 모듈 간 연결
module top;
reg [3:0] A, B;
wire [4:0] SUM;
adder uut (
.A(A),
.B(B),
.SUM(SUM)
);
initial begin
A = 4'b0011;
B = 4'b0101;
#10;
end
endmodule
시스템베릴로그 인터페이스 (Interface)
시스템 베릴로그는 베릴로그 언어를 확장하여 인터페이스를 제공한다.
인터페이스는 모델링의 task와 복잡하고 큰 디자인의 검증을 간략화할 수 있으며, 모듈 간의 신호연결을 간소화하고 구조적 복잡성을 줄이는 데 도움을 주기 때문에 추상화 모델링에 새로운 패러다임을 제공한다.
인터페이스의 주요 기능
- 신호 그룹화 : 관련된 신호들을 하나의 인터페이스 블록으로 묶어 관리 가능
- 모듈 간 연결 간소화 : 모듈 인스턴스화 시 여러 신호를 일일이 연결할 필요없이 인터페이스 하나로 연결 가능
- 재사용성 향상 : 인터페이스를 재사용하여 여러 모듈에서 일관된 신호 그룹 사용 가능
- 가독성 향상 : 코드가 보다 간결, 설계의 구조가 명확해짐
인터페이스 정의
interface simple_interface(input logic clk);
logic [3:0] A, B;
logic [4:0] SUM;
modport master (input A, B, output SUM);
modport slave (input A, B, SUM);
endinterface
시스템베릴로그 모듈 정의
module adder (simple_interface.master sif);
assign sif.SUM = sif.A + sif.B;
endmodule
module top;
logic clk;
simple_interface sif (clk);
adder uut (.sif(sif));
initial begin
sif.A = 4'b0011;
sif.B = 4'b0101;
#10;
end
endmodule
모듈 포트와 인터페이스의 한눈 비교
베릴로그 모듈 포트 vs 시스템 베릴로그 인터페이스
신호 그룹화 없음 - 신호를 하나의 인터페이스로 그룹화
복잡한 신호 연결로 가독성 떨어짐 - 간결하고 명확한 구조 제공
수동으로 모든 신호 연결 - 인터페이스 하나도 간단히 연결
코드 재사용의 제한 - 코드 재사용 높음