La Metodología de Verificación Universal ( UVM ) es una metodología estandarizada para verificar diseños de circuitos integrados . UVM se deriva principalmente de OVM ( Open Verification Methodology ), que a su vez se basó en gran medida en eRM (e Reuse Methodology) para el lenguaje de verificación electrónica desarrollado por Verisity Design en 2001. La biblioteca de clases UVM proporciona un marco y automatización al lenguaje SystemVerilog , como secuencias y funciones de automatización de datos (empaquetado, copia, comparación, etc.). A diferencia de las metodologías anteriores desarrolladas independientemente por proveedores de EDA (Automatización del Diseño Electrónico), es un estándar de Accellera con soporte de múltiples proveedores: Aldec, Cadence, Mentor Graphics (Siemens), Synopsys y Xilinx Simulator (XSIM).
Historia
En diciembre de 2009, un subcomité técnico de Accellera , una organización de estándares en la industria de automatización del diseño electrónico (EDA) , votó a favor de establecer el UVM y decidió basar este nuevo estándar en la Metodología de Verificación Abierta (OVM-2.1.1), [ 1 ] una metodología de verificación desarrollada conjuntamente en 2007 por Cadence Design Systems y Mentor Graphics .
El 21 de febrero de 2011, Accellera aprobó la versión 1.0 de UVM. [ 2 ] UVM 1.0 incluye una Guía de Referencia, una Implementación de Referencia en forma de una biblioteca de clases base de SystemVerilog y una Guía del Usuario. [ 2 ]
Características del idioma
Fábrica
Una fábrica es un concepto de uso común en la programación orientada a objetos. Es un objeto que se utiliza para instanciar otros objetos. Hay dos maneras de registrar un objeto en la fábrica UVM. En la declaración de la clase A, se pueden invocar las macros de registro `uvm_object_utils(A)` o `uvm_component_utils(A)`. De lo contrario, se pueden usar las macros `uvm_object_registry(A,B)` o `uvm_component_registry(A,B)` para mapear una cadena B a un tipo de clase A. [ 3 ] La fábrica UVM proporciona una variedad de métodos de creación que permiten al usuario instanciar un objeto con un nombre de instancia particular y de un tipo registrado. [ 4 ]
Secuenciador
El secuenciador es responsable de tres funciones principales:
- Ponga el DUT (Diseño bajo prueba) y el entorno de verificación en un estado de inicialización.
- Configuración del entorno de verificación y del dispositivo bajo prueba (DUT).
- Generación de todo el escenario del DUT
Inicialización
En esta etapa, el DUT (Diseño bajo prueba) y el entorno del banco de pruebas deben configurarse con las condiciones iniciales deseadas. Normalmente, esto incluye:
- Carga de memoria, con cualquier tipo de condiciones iniciales necesarias.
- Configuración inicial de los pines en el DUT, como la alimentación y la alta impedancia.
- Configuración de registros que no se pueden modificar durante la simulación, como los bits de modo o partes de los registros de entorno.
- Configuración de componentes de verificación que no se pueden modificar durante la simulación.
Marcador
Descripción
Un marcador puede implementarse de diversas maneras. En general, un marcador toma las entradas y salidas del DUT, determina cuál debería ser la relación entrada-salida y evalúa si el DUT cumple con la especificación. Esta relación entrada-salida suele especificarse mediante un modelo, denominado predictor. [ 3 ] El predictor puede implementarse en un lenguaje de programación de alto nivel, como SystemC.
Detalles de implementación
Las clases de marcador UVM se implementan como subclases de la clase uvm_scoreboard, que a su vez es una subclase de uvm_component. uvm_scoreboard es una plantilla en blanco para implementar un marcador. Solo contiene un método de clase, el constructor "new". El resto de la implementación es definida por el usuario. [ 5 ]
Agente
Descripción
En VLSI moderno, un DUT puede tener múltiples interfaces. Cada una de estas interfaces puede tener diferentes objetos UVM asociados. Por ejemplo, si el DUT es el chip completo, puede haber interfaces separadas para PCI, Ethernet y otros estándares de comunicación. El marcador y el monitor para una interfaz PCI serán diferentes de los de la interfaz Ethernet. Los diversos objetos UVM se pueden organizar como miembros de una clase contenedora conocida como agente. Los agentes pasivos solo analizarán los valores de los puertos de la interfaz y deben contener un miembro monitor. Los agentes activos controlarán los puertos y deben contener un miembro controlador, posiblemente además de un miembro monitor. [ 6 ]
Detalles de implementación
Las clases de agente UVM se implementan como subclases de la clase uvm_agent, que a su vez es una subclase de uvm_component. Al igual que uvm_scoreboard, uvm_agent es ligera en cuanto a métodos de clase. Sus únicos métodos de clase son el constructor "new" y el método "get_is_active". Si el agente se utiliza para controlar puertos, get_is_active devuelve UVM_ACTIVE. En caso contrario, get_is_active devuelve UVM_PASSIVE.
Conductor
Descripción
Los elementos de secuencia para una prueba se describen de forma abstracta. Por ejemplo, si el DUT es un archivo de registros, puede tener puertos para una dirección de lectura y una dirección de escritura. El objeto de elemento de secuencia puede tener variables miembro para la dirección de lectura y la dirección de escritura. Sin embargo, estos valores deben convertirse finalmente en bits en los pines de entrada del DUT. [ 7 ] Incluso puede haber una codificación especial utilizada al proporcionar el estímulo al DUT que debe abstraerse del resto del agente. La responsabilidad del controlador es tomar estos elementos de secuencia y proporcionar el estímulo adecuado a los puertos del DUT. [ 3 ]
Detalles de implementación
Las clases de controladores UVM se implementan como subclases de la clase uvm_driver, que a su vez es una subclase de uvm_component. [ 5 ]
Definiciones
- Agente: un contenedor que emula y verifica los dispositivos DUT.
- Bloqueo: una interfaz que bloquea tareas de otras interfaces hasta que se complete.
- DUT - Dispositivo bajo prueba, lo que realmente estás probando.
- DUV - Dispositivo en Verificación
- Componente: una parte de la propiedad intelectual de verificación que posee interfaces y funciones.
- Transactor - ver componente
- Configuración del entorno de verificación: aquellos ajustes del dispositivo bajo prueba y del entorno que se pueden modificar mientras se ejecuta la simulación.
- VIP - Verificación de la propiedad intelectual
Macros UVM
UVM permite el uso de macros
Referencias
- ↑ "Actualización de la estandarización VIP-TSC" (PDF) . Archivado del original (PDF) el 27 de septiembre de 2011.
- 1 2 "Subcomité Técnico de Verificación de Propiedad Intelectual (UVM)" . Archivado del original el 15 de agosto de 2011. Consultado el 12 de julio de 2024 .
- 1 2 3 "Guía del usuario de la metodología de verificación universal (UVM) 1.2" (PDF) . pág. 130.
- ↑ "Fábrica UVM" .
- 1 2 "Referencia de la clase de la Metodología de Verificación Universal (UVM) 1.2" (PDF) . Junio de 2014.
- ↑ "Adopción rápida de UVM: un subconjunto práctico de UVM" (PDF) . pág. 10.
- ↑ "Elemento de secuencia UVM" .
Enlaces externos
Oficial
- Grupo de trabajo sobre la metodología de verificación universal (UVM) , Accellera
- 1800.2-2020 - Manual de referencia del lenguaje de la metodología de verificación universal del estándar IEEE , IEEE , 14 de septiembre de 2020
- Referencia de la clase UVM 1.2 , Mentor Graphics , Cadence Design Systems , Synopsys y Nvidia , 2014. (Sustituida por la especificación IEEE mencionada anteriormente) .
Guías
- Manual de verificación de la UVM , Doulos, junio de 2010
- Accellera UVM: ¡Preparados, listos, a desplegar!, Accellera, 27 de febrero de 2012
- EDA Playground : ejecuta simulaciones UVM desde un navegador web (IDE online gratuito).
- Novedades de SystemVerilog UVM 1.2 , EDA Playground, canal de YouTube , 2014
- Automatización del diseño electrónico