SystemVerilog · RTL Architecture · Digital Verification

FPGA 지연 로직을
검증 가능한 구조로

동일한 지연 규약을 시프트 레지스터, 순환 큐, 메모리 기반 DUT로 전개했습니다. 설계 설명에 그치지 않고 Icarus Verilog 13.0으로 세 프로젝트를 실제 실행해 로그, VCD, 파형 PNG를 함께 공개합니다.

3 / 3 PASS프로젝트 기능 회귀
46Project 1·2 self-check
3Project 3 파일 시나리오
13.0Icarus Verilog 버전
Architecture Evolution

같은 기능, 다른 설계 질문

Project 1은 데이터/valid 정렬을, Project 2는 전체 stage 이동을 한 슬롯 갱신으로 바꾸는 확장성을, Project 3은 파일 기반 반복 검증과 결정적 오류 보고를 다룹니다.

세 프로젝트의 아키텍처 발전 과정
Project 1 · Baseline

시프트 레지스터

데이터와 valid를 같은 깊이로 이동시키고 iDelay-1 탭을 선택합니다.

기능 회귀 PASS
Project 2 · Scale

순환 큐

(write_ptr-iDelay) mod DEPTH 주소와 한 슬롯 쓰기로 동일 동작을 구현합니다.

등가성 PASS
Project 3 · DV

메모리 기반 검증

Input Driver, DUT, Output Checker를 분리하고 데이터·valid·출력 개수를 비교합니다.

3 시나리오 PASS
Brief-to-Architecture Redraws

강의 과제를 검토 가능한 구조도로

세 프로젝트의 강의 PDF 5페이지를 분석한 뒤, 원본 슬라이드 캡처 없이 저장소 RTL·테스트벤치와 대조해 8종 구조도를 새로 그렸습니다. 각 그림은 SVG 원본과 PNG fallback을 함께 제공합니다.

Project 1 시프트 레지스터 데이터패스와 탭 선택
P1 · data/valid 파이프라인과 iDelay=N → tap[N-1]
Project 1 self-checking 테스트벤치 구조
P1 · stimulus, DUT, 독립 reference model, scoreboard
Project 1 예상 타이밍 계약
P1 · sparse valid와 동적 delay를 포함한 cycle 계약
Project 2 순환 큐 쓰기 포인터와 읽기 주소 구조
P2 · one-slot write와 modulo read address
Project 2 시프트 레지스터와 순환 큐 아키텍처 비교
P2 · 동일 delay contract, 서로 다른 state-update cost
Project 2 네 가지 통제 PPA 구성
P2 · Shift/Circular × DEPTH 10/100 통제 비교; 수치 PPA는 BLOCKED
Project 3 파일 기반 검증 아키텍처
P3 · input/register/output 파일과 Driver·DUT·Checker
Project 3 세 시나리오 실행 흐름
P3 · reset, 연속 enable, delay 변경을 한 checker로 검증
Key RTL

구조와 상태 정책

모든 저장 구조는 데이터와 valid를 하나의 transaction으로 취급합니다. 메모리형 구현은 data array를 리셋하지 않고 valid state로 stale data의 관측을 막습니다.

시프트 레지스터 데이터와 valid 병렬 경로
순환 큐 쓰기 포인터와 읽기 주소 구조
메모리 기반 지연 로직 블록도
파일 기반 Input Driver DUT Output Checker 검증 흐름
Executed Evidence

실행 로그에서 만든 파형

아래 그림은 예상 파형이 아닙니다. 커밋 c356ade의 RTL/TB를 Icarus Verilog 13.0으로 실행해 생성한 VCD에서 직접 렌더링했습니다.

Project 1 시프트 레지스터 회귀 PASS 파형
Project 1 · 고정/희소 valid/동적 delay · 20개 self-check PASS
Project 2 시프트 레지스터와 순환 큐 등가성 PASS 파형
Project 2 · 시프트 레지스터 = 순환 큐 = 독립 참조 모델 · 26개 체크 PASS
Project 3 delay가 3에서 5로 바뀌는 파일 기반 검증 PASS 파형
Project 3 시나리오 3 · delay 3→5 · 17사이클 비교, 14 valid 출력, Checker PASS
Validation Matrix

PASS와 BLOCKED를 분리

기능 시뮬레이션은 실제 실행 결과로 PASS를 표시합니다. Quartus가 없는 호스트에서 합성·수치 PPA를 실행한 것처럼 표시하지 않고 BLOCKED로 명시합니다.

ProjectRTLSimulationSynthesisPPA
1 · Shift Register 검토 완료 PASS
Icarus 13.0 · 20 checks
BLOCKED
Quartus 미설치
N/A
2 · Circular Queue 검토 완료 PASS
두 구현 + 참조 모델 · 26 checks
BLOCKED
Quartus 미설치
BLOCKED
Fit/Timing/Power 보고서 없음
3 · Memory DV 검토 완료 PASS
시나리오 1–3 · Checker + Test PASS
BLOCKED
Quartus 미설치
N/A
PPA Boundary

방법은 준비, 수치는 미주장

DEPTH 10/100, 동일 device·clock·optimization·virtual pin·toggle 가정으로 4개 프로젝트를 구성했습니다. 하지만 Quartus Fit/Timing/Power 보고서가 없으므로 면적·Fmax·전력 우위 수치는 공개하지 않습니다.

4개 구성 PPA 비교 방법과 BLOCKED 상태

수치 PPA: BLOCKED. 대상 호스트에서 quartus_sh, quartus_fit, quartus_sta, quartus_pow를 찾지 못했습니다. 빈 CSV를 결과처럼 시각화하거나 추정치를 만들지 않았습니다.

Reproducibility

한 명령으로 재실행

Windows PowerShell과 Icarus Verilog 13.0 환경에서 세 프로젝트를 컴파일·실행하고 로그, VCD, JSON manifest를 다시 생성합니다.

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\run_all_verification.ps1