Aplicación multiplataforma para el aprendizaje y depuración de código VHDL sin requerimiento de hardware especializado
Esta es la realidad del laboratorio de diseño digital en muchas instituciones, incluida la ESCOM. La práctica con hardware se convierte en un privilegio compartido — no en una experiencia individual de aprendizaje.
[1] ESCOM, Catálogo de Trabajos Terminales, IPN, 2026 — véase Anexo A36
Sólo en hardware. Sin contar mantenimiento, accesorios o licencias de software comercial. Una Basys 3 ronda los $3,400; una Cyclone IV cerca de $1,866.
[2] Digilent, Basys 3 Artix-7 FPGA Trainer Board · [3] Amazon MX, Tarjeta Cyclone IV EP4CE6, feb. 2026 — Anexo A36
Tres curvas de aprendizaje. Tres flujos de trabajo. Cero integración. Y la atención del estudiante se desvía de lo que importa: comprender el comportamiento del hardware.
Y en ESCOM, 0 Trabajos Terminales han abordado un depurador interactivo de HDL — la línea pedagógica está abierta.
[4] GHDL · [5] GTKWave · [1] ESCOM, Catálogo de TT — Anexo A36
Análisis comparativo completo en Anexo A2 →
Fuentes oficiales y sitios de los proyectos: [4]–[13] GHDL, GTKWave, Icarus, Verilator, ModelSim, Vivado, Quartus, EDA Playground, HDLBits, Logisim — Anexo A36
No necesitamos
otra herramienta.
Necesitamos una sola.
Un IDE académico de VHDL que integra editor, simulador y visualizador de ondas.
Sin hardware especializado. Sin licencias. Sin terminal.
Gratuito. Open-source. Multiplataforma.
Mismo motor que VS Code: Monaco Editor con resaltado de sintaxis VHDL, autocompletado contextual, navegación por líneas, atajos de teclado y vista previa Markdown.
Catálogo completo con especificaciones reales: LUTs, flip-flops, bloques de memoria, DSPs, PLLs, frecuencias máximas y pines I/O — los datos que el estudiante necesita para dimensionar su diseño.
Especificaciones tomadas de datasheets oficiales: [14] Xilinx 7-Series · [15] Intel Cyclone IV · [16] Lattice iCE40 · [17] Lattice ECP5 — Anexo A36
Visualizador de formas de onda con codificación semántica por color: clock, input, output, vector. Zoom, escala temporal y exportación a formato VCD estándar.
Ninguna otra herramienta de simulación HDL ofrece este alcance.
.NET 9 · MAUI · Blazor
[18] Microsoft, .NET MAUI · [19] Microsoft, ASP.NET Core Blazor · Pesos medidos — véase Anexo A37
El diseño digital es una disciplina global. Kmila habla el idioma del estudiante — incluido el árabe, con dirección de escritura derecha-a-izquierda completa.
Cada pieza fue elegida para maximizar cobertura de plataformas, minimizar dependencias y mantener el código abierto.
[18] MAUI · [19] Blazor · [20] C# · [21] .NET 9 · [22] SQLite · [23] sqlite-net — Anexo A36
La interfaz está lista. La siguiente fase implementa el corazón de la simulación: parser, intérprete y máquina del tiempo.
Sin barreras económicas. Sin licencias. Sin cables. Sólo VHDL — y la libertad de equivocarse mil veces antes de la primera práctica de laboratorio.
“Por tí, volaré más alto y más lejos que nadie.”
Diagramas, tablas comparativas, requerimientos detallados, casos de uso, factibilidad económica y catálogo FPGA completo.
| Herramienta | Tipo | HDL | Plataformas | Costo | Editor | Visor ondas | GUI | Educativo |
|---|---|---|---|---|---|---|---|---|
| GHDL + GTKWave | Open-source | VHDL | Win/Lin/Mac | Gratuito | No | Separado | Parcial | Bajo |
| Icarus Verilog | Open-source | Verilog | Win/Lin/Mac | Gratuito | No | No | CLI | Bajo |
| Verilator | Open-source | Verilog/SV | Win/Lin/Mac | Gratuito | No | No | CLI | Bajo |
| Yosys | Síntesis | Verilog | Win/Lin/Mac | Gratuito | No | No | CLI | Bajo |
| ModelSim / Questa | Comercial | VHDL/Verilog/SV | Win/Lin | Limitado | No | Sí | Sí | Medio |
| Quartus Prime Lite | Comercial | VHDL/Verilog/SV | Win/Lin | Limitado | Sí | vía Questa | Sí | Medio |
| Vivado ML Standard | Comercial | VHDL/Verilog/SV | Win/Lin | Limitado | Sí | XSIM | Sí | Medio |
| EDA Playground | Web | VHDL/Verilog/SV | Navegador | Gratuito | Sí | EPWave | Sí | Medio |
| HDLBits | Web | Verilog | Navegador | Gratuito | Sí | Sí | Sí | Alto |
| DigitalJS | Web | Verilog (Yosys) | Navegador | Gratuito | Sí | Sí | Sí | Alto |
| Logisim Evolution | Académica | Genera HDL | Win/Lin/Mac | Gratuito | Esquemático | Cronograma | Sí | Alto |
| Kmila | Open-source | VHDL | Win/Mac/Lin/Android/iOS/Web | Gratuito | Monaco | Chart.js | Sí | Alto |
| ID | Nombre | Descripción | Prioridad |
|---|---|---|---|
| RF-01 | Gestionar proyectos | Crear, abrir, eliminar y listar proyectos que agrupen archivos HDL y configuración. | Alta |
| RF-02 | Gestionar archivos HDL | Crear, cargar y guardar archivos .vhd con respaldo dual en disco y SQLite. | Alta |
| RF-03 | Editar código HDL | Edición VHDL con resaltado, posición del cursor, indicador de cambios sin guardar. | Alta |
| RF-04 | Navegar estructura del proyecto | Panel lateral y barra superior con acceso a archivos, secciones y configuración. | Alta |
| RF-05 | Seleccionar dispositivo FPGA | Elegir entre catálogo de 34 dispositivos de 3 fabricantes (Xilinx, Intel, Lattice). | Media |
| RF-06 | Configurar parámetros de simulación | Definir duración, escala temporal, frecuencia de reloj y estímulos por puerto. | Media |
| RF-07 | Visualizar diagnósticos y recursos | Mostrar entidades, puertos, señales y utilización de recursos del FPGA seleccionado. | Alta |
| RF-08 | Visualizar formas de onda | Visor con codificación por color, zoom y exportación VCD. | Alta |
| RF-09 | Cambiar idioma de la interfaz | Selección entre 7 idiomas (ES, EN, FR, DE, ZH, JA, AR) con soporte RTL. | Baja |
| RF-10 | Cambiar tema visual | Alternar entre tema claro y tema oscuro de la interfaz. | Baja |
| RF-11 | Persistir datos localmente | Almacenar proyectos, archivos, configuraciones y preferencias en SQLite. | Media |
| ID | Nombre | Descripción | Prioridad |
|---|---|---|---|
| RF-12 | Analizar sintaxis VHDL | Verificar la corrección sintáctica del código y generar diagnósticos. | Alta |
| RF-13 | Generar AST | Construir la representación jerárquica intermedia del código VHDL válido. | Alta |
| RF-14 | Ejecutar simulación | Simular la ejecución del circuito mediante el modelo de eventos discretos. | Alta |
| RF-15 | Controlar simulación | Iniciar, pausar, reanudar y detener la ejecución de la simulación. | Alta |
| RF-16 | Ejecutar paso a paso | Avanzar la simulación ciclo por ciclo para depuración interactiva. | Media |
| RF-17 | Insertar puntos de interrupción | Marcar líneas en el editor donde la simulación debe detenerse. | Media |
| RF-18 | Exportar resultados | Exportar formas de onda en formato VCD (Value Change Dump) estándar. | Baja |
| ID | Categoría | Requerimiento |
|---|---|---|
| RNF-01 | Multiplataforma | Ejecución nativa en Windows, macOS, Android, iOS y soporte web para Linux. |
| RNF-02 | Disponibilidad | Funcionamiento 100% offline, sin dependencia de servidores externos. |
| RNF-03 | Rendimiento | Tiempo de respuesta de UI inferior a 200 ms en operaciones comunes. |
| RNF-04 | Usabilidad | Curva de aprendizaje mínima: estudiante productivo en menos de 30 min. |
| RNF-05 | Internacionalización | Soporte de 7 idiomas con cambio en tiempo de ejecución y dirección RTL. |
| RNF-06 | Accesibilidad | Tema claro/oscuro, contraste WCAG AA, navegación por teclado. |
| RNF-07 | Mantenibilidad | Arquitectura modular C4 con componentes desacoplados. |
| RNF-08 | Persistencia | Respaldo dual (disco + SQLite) con recuperación automática. |
| RNF-09 | Distribución | Código abierto bajo licencia permisiva, repositorio público. |
| RNF-10 | Compatibilidad | Catálogo FPGA actualizable mediante archivos JSON sin recompilación. |
| ID | Caso de uso | Actor | RF asociado | Fase |
|---|---|---|---|---|
| CU-01 | Gestionar proyectos | Estudiante | RF-01 | TT1 |
| CU-02 | Gestionar archivos HDL | Estudiante | RF-02 | TT1 |
| CU-03 | Editar código HDL | Estudiante | RF-03, RF-04 | TT1 |
| CU-04 | Seleccionar dispositivo FPGA | Estudiante | RF-05 | TT1 |
| CU-05 | Cambiar idioma | Estudiante | RF-09 | TT1 |
| CU-06 | Cambiar tema | Estudiante | RF-10 | TT1 |
| CU-07 | Validar código VHDL | Estudiante | RF-12, RF-13 | TT2 |
| CU-08 | Configurar y ejecutar simulación | Estudiante | RF-06, RF-14, RF-15 | TT2 |
| CU-09 | Visualizar formas de onda | Estudiante | RF-08 | TT2 |
| CU-10 | Exportar resultados (VCD) | Estudiante | RF-18 | TT2 |
Entidades en rojo (AST, CicloSimulacion) corresponden al motor de simulación de TT2.
Kmila como sistema, sus actores externos (estudiante) y sistemas de persistencia (sistema de archivos + SQLite).
Kmila.sln se compone de 7 proyectos .NET: 2 hosts (MAUI y Web) + 1 librería compartida + 4 módulos backend (Debugger, Parser, Interpreter, TimeMachine).
Componentes internos de Kmila.Shared organizados en 4 capas: páginas, servicios, repositorios y datos.
| Plataforma | Mecanismo | Ciclo de vida DI | Carga de recursos FPGA |
|---|---|---|---|
| Android | APK vía .NET MAUI (min API 24) | Singleton | FileSystem.OpenAppPackageFileAsync |
| Windows | MSIX o publicación directa | Singleton | FileSystem.OpenAppPackageFileAsync |
| macOS | App Bundle | Singleton | FileSystem.OpenAppPackageFileAsync |
| iOS | App Bundle | Singleton | FileSystem.OpenAppPackageFileAsync |
| Linux / Web | ASP.NET Core + Blazor Server | Scoped | _content/Kmila.Shared/Devices/ |
10 modelos de datos · 4 servicios · 3 repositorios · 4 módulos de backend. Vistas segmentadas disponibles en el documento TT1, capítulo 5.
| Fabricante | Familia | Cantidad | Aplicación típica |
|---|---|---|---|
| AMD / Xilinx | Spartan-6 | 8 | Académico básico, tarjetas legacy |
| AMD / Xilinx | Artix-7 | 8 | Académico moderno (Basys 3, Nexys A7) |
| Intel / Altera | Cyclone IV E | 9 | Industrial bajo costo, DE0/DE2 |
| Lattice | iCE40 HX | 3 | Bajo consumo, IoT, herramientas open |
| Lattice | iCE40 UltraPlus | 2 | Edge AI, ML embebido |
| Lattice | ECP5 | 4 | Mid-range, ASIC prototyping |
| Total | 5 familias | 34 dispositivos | |
Cada dispositivo incluye especificaciones de LUTs, flip-flops, bloques de memoria (BRAM), DSPs, PLLs, frecuencia máxima de reloj y pines I/O.
| Componente | Tecnología | Versión | Justificación |
|---|---|---|---|
| Framework nativo | .NET MAUI | 9.0 | Apps nativas Win/macOS/Android/iOS desde un solo código base |
| Framework web | Blazor Server | 9.0 | Cobertura Linux y navegadores sin servidor externo |
| Lenguaje | C# | 13.0 | Tipado fuerte, ecosistema unificado .NET |
| Editor de código | Monaco Editor (BlazorMonaco) | 3.3.0 | Mismo motor que Visual Studio Code |
| Visualización | Chart.js (BlazorBootstrap) | 3.4.0 | Gráficas interactivas para formas de onda |
| Persistencia | SQLite (sqlite-net-pcl) | 1.9.172 | BD embebida, sin servidor, multiplataforma |
| Iconografía | Bootstrap Icons | 1.13.1 | Set consistente, tipografía vectorial |
| Motor simulación | C# propio (TT2) | — | Control total del ciclo de simulación HDL |
Todas las dependencias son open-source o de licencia gratuita para uso académico. No se requiere infraestructura de servidor ni servicios en la nube.
| Categoría | Concepto | Costo estimado (MXN) |
|---|---|---|
| Recursos humanos | 1,010 hrs × $200/hr (tarifa junior) | $202,000 |
| Equipo desarrollo | Laptop Lenovo IdeaPad L340 (prorrateo 10/48) | $3,125 |
| Equipo pruebas | Smartphone POCO F5 Pro (prorrateo 10/48) | $1,771 |
| Licencias | .NET 9 SDK, VS Code, Git, Android SDK | $0 |
| Distribución | Google Play Store (registro único) | $500 |
| Distribución | Apple Developer Program (anual) | $2,000 |
| Distribución | Dominio web (anual) | $250 |
| Distribución | Hosting Netlify · GitHub público | $0 |
| Total TCO | $209,646 | |
| Desembolso real (excluye horas valuadas) | $2,750 | |
96.3% del costo es recurso humano: característico de proyectos de software con herramientas open-source. Frente a los $55,000 MXN solo en hardware FPGA para 30 estudiantes, Kmila reduce a $0 el costo per cápita de acceso a un entorno de simulación.
| Módulo | Hrs |
|---|---|
| Investigación, documentación y protocolo | 80 |
| Arquitectura y diseño del sistema | 60 |
| UI: Monaco, pestañas, explorador | 100 |
| Gestión de proyectos + SQLite | 60 |
| Catálogo FPGA (34 dispositivos) | 40 |
| i18n (7 idiomas + RTL) | 40 |
| Configuración (temas, .k-config) | 30 |
| Visor de formas de onda (Chart.js) | 30 |
| Pruebas de integración y ajustes | 20 |
| Subtotal TT1 | 460 |
| Módulo | Hrs |
|---|---|
| Analizador léxico/sintáctico (Parser VHDL) | 120 |
| Generación de AST y modelo intermedio | 80 |
| Motor de simulación (DeltaCycleEngine) | 100 |
| Depuración paso a paso (TimeMachine) | 60 |
| Construcción de estímulos (StimulusBuilder) | 40 |
| Integración motor-UI y visualización | 50 |
| Pruebas, depuración y optimización | 60 |
| Documentación de TT2 | 40 |
| spacer | 0 |
| Subtotal TT2 | 550 |
TT1: febrero–junio 2026 · TT2: julio 2026–enero 2027 · Dedicación promedio: 3.5 hrs/día × 6 días/semana.
| # | Actividad | FEB | MAR | ABR | MAY | JUN | JUL | AGO | SEP | OCT | NOV | DIC | ENE |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Investigación del estado del arte | ● | ● | ||||||||||
| 2 | Definición de requerimientos | ● | |||||||||||
| 3 | Análisis del alcance y planeación | ● | ● | ||||||||||
| 4 | Requerimientos técnicos y versiones | ● | ● | ||||||||||
| 5 | Diseño de la arquitectura (MAUI/.NET, Blazor) | ● | ● | ● | |||||||||
| 6 | Diseño de interfaz y editor (Monaco) | ● | ● | ● | |||||||||
| 7 | Desarrollo inicial del motor HDL | ● | ● | ||||||||||
| 8 | Documentación TT1 + Evaluación | ● | ● | ||||||||||
| 9 | Motor de simulación avanzado | ● | ● | ● | |||||||||
| 10 | Visualización de señales y reloj | ● | ● | ● | |||||||||
| 11 | Ejecutables multiplataforma | ● | ● | ● | |||||||||
| 12 | Pruebas de validación | ● | ● | ||||||||||
| 13 | Manual de usuario y documentación final | ● | ● | ||||||||||
| 14 | Publicación GitHub + Evaluación TT2 | ● |
Desarrollar una aplicación multiplataforma, gratuita y de código abierto que permita la simulación y depuración interactiva de código HDL en un entorno local, facilitando el aprendizaje del diseño digital sin requerir hardware especializado.
| Característica | VHDL | Verilog |
|---|---|---|
| Origen | DoD EE.UU., 1983 | Gateway DA, 1984 |
| Estándar IEEE | 1076 (1987–2019) | 1364 → 1800 |
| Influencia sintáctica | Ada | C |
| Tipado | Fuerte | Débil |
| Verbosidad | Alta | Baja |
| Lógica multivaluada | 9 valores (std_logic, IEEE 1164) | 4 valores nativos |
| Verificación avanzada | PSL externo | SystemVerilog (UVM, SVA) |
| Predominio académico | Europa, Latinoamérica | EE.UU., Asia |
| Predominio industrial | Aeroespacial, defensa, FPGA | Semiconductores, ASIC |
| Lenguaje | Base / salida |
|---|---|
| SystemC | C++ · IEEE 1666 (ESL) |
| MyHDL | Python → Verilog/VHDL |
| Amaranth | Python → Verilog (Yosys) |
| Chisel | Scala → FIRRTL → Verilog |
| SpinalHDL | Scala → Verilog/VHDL |
| Bluespec (BSV) | Reglas guardadas → Verilog |
Ninguno reemplaza a VHDL/Verilog: todos generan RTL en uno de estos dos lenguajes para síntesis.
Kmila implementa VHDL como lenguaje primario; Verilog contemplado como extensión TT2.
| Estándar | Año | Cambios principales |
|---|---|---|
| 1076-1987 | 1987 | Primera estandarización; definición base del lenguaje |
| 1076-1993 | 1993 | ISO-8859-1, operador xnor, sintaxis más consistente |
| 1076-2000 | 2000 | Tipos protegidos para concurrencia en variables compartidas |
| 1076-2008 | 2008 | Subconjunto PSL, genéricos en paquetes; absorbe IEEE 1164 y 1076.3 |
| 1076-2019 | 2019 | Revisión vigente: integración completa de PSL |
| Estándar | Año | Descripción |
|---|---|---|
| 1364-1995 | 1995 | Primera estandarización (Verilog-95) |
| 1364-2001 | 2001 | Sentencias generate, aritmética con signo |
| 1364-2005 | 2005 | Último estándar Verilog independiente |
| 1800-2005 | 2005 | Primer estándar de SystemVerilog |
| 1800-2009 | 2009 | Fusión de Verilog (1364) con SystemVerilog |
| 1800-2017 | 2017 | Revisión vigente de SystemVerilog |
Estándares relacionados: IEEE 1164 (std_logic) · IEEE 1666 (SystemC) · IEEE 1850 (PSL)
Las herramientas actuales son fragmentadas: el estudiante debe configurar GHDL + GTKWave + un editor por separado. Soluciones comerciales como ModelSim integran todo, pero dependen de licencias restrictivas. Kmila unifica edición, configuración y visualización en una sola aplicación multiplataforma.
La formación en diseño digital exige comprender el comportamiento temporal de las señales. Sin herramienta accesible, la enseñanza queda condicionada al tiempo de laboratorio. Kmila funciona como pre-laboratorio: el estudiante prepara y verifica antes de la sesión con hardware real.
En la revisión de Trabajos Terminales de la ESCOM, no se identificó ningún proyecto previo dedicado a un entorno integrado de depuración HDL. Kmila contribuye a la línea institucional de herramientas educativas, generando un recurso open-source extensible por la comunidad ESCOM/IPN.
Equipar un laboratorio para 30 estudiantes con tarjetas FPGA supera los $55,000 MXN solo en hardware. Kmila se distribuye gratis y no requiere hardware especializado: cualquier computadora o móvil con navegador ejecuta la aplicación, reduciendo la barrera de entrada para la práctica individual.
Stack maduro y de código abierto: .NET 9, MAUI, Blazor, C# 13, Monaco Editor, Chart.js, SQLite. Todas las dependencias son gratuitas para uso académico.
El recurso humano (96.3% del costo) es estimación teórica; el desembolso real es de $2,750 MXN en distribución y dominio.
| Tiendas (Play + Apple) | $2,500 |
| Dominio web anual | $250 |
| Hosting Netlify | $0 |
| GitHub público | $0 |
Desarrollo local en equipo personal, sin permisos institucionales especiales ni infraestructura adicional.
Las tres dimensiones de factibilidad presentan viabilidad confirmada sin riesgos críticos identificados.
El análisis económico se estructura mediante tres enfoques complementarios:
Descompone el costo total en categorías identificables, facilitando la trazabilidad de cada partida.
Extiende el análisis al considerar no sólo el desarrollo inicial, sino también los costos recurrentes de distribución y mantenimiento del software.
Contrasta la inversión requerida con el valor que la solución aporta frente a las alternativas existentes en el contexto académico.
| Plataforma | Mínima | Recomendada | Arquitecturas |
|---|---|---|---|
| Android | 7.0 (API 24) | 12+ (API 31+) | ARMv7, ARM64, x86_64 |
| iOS / iPadOS | 15 | 17+ | ARM64 (A9+) |
| macOS | 12 Monterey | 14 Sonoma+ | x64, ARM64 (Apple Silicon) |
| Windows | 10 v1809 (17763) | 11 22H2+ | x64 |
| Linux (web) | Ubuntu 20.04 o equiv. | Ubuntu 22.04 LTS+ | x64, ARM64 |
Equiv. Linux: Debian 11, RHEL 8, Fedora 39, openSUSE 15, Alpine 3.18 · Navegadores: Chrome/Edge 90+, Firefox 88+, Safari 14+.
| Plataforma | RAM | Almacenamiento | Procesador |
|---|---|---|---|
| Android | 2 GB | 150 MB | ARMv7-A o ARM64, 2× ≥ 1.5 GHz |
| iOS / iPadOS | 2 GB | 150 MB | ARM64 (Apple A9+) |
| macOS | 4 GB | 400 MB | x64 2 núcleos o Apple Silicon |
| Windows | 4 GB | 400 MB | x64 2 núcleos ≥ 1.8 GHz |
| Cliente web | 2 GB | 50 MB caché | cualquiera con navegador moderno |
| Servidor web | 1 GB libre | 200 MB | x64 / ARM64 · 1 vCPU base |
Pantalla mín.: 360 px (móvil vertical) · óptimo editor: 1280 px+. Para múltiples proyectos o simulaciones extensas, doblar valores.
| ID | Regla | Descripción | Justificación |
|---|---|---|---|
| RN-01 | Proyecto obligatorio para simulación | Todo archivo HDL debe pertenecer a un proyecto creado en Kmila antes de ser simulado o analizado. | La persistencia en SQLite (tabla Projects) requiere contexto de proyecto. |
| RN-02 | Un dispositivo FPGA por proyecto | Cada proyecto debe tener asociado exactamente un modelo del catálogo de 34 dispositivos. | Los recursos del dispositivo determinan las restricciones de síntesis y simulación. |
| RN-03 | Extensiones permitidas | Sólo archivos .vhd o .vhdl. Verilog/SystemVerilog quedan fuera del alcance. | Evita archivos no compatibles con el motor de análisis VHDL. |
| RN-04 | Persistencia dual | Cada archivo se almacena en disco y simultáneamente en SQLite (campo Content) como respaldo. | Recuperación ante pérdida del archivo y portabilidad del proyecto. |
| RN-05 | Idioma por defecto: español | Idioma inicial ES; el usuario puede cambiar entre 7 idiomas desde configuración. | Contexto académico ESCOM donde el idioma principal es español. |
| RN-06 | Configuración por proyecto | Frecuencia de reloj, tiempo de ejecución y formato se almacenan por proyecto en .k-config. | Configuraciones independientes sin afectar otros proyectos. |
| RN-07 | Validación previa a simulación [TT2] | El código debe pasar análisis sintáctico completo sin errores antes de simular. | Previene ejecución de código malformado y excepciones del motor. |
| RN-08 | Límite de tiempo de simulación [TT2] | La simulación se detiene automáticamente al alcanzar el tiempo máximo configurado. | Evita bucles infinitos y consumo excesivo de recursos. |
Rol: Alumno de ISC que cursa Fundamentos de Diseño Digital, Diseño de Sistemas Digitales, Arquitectura de Computadoras o Sistemas en Chip.
| ID | Historia | RF |
|---|---|---|
| HU-01 | Crear proyecto. Como alumno, quiero crear un proyecto nuevo para organizar los archivos VHDL de mi práctica de laboratorio. | RF-01 |
| HU-02 | Escribir código VHDL. Como alumno, quiero crear archivos .vhd y escribir código con resaltado de sintaxis. | RF-02, RF-03 |
| HU-03 | Abrir práctica anterior. Como alumno, quiero abrir un proyecto existente y recuperar los archivos para continuar una sesión anterior. | RF-01, RF-02 |
| HU-04 | Navegar archivos. Como alumno, quiero ver todos los archivos de mi proyecto en un panel lateral y cambiar entre ellos. | RF-04 |
| HU-05 | Seleccionar FPGA. Como alumno, quiero elegir el modelo (Cyclone IV EP4CE6, Artix-7 XC7A35T…) para verificar compatibilidad con la tarjeta del laboratorio. | RF-05 |
| HU-06 | Configurar estímulos. Como alumno, quiero configurar la frecuencia del reloj y los valores de las señales de entrada antes de simular. | RF-06 |
| HU-07 | Revisar diagnósticos y utilización. Como alumno, quiero ver entidades, puertos y porcentaje de recursos del FPGA que consume mi diseño. | RF-07 |
| HU-08 | Ver formas de onda. Como alumno, quiero visualizar las señales tras simular para verificar que mi diseño se comporta como esperaba. | RF-08 |
| HU-09 | Cambiar idioma. Como alumno, quiero cambiar el idioma de la interfaz al español u otro de mi preferencia. | RF-09 |
| HU-10 | Tema visual. Como alumno, quiero alternar entre tema claro y oscuro según mi preferencia. | RF-10 |
Funcionalidades del motor de simulación cuya implementación se contempla en la segunda fase del proyecto.
| ID | Historia resumida | RF relacionado |
|---|---|---|
| HU-11 | Como alumno, quiero que la aplicación detecte errores de sintaxis en mi código VHDL antes de simular, para corregirlos a tiempo. | RF-12, RF-13 |
| HU-12 | Como alumno, quiero ejecutar la simulación de mi circuito y ver cómo se propagan las señales sin necesidad de la tarjeta FPGA. | RF-14, RF-15 |
| HU-13 | Como alumno, quiero avanzar la simulación ciclo por ciclo para entender cómo cambian las señales en cada paso de tiempo. | RF-16 |
| HU-14 | Como alumno, quiero pausar y reanudar la simulación para analizar el estado del circuito en un momento específico. | RF-15 |
| HU-15 | Como alumno, quiero insertar puntos de interrupción en mi código para que la simulación se detenga en líneas específicas. | RF-17 |
dir="rtl".
| Módulo | Temporal | Espacial | Estrategia |
|---|---|---|---|
| Parser | O(n) sobre n caracteres | O(d) profundidad AST | Recursive descent con lookahead k=1 |
| Interpreter | O(E) por delta-cycle, E = eventos disparados | O(S) señales activas | Event-driven (no exhaustivo) |
| TimeMachine | O(1) jump por checkpoint | O(C·S) checkpoints × señales | Snapshots espaciados + delta-log entre ellos |
| Wave visualizer | O(V) señales visibles | O(M) muestras en viewport | Virtual scrolling y decimación adaptativa |
| Catálogo FPGA | O(1) lookup por ID · O(n) filtro | O(n=34) | JSON indexado en RAM, ya entregado en TT1 |
Estos objetivos son entregables verificables del TT2 mediante una batería de benchmarks sobre el motor implementado.
[1] Escuela Superior de Cómputo, Catálogo de Trabajos Terminales, IPN, 2026. escom.ipn.mx
[2] Digilent Inc., Basys 3 Artix-7 FPGA Trainer Board, consultado feb. 2026. digilent.com
[3] Amazon México, Tarjeta FPGA Altera Cyclone IV EP4CE6, consultado feb. 2026. amazon.com.mx
[4] T. Gingold, GHDL — Open-source analyzer, compiler, simulator and synthesizer for VHDL, 2024. ghdl.github.io
[5] T. Bybell, GTKWave Electronic Waveform Viewer, 2024. gtkwave.sourceforge.net
[6] S. Williams, Icarus Verilog, 2023. github.com/steveicarus/iverilog
[7] W. Snyder, Verilator: Open-source SystemVerilog simulator and lint system, 2025. veripool.org
[8] Siemens EDA, ModelSim — FPGA Simulation, 2025. eda.sw.siemens.com
[9] Advanced Micro Devices, AMD Vivado Design Suite, 2026. amd.com
[10] Intel Corporation, Intel Quartus Prime Design Software, 2025.
[11] Doulos Ltd., EDA Playground: Online IDE for HDL simulation, 2025. edaplayground.com
[12] H. Wong, HDLBits: Practice digital hardware design, 2025. hdlbits.01xz.net
[13] C. Burch, "Logisim: a graphical system for logic circuit design and simulation," JERIC, vol. 2, no. 1, pp. 5–16, mar. 2002. doi:10.1145/545197.545199
[14] Xilinx, Inc., 7 Series FPGAs Data Sheet: Overview (DS180), 2020. docs.amd.com
[15] Intel Corporation, Cyclone IV Device Handbook, 2024. intel.com
[16] Lattice Semiconductor, iCE40 LP/HX Family Data Sheet, 2024. latticesemi.com
[17] Lattice Semiconductor, ECP5 and ECP5-5G Family Data Sheet, 2024. latticesemi.com
[18] Microsoft, .NET Multi-platform App UI (.NET MAUI) documentation, 2024. learn.microsoft.com/dotnet/maui
[19] Microsoft, ASP.NET Core Blazor documentation, 2024. learn.microsoft.com/blazor
[20] Microsoft, C# documentation, 2024. learn.microsoft.com/csharp
[21] Microsoft, What's new in .NET 9, 2024. learn.microsoft.com
[22] D. R. Hipp, SQLite, 2025. sqlite.org
[23] F. Krueger, sqlite-net, 2024. github.com/praeclarum/sqlite-net
[24] IEEE, IEEE Standard VHDL Language Reference Manual, IEEE Std 1076-2008, 2009.
[25] P. J. Ashenden, The Designer's Guide to VHDL, 3rd ed. Burlington, MA: Morgan Kaufmann, 2008.
[26] S. Brown and Z. Vranesic, Fundamentals of Digital Logic with VHDL Design, 3rd ed. McGraw-Hill, 2009.
[27] D. E. Thomas and P. R. Moorby, The Verilog Hardware Description Language, 5th ed. Springer, 2002.
[28] Coursera, FPGA Design for Embedded Systems Specialization, 2026.
[29] GHDL contributors, GHDL Documentation: Backends and Features, 2025.
Fuente completa: Documentacion/TT1/references.bib (47 entradas en formato BibLaTeX)
Medidos con du -sh sobre los archivos generados por dotnet publish -c Release el 10 mayo 2026.
| Plataforma | Archivo entregable | Peso | Tiempo de build |
|---|---|---|---|
| Android | kmila.kmila-Signed.apk | 72 MB | 182.5 s |
| Android (Play) | kmila.kmila-Signed.aab | 72 MB | — |
| iOS | Kmila.ipa | 43 MB | 258.7 s |
| macOS | Kmila-1.0.pkg (instalador firmado) | 68 MB | 197.9 s |
| Linux / Web | Blazor publish completo | 124 MB | 60.4 s |
| Linux / Web | solo _content servido al cliente | 76 MB | — |
| Windows | pendiente (host Windows o CI) | ⏳ | — |
| Herramienta | Peso instalado | Factor | Plataformas |
|---|---|---|---|
| AMD Vivado ML Standard [9] | 40–80 GB | ~500–1000× | Win, Linux |
| Intel Quartus Prime Lite [10] | 20+ GB | ~250× | Win, Linux |
| Siemens ModelSim [8] | 1.5+ GB | ~20× | Win, Linux |
| Kmila (cualquier plataforma) | 43–147 MB | — | Win, macOS, Linux, Android, iOS, Web |
| ID | RNF | Método de verificación | Estado TT1 |
|---|---|---|---|
| RNF-01 | Multiplataforma | Compilación exitosa en 5/6 targets + capturas de ejecución real en macOS, iOS, Android y Web — véase A38 | ✅ Verificado |
| RNF-02 | Offline 100% | Ejecución en modo avión sobre macOS — captura en A38 | ✅ Verificado |
| RNF-03 | UI < 200 ms | Chrome DevTools sobre localhost:5297: LCP = 45 ms, 0 tareas ≥ 200 ms, click máx = 1.56 ms (39 904 eventos, 9 s sesión) — véase A38 | ✅ Verificado |
| RNF-04 | Usabilidad < 30 min | Pruebas con estudiantes ESCOM | 📋 TT2 |
| RNF-05 | 7 idiomas + RTL | Cambio en runtime entre los 7 + verificación visual RTL | ✅ Verificado |
| RNF-06 | WCAG AA + teclado | Lighthouse a11y + navegación por teclado | ⏳ Auditoría parcial |
| RNF-07 | Modularidad C4 | Componentes desacoplados, diagramas C4 (Anexos A8–A11) | ✅ Verificado |
| RNF-08 | Persistencia dual | Disco + SQLite, recuperación tras cierre forzado | ✅ Verificado |
| RNF-09 | Open-source | Repositorio público + LICENSE permisivo | ✅ Verificado |
| RNF-10 | Catálogo JSON sin recompilar | Edición de fpgas.json + hot-reload | ✅ Verificado |
Leyenda: ✅ verificado empíricamente en TT1 · ⏳ objetivo medible pendiente · 📋 alcance TT2.
Capturas reales de Kmila ejecutándose en cuatro de las cinco plataformas verificadas el 10 mayo 2026 (Windows pendiente de build). Las indicaciones nativas de cada SO (semáforos macOS, barra de estado iOS/Android, chrome de navegador) descartan emulación o contenedores web embebidos.
Invariante de arquitectura: el layout (sidebar, breadcrumb, editor Monaco con tabs, barra inferior FPGA + acciones) se conserva idénticamente entre las cuatro plataformas — evidencia empírica de que Kmila.Shared entrega un único código base sobre los seis destinos.
Grabaciones reales de Kmila operando sobre tres plataformas distintas — el mismo código base de Kmila.Shared ejecutándose nativamente en cada destino. Da clic en cada video para reproducirlo.
Complemento de A38 · 1/2: las capturas anteriores prueban la invariancia visual entre plataformas; estos videos prueban la invariancia funcional — flujos de gestión, edición y simulación se comportan idénticamente sobre Desktop, Web e iOS.
Mediciones tomadas con el Monitor de Actividad de macOS (para procesos nativos y servidor Blazor) y top sobre adb shell para Android físico. Build Debug en todos los casos — el modo Release con AOT completo reduce típicamente estos valores en 30–50%.
| Plataforma | Memoria | Detalle |
|---|---|---|
| macOS (MacCatalyst) | 144.3 MB | 70.2 MB privada · 9 subprocs |
| iOS (Simulator) | 124.6 MB | 30.0 MB residente · 16 subprocs |
| Android (físico) | 348 MB | RES · 15.6% RAM dispositivo |
| Web (Blazor Server) | 947.3 MB | 37 subprocs · Debug + depurador |
| Herramienta | RAM mínima | Kmila es |
|---|---|---|
| AMD Vivado [9] | 8–16 GB | 8×–64× menor |
| Intel Quartus Prime [10] | 4–8 GB | 4×–55× menor |
| Siemens ModelSim [8] | 1–2 GB | 5×–14× menor |
Capturas con la ruta completa del ejecutable disponibles en el documento de TT1 (figuras de detalle de procesos).
Subdominios del modelo (A7) que corresponden al alcance de TT1: gestión de proyecto y modelo HDL.
Desglose del Nivel 3 de C4 (Anexo A10) por capa de Kmila.Shared.
Desglose del Nivel 3 de C4 (Anexo A10) por capa de Kmila.Shared.
Sub-vistas del diagrama de clases (A12) correspondientes al alcance de TT1: persistencia, FPGA, configuración, repositorios y traducción.
Sub-vistas del diagrama de clases (A12) correspondientes al alcance de TT1: persistencia, FPGA, configuración, repositorios y traducción.
Sub-vistas del diagrama de clases (A12) correspondientes al alcance de TT1: persistencia, FPGA, configuración, repositorios y traducción.
Sub-vistas del diagrama de clases (A12) correspondientes al alcance de TT1: persistencia, FPGA, configuración, repositorios y traducción.
Flujos de los casos de uso TT1 (CU-01 a CU-06): gestión, edición, FPGA, idioma y tema.
Flujos de los casos de uso TT1 (CU-01 a CU-06): gestión, edición, FPGA, idioma y tema.
Flujos de los casos de uso TT1 (CU-01 a CU-06): gestión, edición, FPGA, idioma y tema.
Secuencias de los flujos de archivo del sistema (TT1): carga y guardado de archivos HDL.
Actividad principal de gestión y edición en la interfaz (TT1).
Subsistemas de la app correspondientes a TT1: módulo Learn y composición del editor.