'nvidia' 태그의 글 목록
본문 바로가기
반응형

nvidia9

[SystemVerilog 실무] 10. Assertion 이해 및 활용 SystemVerilog Assertion(SVA)은 설계의 특정 동작이 올바르게 이루어지는지를 타이밍 기반으로 검증하는 도구입니다. Assertion은 시뮬레이션뿐 아니라 Formal Verification에서도 중요한 역할을 하며, 시스템의 신뢰성을 높이는 데 핵심적인 기술입니다.Assertion의 개요Assertion은 검증할 논리 조건과 조건 만족 여부에 따른 동작을 정의하는 구문입니다.: assert () ; else ;label은 assertion의 이름이며 디버깅 시 유용하게 사용됩니다.pass_action에는 $display() 등, fail_action에는 $error()와 같은 메시지 출력이 주로 사용됩니다.Assertion의 종류Im.. 2025. 5. 10.
[SystemVerilog 실무] 9. Functional Coverage의 이해 SystemVerilog에서 Functional Coverage는 단순히 테스트가 실행되었는지를 넘어서 **"테스트가 어떤 상황을 실제로 검증했는가"**를 정량화하는 데 핵심적인 역할을 합니다. 이번 포스트에서는 Functional Coverage의 개념부터 covergroup 작성법, bins 설정, 주요 메서드 및 시스템 함수까지 실습 중심으로 정리해보겠습니다.Functional Coverage란?설계 명세서(Specification)를 기준으로, 테스트가 해당 명세를 얼마나 커버했는지를 측정하는 기법입니다.사용자가 직접 coverage 항목을 정의해야 하며, 시뮬레이터가 자동으로 추출해주지 않습니다.구조 커버리지(코드 기반)와 달리, 설계 코드와는 독립적인 방식으로 정의됩니다.체계적인 검증 전략 수.. 2025. 5. 10.
[SystemVerilog 실무] 8. Package와 Interface SystemVerilog는 대규모 SoC 검증 환경에서 모듈성과 재사용성을 높이기 위한 다양한 구조를 제공합니다. 이번 포스트에서는 검증 환경의 설계 품질을 높여주는 Package와 Interface의 개념과 실무 활용법을 다룹니다.Packages: 선언의 재사용과 정리패키지는 관련된 정의들을 하나로 묶어주는 컨테이너입니다. 클래스, 함수, typedef 등 여러 선언을 그룹화하여 코드 관리와 재사용성을 극대화할 수 있습니다.package my_pkg; 형태로 선언내부에 typedef, function, class 등을 선언 가능endpackage로 마무리장점선언의 모듈화 및 재사용성 강화소스 간 네임스페이스 분리로 충돌 방지유지보수 및 가독성 향상Import 방식 비교import my_pkg::*;: .. 2025. 5. 10.
[SystemVerilog 실무] 7. 랜덤 테스트와 Constraints 기초 하드웨어 설계 검증에서 코너 케이스를 놓치지 않고 커버리지를 극대화하기 위한 가장 강력한 도구 중 하나는 바로 랜덤 테스트입니다. 이 글에서는 SystemVerilog에서 제공하는 Randomization 기능과 Constraints 사용법을 소개하고, 실무에서 어떻게 활용할 수 있는지 살펴봅니다. 랜덤 테스트가 필요한 이유Directed test는 기능 위주의 검증에는 효율적이지만 corner case 탐지에 한계가 있습니다.반면 Constraint 기반 랜덤 테스트는 미처 생각하지 못한 상황까지도 포괄할 수 있는 가능성을 제공합니다.Regression Test와 Random TestRegression Test: 동일한 시나리오를 다양한 입력 및 조건에서 반복 수행해 기능 이상 유무를 검증합니다.Ran.. 2025. 5. 10.
[SystemVerilog 실무] 6. SystemVerilog OOP: 캡슐화, 상속, 다형성 SystemVerilog는 기존 Verilog의 기능을 확장하여 객체지향 프로그래밍(Object-Oriented Programming, OOP) 개념을 지원합니다. 이를 통해 코드의 재사용성, 유지보수성, 모듈화가 한층 향상됩니다. 본 포스트에서는 OOP의 핵심 개념인 캡슐화(Encapsulation), 상속(Inheritance), **다형성(Polymorphism)**에 대해 SystemVerilog 관점에서 설명합니다.OOP 개요OOP는 클래스를 기반으로 한 설계 방식을 제공하여, 코드 구조의 체계화를 돕습니다.디버깅과 유지보수를 용이하게 하며, 기능의 확장성을 제공합니다.캡슐화 (Encapsulation)캡슐화는 데이터와 해당 데이터를 조작하는 메서드를 하나의 클래스로 묶는 개념입니다.객체 내부의.. 2025. 5. 10.
[SystemVerilog 실무] 5. SystemVerilog 클래스 기초 완전정복 SystemVerilog는 객체 지향 개념을 지원하여 복잡한 테스트벤치 구조를 효율적으로 구현할 수 있습니다. 이 글에서는 클래스의 정의부터 상속, 생성자, 정적 변수, 캐스팅까지 SystemVerilog 클래스의 핵심을 정리해보겠습니다.클래스란 무엇인가?클래스는 데이터와 메서드를 캡슐화하여 재사용성과 모듈성을 높이는 구조입니다.SystemVerilog는 OOP(Object Oriented Programming)를 지원합니다.주요 특징:new()를 통한 동적 객체 생성extends를 통한 상속 및 추상화 지원포인터처럼 동작하는 객체 핸들(Handle) 기반 설계class Packet; int address; bit [63:0] data;endclass클래스 선언 방식class와 endclass 키워드.. 2025. 5. 10.
반응형