Declaración de importación de SystemVerilog fuera de la definición del módulo

0

¿Qué significa una declaración de importación fuera de de una definición de módulo (| clase | paquete)?

¿Se aplica a todo el archivo?

¿Es incluso legal? No lo veo en IEEE Std 1800 ™ -2012.

Parece ser tolerado por ncsim (15.10-s008) - esto se compila / ejecuta sin error:

package myPackage;
  integer  count  = 0;
endpackage//myPackage

import myPackage::*;

module a;
    initial begin
        myPackage::count++;
        #1;
        $display("%0d: %m: myPackage::count=%0d", $time, myPackage::count);
        $display("%0d: %m:            count=%0d", $time,            count);
    end//initial 
endmodule//a

module b;
    import myPackage::*;
    initial begin
        count++;
        #1;
        $display("%0d: %m:            count=%0d", $time,            count);
        $display("%0d: %m: myPackage::count=%0d", $time, myPackage::count);
        myPackage::count++;
        #1;
        $display("%0d: %m:            count=%0d", $time,            count);
        $display("%0d: %m: myPackage::count=%0d", $time, myPackage::count);
    end//initial
endmodule//b

module test_package;
    a a();
    a b();
    b c();
    b d();
endmodule//test_package
    
pregunta SysTom

1 respuesta

1

Se aplica a la unidad de compilación, que es el alcance fuera de un módulo / interfaz / paquete. Normalmente es un solo archivo en la línea de comando de compilación (y todo lo que incluye, que es lo mismo que C / C ++) o podría ser todo en el paso de compilación actual. El valor predeterminado es dependiente de la herramienta.

Consulte la sección 3.12.1 Unidades de compilación en el LRM 1800-2012.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas