Red de conocimiento informático - Problemas con los teléfonos móviles - Paquete SystemVerilog

Paquete SystemVerilog

En Verilog, dado que no se pueden realizar declaraciones globales, cuando una declaración se usa en múltiples bloques de diseño, la declaración debe declararse en cada bloque. Esto no solo parece redundante, sino también si se realiza un cambio. a la declaración en uno de los bloques, pero olvida modificar la declaración que aparece en otros bloques de diseño, ocurrirá un error

En base a esto SystemVerilog agrega un paquete (package)

> El paquete sirve para permitir que varios bloques compartan la definición de tipos definidos por el usuario

El paquete se define entre el paquete y el paquete final

Hay varias estructuras que se pueden sintetizar en el paquete: :

Las declaraciones de variables globales, las definiciones de tareas estáticas y las definiciones de funciones estáticas se pueden realizar en el paquete

El paquete es un espacio de declaración independiente y no necesita incluirse en el módulo Verilog

El siguiente es un ejemplo de una definición de paquete simple:

En Verilog, las constantes de parámetros se pueden redefinir, pero las constantes de parámetros locales no se pueden redefinir

En paquetes, las constantes de parámetros y las constantes localparam Ninguna de las dos se puede redefinir

Hay cuatro formas de hacer referencia a un paquete:

El operador de resolución de alcance es:

El nombre del paquete y el sub -El nombre del elemento en el paquete está: Separado por dos puntos dobles (: :)

Tome prestado el paquete definido en el ejemplo anterior y use la operación de resolución de alcance para hacer referencia:

SV permite el uso de la declaración de importación para importar subelementos específicos en el paquete al módulo

La declaración de importación es visible localmente para los subelementos del paquete. La definición o declaración del paquete importado es la misma que. un nombre de definición local en el módulo o interfaz.

Al importar un método de subelementos específicos para simplificar el ejemplo anterior:

Al importar un subelemento específico, para tipos de enumeración importados, solo se importará la definición del tipo de enumeración y los elementos utilizados en esa definición no se importarán

Por ejemplo, importar definiciones:: opcode_t;, esta importación no funcionará

Para. referencia local, cada elemento de enumeración debe importarse explícitamente

El carácter comodín es *

Los comodines pueden hacer visibles todas las subclaves del paquete, pero los comodines no importarán automáticamente solo el paquete completo. las subclaves realmente utilizadas se importan

A continuación se utilizan comodines para simplificar el ejemplo anterior:

El campo de declaración $unit tiene mucho contenido y se registra por separado

Este artículo está extraído principalmente de "Diseño y modelado de hardware SystemVerilog"