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

VCS8

[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 실무] 4. 절차적 블록과 제어 구조 이해하기 SystemVerilog는 여러 프로세스 모델을 지원하여, 다양한 시나리오의 동시성(Concurrency) 및 동기화(Synchronization)을 표현할 수 있습니다. 본 포스트에서는 정적 프로세스와 동적 프로세스, 그리고 race condition을 방지하기 위한 시뮬레이션 시간 모델에 대해 설명합니다.정적 프로세스 (Static Processes)SystemVerilog에서 가장 기본적인 프로세스는 always와 initial입니다.always block특정 이벤트에 반응하여 반복적으로 실행됩니다.always @(posedge clk) ... // clock edge에 반응always @(a or b) ... // a, b 중 하나라도 바뀌면 실행initial block시뮬레이션 시작 시 단 .. 2025. 5. 10.
[SystemVerilog 실무] 3. 절차적 블록과 제어 구조 이해하기 SystemVerilog 설계 및 검증 흐름에서 가장 기본이자 중요한 개념 중 하나는 **절차적 블록(Procedural Blocks)**과 **제어 구조(Control Structures)**입니다. 본 포스트에서는 이를 중심으로 실무에 바로 활용 가능한 문법과 구조를 정리합니다.절차적 블록 (Procedural Blocks)SystemVerilog의 절차적 블록은 하드웨어의 **동작(behavioral)**을 기술하는 핵심 구조입니다.initial시뮬레이션 시작 시 단 한 번만 실행testbench setup 등 초기화 용도에 자주 사용final시뮬레이션 종료 직전에 한 번 실행로그 출력이나 리소스 정리에 사용always조건 없이 무한히 반복 실행순차 논리 설계의 기본 구조SystemVerilog는 .. 2025. 5. 10.
[SystemVerilog 실무] 2. 자료구조와 활용 SystemVerilog는 단순한 하드웨어 기술 언어를 넘어서 강력한 테스트벤치 언어로 자리잡았습니다. 이 글에서는 Verification에서 자주 사용되는 SystemVerilog의 4가지 주요 배열 타입과 데이터 조작 기법을 살펴보고, 각 자료구조가 실제 DV 환경에서 어떻게 활용되는지 소개합니다.1. 배열의 분류와 개념1-1. Packed vs Unpacked ArraysPacked Array연속된 비트들로 구성 → 버스나 레지스터 표현에 적합고정 크기, 비트 단위 연산 가능예시: bit [2:0][7:0] packed_array; → 3개의 8비트 값Unpacked Array일반적인 소프트웨어 배열 형태다양한 타입 포함 가능 (예: 구조체, 클래스)예시: bit [7:0] unpacked_arra.. 2025. 5. 10.
[UVM 1.1d] 7-3. UBus Verification Example 7.10 UBus Agent Monitor역할트랜잭션 감시: DUT와의 신호 상호작용을 모니터링하며, 이를 ubus_transfer 객체로 변환.데이터 전달: 생성된 트랜잭션 데이터를 analysis_port를 통해 다른 컴포넌트(예: Scoreboard)에 전달.체크 및 커버리지: 프로토콜 체크와 커버리지 수집 기능을 제공합니다.예제 코드class ubus_agent_monitor extends uvm_monitor; `uvm_component_utils(ubus_agent_monitor) virtual ubus_if vif; uvm_analysis_port#(ubus_transfer) analysis_port; function new(string name, uvm_component parent.. 2024. 12. 1.
반응형