[베릴로그] EP.4 4-bit ripple carry adder의 testbench (리플캐리애더의 테스트벤치 만들기 )
디지털 논리 회로/Verilog (베릴로그) 2021. 1. 13. 16:46지난 포스팅에는 1-bit adder를 연결하여
4-bit adder를 만들었다.
이번 포스팅은 그렇게 만든 adder를 실험할 수 있는 testbench를 짜 볼 것이다.
우선 testbench 란 우리가 만든 dut (device under test) 를 말 그대로 test 할 수 있게 해주는 것이다.
앞에서 만든 adder는 dut이다. 이 dut만 가지고서는 제대로 작동하는지 알 수 없기 때문에
testbench를 이용하여 시험해주는 것이다.
예를 들어 함수 f(x)를 만들었다면 그 함수 f(x)의 x에 어떤 값을 넣었을 때
우리가 생각한 값이 나와야지 함수 f(x)가 제대로 작동하는지 알 것이다.
그런 x에 값을 넣는 동작을 testbench로 해주는 것이다.
testbench 또한 우리가 만든 dut를 test 하는 것이므로
시험하려는 dut와 입출력이 똑같아야 한다.
(다르면 오류 뜨므로 주.의. 오류 뜨면 짜증남)
* dut에서는 입력을 input , 출력을 output으로 적었지만
testbench를 작성할 때는 입력은 reg로 선언하여 적고 출력은 wire로 적어준다.
그리고 각 모듈의 이름을 써주고 입출력 옆에 ( ) 에 각각 넣을 입력을 적어준다.
예시로 저번 포스팅에서 만든 adder에 관해 testbench를 작성하면 다음과 같다.
항상 시작은 module로 시작한다.
그리고 dut와 다르게 입력은 reg 출력은 wire 선언 후 작성한 걸 볼 수 있다.
그리고 각각 입력을 random하게 넣어주면서 화면에 출력되는 output 값을 확인하면 adder가 제대로 작동하는지
확인할 수 있다.
이와 같이 작성한 testbench를 modelsim을 이용하여 돌려보면
이러한 웨이브 형태가 나온다.
우리는 이진수보다는 역시 10진수가 알아보기도 편하고 마음도 편하므로 ^^,,,
상큼하게 10진수로 바꿔준다
그리고 웨이브를 잘 살펴보면
a와 b 그리고 carry in이 랜덤하게 들어오는 것을 볼 수 있다.
그리고 그에 따라 sum인 출력값 s1을 보면 2+4+1=7
로 7이라는 값을 가지는것을 볼 수 있다.
또한 이는 다른 방법으로 작성한 두개의 4-bit adder에서
동일한 결과 값이 나오는걸 볼 수 있다.
(s1과 s2의 값이 같고, co1과 co2의 값이 같다.)
다음 웨이브를 보면 ci (carry in ) 값이 없고
a,b 값이 8과 1이므로
8+1+0 = 9
로 s1, s2의 값이 9인것을 볼 수 있다.
이를 display 창 (화면에 표시되게끔 작성했으므로)
을 통해 보면 다음과 같다.
각각 표에서 ci와 a,b 를 더한값이 s1, s2 인것을 확인할 수 있다.
이렇게 adder (덧셈기) 를 만들었다.
'디지털 논리 회로 > Verilog (베릴로그)' 카테고리의 다른 글
[베릴로그] EP.5 2:1 먹스 만들기 (Design 2:1 MUX) (0) | 2021.01.21 |
---|---|
[베릴로그] EP.3 4-bit 리플캐리애더 만들기 (Ripple Carry Adder) (0) | 2021.01.13 |
[베릴로그] EP.2 1-bit Full Adder 만들기 (0) | 2020.12.30 |
[베릴로그] EP. 1 베릴로그 시작 (Start of Verilog) (2) | 2020.12.28 |
EP.0 디지털 논리 설계 (0) | 2020.12.20 |