'SOC' 태그의 글 목록 (2 Page)
본문 바로가기
반응형

SOC22

[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.
[SystemVerilog 실무] 1. 데이터 타입과 연산자 완전 정복 데이터 타입과 연산자SystemVerilog는 하드웨어 설계 및 검증을 위한 대표적인 HDL(Hardware Description Language)입니다. 이 시리즈에서는 RTL 설계자와 Design Verification 엔지니어가 반드시 숙지해야 할 SystemVerilog의 핵심 문법과 실무 활용 사례를 다룹니다.이번 글에서는 데이터 타입과 연산자에 대해 살펴보겠습니다.1. 데이터 타입 (Data Types)하드웨어 동작을 정확하게 표현하기 위해 SystemVerilog는 다양한 데이터 타입을 제공합니다.1.1 정수형 (Integer Types)SystemVerilog의 정수형 타입은 상태 표현(state), 크기, 부호(signed/unsigned)에 따라 구분됩니다.타입 상태 표현 크기 기본 부.. 2025. 5. 5.
[UVM 1.1d] 8. UVM Sequence Library 1. Sequencer 생성Sequencer는 Stimulus Data를 생성하여 Driver로 전달하는 역할을 합니다. 기본적으로 uvm_sequencer 클래스를 상속받아 커스터마이징합니다.주요 코드 예제systemverilogclass simple_sequencer extends uvm_sequencer #(simple_item); `uvm_sequencer_utils(simple_sequencer) // 생성자 function new (string name="simple_sequencer", uvm_component parent); super.new(name, parent); `uvm_update_sequence_lib_and_item(simple_item) endfunction.. 2024. 12. 1.
[UVM 1.1d] 7-2. UBus Verification Example 7.6 UBus EnvironmentUBus Environment는 검증 환경의 상위 컨테이너로, 에이전트와 모니터, 스코어보드 등 다양한 컴포넌트를 포함합니다.주요 역할에이전트 관리: Master와 Slave Agent를 생성하고 환경 내에 통합.데이터 흐름 관리: 모니터와 스코어보드 간 연결 설정.예제 코드class ubus_env extends uvm_env; `uvm_component_utils(ubus_env) ubus_master_agent master_agent; ubus_slave_agent slave_agent; ubus_monitor bus_monitor; function new(string name = "ubus_env", uvm_component parent = null);.. 2024. 11. 26.
반응형