El diseño y verificación a nivel de sistema electrónico (ESL) es una metodología de diseño electrónico, enfocada en cuestiones de niveles de abstracción más altos. El término Diseño a Nivel de Sistema Electrónico o ESL fue definido por primera vez por Gartner Dataquest , una empresa de análisis de la industria EDA, el 1 de febrero de 2001. [1] Se define en Diseño y Verificación ESL [2] como: "la utilización de abstracciones apropiadas para aumentar la comprensión sobre un sistema y mejorar la probabilidad de una implementación exitosa de la funcionalidad de una manera rentable".
La premisa básica es modelar el comportamiento de todo el sistema utilizando un lenguaje de bajo nivel como C , C++ o utilizando herramientas de diseño gráficas "basadas en modelos". Están surgiendo lenguajes más nuevos que permiten la creación de un modelo a un nivel más alto de abstracción, incluidos lenguajes de diseño de sistemas de propósito general como SysML, así como aquellos que son específicos para el diseño de sistemas integrados como SMDL y SSDL. La implementación rápida y correcta por construcción del sistema se puede automatizar utilizando herramientas EDA como la síntesis de alto nivel y las herramientas de software integrado , aunque gran parte de esto se realiza manualmente en la actualidad. ESL también se puede lograr mediante el uso de SystemC como un lenguaje de modelado abstracto .
ESL es un enfoque establecido en muchas de las principales empresas de diseño de sistemas en chip (SoC) del mundo, y se utiliza cada vez más en el diseño de sistemas . [3] Desde su génesis como una metodología de modelado de algoritmos "sin vínculos con la implementación", ESL está evolucionando hacia un conjunto de metodologías complementarias que permiten el diseño, la verificación y la depuración de sistemas integrados hasta la implementación de hardware y software de SoC personalizados , sistemas en FPGA , sistemas a bordo y sistemas completos de múltiples placas.
El diseño y la verificación son dos disciplinas distintas dentro de esta metodología. Algunas prácticas buscan mantener separados los dos elementos, mientras que otras abogan por una integración más estrecha entre el diseño y la verificación. [4]
Ya sea ESL u otros sistemas, el diseño se refiere al "diseño simultáneo de las partes de hardware y software de un producto electrónico". [5]
Existen varios tipos de herramientas EDA que se utilizan para el diseño ESL. El componente clave es la Plataforma Virtual, que es esencialmente un simulador. La Plataforma Virtual generalmente admite el modelado a nivel de transacción (TLM), donde las operaciones de un componente sobre otro se modelan con una simple llamada de método entre los objetos que modelan cada componente. Esta abstracción proporciona una considerable velocidad con respecto al modelado con precisión de ciclo, ya que se pueden representar miles de eventos a nivel de red en el sistema real simplemente pasando un puntero; por ejemplo, para modelar que se ha recibido un paquete Ethernet, se suele utilizar SystemC.
Otras herramientas permiten la importación y exportación o la intercomunicación con componentes modelados en otros niveles de abstracción. Por ejemplo, un componente RTL se puede convertir en un modelo SystemC utilizando VtoC [6] o Verilator. Y se puede utilizar High Level Synthesis para convertir modelos C de un componente en una implementación RTL.
En el diseño y la verificación de ESL, las pruebas de verificación se utilizan para demostrar la integridad del diseño del sistema o dispositivo. Se pueden aplicar numerosas técnicas de verificación; estos métodos de prueba suelen modificarse o personalizarse para adaptarse mejor al sistema o dispositivo que se está probando. Los métodos de verificación de ESL más comunes incluyen, entre otros: [7]
La verificación suele ser proporcionada por el diseñador del sistema/dispositivo, pero en muchos casos se requiere verificación independiente adicional.
Se han planteado algunas críticas al diseño y verificación de ESL, entre ellas, un enfoque excesivo en los lenguajes basados en C y los desafíos en la representación de procesos paralelos. [8] También se puede argumentar que el diseño y verificación de ESL es un subconjunto de la verificación y validación .