반응형
목차
SystemVerilog의 패키지(package)는 코드의 재사용성과 모듈화를 위한 핵심 기능 중 하나입니다.
SystemVerilog에서 패키지는 언제 도입되었을까?
패키지는 SystemVerilog에서 새롭게 도입된 기능입니다. 기존 Verilog에는 패키지 개념이 없었고, 상수나 타입 정의를 공유하려면 include 방식에 의존해야 했습니다. 이는 코드 중복과 유지보수의 어려움이 있었습니다. SystemVerilog는 C/C++의 네임스페이스 개념을 차용하여 package를 도입함으로써, 모듈 간의 명확한 경계와 재사용 가능한 코드 구조를 가능하게 했습니다.
Example
패키지 사용 시 주의사항
1. 컴파일 순서
패키지는 사용되기 전에 반드시 컴파일되어야 합니다.
예: alu_pkg.sv → alu_test.sv 순서로 컴파일
2. 이름 충돌 방지
여러 패키지를 import *로 가져올 경우, 동일한 이름의 함수나 타입이 충돌할 수 있습니다.
해결 방법: 필요한 항목만 선택적으로 import 스코프 연산자(::) 사용
3. 함수는 기본적으로 static
패키지 내 함수는 기본적으로 static이므로, 병렬 실행을 원할 경우 automatic 키워드를 사용해야 합니다.
4. 패키지는 상태를 저장하지 않음
패키지는 전역 변수나 상태를 저장하는 용도로 사용하지 말고, 정의와 선언 중심으로 활용해야 합니다.
마무리
SystemVerilog의 패키지는 단순한 코드 묶음을 넘어, 설계의 품질과 유지보수성을 높이는 강력한 도구입니다. UVM에서는 필히 사용하는 것을 권장하고 있습니다.
728x90
반응형
'Language > Verilog & SV' 카테고리의 다른 글
[Verilog & SV] task "automatic" vs "static" (0) | 2025.06.09 |
---|---|
[System Verilog] Mailbox? (0) | 2025.04.09 |
[Verilog & SV] 시프트 연산자(Shift Operators) (0) | 2025.04.09 |
[Verilog & SV] 논리 연산자(Logical Operators) (0) | 2025.04.09 |
[Verilog & SV] Bitwise, 감소 연산자(Reduction Operators) (0) | 2025.04.09 |