Verilator es una herramienta de programación que convierte el lenguaje de descripción de hardware Verilog en un modelo de comportamiento con precisión de ciclo en los lenguajes de programación C++ o SystemC . Los modelos generados tienen precisión de ciclo y son de dos estados; por consiguiente, suelen ofrecer un rendimiento superior al de los simuladores basados en eventos , más utilizados , que modelan el comportamiento dentro del ciclo de reloj. Verilator se utiliza actualmente en investigación académica, proyectos de código abierto y en el desarrollo comercial de semiconductores. Forma parte del creciente conjunto de software libre de automatización del diseño electrónico (EDA). Es software libre y de código abierto, publicado únicamente bajo la Licencia Pública General Reducida de GNU (LGPL) 3.0 o la Licencia Artística 2.0.
Usar
Verilator ha tenido su mayor acogida en las comunidades académicas y de software de código abierto . La industria de los semiconductores ha sido más cautelosa a la hora de adoptar una herramienta de código abierto y cuenta con los recursos financieros para utilizar alternativas comerciales.
Académico
Los investigadores han utilizado Verilator para desarrollar nuevos entornos de cosimulación, [ 4 ] como parte de flujos de diseño generales de ASIC y FPGA [ 5 ] [ 6 ] y en análisis de rendimiento y potencia. [ 7 ] Verilator también es una herramienta popular para tesis de estudiantes, por ejemplo.
Código abierto
Verilator es una herramienta de código abierto y, a su vez, ha sido adoptada por varios otros proyectos. El Fedora Electronic Lab ha adoptado Verilator como parte de su flujo de diseño de código abierto para Fedora 11. La arquitectura OpenRISC de OpenCores incluye un modelo de referencia con precisión de ciclo, generado a partir de Verilog usando Verilator. Un artículo de 2010 describió cómo el conjunto de pruebas de regresión para GCC podría ejecutarse contra un modelo Verilator del OpenRISC 1200 como una forma de detectar errores en la implementación RTL de Verilog. [ 8 ] La herramienta TestDrive Profiling Master proporciona el entorno FPGA virtual usando Verilator.
Comercial
Comercialmente, Philips Semiconductors (ahora NXP Semiconductors ) ha liderado el camino. [ 9 ] Su uso de Verilator se está extendiendo, por ejemplo, en las notas de aplicación. [ 10 ] Más recientemente, Art of Silicon ha descrito su uso de Verilator en una granja de procesadores Linux como una vía para realizar pruebas de regresión más rápidas de sus diseños comerciales. [ 11 ] [ 12 ] El actual responsable del mantenimiento de Verilator identificó [ 13 ] 27 empresas y universidades que habían informado del uso de Verilator o contribuido a su desarrollo, entre ellas Intel, Arm, CSR, Broadcom, Raytheon, Infineon, la Universidad de Stanford, el Imperial College de Londres y Embecosm.
Historia
El manual de usuario de Verilator ofrece una breve reseña histórica. [ 14 ] La herramienta se originó en 1994 con un equipo liderado por Paul Wasson en el Core Logic Group de Digital Equipment Corporation (DEC). Se utilizaba para convertir código Verilog a C para la cosimulación con un modelo de CPU basado en C del procesador Alpha. A mediados de la década de 1990, Duane Galbi asumió la responsabilidad del desarrollo y la tecnología fue adoptada por otros grupos en DEC. En 1998, DEC publicó el código fuente.
Desde 2001, Wilson Snyder y otros desarrolladores han creado esta tecnología como parte del proyecto de código abierto Veripool. Se añadió un modo SystemC y la herramienta se reescribió completamente en C++, lo que mejoró su rendimiento. En 2022, Verilator versión 5 incorporó un planificador compatible con IEEE y semántica de retardo, flexibilizando las restricciones anteriores que ignoraban todos los retardos.
Tecnología y características clave
Verilator convierte código Verilog a C++ o SystemC. Es compatible con todas las versiones de Verilog y algunas aserciones de SystemVerilog. Su enfoque se asemeja más a la síntesis que a la simulación basada en eventos. El diseño completo se simplifica (es decir, todos los módulos se expanden para crear uno solo). Se utiliza análisis estático para eliminar conexiones innecesarias y programar todos los procesos durante la generación del modelo . Se genera una clase C++ con una función que toma valores de dos estados en los puertos de entrada y los actualiza a valores en los puertos de salida en el siguiente flanco de reloj.
SystemC es compatible mediante una clase contenedora que utiliza puertos SystemC y que es sensible a la frecuencia del reloj (s), que controlará los puertos del modelo C++ subyacente.
Verilator permite particionar automáticamente los diseños en múltiples hilos, lo que también puede mejorar el rendimiento.
Utilizar con MATLAB
Verilator convierte código Verilog sintetizable a C++, mientras que una biblioteca de C++ puede compilarse en un archivo MEX mediante la interfaz de MATLAB . De esta forma, los diseños Verilog pueden simularse directamente desde MATLAB. Utilizar modelos C++ compilados con MATLAB es más rápido que usar interfaces de cosimulación con un simulador de lenguaje de descripción de hardware (HDL) independiente. Existe un proyecto de código abierto llamado vmodel que compila Verilog en un archivo MEX mediante Verilator y proporciona un conjunto de funciones para la simulación de modelos desde MATLAB.
Véase también
Referencias
- ↑ W Snyder, "Verilator y SystemPerl". Grupo de Usuarios de SystemC de Norteamérica, Conferencia de Automatización del Diseño, junio de 2004.
- ↑ "Versión 5.050" . 1 de julio de 2026. Consultado el 2 de julio de 2026 .
- ↑ "Veripool" .
- ↑ Oyama Masashiro, Tanaka Daisuke y Shimizu Naohiki. "Entorno de co-simulación de hardware y software basado en lenguaje C con sfl2vl y Verilator", Joho Shori Gakkai Shinpojiumu Ronbunshu (Colección de tesis del simposio de la Sociedad de Procesamiento de la Información de Japón), 2004 ( 10 ), 34–40.
- ↑ P Garcia y K Compton. «Una interfaz de hardware reconfigurable para un sistema informático moderno». FCCM 2007 (15.º Simposio Anual del IEEE sobre Máquinas Informáticas Personalizadas Programables en Campo), 23-25 de abril de 2007, 73-84 (el DOI que aparece para este artículo, doi : 10.1109/FCCM.2007.49 , es incorrecto).
- ↑ Eric S. Chung, James C. Hoe, Babak Falsafi. "PROTO FLEX: Co-Simulación para el desarrollo de emuladores FPGA por componentes", WARFP 2006 (2.º taller sobre investigación de arquitectura utilizando plataformas FPGA), Austin, Texas, 12 de febrero de 2006.
- ↑ Chin-Chie Huang, Jaw-Wei Chi, Tzu-Ching Lin, Lin-Wei Tsao, Yi-Jung Chen y Chia-Lin Yang . "Marco de evaluación de rendimiento/potencia a nivel de sistema para SOC basados en plataformas", Departamento de Ciencias de la Computación e Ingeniería de la Información, Universidad Nacional de Taiwán, 2008.
- ↑ Jeremy Bennett, Embecosm, "Verificación de procesadores mediante herramientas de código abierto y el conjunto de pruebas de regresión GCC: un estudio de caso", Reunión del Design Verification Club, Bristol, Cambridge y Eindhoven, 20 de septiembre de 2010,
- ↑ Jean-Paul van Itegem, Philips Semiconductors (ahora NXP), citado en Deep Chip, 25 de octubre de 2005.
- ↑ Chuck Peplinski, "Herramientas de optimización de caché de datos y precarga de hardware para procesadores multimedia Nexperia", NXP Semiconductors, 11 de enero de 2007 "Copia archivada" (PDF) . Archivado del original (PDF) el 20 de agosto de 2008. Recuperado el 13 de marzo de 2009 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ Rich Porter, "Productividad del diseñador: un enfoque alternativo", [Instituto Nacional de Microelectrónica], reunión de la Red de Diseño a Nivel de Sistema, Engineers House, Bristol, Reino Unido, 24 de septiembre de 2009, disponible en www.slideshare.net/richporter/20090924aosnmiesl
- ↑ Rich Porter, "Arquitectura para simulaciones HDL masivamente paralelas", reunión del Design Verification Club, Bristol, Cambridge y Eindhoven, 20 de septiembre de 2010, "Copia archivada" (PDF) . Archivado del original (PDF) el 13 de marzo de 2012. Recuperado el 24 de septiembre de 2010 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ Wilson Snyder, Cavium Networks, "Verilator: rápido, gratis, ¿pero para mí?", reunión del Design Verification Club, Bristol, Cambridge y Eindhoven, 20 de septiembre de 2010,
- ↑ Wilson Snyder, "Verilator-3.700", 7 de enero de 2009
Enlaces externos
- Sitio web oficial
- vmodel en GitHub
- Software gratuito de automatización del diseño electrónico
- Software de automatización del diseño electrónico para Linux