Altifigence Academy

9 / 36 · 실습

MUX 시뮬레이션 실습

제공된 소스와 입력 파일로 출력을 비교합니다.

배울 내용

sel이 0이면 a, 1이면 b가 y로 나옵니다. sampled_y는 클록 상승 에지의 y를 저장합니다. 입력이 바뀌어도 다음 상승 에지까지 sampled_y는 유지됩니다.

시작하기 전에

Digital Design Studio의 Desktop 프로젝트와 정상 실행 권한을 준비하세요. 각 예제는 별도 폴더의 rtl/top.sv로 저장합니다.

SystemVerilog 소스

SystemVerilog
module top (
    input logic clk,
    input logic a,
    input logic b,
    input logic sel,
    output logic y,
    output logic sampled_y
);
    assign y = sel ? b : a;
    // Explicit observation register: y remains purely combinational.
    // The register makes this design eligible for logic-netlist-1 simulation.
    always_ff @(posedge clk) sampled_y <= y;
endmodule

실행 방법

New analysis에서 Two-state single-clock v1을 선택하세요. Clock port는 clk, 주기는 1000ps입니다. 아래 값으로 Preflight 후 Run RTL simulation을 실행하고 결과를 비교하세요.

설정
초기 레지스터 값 (LSB부터)[false]
Reset port비움
Maximum cycles / time8 / 8000ps

입력 자극

json
[
  {
    "inputs": {
      "a": [
        false
      ],
      "b": [
        false
      ],
      "sel": [
        false
      ]
    }
  },
  {
    "inputs": {
      "a": [
        false
      ],
      "b": [
        false
      ],
      "sel": [
        true
      ]
    }
  },
  {
    "inputs": {
      "a": [
        false
      ],
      "b": [
        true
      ],
      "sel": [
        false
      ]
    }
  },
  {
    "inputs": {
      "a": [
        false
      ],
      "b": [
        true
      ],
      "sel": [
        true
      ]
    }
  },
  {
    "inputs": {
      "a": [
        true
      ],
      "b": [
        false
      ],
      "sel": [
        false
      ]
    }
  },
  {
    "inputs": {
      "a": [
        true
      ],
      "b": [
        false
      ],
      "sel": [
        true
      ]
    }
  },
  {
    "inputs": {
      "a": [
        true
      ],
      "b": [
        true
      ],
      "sel": [
        false
      ]
    }
  },
  {
    "inputs": {
      "a": [
        true
      ],
      "b": [
        true
      ],
      "sel": [
        true
      ]
    }
  }
]

결과 비교

8 cycles · y=1 · sampled_y=1. 3000ps에서는 y=1이고 sampled_y=0인지 비교하세요.

이 실습은 0/1 단일 클록 RTL을 사용합니다. #delay·initial·X/Z 테스트벤치는 포함하지 않습니다. 학습 완료 표시는 학습 기록이며 실제 시뮬레이션 결과를 뜻하지 않습니다.

실습 파일

mux-top.sv ↓mux-inputs.json ↓

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