Modelsim 초보자 가이드: FPGA 및 ASIC 시뮬레이션 활용법
튜토리얼 - 초보자를 위한 Modelsim 시뮬레이션 사용법
Modelsim은 Mentor Graphics에서 만든 프로그램으로 VHDL과 Verilog 설계를 시뮬레이션하는 데 사용됩니다. 비즈니스와 교육 현장에서 가장 널리 사용되는 시뮬레이션 프로그램입니다. 이 튜토리얼에서는 먼저 시뮬레이션이 왜 중요한지 설명한 뒤, Modelsim Student Edition을 무료로 개인용으로 구하는 방법을 보여줍니다.
시뮬레이션은 FPGA와 ASIC 설계의 중요한 단계입니다. 시뮬레이션을 통해 설계자는 자신의 설계를 자극(stimulate)하고, 작성한 코드가 자극에 어떻게 반응하는지 확인할 수 있습니다. 훌륭한 시뮬레이션은 설계의 모든 가능한 상태를 검증하여 모든 입력 시나리오가 적절히 처리되는지 확인합니다. 어딘가에 if 문을 빠뜨렸나요? 모든 가능한 case 문 할당을 기억했나요? 설계 시뮬레이션을 하지 않을 때 매우 쉽게 저지르는 실수들입니다. 시작해 봅시다.
Modelsim을 컴퓨터에 다운로드해 설치하셨나요? 여기서 받으세요. 기본 매개변수로 설치를 진행하세요. Mentor Graphics로부터 라이선스를 요청해야 합니다는 점을 유의하세요. 설치가 끝나면 Finish를 선택해야 하고, 브라우저 창이 열리며 라이선스 요청 양식이 나타납니다. 브라우저 북마크나 웹에 게시된 링크에서 기존 라이선스 요청 링크를 클릭해도 작동하지 않습니다.
시뮬레이션할 코드는 아래 VHDL 설계입니다. 실제 코드는 중요하지 않으니 Verilog를 배우고 계셔도 괜찮습니다! 이 튜토리얼에서는 VHDL을 몰라도 됩니다. VHDL 코드는 간단한 앤드 게이트를 생성하고 테스트벤치를 통해 몇 가지 입력을 제공합니다. 아래 코드를 and_gate.vhd에, 테스트벤치를 and_gate_tb.vhd에 복사하세요.
and_gate.vhd:
library ieee; use ieee.std_logic_1164.all; entity and_gate is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end and_gate; architecture rtl of and_gate is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
and_gate_tb.vhd:
library ieee; use ieee.std_logic_1164.all; entity and_gate_tb is end and_gate_tb; architecture behave of and_gate_tb is signal r_SIG1 : std_logic := '0'; signal r_SIG2 : std_logic := '0'; signal w_RESULT : std_logic; component and_gate is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic); end component and_gate; begin and_gate_INST : and_gate port map ( input_1 => r_SIG1, input_2 => r_SIG2, and_result => w_RESULT ); process is begin r_SIG1 <= '0'; r_SIG2 <= '0'; wait for 10 ns; r_SIG1 <= '0'; r_SIG2 <= '1'; wait for 10 ns; r_SIG1 <= '1'; r_SIG2 <= '0'; wait for 10 ns; r_SIG1 <= '1'; r_SIG2 <= '1'; wait for 10 ns; end process; end behave;
Modelsim을 실행합니다. 다음과 같은 창이 나타납니다.
Modelsim 메인 윈도우
시뮬레이션을 실행하려면 프로젝트를 생성해야 합니다. File → New → Project를 클릭하세요. 왼쪽 그림과 같은 창이 나타납니다. 새 프로젝트의 위치를 선택하고 이름을 and_gate로 지정하세요. Modelsim 프로젝트 파일 확장자는 .prj입니다. 다른 설정은 기본값으로 두세요. 이는 모든 코드가 "work" 라이브러리에 컴파일됨을 의미합니다.
오른쪽 그림과 같이 Add Existing File을 클릭하세요. and_gate.vhd와 and_gate_tb.vhd를 다운로드한 위치로 이동해 둘 다 프로젝트에 추가하세요. 다른 설정은 기본값으로 유지하고 완료되면 OK를 클릭하세요.
Modelsim 프로젝트 윈도우 - 파일이 프로젝트에 추가됨
이제 파일이 프로젝트에 성공적으로 추가되었습니다. 위 Modelsim 프로젝트 윈도우 그림의 두 파란색 물음표 보이시나요? 이는 Modelsim이 아직 파일을 컴파일하지 않았음을 의미합니다. 소스 파일을 컴파일해야 합니다. and_gate.vhd를 우클릭하고 Compile → Compile All을 클릭하세요. 콘솔 창에 초록색 메시지가 뜨며 컴파일 성공을 알립니다(아래 스크린샷 참조).
성공적인 컴파일 결과
시뮬레이션을 시작하려면 메뉴바의 Simulate → Start Simulation을 클릭하세요. Start Simulation 창이 열립니다. work 옆의 플러스 기호를 클릭하고, and_gate_tb 옆의 플러스 기호를 클릭하세요. and_gate가 아닌 and_gate_tb를 선택해야 합니다. 테스트벤치 레벨에서 설계를 시뮬레이션하고 싶기 때문입니다. and_gate_tb가 강조되면 OK를 클릭하세요.
Modelsim 시뮬레이션 윈도우 - 시뮬레이션 준비 완료
거의 다 왔습니다! 시뮬레이션이 준비되어 대기 중입니다. Modelsim을 사용할 때 대부분의 시간은 파형 보기(waveform view)를 보는 데 쓰입니다. 파형 보기에는 설계의 모든 시그널에 대한 파형(이진 0과 1, 16진수, 열거형 등)이 표시됩니다. 모듈이 다양한 자극에 어떻게 반응하는지 보여줍니다. 다음 그림이 파형 보기 모습인데, 먼저 모니터링할 시그널을 추가해야 합니다. 이 예제에서는 테스트벤치의 모든 시그널을 모니터링하겠습니다. 시뮬레이션 윈도우에서 and_gate_tb를 우클릭하고 Add Wave를 클릭하세요. 다른 윈도우에서 시그널을 파형 창으로 드래그 앤 드롭할 수도 있습니다.
여기가 여러분의 파형 창입니다. 테스트벤치의 모든 시그널이 모니터링할 시그널로 추가되었습니다. 시뮬레이션을 실행하려면 100ns 시간 옆에 있는 종이 아이콘과 아래쪽 화살표 아이콘을 클릭하세요. 그러면 시뮬레이션이 100나노초 동안 실행됩니다. 시그널이 어떻게 변하는지 지켜보세요! 축하합니다! 첫 Modelsim 시뮬레이션을 만드셨습니다!
이 튜토리얼에서는 Modelsim에서 프로젝트 생성, 파일 추가, 소스 파일 컴파일, 시뮬레이션 시작, 파형 보기 방법을 배웠습니다. 이제 이 웹페이지의 모든 예제를 탐색하고 직접 시뮬레이션을 실행할 준비가 되었습니다. 페이지 상단의 사이드바를 이용해 탐색하세요.