[베릴로그 RTL 예제] 탁구 게임기 -7편: 에뮬레이션 검증-
목차:
1. RTL 베릴로그로 "탁구대" 그리기
2. 그래픽 LCD 구동 칩의 시뮬레이션 모델
3. "탁구대"의 그래픽 테스트 벤치
4. 움직이는 탁구공
5. GLCD의 버스 기능 모델
6. 탁구대, 움직이는 공 그리고 탁구채
7. 에뮬레이션
----------------------------------------------------------------------------------------------------------------
오픈-소스 반도체 설계 도구가 설치된 "내 칩 디자인 킷"의 WSL 가상 디스크 이미지 [링크]
----------------------------------------------------------------------------------------------------------------
7-1. 테스트벤치 재사용 코-에뮬레이션
베릴로그는 하드웨어를 묘사하려는 목적을 가진 컴퓨팅 언어다. 컴퓨팅 언어로 디지털 회로가 하게될 행위를 인간이 읽고 쓰기에 용이한 문장으로 하드웨어의 행동를 문서화 한다. 인간의 사고체계에 근접한 표현 일 수록 추상화 수준이 높다고 한다. 디지털 요소(각종 게이트를 표현한 그림, 심볼)을 동원한 전통적인 회로도를 보려면 디지털 회로의 상당한 전문지식을 필요로 한다. 이에 비해 생활 단어들을 사용하는 컴퓨팅 언어의 문장들은 친근하다. 회로도에 비하면 컴퓨팅 언어는 매우 추상성(abstraction level)이 높다. 간결하며 문법 적용이 매우 엄격한 컴퓨팅 언어로 작성된 문장은 소프트웨어 도구를 통하여 디지털 반도체 회로로 변환할 수 있다. 인간이 작성한 문서를 제조(또는 실행) 가능한 형식으로 변환해 주는 소프트웨어를 컴파일러라고 한다. 컴퓨팅 언어로 작성된 문서를 디지털 하드웨어로 변환해 주는 자동화 도구가 합성기(synthesizer)다. 컴퓨팅 언어로서 베릴로그는 매우 다양한 기능을 가지고 넓은 추상화 수준을 수용하지만 하드웨어로 변환 가능한 수준은 그중 일부분이다. 이 수준을 합성 가능한 수준 또는 RTL(Register Transfer Level)이라 한다.
하드웨어를 기술한 문서로부터 변환된 회로가 원하는 대로 작동하는지 확인할 방법은 만들어 보는 것이다. 설계의 과정은 묘사와 확인(검증) 그리고 고침의 수없는 반복이다. 그때 마다 매번 하드웨어를 제작하려면 비용도 문제지만 시간소요가 엄청나다. 이를 극복하기 위한 방안으로 실물 없이 가상으로 하드웨어를 모사하는 '시뮬레이션'을 수행한다. 소프트웨어로서 시뮬레이터는 내부 오류로부터 자유롭지 않으며 실제 하드웨어에서 일어나는 물리적인 현상(특히 병렬로 발생하는)을 정확히 재현하지 못한다. 더구나 예정된 절차를 기술한 테스트벤치로는 실제 환경에서 벌어지는 예외적인 사건들을 시험하기가 쉽지 않다. 앞서 대화형 테스트벤치를 작성 했었지만 하드웨어의 물리적 반응을 검증하기에 충분치 않다.
에뮬레이션은 하드웨어 설계를 직접 물리적인 하드웨어에서 검증한다. 프로그램 가능한 반도체를 쓰면 합성을 통해 얻은 디지털 회로를 하드웨어로 제작하는 수고를 덜 수 있다. 이 반도체를 FPGA(Field-Programmable Gate Array)라 한다. FPGA에는 디지털 회로의 기본 기능 요소(게이트와 플립플롭)들을 미리 깔아두었다. 배선만 재구성하여 특정 디지털 회로를 완성할 수 있다. FPGA에 구현한 디지털 회로를 시험하기 위해 주변회로를 꾸미는 대신 시뮬레이션에 사용했던 대화형 테스트 벤치를 그대로 재사용(Testbench Re-Use)한다. 코-에뮬레이션(Co-Emulation)은 시뮬레이션 소프트웨어에서 작동하는 테스트벤치를 FPGA에 구현된 하드웨어에 물려 시험하는 검증기법이다.
7-2. "내 칩" 에뮬레이션 검증 키트
아래 그림은 "내 칩" 에뮬레이션 검증 키트[링크]의 구성을 보여준다. "내 칩"을 설계하고 검증하며 테스트까지 수행할 수 있는 반도체 설계실을 내 책상위에 차릴 수 있다(MyChip-on-MyDesk).

"내 칩" 에뮬레이션 검증 키트[링크]
에뮬레이션의 기본 개념은 컴퓨팅 시스템에 장착된 새로운 주변장치를 추가하는 경우와 같다. 컴퓨팅 시스템에 주변장치(하드웨어)를 무작정 연결할 수 없다. 미리 마련된 장치 연결 규칙을 따라야 한다. 이 규칙은 하드웨어와 소프트웨어로 구성되어있다. 하드웨어 규칙은 버스, 소프트웨어 규격은 운영체제의 구동 프로그램이다. 응용 프로그램은 구동 프로그램을 경유하여 하드웨어와 통신 할 수 있다.
"내 칩" 에뮬레이션 검증 키트를 컴퓨팅 시스템의 관점에서 보면 USB 버스에 연결된 주변장치다. "새로운 장치"가 "내 칩"이다. 응용 프로그램은 테스트벤치다. 이 둘을 연결할 버스 규격은 USB 다. USB는 매우 광범위한 기능의 주변장치를 수용할 수 있는데 직렬 통신 장치 규격(CDC, Communication Device Class)도 그중 하나다. USB 규격의 하드웨어와 구동 소프트웨어를 직접 만들려면 엄청난 비용이 든다. 검증된 상용 칩들을 활용하여 통신을 맏기도록 한다. USB
을 연결하고 이를 구동하는 "내 칩"이다.
통해 드라이버
규격
무작정 내 칩을
하는 것과 같다.
컴퓨터에 새로운 주변장치를 추가하면 운영체제는 이 장치의 구동 소프트웨어를 찾는데
댓글 없음:
댓글 쓰기