Guía para Principiantes: Uso de ModelSim para Simulación FPGA y ASIC
Tutorial – Uso de ModelSim para Simulación, para Principiantes
ModelSim es un programa de Mentor Graphics para simular diseños VHDL y Verilog. Es el software de simulación más usado en empresas y educación. Este tutorial explica por qué la simulación es importante y cómo obtener ModelSim Student Edition gratis para uso personal.
La simulación es un paso crítico en el diseño de FPGAs y ASICs. Permite al diseñador estimular su diseño y ver cómo reacciona el código escrito. Una buena simulación ejercita todos los estados posibles para asegurar que todos los escenarios de entrada se manejen correctamente. ¿Olvidó una sentencia if? ¿Recordó asignar cada caso posible en un case? Estos errores son fáciles de cometer sin simular. Empecemos.
¿Tiene ModelSim descargado e instalado? Consígalo aquí. Instálelo con parámetros por defecto. Nota: necesitará solicitar una licencia a Mentor Graphics. Al finalizar la instalación, seleccione Finish y se abrirá una ventana del navegador con el formulario de solicitud de licencia. Hacer clic en un enlace de solicitud existente desde favoritos o un enlace web no funcionará.
El código a simular es el diseño VHDL a continuación. El código real no es importante; si aprende Verilog está bien. No necesita saber VHDL para este tutorial. El código crea una compuerta AND simple y le proporciona entradas mediante un testbench. Copie el código a and_gate.vhd y el testbench a 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;
Abra ModelSim. Verá una ventana como esta:
Ventana Principal de ModelSim
Para ejecutar la simulación, cree un proyecto: File → New → Project. Elija ubicación y nombre "and_gate". Los proyectos tienen extensión .prj. Deje los demás ajustes por defecto (todo se compila en la librería "work").
Haga clic en Add Existing File. Navegue a donde descargó and_gate.vhd y and_gate_tb.vhd y añádalos. Mantenga los demás ajustes. Haga clic en OK.
Ventana de Proyecto ModelSim – Archivos Añadidos
Verá dos signos de interrogación azules: ModelSim no ha compilado los archivos. Compílelos: clic derecho en and_gate.vhd → Compile → Compile All. Verá mensajes verdes en la consola indicando compilación exitosa.
Resultados de una Compilación Exitosa
Para iniciar la simulación: Simulate → Start Simulation. Se abre la ventana Start Simulation. Haga clic en el signo + junto a work, luego junto a and_gate_tb. Seleccione and_gate_tb (no and_gate) para simular a nivel de testbench. Haga clic en OK.
Ventana de Simulación ModelSim – Simulación Lista
Casi listo. La mayoría del tiempo en ModelSim se pasa viendo la vista de formas de onda (waveform). Contiene ondas (0/1 binarios, hexadecimal, tipos enumerados) para todas las señales del diseño, mostrando cómo reacciona el módulo a estímulos. Primero, añada señales a monitorizar. En este ejemplo, monitorizaremos todas las señales del testbench. Clic derecho en and_gate_tb en la ventana sim → Add Wave. También puede arrastrar señales a la ventana waveform.
Aquí tiene su ventana waveform. Todas las señales del testbench añadidas. Para ejecutar: haga clic en el icono con un papel y flecha abajo junto a 100 ns. Esto ejecutará 100 nanosegundos. ¡Observe cómo cambian las señales! ¡Felicidades! Ha creado su primera simulación en ModelSim.
Este tutorial mostró cómo crear un proyecto, añadir archivos, compilar, iniciar simulación y ver formas de onda. Está listo para explorar todos los ejemplos en esta web y ejecutar simulaciones. Use la barra lateral para navegación.
VHDL
- Cuestionario Avanzado de VHDL – Parte 3
- Dominando sentencias Wait en VHDL: Wait On, Wait Until y uso combinado
- Aprovechando constantes y generic maps en VHDL para diseño de módulos flexibles
- Domine VHDL: Introducción Completa para Diseño FPGA y ASIC
- Guía completa de conversiones de tipos VHDL con Numeric_Std y Std_Logic_Arith
- Ejemplo de procedimiento VHDL: Incrementando un vector Standard Logic
- Construyendo tu primer FPGA: Tutorial parpadeo LED (VHDL y Verilog)
- Variables VHDL explicadas: Ejemplos prácticos y reglas para diseño fiable
- Controlador VHDL dual de display de 7 segmentos para Pmod SSD – Fácil integración FPGA
- Uso de listas de sensibilidad en procesos VHDL para diseño RTL fiable
- Integración de librerías IP de Quartus Prime en VUnit: guía paso a paso