end for; [port ({ID : in | out | inout TYPEID [:= expr];});] comp_config::= end component [COMPID]; for all | LABELID : COMPID [impure | pure] function ID (use entity [LIBID.]ENTITYID [( ARCHID )] [( {[constant | variable | signal | file] ID : [[generic map ( {GENID => expr ,} )] [in]TYPEID [:= expr];})] port map ({PORTID => SIGID | expr ,})]; return TYPEID [is [for ARCHID begin VHDL QUICK [{block_config | comp_config}] end for;] {sequential_statement} end [function] ID]; REFERENCE CARD end for;) | (use configuration [LIBID.]CONFID procedure ID[({[constant | variable | signal] ID : Revision 2.2 in | out | inout TYPEID [:= expr];})] [[generic map ({GENID => expr ,})] [is begin () Grouping [] Optional port map ({PORTID => SIGID | expr,})];) {} Repeated | Alternative [{sequential_statement}] end for; end [procedure] ID]; bold As is CAPS User Identifier italic VHDL-1993 for LABELID | others | all : COMPID use 2. DECLARATIONS (entity [LIBID.]ENTITYID [( ARCHID )]) | 1. LIBRARY UNITS 2.1. TYPE DECLARATIONS (configuration [LIBID.]CONFID) [{use_clause}] type ID is ( {ID,} ); [[generic map ( {GENID => expr,} )] entity ID is port map ( {PORTID => SIGID | expr,} )]; type ID is range number downto | to number; [generic ({ID : TYPEID [:= expr];});] [port ({ID : in | out | inout TYPEID [:= expr];});] type ID is array ( {range | TYPEID ,}) of TYPEID; 3. EXPRESSIONS [{declaration}] type ID is record expression ::= [begin {ID : TYPEID;} (relation and relation) | (relation nand relation) | {parallel_statement}] end record; (relation or relation) | (relation nor relation) | end [entity] ENTITYID; (relation xor relation) | (relation xnor relation) type ID is access TYPEID; [{use_clause}] relation ::= shexpr [relop shexpr] type ID is file of TYPEID; architecture ID of ENTITYID is subtype ID is SCALARTYPID range range; shexpr ::= sexpr [shop sexpr] [{declaration}] begin subtype ID is ARRAYTYPID( {range,}); sexpr ::= [+|-] term {addop term} [{parallel_statement}] term ::= factor {mulop factor} subtype ID is RESOLVFCTID TYPEID; end [architecture] ARCHID; factor ::= range ::= [{use_clause}] (prim [** prim]) | (abs prim) | (not prim) (integer | ENUMID to | downto integer | ENUMID) | package ID is prim ::= (OBJID’[reverse_]range) | (TYPEID range <>) [{declaration}] literal | OBJID | OBJID’ATTRID | OBJID({expr,}) end [package] PACKID; 2.2. OTHER DECLARATIONS | OBJID(range) | ({[choice [{| choice}] =>] expr,}) [{use_clause}] constant ID : TYPEID := expr; | FCTID({[PARID =>] expr,}) | TYPEID’(expr) | package body ID is TYPEID(expr) | new TYPEID[‘(expr)] | ( expr ) [shared] variable ID : TYPEID [:= expr]; [{declaration}] signal ID : TYPEID [:= expr]; choice ::= sexpr | range | RECFID | others end [package body] PACKID; [{use_clause}] file ID : TYPEID (is in | out string;) | 3.1. OPERATORS, INCREASING PRECEDENCE configuration ID of ENTITYID is (open read_mode | write_mode | logop and | or | xor | nand | nor | xnor for ARCHID append_mode is string;) relop = | /= | < | <= | > | >= [{block_config | comp_config}] alias ID : TYPEID is OBJID; shop sll | srl | sla | sra | rol | ror end for; addop +|-|& attribute ID : TYPEID; end [configuration] CONFID; mulop * | / | mod | rem attribute ATTRID of OBJID | others | all : class is expr; miscop ** | abs | not use_clause::= library ID; class ::= [{use LIBID.PKGID[. all | DECLID];}] entity | architecture | configuration | procedure | function | package | type | subtype | constant | signal | variable | 1995-2000 Qualis Design Corporation. Permission to block_config::= component | label reproduce and distribute strictly verbatim copies of this document in whole is hereby granted.