Secondary Library Unit |
Syntax |
package body package_name is declarations deferred constant declarations subprogram bodies end package_name; |
Rules and Examples |
When a procedure or function is declared in a package, its body (the
algorithm part) must be placed in the package body:
package REF_PACK is procedure PARITY (signal X : in bit_vector; signal Y : out bit); end REF_PACK; package body REF_PACK is procedure PARITY (signal X : in bit_vector; signal Y : out bit) is begin -- procedure code end PARITY; end REF_PACK; |
Other declarations made in a package body may be used within that body, but are not visible outside. declarations may typically be any of the following: type, subtype, constant, file, alias, attribute, function, procedure. |
A constant declared in a package may be
deferred. This means its value is defined in the package body. The value
may be changed by re-analysing only the package body:
package P is constant C : integer; end P; package body P is constant C : integer := 200; end P; |
A package body cannot be analysed unless a matching package exists in the same design library. |
Each package can only have one body. |
Synthesis Issues |
A package body must usually be in the same design file as the package itself.
Whats New in '93 |
In VHDL-93, the keyword end may be followed by the keyword package body, for clarity and consistancy.