inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 2장] Testbench 와 DUT (Design Under Test) 란?

HDL 2장 수업내용

190

tjrrjs88

작성한 질문수 2

1

안녕하세요 🙂

HDL 2장 내용 확인차 질문을 하게 되었습니다.

-Testbench는 디자인(module)에 대한 시뮬레이션을 실행하기 위한 환경으로 어떤방식, 어느 주기로 확인하는 과정을 어떻게 꾸밀지 정하며 크게 stimulus -> module -> checker로 구성되어 있다.

-DUT는 설계한 logic으로 testbench에서 module에 들어가며 verilog, VHDL로 작성된 하드웨어 설계이다.

-stimulus는 DUT의 input역할

-checker는 DUT의 output이 원하는 결과에 맞는지 check하는 모듈이다.

 

위와 같이 정리를 하였는데 시뮬레이션과 테스트벤치의 개념이 확실히 이해가되지 않아 작성하게 되었습니다.

예를 들어 DUT가 단순히 and logic이라고 했을떄 시뮬레이션은 입력에 따라 and의 결과가 잘나오는지 확인하는 것이고 테스트벤치는 clock주기와 시뮬레이션을 모두 포함하는것이라고 생각하면 될까요?

시뮬레이션은 단순히 and를 돌려보는 것이고 그것에 필요한 input,clk주기등은 테스트벤치에서 정하는것이라고 생각하면되나요?

verilog-hdl fpga 임베디드

답변 2

1

설계독학맛비

안녕하세요 🙂

Testbench는 설계한 하드웨어 모듈(DUT, Design Under Test)을 테스트하기 위한 환경입니다. Testbench는 DUT가 예상대로 동작하는지 확인하기 위해 입력 신호(stimulus)를 생성하고, 출력 신호를 검증(checker)하는 역할을 합니다. Testbench는 보통 다음과 같은 구성 요소로 이루어집니다:

  • Stimulus (입력 생성기): DUT에 전달될 입력 신호를 생성합니다.

  • DUT (Design Under Test): 테스트하고자 하는 실제 하드웨어 모듈입니다.

  • Checker (출력 검증기): DUT에서 나온 출력이 예상한 결과와 일치하는지 확인합니다.

  • Clock Generator (클록 생성기, 필요 시): DUT가 동작하기 위해 필요한 클록 신호를 생성합니다.

Simulation은 Testbench를 사용하여 DUT의 동작을 확인하는 과정입니다. 시뮬레이션은 Testbench가 정의한 대로 DUT에 다양한 입력을 주고, 그에 따른 출력을 관찰하며, 예상된 결과와 일치하는지를 확인하는 과정입니다.

 

  • SimulationDUT가 주어진 입력(stimulus)에 대해 예상된 출력을 생성하는지를 확인하는 과정입니다.

  • Testbench는 이 Simulation을 실행하기 위해 입력, 클록, 출력 검증 등의 요소를 포함하는 환경을 제공합니다.

따라서, 시뮬레이션을 통해 AND 게이트가 올바르게 동작하는지를 확인하고, Testbench는 시뮬레이션을 수행하기 위해 필요한 입력 신호와 검증 로직을 포함하는 것입니다. 클록 주기나 입력 신호 등의 요소는 Testbench에서 정의된다고 보시면 됩니다.

1

tjrrjs88

답변 감사합니다~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

네, 맞습니다. 시뮬레이션과 테스트벤치에 대한 이해가 이미 잘 되어 계신 것 같습니다.

시뮬레이션은 특정 디자인(예: and logic)의 동작을 검증하기 위해 입력값에 대한 출력을 확인하는 과정을 의미합니다. 이때, 입력값이 무엇이고, 어떤 조건(예: 클록 주기) 하에서 테스트할 것인지를 정하는 환경이 바로 테스트벤치 입니다.

즉, 테스트벤치는 시뮬레이션을 실행하기 위한 시나리오(스티뮬러스), 클록 주기와 같은 입력 조건을 설정하고, 디자인된 모듈(DUT)을 통해 얻은 결과를 원하는 값과 비교(checker)하는 과정을 포함합니다.

따라서, 단순히 AND 로직의 결과가 제대로 나오는지 확인하는 것이 시뮬레이션 과정이며, 이러한 시뮬레이션을 실행하기 위하여 입력값, 클록 주기 등을 정하고 결과를 검증하는 전체적인 환경 구성이 테스트벤치라고 할 수 있습니다.

tjrrjs88님의 이해가 정확하시니, 같은 방식으로 다른 디자인 또한 테스팅하며 깊이 있는 연구를 계속해 나가시길 바랍니다!

latency 개념 구현

1

84

3

비바도 all os버전

1

67

2

초기화를 reset_n 이 '1'일 때가 아닌 '0' 일 때 실행시키는 이유 질문

1

69

2

다운로드용량

1

68

2

비바도리눅스설치

1

79

2

전체path복사넣기

1

60

2

Vivado 2025.2 리눅스 설치 후 실행 에러와 솔루션 (libxv_commontasks.so)

1

142

2

explorer.exe오류

1

101

3

mobaxterm설치오류

1

84

2

./build시, waveform 'divide color' 사용

1

52

2

Latch와 관련하여 (Time borrowing, Latch-based design)

1

122

2

clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.

0

57

1

안녕하세요 설치 관련 질문 드립니다.

1

60

3

16장 mealy 설계.

1

71

2

14장 Cycle 관련, Testbench 코드.

1

63

2

21강(16장) 초기값 설정이 적용되는 시점 질문

1

60

1

20강(15장) - 밀리 머신 관련하여 질문 드립니다.

1

63

2

build에러 질문

0

54

2

1장 ./build에서 에러가 나요

1

70

2

FPGA 강의 보드 문의 드립니다.

1

104

2

5장 DFF특성에 대한 질문

1

74

3

vivado linux 사용 이유.

1

135

2

메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.

1

102

2

디스코드 멤버쉽 등업 관련 문제

1

92

2