Altifigence Academy
디지털 설계무료 · 기초

RTL 설계 기초

디지털 논리회로에서 배운 회로를 SystemVerilog로 표현합니다. 타입·폭·부호, 조합·순차논리, 모듈·매개변수·generate를 다루고 독립적인 테스트벤치로 경곗값과 오류 상황을 검사합니다. 마지막에는 주기 펄스 발생기와 누산기를 연결한 회로를 완성하고 실행 결과를 기록합니다.

SystemVerilog모듈 설계테스트벤치
내 강의실

이 코스에서 배우는 것

  • 각 신호의 폭·부호·구동자·유효 시점·리셋 값을 명확히 정합니다.
  • 조합 블록의 모든 조건에 값을 대입하는 방식과 클록 에지에서 상태를 갱신하는 방식을 구분해 작성합니다.
  • 매개변수와 generate로 실행 전에 회로 구조를 정하고, 경곗값으로 설정했을 때도 검증합니다.
  • 이름으로 포트를 연결하고 함수를 활용해 모듈을 구성합니다.
  • 입력 변경과 결과 확인 시점에 레이스가 생기지 않도록 테스트벤치를 작성하고 독립적인 참조 모델로 검사합니다.
  • 컴파일·시뮬레이션·합성·DDS 실행 결과로 각각 무엇을 확인할 수 있는지 구분합니다.

시작하기 전에

브라우저 실습은 교육용 모델이며 HDL을 컴파일·실행하지 않습니다. 제공된 소스를 별도로 실행하려면 운영체제에 맞는 Digital Design Studio 안내를 따르고 해당 작업에서 요구할 때 로그인하세요.

설치·첫 실행 안내 ↗ · 다운로드 ↗

커리큘럼

  1. RTL과 모듈 인터페이스
    • RTL: 동시에 동작하는 회로를 기술하기개념

      소프트웨어의 실행 순서와 하드웨어의 병렬 구조를 구분하고, 현재 상태·다음 상태와 값을 확인할 시점을 정합니다.

    • 신호와 포트: 폭·방향·유효 시점개념

      인터페이스의 동작 조건을 읽고, 조합 출력과 레지스터에 저장된 출력을 각각 언제 검사할지 정합니다.

    • 모듈·포트·인스턴스: 연결과 동작 조건개념

      조합 모듈의 포트를 이름으로 연결하고, 각 신호를 한 곳에서만 구동하는지와 모듈 사이의 연결을 확인합니다.

    • 이해 확인: 조합 출력과 저장된 출력이해 확인

      입력을 바꾼 시점과 레지스터를 관찰하는 시점을 구분합니다.

  2. 타입·폭·부호와 표현식
    • logic·wire·X/Z와 명시적인 비트 폭개념

      타입 선언이 저장소자를 결정하지 않음을 이해하고 리터럴·비교·확장·알 수 없는 값을 검증합니다.

    • 벡터 인덱스, 비트 순서와 부호개념

      비트 번호·직렬 전송 순서·산술 해석을 분리해 데이터 경로를 읽습니다.

    • 슬라이스·연결·반복 연산의 폭개념

      연결된 신호의 전체 폭과 값 보존 조건을 계산하며 데이터 경로를 구성합니다.

    • 2의 보수, 부호 확장과 오버플로개념

      signed 비트열을 수로 읽는 방법과 덧셈에서 오버플로가 발생하는 조건을 수식과 반례로 확인합니다.

    • 이해 확인: 표현 범위와 명시적인 확장이해 확인

      가산기의 입력 폭과 출력 폭을 함께 확인합니다.

  3. 대입 누락 없는 조합 RTL과 검증
    • 조합 RTL: 모든 조건에서 출력 대입하기개념

      조건 연산자와 always_comb로 같은 조합논리를 표현하고, 대입을 빠뜨려 래치가 생기는 경우를 찾습니다.

    • 인코더와 우선순위: 여러 요청 중 하나 고르기개념

      원핫 인코더가 가정하는 입력 조건을 확인하고, 우선순위 인코더의 valid와 선택 결과를 함께 읽습니다.

    • MUX 검증: 전수 검사와 속성개념

      어떤 입력 조합을 검사했는지 확인하고, 저장 동작을 별도로 검사하며 오류를 재현하는 입력열을 줄입니다.

    • 설계 확인: 선택 회로의 등가성과 관찰 시점이해 확인

      진리표로 확인할 수 있는 동작과 클록 에지에 맞춰 확인해야 하는 동작을 구분합니다.

  4. 상태·대입·리셋의 우선순위
    • 플립플롭, enable과 제어 우선순위개념

      유지·적재·리셋을 다음 상태 식으로 정의하고 의도하지 않은 클록 게이팅을 피합니다.

    • Nonblocking 대입과 동시 상태 갱신개념

      이전 값과 다음 값을 분리해 파이프라인·카운터 RTL을 정확히 해석합니다.

    • 모듈러·포화 카운터와 종료 펄스개념

      최댓값을 넘을 때의 동작을 정하고, 종료 신호가 어느 사이클에 나와야 하는지 설계합니다.

    • 실습: 카운터의 리셋·순환·불변식 검증실습

      각 상승 에지의 상태를 참조 모델과 대조하고, 초기값·리셋·비트 폭의 영향을 분리합니다.

    • 설계 확인: 폭·우선순위·순환의 경계이해 확인

      주어진 상태 전이 명세로 경계값과 동시 제어 입력을 판단합니다.

  5. 매개변수와 정적 구조 생성
    • parameter·localparam·$clog2와 경곗값 검증개념

      실행 중 입력과 정적 설정을 분리하고, N=1이거나 N이 2의 거듭제곱이 아닌 카운터의 폭과 종료 동작을 설계합니다.

    • generate: 반복문으로 정적 회로 만들기개념

      genvar와 generate-if를 사용해 이름 붙은 회로 인스턴스를 만들고 버스의 lane 배치를 확인합니다.

    • function automatic과 표현식의 재사용개념

      시뮬레이션 시간을 진행시키지 않는 함수를 작성하고, 반환값의 폭·부호와 참조 모델이 구현에 의존하지 않는지 확인합니다.

    • 이해 확인: N=1과 비트 폭이해 확인

      최소 폭을 보장하는 선언과 카운터의 실제 상태 수를 구분합니다.

  6. 테스트벤치와 독립 검증
    • 파형의 샘플링 시점과 인과관계개념

      조합 안정화, 클록 캡처와 이벤트 순서를 분리해 파형을 읽습니다.

    • 실습: 스스로 실패를 보고하는 테스트벤치실습

      DUT·테스트 입력·참조 모델·판정을 분리하고, 레이스가 생기지 않는 시점에 reset·enable·순환 동작을 검사합니다.

    • 검증 계획, 커버리지와 독립 참조 모델개념

      테스트를 통과한 것과 명세를 충족한 것을 구분하고, 경곗값·여러 조건의 조합·최소 반례를 검증 계획에 포함합니다.

    • 카운터 디버깅과 최소 반례개념

      리셋·enable·순환 경계의 오류를 구별하는 짧은 테스트를 설계합니다.

    • 이해 확인: 참조 모델과 레이스이해 확인

      DUT와 독립적으로 기대값을 구하고, 에지에서 갱신이 끝난 뒤 결과를 확인하는 방법을 선택합니다.

  7. 모듈 연결과 종합 실습
    • 상태 기계: 상태·전이·출력의 분리개념

      상태 전이표로 FSM을 작성하고, Moore·Mealy 출력과 허용하지 않는 상태, 요청 처리 방식을 비교합니다.

    • 종합 설계: 겹치는 101 패턴 검출기개념

      상태 최소화, 입력 유효성, 레지스터 출력과 독립 참조 검증을 하나의 설계에 적용합니다.

    • Ready/valid와 입출력을 동시에 처리하는 1칸 버퍼개념

      정지할 수 있는 데이터 경로에서 손실·중복 없는 전달 조건과 동시 입출력을 설계합니다.

    • 곱셈·덧셈 파이프라인과 데이터 정렬개념

      연산을 레지스터로 나눈 단계에 배치하고, 같은 입력에 속하는 데이터·valid·보조 피연산자가 함께 처리되도록 설계합니다.

    • 종합 실습: 주기 펄스와 enable 누산기 연결실습

      모듈이 이전 에지에 저장한 값을 전달받아 계산하는 동작을 정하고, enable 정지·연속 펄스·동시 리셋을 참조 모델과 대조합니다.

  8. 도구의 진단과 결과 해석
    • Setup·hold와 타이밍 예산개념

      최대·최소 경로 지연을 나누고 클록 주파수와 별개인 hold 조건을 계산합니다.

    • 클록 도메인 경계와 metastability개념

      2단 동기화기의 적용 범위를 이해하고, 단일 비트·짧은 펄스·다중 비트 전송을 구분합니다.

    • 컴파일·lint·합성: 각 도구가 확인하는 것개념

      소스 목록·top·언어 모드를 고정하고 문법 오류, 폭 경고, 래치와 실제 기능 검증을 구분합니다.

    • 실행 기록 정리와 DDS 실습개념

      소스·입력·기대값·실패 조건·도구 버전을 묶어 재현 가능한 실습 결과를 제출합니다.

    • 최종 확인: 기능 검증과 DDS 실행 결과이해 확인

      로컬 도구에서 확인한 결과와 DDS 무료 실습의 완료 기준을 충족한 결과를 구분합니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.