called FOREIGNwhose value is a string. This string value describes the
interface to the external function, procedure, or entity. The value of this
string is not standardized and depends on the type of the external code
being called. An example might look as follows:
FUNCTION beep( length : INTEGER) IS
ATTRIBUTE FOREIGN OF beep : FUNCTION IS
“sysbeep(length)”;
BEGIN
END FUNCTION beep;
In this example, a function called beepis declared that contains a
FOREIGNattribute. The FOREIGNattribute specifies that the body of this
function will be implemented by code other than VHDL. The string value
of the attribute declares the interface expected between function beepand
the foreign code to implement the function. However, the string value is
not defined in VHDL93 to be anything more than just a string.
Generate Statement Changes
In a minor addition, VHDL93 adds a declaration section to the generate
statement. Any declarations before the BEGINclause are local only to the
generate statement.
g1: FOR k IN 0 TO 3 GENERATE
SIGNAL reset : STD_LOGIC;
BEGIN
dffx : dff PORT MAP( z(i), reset, clk, z(i + 1));
END GENERATE;
The generate statement above declares local signal reset. This signal
is local only to the generate statement.
Globally Static Assignment
VHDL93 adds a new feature that allows globally static values to be
assigned to port maps. In VHDL87 port maps could only bind formal pa-
rameters to signals. In VHDL93 this has been generalized to include ex-
pressions as well. These expressions have to be globally static, or known
at elaboration time.
456 Appendix D: VHDL93 Updates