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 p>
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: p>
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"