[comp.lsi] Chapter 06 - 1076 DoD translated VHDL test suite

grout@cadillac.stars.flab.Fujitsu.JUNET (Steve Grout) (07/13/88)

This is Chapter 06 of a 1076-1987 VHDL test suite which was translated
from an 7.2 VHDL version test suite
developed by Intermetrics under funding by the DoD.  These tests
have been verified todate mainly against a VHDL 'recognizer' so they
may yet have problems with VHDL semantics.  They consist of two
classes of tests, 

  ERROR Tests: - those which start with 'e' should result in VHDL errors
   at the spot in them where there is a comment about error being expected.

  SIMPLE Tests: - those which start with 's' should analyze or compile cleanly.

These tests are being shared back to industry in hopes of getting together
a joint set of tests, checked out and verified, which we can all use to 
make sure our various VHDL CAD tools work correctly.

Your comments and especially constructive criticism is urgently requested
via any way we can get it.  All replies and resulting changes/updates will
be posted back to the same places these tests were originally posted.

Thanks for your support!

--Steve Grout, MCC CAD Program. (512)338-3516, grout@mcc.com


---- Cut Here and unpack ----
#!/bin/sh
#
# This is a 'shar' archive.  Cut out everything above the line
# and unpack them with /bin/sh, i.e., using a command like:
#     % sh < {the contents of this message after cutting}
#
#
echo "--------------------------------------------------"
echo "Starting to extract Chapter 06 of a 1076-1987 VHDL"
echo "    translated DoD/Intermetrics test suite...."
echo "--------------------------------------------------"
echo x - TEST-SYNOPSIS.text
sed 's/^X//' >TEST-SYNOPSIS.text <<'*-*-END-of-TEST-SYNOPSIS.text-*-*'
X------------------------------------------------------------------------
XChapter: 06-Names -   Chapter 7 Names and Expressions (7.2) to 06-Names (1076)
X------------------------------------------------------------------------
X
X
X------------------------------------------------------------------------
X  Paragraph:  Names - 7.1 --> 6.1
X------------------------------------------------------------------------
X
X------------------------------------------------------------------------
X  Paragraph:  Simple Names - 7.1.1 --> 6.2
X------------------------------------------------------------------------
XTest:       s-06-1-0-0001a.vhdl
X-- Check that the prefix of an indexed name can be a function call.
X-- Check that the prefix of a  selected name can be a function call.
X-- Check that the prefix of a  slice name can be a function call.
X-- Check that the prefix of an attribute name can be a function call.
X
X------------------------------------------------------------------------
X  Paragraph:  Library Names - 7.1.2 --> 11.2 (See Chapter 11)
X------------------------------------------------------------------------
X
X------------------------------------------------------------------------
X  Paragraph:  Selected Names - 7.1.3 --> 6.3
X------------------------------------------------------------------------
XTest:       e-06-3-0-0001a.vhdl
X-- Check that the prefix of a selected name cannot be an aggregate.
XTest:       e-06-3-0-0002a.vhdl
X-- Check that the prefix of a selected name cannot be a slice name.
XTest:       e-06-3-0-0003a.vhdl
X-- Check that the prefix of an expanded name cannot be a function
X-- call.
XTest:       e-06-3-0-0004a.vhdl
X-- Check that a selected name which denotes a record element must include
X-- both the name of the object that is a record and the name of the element
X-- of the record (that is, the element name by itself, even though it may be 
X-- unique, is not sufficient for a valid selected name).
XTest:       e-06-3-0-0005a.vhdl
X-- Check that in a selected name which denotes a record element, the simple name
X-- must be the name of an element of a record type, and evaluation of the prefix
X-- must yield an object or value of that type.
XTest:       e-06-3-0-0006a.vhdl
X-- Check that for the expanded name of an entity in a package, the prefix must
X-- denote the package and the simple name must denote an entity declared in that
X-- package.
XTest:       e-06-3-0-0007a.vhdl
X-- Check that for the expanded name of an entity declared
X-- within a labelled construct the prefix must denote a
X-- block statement, a process statement, or a loop statement.
X
XTest:       e-06-3-0-0008a.vhdl
X--    Check that the select suffix in an expanded name of an 
X--    entity declared immediately within a labeled construct must be
X--    a character literal or an identifier declared immediately within
X--    the construct denoted by the select prefix.
XTest:       e-06-3-0-0009a.vhdl
X--    Check that an expanded name whose select prefix denotes a labelled 
X--    construct is permitted only within the construct denoted by the 
X--    select prefix.
XTest:       s-06-3-0-0001a.vhdl
X-- Check that the prefix of a selected name can be an attribute name.
XTest:       s-06-3-0-0002a.vhdl
X-- Check that the prefix of a selected name can be an indexed name.
XTest:       s-06-3-0-0003a.vhdl
X-- Check that the prefix of a selected name can be a selected name (to any
X-- depth; check for n=65).
XTest:       s-06-3-0-0004a.vhdl
X--    Check that the select suffix in an expanded name of an entity declared
X--    immediately within a labeled construct may be a charater literal or an
X--    identifier declared immediately within the construct denoted by 
X--    the select prefix.
X
X------------------------------------------------------------------------
X  Paragraph:  Indexed Names - 7.1.4 --> 6.4
X------------------------------------------------------------------------
XTest:       e-06-4-0-0001a.vhdl
X-- Check that the prefix of an indexed name cannot be an aggregate.
XTest:       e-06-4-0-0002a.vhdl
X-- Check that in an indexed name there must be one expression for each index in
X-- the type of the prefix. Check that there must be at least one index, that
X-- there cannot be one more or one less index.
XTest:       e-06-4-0-0003a.vhdl
X-- Check that in an indexed name the type of each expression must be
X-- compatible in type with the corresponding index in the type declaration of
X-- the type of the array. Check that the order of indexes is significant in
X-- determining type compatibility of indexes.
XTest:       s-06-4-0-0001a.vhdl
X-- Check that the prefix of an indexed name can be an attribute name.
XTest:       s-06-4-0-0002a.vhdl
X-- Check that the prefix of an indexed name can be a selected name.
XTest:       s-06-4-0-0003a.vhdl
X-- Check that the prefix of an indexed name can be a slice name.
XTest:       s-06-4-0-0004a.vhdl
X-- Check that the prefix of an indexed name can be an indexed name (to any
X-- depth; check for n=65).
X
X------------------------------------------------------------------------
X  Paragraph:  Slice Names - 7.1.5 --> 6.5
X------------------------------------------------------------------------
XTest:       e-06-5-0-0001a.vhdl
X-- Check that the prefix of a slice name may not be an aggregate.
XTest:       e-06-5-0-0002a.vhdl
X-- Check that the prefix of a slice name must be an object or value
X-- of an one-dimensional array type.
XTest:       e-06-5-0-0003a.vhdl
X-- Check that more than one discrete range is forbidden in slices, even for
X-- multidimensional arrays.
XTest:       e-06-5-0-0004a.vhdl
X-- Check that the discrete range must not be ascending when the prefix type was
X-- declared with a descending range, and the discrete range must not be 
X-- descending when the prefix type was declared with an ascending range.
XTest:       e-06-5-0-0005a.vhdl
X-- Check that the lower and upper bounds of discrete ranges in slices must be
X-- the same base type.
XTest:       e-06-5-0-0006a.vhdl
X-- Check that the lower and upper bounds of discrete ranges in slices must be
X-- the same type as the index type of the array.
XTest:       s-06-5-0-0001a.vhdl
X-- Check that the prefix of a slice name can be an indexed name.
XTest:       s-06-5-0-0002a.vhdl
X-- Check that the prefix of a slice name can be a selected name.
XTest:       s-06-5-0-0003a.vhdl
X-- Check that the prefix of a slice name can be an attribute name.
XTest:       s-06-5-0-0004a.vhdl
X-- Check that the prefix of a slice name can be a slice name (to any depth;
X-- check for n=65).
XTest:       s-06-5-0-0005a.vhdl
X-- Check that dynamic expressions are permitted in lower and upper bounds in
X-- range specifications in array slices.
XTest:       s-06-5-0-0006a.vhdl
X-- Check that the base type of the resulting slice is the same as the base type
X-- of the prefix.
X
X------------------------------------------------------------------------
X  Paragraph:  Attribute Names - 7.1.6 --> 6.6
X------------------------------------------------------------------------
XTest:       e-06-6-0-0001a.vhdl
X-- Check that the prefix of an attribute name may not be an aggregate.
XTest:       e-06-6-0-0002a.vhdl
X-- Check that only certain predefined attributes may be followed by
X-- a single generic expression enclosed in parenthesis reprenting
X-- the attribute parameter.
XTest:       s-06-6-0-0001a.vhdl
X-- Check that the prefix of an attribute name may be an indexed name.
XTest:       s-06-6-0-0002a.vhdl
X-- Check that the prefix of an attribute name may be a slice name.
XTest:       s-06-6-0-0003a.vhdl
X-- Check that the prefix of an attribute name may be a selected name.
XTest:       s-06-6-0-0004a.vhdl
X-- Check that the prefix of an attribute name may be an attribute name.
XTest:       s-06-6-0-0005a.vhdl
X-- Check that the prefix of an attribute name may be the name of a function,
X-- body, entity, signal, or port.
XTest:       s-06-6-0-0006a.vhdl
X--     Check that the prefix of an attribute name may be a function call
*-*-END-of-TEST-SYNOPSIS.text-*-*
echo x - e-06-3-0-0001a.vhdl
sed 's/^X//' >e-06-3-0-0001a.vhdl <<'*-*-END-of-e-06-3-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a selected name cannot be an aggregate.
X-- DPS 05/02/85
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X            type R1 is record
X                       RE1: BOOLEAN;
X            	    end record;
X    	    type R2 is record
X                       RE2: R1;
X               	    end record;
X    	    type A1 is array (1 to 2) of BOOLEAN;
X    	    type R3 is record
X            	       RE3: A1;
X               	    end record;
X    	    variable V1: BOOLEAN;
X	begin
X
X    	    V1 := (RE1=>TRUE).RE1;
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE AN AGGREGATE
X
X	    V1 := R1'(RE1=>TRUE).RE1;
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE AN AGGREGATE
X
X	    V1 := R2'(RE2=>R1'(RE1=>TRUE)).RE2.RE1;
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE AN AGGREGATE
X
X    	    V1 := (RE3=>(1=>TRUE,2=>TRUE)).RE3(1);
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE AN AGGREGATE
X
X    	    V1 := R3'((RE3=>(1=>TRUE,2=>TRUE))).RE3(1);
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE AN AGGREGATE
X
X    	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-3-0-0001a.vhdl-*-*
echo x - e-06-3-0-0002a.vhdl
sed 's/^X//' >e-06-3-0-0002a.vhdl <<'*-*-END-of-e-06-3-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a selected name cannot be a slice name.
X-- DPS 05/06/85
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X
X    type ONE is range 1 to 1;
X    type R1 is record
X                 RE1: BOOLEAN;
X               end record;
X    type A1 is array (ONE) of R1;
X    type R2 is record
X                 RE2: A1;
X               end record;
Xend P;
X
Xpackage body P is
X
X    function F return A1 is
X    begin
X        return (1=>(RE1=>TRUE));
X    end F;
X
X    function G return R2 is
X    begin
X        return (RE2=>(1=>(RE1=>TRUE)));
X    end G;
X
Xend P;
X
Xuse P.all;
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X
X    	    variable V1: BOOLEAN;
X   	    variable V2: A1;
X 	    variable V3: R2;
X
X	begin
X
X   	    V2 := (1=>(RE1=>TRUE));
X 	    V3 := (RE2=>(1=>(RE1=>TRUE)));
X
X    	    V1 := V2(1 to 1).RE1;
X                -- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE SLICE NAME
X
X    	    V1 := V3.RE2(1 to 1).RE1;
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE SLICE NAME
X
X    	    V1 := F(1 to 1).RE1;
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE SLICE NAME
X
X    	    V1 := G.RE2(1 to 1).RE1;
X        	-- SYNTAX ERROR: PREFIX OF SELECTED NAME CANNOT BE SLICE NAME
X
X    	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-3-0-0002a.vhdl-*-*
echo x - e-06-3-0-0003a.vhdl
sed 's/^X//' >e-06-3-0-0003a.vhdl <<'*-*-END-of-e-06-3-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0003A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an expanded name cannot be a function
X-- call.
X-- DPS 05/06/85
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
Xend P;
X
Xpackage body P is
X    function F return BOOLEAN is
X    begin
X	return TRUE;
X    end F;
X    type A1 is array (BOOLEAN) of BOOLEAN;
Xend P;
X
Xuse P.all;
X
Xentity E  is
X    port (PT:BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable B1 : BOOLEAN; 
X	    variable V1 : BOOLEAN;
X	    variable V2 : A1 ;
X	begin
X	    V1 := F.B1;		-- ERROR: the prefix of an expanded name
X				-- cannot be a function call.
X	    V2 := V2(F.B1);	-- ERROR: the prefix of an expanded name
X				-- cannot be a functon call.    
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-3-0-0003a.vhdl-*-*
echo x - e-06-3-0-0004a.vhdl
sed 's/^X//' >e-06-3-0-0004a.vhdl <<'*-*-END-of-e-06-3-0-0004a.vhdl-*-*'
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0004A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that a selected name which denotes a record element must include
X-- both the name of the object that is a record and the name of the element
X-- of the record (that is, the element name by itself, even though it may be 
X-- unique, is not sufficient for a valid selected name).
X-- DPS 05/06/85
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X    	    type R1 is record
X        	RE1: BOOLEAN;
X    	    end record;
X    	    variable V1: BOOLEAN;
X    	    variable V2: R1;
X	begin
X    	    V1 := RE1;
X        	-- SEMANTIC ERROR: RECORD ELEMENT NAME CANNOT BE USED BY ITSELF
X    	    V2 := RE1;
X        	-- SEMANTIC ERROR: RECORD ELEMENT NAME CANNOT BE USED BY ITSELF
X    	    return;
X        end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-3-0-0004a.vhdl-*-*
echo x - e-06-3-0-0005a.vhdl
sed 's/^X//' >e-06-3-0-0005a.vhdl <<'*-*-END-of-e-06-3-0-0005a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0005A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that in a selected name which denotes a record element, the simple name
X-- must be the name of an element of a record type, and evaluation of the prefix
X-- must yield an object or value of that type.
X-- DPS 05/06/85
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X
X    type R1 is record
X                 RE1: BOOLEAN;
X               end record;
X    type R2 is record
X                 RE2: BOOLEAN;
X               end record;
Xend P;
X
Xpackage body P is
X
X    function F1 return R1 is
X    begin
X        return (RE1=>TRUE);
X    end F1;
X
X    function F2 return R2 is
X    begin
X        return (RE2=>TRUE);
X    end F2;
X
X    type ONE is range 1 to 1;
X    type A1 is array (ONE) of BOOLEAN;
X
Xend P;
X
Xuse P.all;
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable V1: R1 ;
X    	    variable V2: R2 ;
X    	    constant V3: BOOLEAN := TRUE;
X            constant V4: ONE := 1;
X            variable V5: A1 ;
X            variable V10: BOOLEAN;
X	begin
X    	    V10 := V1.(RE1=>TRUE);
X                -- SYNTAX ERROR: ILLEGAL RECORD ELEMENT NAME
X            V10 := V5.1;
X                -- SYNTAX ERROR: ILLEGAL RECORD ELEMENT NAME
X            V10 := V1.TRUE;
X                -- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X            V10 := V1.BOOLEAN;
X                -- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X            V10 := V5.ONE;
X                -- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X            V10 := V1.V3;
X                -- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X            V10 := V1.RE2;
X                -- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X            V10 := V2.RE1;
X		-- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X   	    V10 := F1.RE2;
X        	-- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X    	    V10 := F2.RE1;
X        	-- SEMANTIC ERROR: NO SUCH RECORD ELEMENT;
X    	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-3-0-0005a.vhdl-*-*
echo x - e-06-3-0-0006a.vhdl
sed 's/^X//' >e-06-3-0-0006a.vhdl <<'*-*-END-of-e-06-3-0-0006a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0006A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that for the expanded name of an entity in a package, the prefix must
X-- denote the package and the simple name must denote an entity declared in that
X-- package.
X-- DPS 05/06/85
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X    type TWO is range 1 to 2;
Xend P;
X
Xuse P.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
X
X    subtype ST1 is Q.TWO (1 to 1);
X        -- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    subtype ST2 is E.TWO (1 to 1);
X        -- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    subtype ST3 is P.E.TWO (1 to 1);
X        -- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    subtype ST4 is E.P.TWO (1 to 1);
X        -- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    type THREE is range 1 to 3;
X        -- OK
X    subtype ST5 is E.THREE (1 to 1);
X        -- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    subtype ST6 is P.UNKNOWN;
X        -- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    
Xend E;
X
Xuse P.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X  	    subtype ST7 is Q.TWO (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    subtype ST8 is E.TWO (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    subtype ST9 is P.E.TWO (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    subtype ST10 is E.P.TWO (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    type FOUR is range 1 to 4;
X        	-- OK
X            subtype ST11 is BB.FOUR (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    subtype ST12 is E.BB.FOUR (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    subtype ST13 is BB.E.FOUR (1 to 1);
X        	-- SEMANTIC ERROR: ILLEGAL EXPANDED NAME
X    	    subtype ST14 is P.NOTKNOWN;
X
X	begin
X    	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-3-0-0006a.vhdl-*-*
echo x - e-06-3-0-0007a.vhdl
sed 's/^X//' >e-06-3-0-0007a.vhdl <<'*-*-END-of-e-06-3-0-0007a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0007A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that for the expanded name of an entity declared
X-- within a labelled construct the prefix must denote a
X-- block statement, a process statement, or a loop statement.
X-- 05/15/85 DPS
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E is
X    port (PT:BOOLEAN) ;
Xend E;
X
Xarchitecture AB of E is
X--     B:block
X	signal G : INTEGER ;
X    begin
X	C:block
X	begin
X	    P1: process
X		variable F:INTEGER;
X	    begin
X		F :=  F+D.G;	-- ERROR: prefix must denote a block statement,
X				-- a process statement, or a loop statement.
X	        return;
X	    end process P1;
X	end block C;
X	E: if TRUE generate
X	    G <= G + E.F;	-- ERROR: prefix must denote a block statement,
X				-- a process statement, or a loop statement.
X	end generate;
X--     end block B;
Xend AB;
*-*-END-of-e-06-3-0-0007a.vhdl-*-*
echo x - e-06-3-0-0008a.vhdl
sed 's/^X//' >e-06-3-0-0008a.vhdl <<'*-*-END-of-e-06-3-0-0008a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0008A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X--    Check that the select suffix in an expanded name of an 
X--    entity declared immediately within a labeled construct must be
X--    a character literal or an identifier declared immediately within
X--    the construct denoted by the select prefix.
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity q is
Xend q;
X
Xarchitecture Bq of q is
X-- b1 : block
X      type chars is ('a','b','c');
X      signal bs1 : BIT;
X      begin
X	B2: block
X            type chars is ('c','d','e');
X	    signal bs2 : BIT;
X            begin
X		process
X			variable c : b1.chars;
X			variable d : b2.chars;
X		   begin
X			c := b1.'c';   -- Ok
X			d := b2.'a';
X   				        -- ERROR: Literal defined by selected 
X					-- suffix not declared within construct
X					-- denoted by selected prefix.
X		end process;
X	        b3 : block
X			signal bs3a : BIT;
X			signal bs3b : BIT;
X		     begin
X			bs3a <= B1.bs1; -- Ok
X			bs3b <= B1.bs2; 
X   				        -- ERROR: Entity defined by selected 
X					-- suffix not declared within construct
X					-- denoted by selected prefix.
X                     end block b3;
X            end block B2;
X--       end block b1;
Xend Bq;
*-*-END-of-e-06-3-0-0008a.vhdl-*-*
echo x - e-06-3-0-0009a.vhdl
sed 's/^X//' >e-06-3-0-0009a.vhdl <<'*-*-END-of-e-06-3-0-0009a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-3-0-0009A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X--    Check that an expanded name whose select prefix denotes a labelled 
X--    construct is permitted only within the construct denoted by the 
X--    select prefix.
X-- ADO 05/13/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity U is
Xend U;
X
Xarchitecture F of U is
X-- B1 : block
X	constant C : integer := 10;
X    begin
X	B2 : block
X	        constant C : integer := B1.c; -- Ok
X             begin
X		process
X		    begin
X			null;
X		end process;
X	end block;
X         B3 : block
X	        constant C : integer := B1.c; -- Ok
X	        constant Bad_C : integer := B2.c; 
X			-- Error : Initialization Expression is not
X			-- visible.
X             begin
X		process
X		    begin
X			null;
X		end process;
X	end block;
X
X--end block;
Xend  F;
*-*-END-of-e-06-3-0-0009a.vhdl-*-*
echo x - e-06-4-0-0001a.vhdl
sed 's/^X//' >e-06-4-0-0001a.vhdl <<'*-*-END-of-e-06-4-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-4-0-0001A.VHD
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an indexed name cannot be an aggregate.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X        process
X           type THREE is range 1 to 3;
X    	   type A1 is array (THREE) of BOOLEAN;
X    	   type ONE is range 1 to 1;
X    	   type A2 is array (ONE) of BOOLEAN;
X    	   variable V1: BOOLEAN;
X        begin
X
X    	   V1 := (1=>TRUE, 2=>TRUE, 3=>TRUE)(2);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X          V1 := (others=>TRUE)(2);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X          V1 := A1'(1=>TRUE, 2=>TRUE, 3=>TRUE)(2);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X          V1 := A1'(others=>TRUE)(2);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X          V1 := (1=>TRUE)(1);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X	  V1 := (others=>TRUE)(1);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X    	  V1 := A2'(1=>TRUE)(1);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X    	  V1 := A2'(others=>TRUE)(1);
X        -- SYNTAX ERROR: PREFIX OF INDEXED NAME CANNOT BE AN AGGREGATE
X
X    	  return;
X      end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-4-0-0001a.vhdl-*-*
echo x - e-06-4-0-0002a.vhdl
sed 's/^X//' >e-06-4-0-0002a.vhdl <<'*-*-END-of-e-06-4-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-4-0-0002A.VHD
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that in an indexed name there must be one expression for each index in
X-- the type of the prefix. Check that there must be at least one index, that
X-- there cannot be one more or one less index.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type THREE is range 1 to 3;
X	    type ENUM1 is (EN1, EN2, EN3);
X	    type A11 is array (THREE) of BOOLEAN;
X	    type A12 is array (ENUM1) of BOOLEAN;
X	    type A21 is array (THREE, THREE) of BOOLEAN;
X	    type A22 is array (ENUM1, ENUM1) of BOOLEAN;
X	    type A31 is array (THREE) of A22;
X	    type A32 is array (ENUM1, ENUM1) of A11;
X
X	    variable V1: BOOLEAN;
X	    variable V11: A11 ;
X	    variable V12: A12 ;
X	    variable V21: A21 ;
X	    variable V22: A22 ;
X	    variable V31: A31 ;
X	    variable V32: A32 ;
X
X	begin
X
X	    V1 := V11(1, 2);                 -- ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V12(EN3, EN2);             -- ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V21(2);                    -- ONE LESS
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X	
X	    V1 := V22(EN2);                  -- ONE LESS
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V21(3, 2, 1);              -- ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V22(EN1, EN2, EN3);        -- ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V31(2)(EN2);               -- ONE LESS
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	   V1 := V31(2)(EN3, EN2, EN1);     -- ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V32(EN2)(2);               -- ONE LESS
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V32(EN1, EN2, EN3)(2);     -- ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V31(1, EN2)(EN3);     -- ONE MORE AND ONE LESS
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V32(EN3)(EN2, 1);     -- ONE LESS AND ONE MORE
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V21(2)(2);                 -- WRONG DIMENSIONALITY
X	        -- SEMANTIC ERROR: ACTUAL INDEX POSITIONS DO NOT CORRESPOND TO
X	        -- INDEX POSITIONS IN TYPE DECLARATION
X
X	    V1 := V11;    -- DEGENERATE CASE OF ONE LESS;	
X	        -- SEMANTIC ERROR: TYPE INCOMPATIBILITY IN ASSIGNMENT
X
X	    V1 := V12();  -- DEGENERATE CASE OF ONE LESS;
X        	-- SYNTAX ERROR: ACTUAL ARRAY INDEX MISSING
X
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-4-0-0002a.vhdl-*-*
echo x - e-06-4-0-0003a.vhdl
sed 's/^X//' >e-06-4-0-0003a.vhdl <<'*-*-END-of-e-06-4-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-4-0-0003A.VHD
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that in an indexed name the type of each expression must be
X-- compatible in type with the corresponding index in the type declaration of
X-- the type of the array. Check that the order of indexes is significant in
X-- determining type compatibility of indexes.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type I1 is range 1 to 1;
X	    type I2 is range 1 to 1;
X	    type I3 is range 1 to 1;
X
X	    type A_1 is array (I1) of BOOLEAN;
X	    type A_2 is array (I2) of BOOLEAN;
X	    type A_3 is array (I3) of BOOLEAN;
X	    type A_12 is array (I1, I2) of BOOLEAN;
X	    type A_121 is array (I1, I2, I1) of BOOLEAN;
X	    type A_123 is array (I1, I2, I3) of BOOLEAN;
X	    type A_1_2 is array (I1) of A_2;
X	    type A_2_1 is array (I2) of A_1;
X	    type A_2_3 is array (I2) of A_3;
X	    type A_1_2_1 is array (I1) of A_2_1;
X	    type A_1_2_3 is array (I1) of A_2_3;
X	
X	    constant C1: I1 := 1;
X	    constant C2: I2 := 1;
X	    constant C3: I3 := 1;
X	
X	    variable V: BOOLEAN;
X	    variable V_1: A_1 ;
X	    variable V_12: A_12 ;
X	    variable V_121: A_121 ;
X	    variable V_123: A_123 ;
X	    variable V_1_2: A_1_2 ;
X	    variable V_1_2_1: A_1_2_1 ;
X	    variable V_1_2_3: A_1_2_3 ;
X
X	begin
X
X	    V := V_1(C2);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    V := V_12(C2, C1);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    V := V_121(C2, C1, C2);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    V := V_123(C3, C2, C1);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    V := V_1_2(C2)(C2);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    V := V_1_2(C1)(C1);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    V := V_1_2_1(C2)(C1)(C2);
X	        -- SEMANTIC ERROR: INDEX TYPE INCOMPATIBILITY
X
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-4-0-0003a.vhdl-*-*
echo x - e-06-5-0-0001a.vhdl
sed 's/^X//' >e-06-5-0-0001a.vhdl <<'*-*-END-of-e-06-5-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-5-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a slice name may not be an aggregate.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    subtype FIVE is INTEGER range 1 to 5;
X	    subtype THREE is INTEGER range 1 to 3;
X	    subtype ONE is INTEGER range 1 to 1;
X	    type A0 is array (INTEGER range <>) of BOOLEAN;
X	    subtype A1 is A0 (FIVE);
X	    subtype A2 is A0 (ONE);
X	    subtype A3 is A0 (THREE);
X            subtype A5 is A0 (FIVE); 
X	    variable V2: A2;
X	    variable V3: A3;
X	begin
X
X	    V2 := (1=>TRUE, 2=>TRUE, 3=>TRUE, 4=>TRUE, 5=>TRUE) (3 to 3);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    V2 := A5'(1=>TRUE, 2=>TRUE, 3=>TRUE, 4=>TRUE, 5=>TRUE) (3 to 3);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X	
X	    V2 := (others=>TRUE)(3 to 3);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    V2 := A5'(others=>TRUE)(3 to 3);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    V3 := (1=>TRUE, 2=>TRUE, 3=>TRUE, 4=>TRUE, 5=>TRUE) (2 to 4);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    V3 := A5'(1=>TRUE, 2=>TRUE, 3=>TRUE, 4=>TRUE, 5=>TRUE) (2 to 4);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    V3 := (others=>TRUE) (2 to 4);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    V3 := A5'(others=>TRUE) (2 to 4);
X	        -- SYNTAX ERROR: PREFIX OF SLICE NAME CANNOT BE AN AGGREGATE
X
X	    return;
X        end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-5-0-0001a.vhdl-*-*
echo x - e-06-5-0-0002a.vhdl
sed 's/^X//' >e-06-5-0-0002a.vhdl <<'*-*-END-of-e-06-5-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-5-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a slice name must be an object or value
X-- of an one-dimensional array type.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X    
X    type FIVE is range 1 to 5;
X    type A1B is array (FIVE range <>) of BOOLEAN;
X    subtype A1 is A1B(FIVE);
X    type A2B is array (FIVE range <>, FIVE range <>) of A1;
X    subtype A2 is A2B(FIVE, FIVE);
X    type R is record
X                  RE1:  INTEGER;
X              end record;
Xend P;
X
Xpackage body P is
X    function F return A1 is
X    begin
X        return (others => true);
X    end F;
X
X    function G return A2 is
X    begin
X        return (others => (others => (others => false)));
X    end G;
X
Xend P;
X
X
Xuse P.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable V1: A1;
X	    variable V2: A2;
X            variable R1: R;
X	begin
X
X            V1(2 to 4) := V1(1 to 3);
X            V1(1 to 3) := V1(1 to 5)(2 to 4);
X	    V1(1 to 3) := V2(5,4)(2 to 4);
X            V1(2 to 4) := F(3 to 5);
X            
X
X            V1(5) := V1(3)(3 to 3);  -- ERROR:  prefix of a slice name
X                                     -- cannot be an array element unless
X				     -- the array element is an one-dimensional
X				     -- array
X
X            V1(2 to 4) := V2(1 to 3);   -- ERROR: prefix of a slice name
X			     		-- cannot be a multi-dimensional
X                                        -- array object
X
X            V1(2 to 4) := G(3 to 5);   -- ERROR: prefix of a slice name
X			     	       -- cannot be a function value
X				       -- of a multi-dimensional array type
X
X            V1(3 to 4) := R1(2 to 5);   -- ERROR: prefix of a slice name
X			     		-- cannot be a record object
X
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-5-0-0002a.vhdl-*-*
echo x - e-06-5-0-0003a.vhdl
sed 's/^X//' >e-06-5-0-0003a.vhdl <<'*-*-END-of-e-06-5-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-5-0-0003A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that more than one discrete range is forbidden in slices, even for
X-- multidimensional arrays.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type FIVE is range 1 to 5;
X	    type A51 is array (FIVE) of BOOLEAN;
X	    type A52 is array (FIVE, FIVE) of BOOLEAN;
X	    type A53 is array (FIVE) of A51;
X	
X	    variable V51: A51 ;
X	    variable V52: A52 ;
X	    variable V53: A53 ;
X    
X	begin
X
X	    V51(2 to 2, 3 to 3) := V51(2 to 2, 3 to 3);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V51(2 to 2, 3 to 4) := V51(2 to 2, 3 to 4);
X        	-- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V51(3 to 4, 2 to 2) := V51(3 to 4, 2 to 2);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X
X	    V52(1 to 2, 4 to 5) := V52(1 to 2, 4 to 5);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V52(2 to 2, 2 to 5) := V52(2 to 2, 2 to 5);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V52(2 to 5, 2 to 2) := V52(2 to 5, 2 to 2);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X
X	    V53(2 to 3, 3 to 4) := V53(2 to 3, 3 to 4);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(3 to 3, 1 to 4) := V53(3 to 3, 1 to 4);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(1 to 4, 3 to 3) := V53(1 to 4, 3 to 3);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(1 to 1, 2 to 5) := V53(1 to 1, 2 to 5);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(2 to 5, 1 to 1) := V53(2 to 5, 1 to 1);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X
X	-- DESCENDING RANGES
X
X	    V51(2 downto 1, 3 to 4) := V51(2 downto 1, 3 to 4);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V51(3 to 4, 2 downto 1) := V51(3 to 4, 2 downto 1);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X
X	    V52(2 downto 1, 1 to 4) := V52(2 downto 1, 1 to 4);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V52(1 to 4, 2 downto 1) := V52(1 to 4, 2 downto 1);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	
X	    V53(2 downto 1, 1 to 4) := V53(2 downto 1, 1 to 4);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(2 downto 1, 3 to 4) := V53(2 downto 1, 3 to 4);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(1 to 4, 2 downto 1) := V53(1 to 4, 2 downto 1);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X	    V53(3 to 4, 2 downto 1) := V53(3 to 4, 2 downto 1);
X	        -- SYNTAX ERROR: NO MULTIPLE DISCRETE RANGES IN SLICE NAMES
X    
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-5-0-0003a.vhdl-*-*
echo x - e-06-5-0-0004a.vhdl
sed 's/^X//' >e-06-5-0-0004a.vhdl <<'*-*-END-of-e-06-5-0-0004a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-5-0-0004A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the discrete range must not be ascending when the prefix type was
X-- declared with a descending range, and the discrete range must not be 
X-- descending when the prefix type was declared with an ascending range.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type ENUM1 is (M1, M2, M3, M4, M5, M6);
X            type A is  array ( ENUM1 range <> ) of BOOLEAN;
X            type B is  array ( INTEGER range <> ) of BOOLEAN;
X	    subtype A1 is A(M1 to M6) ;
X	    subtype A2 is A(M6 downto M1) ;
X	    subtype B1 is B(1 to 6) ;
X	    subtype B2 is B(6 downto 1) ;
X	    variable V1: A1 ;
X	    variable V2: A2 ;
X	    variable V3: B1 ;
X	    variable V4: B2 ;
X
X	begin
X
X	    V1(M2 to M4) := V1(M4 downto M2); 
X		--ERROR: discrete range must not be ascending when the prefix 
X		--type was declared with a descending range, and the discrete 
X		--range must not be descending when the prefix type was 
X		--declared with an ascending range.
X
X	    V2(M4 downto M2) := V2(M2 to M4);
X		--ERROR: discrete range must not be ascending when the prefix 
X		--type was declared with a descending range, and the discrete 
X		--range must not be descending when the prefix type was 
X		--declared with an ascending range.
X
X	    V3(2 to 4) := V3(4 downto 2);
X		--ERROR: discrete range must not be ascending when the prefix 
X		--type was declared with a descending range, and the discrete 
X		--range must not be descending when the prefix type was 
X		--declared with an ascending range.
X
X	    V4(4 downto 2) := V4(2 to 4);
X		--ERROR: discrete range must not be ascending when the prefix 
X		--type was declared with a descending range, and the discrete 
X		--range must not be descending when the prefix type was 
X		--declared with an ascending range.
X
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-5-0-0004a.vhdl-*-*
echo x - e-06-5-0-0005a.vhdl
sed 's/^X//' >e-06-5-0-0005a.vhdl <<'*-*-END-of-e-06-5-0-0005a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-5-0-0005A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the lower and upper bounds of discrete ranges in slices must be
X-- the same base type.
X-- DPS 05/07/85
X-- AOD 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type ENUM1 is (M1, M2, M3, M4, M5);
X	    type ENUM2 is (N1, N2, N3, N4, N5);
X	    type FIVE1 is range 1 to 5;
X	    type FIVE2 is range 1 to 5;
X	    variable VE1LOW: ENUM1 := M2;
X	    variable VE2HIGH: ENUM2 := N4;
X	    variable VF1LOW: FIVE1 := 2;
X	    variable VF2HIGH: FIVE2 := 4;
X	    type AE5 is array (M1 to M5) of BOOLEAN;
X	    type AF5 is array (FIVE1) of BOOLEAN;
X	    variable VAE5: AE5 ;
X	    variable VAF5: AF5 ;
X	
X	begin
X
X	    VAE5(M2 to M4) := VAE5(VE1LOW to VE2HIGH);
X	        -- SEMANTIC ERROR: BOUNDS OF DISCRETE RANGE MUST BE OF SAME TYPE
X	    VAF5(2 to 4) := VAF5(VF1LOW to VF2HIGH);
X	        -- SEMANTIC ERROR: BOUNDS OF DISCRETE RANGE MUST BE OF SAME TYPE
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-5-0-0005a.vhdl-*-*
echo x - e-06-5-0-0006a.vhdl
sed 's/^X//' >e-06-5-0-0006a.vhdl <<'*-*-END-of-e-06-5-0-0006a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-5-0-0006A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the lower and upper bounds of discrete ranges in slices must be
X-- the same type as the index type of the array.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type ENUM1 is (M1, M2, M3, M4, M5);
X	    type ENUM2 is (N1, N2, N3, N4, N5);
X	    type FIVE1 is range 1 to 5;
X	    type FIVE2 is range 1 to 5;
X	    type A1B is array (ENUM1 range <>) of BOOLEAN;
X	    subtype A1 is A1B(ENUM1);
X            type A2B is array (ENUM2 range <>) of A1;
X	    subtype A2 is A2B(ENUM2);
X	    type A3B is array (FIVE1 range <>) of BOOLEAN;
X	    subtype A3 is A3B(FIVE1);
X	    type A4B is array (FIVE2 range <>) of A3;
X	    subtype A4 is A4B(FIVE2);
X	    variable V1: A1 ;
X	    variable V2: A2 ;
X	    variable V3: A3 ;
X	    variable V4: A4 ;
X	    constant FIVE2_2: FIVE2 := 2;
X	    constant FIVE2_4: FIVE2 := 4;
X
X	begin
X
X            V1(M2 to M4) := V1(M3 to M5);
X            V1(M2 to M4) := V2(N4)(M3 to M5);
X            V2(N2)(M2 to M4) := V2(N4)(M3 to M5);
X            V2(N1 to N4) := V2(N2 to N5);
X
X            V3(1 to 3) := V3(2 to 4);
X            V3(1 to 3) := V4(1)(3 to 5);
X            V4(3)(1 to 5) := V4(4)(1 to 5);
X            V4(2 to 3) := V4(3 to 4);
X
X	    V1(M2 to M4) := V1(N1 to N5);
X	        -- SEMANTIC ERROR: DISCRETE RANGE INCOMPATIBLE WITH INDEX TYPE
X	    V1(M2 to M4) := V1(M1 to N5);
X	        -- SEMANTIC ERROR: DISCRETE RANGE INCOMPATIBLE WITH INDEX TYPE
X            V1(M2 to M4) := V1(N1 to M5);
X	        -- SEMANTIC ERROR: DISCRETE RANGE INCOMPATIBLE WITH INDEX TYPE
X	    V2(N3)(M2 to M4) := V2(N3)(N1 to N2);
X	        -- SEMANTIC ERROR: DISCRETE RANGE INCOMPATIBLE WITH INDEX TYPE
X	    V3(2 to 4) := V3(FIVE2_2 to FIVE2_4);
X	        -- SEMANTIC ERROR: DISCRETE RANGE INCOMPATIBLE WITH INDEX TYPE
X	    V4(3)(2 to 4) := V4(3)(FIVE2_2 to FIVE2_4);
X	        -- SEMANTIC ERROR: DISCRETE RANGE INCOMPATIBLE WITH INDEX TYPE
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-5-0-0006a.vhdl-*-*
echo x - e-06-6-0-0001a.vhdl
sed 's/^X//' >e-06-6-0-0001a.vhdl <<'*-*-END-of-e-06-6-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-6-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an attribute name may not be an aggregate.
X-- DPS 05/08/85
X-- ADO 05/15/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type I1 is range 1 to 3;
X	    type A1 is array (I1) of BOOLEAN;
X	begin
X	    if (1|2|3=>TRUE)'LOW = 1 then
X	        -- SYNTAX ERROR: AGGREGATE NOT ALLOWED AS PREFIX OF 
X		-- ATTRIBUTE NAME
X	        return;
X	    elsif (A1'(1|2|3=>TRUE))'LOW = 1 then
X	        -- SYNTAX ERROR: AGGREGATE NOT ALLOWED AS PREFIX OF 
X		-- ATTRIBUTE NAME
X	        return;
X	    elsif (1|2|3=>TRUE)'RIGHT = 3 then
X	        -- SYNTAX ERROR: AGGREGATE NOT ALLOWED AS PREFIX OF 
X		-- ATTRIBUTE NAME
X	        return;
X	    elsif (A1'(1|2|3=>TRUE))'RIGHT = 3 then
X	        -- SYNTAX ERROR: AGGREGATE NOT ALLOWED AS PREFIX OF 
X		-- ATTRIBUTE NAME
X	        return;
X	    end if;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-e-06-6-0-0001a.vhdl-*-*
echo x - e-06-6-0-0002a.vhdl
sed 's/^X//' >e-06-6-0-0002a.vhdl <<'*-*-END-of-e-06-6-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: E-06-6-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that only certain predefined attributes may be followed by
X-- a single generic expression enclosed in parenthesis reprenting
X-- the attribute parameter.
X-- 05/16/85 DPS
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X    type II is range 1 to 1000;
X    type RR is range 0.0001 to 10000.01;
Xend P;
X
Xpackage body P is
X    function F1 (A:II;B:RR) return BOOLEAN is
X	variable G1 : II;
X	variable G2 : RR;
X    begin
X	if (G1'HIGH(A) <= 0) then   -- ERROR: attribute does not have a
X				    -- generic expression assoc. with it.
X	    return FALSE;
X	elsif (G2'LOW(B) /= 0.0) then  -- ERROR: attribute does not have a
X   			                -- generic expression assoc. with it.
X	    return FALSE;
X	elsif (A'LEFT(0) /= 0) then  -- ERROR: attribute does not have a
X	       			       -- generic expression assoc. with it.
X	    return FALSE;
X	elsif (B'RIGHT(0.0) /= 0.0) then  -- ERROR: attribute does not have a
X				            -- generic expression assoc. 
X					    -- with it.
X	    return FALSE;
X	elsif (A'BASE'LEFT(B) /= 11) then  -- ERROR: attribute does not have a
X				    	     -- generic expression assoc. 
X					     -- with it.
X	    return FALSE;
X	else
X	    return TRUE;
X	end if;
X    end F1;
Xend P;
*-*-END-of-e-06-6-0-0002a.vhdl-*-*
echo x - s-06-1-0-0001a.vhdl
sed 's/^X//' >s-06-1-0-0001a.vhdl <<'*-*-END-of-s-06-1-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-1-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an indexed name can be a function call.
X-- Check that the prefix of a  selected name can be a function call.
X-- Check that the prefix of a  slice name can be a function call.
X-- Check that the prefix of an attribute name can be a function call.
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X100
X
Xpackage P is
X
X    type THREE is range 1 to 3;
X
X    type A1 is array (THREE) of BOOLEAN;
X    type A2 is array (THREE, THREE) of BOOLEAN;
X    type A3 is array (THREE) of A1;
X
X    type R1 is record
X	elem : boolean;
X    end record;
X
X    type R2 is record
X	elem : boolean;
X    end record;
Xend P;
X
Xpackage body P is
X    function F1(i : integer) return A1 is
X         variable AR : A1;
X    begin
X	return AR;
X    end F1;
X
X    function F2(i : integer) return A2 is
X	variable AR2 : A2;
X    begin
X	return AR2;
X-- 	return (others=>(others=>TRUE));
X    end F2;
X
X    function F3(i : integer) return A3 is
X	variable AR3 : A3;
X    begin
X	return AR3;
X--        return (others=>(others=>TRUE));
X    end F3;
X
X    function F4 (i : integer) return R1 is
X	variable rec : R1;
X    begin
X	return rec;
X--        return (others=>(others=>TRUE));
X    end F4;
X
X
X
X    function F5 (i : integer) return R2 is
X	variable rec : R2;
X    begin
X	return rec;
X--        return (others=>(others=>TRUE));
X    end F5;
X
X
Xend P;
X
Xuse P.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable A : integer;
X	    variable V: BOOLEAN;
X	    variable V1 : A1;
X	    variable V2 : A2;
X	    variable V3 : A3;
X	
X	    variable BOOL    : boolean;
X
X	begin
X	    V  := F1(A)(1);     -- Indexed Name
X
X	    V  := F2(A)(2, 3);  -- Indexed Name
X
X    	    V := F3(A)(1)(3);   -- Indexed Name
X
X            BOOL := F4(A).elem; -- Selected Name
X	end process;
X--     end block;
Xend BB;
X
Xpackage P is
X
X    subtype FIVE is INTEGER range 1 to 5;
X    type ABASE is array (FIVE range <>) of BOOLEAN;
X    subtype A1 is ABASE(FIVE);
Xend P;
X
Xpackage body P is
X    function F (i: integer) return A1 is
X	variable ARR : A1;
X    begin
X	  return ARR;
X--        return (others=>TRUE);
X    end F;
X
Xend P;
X
Xuse P.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
X
Xarchitecture BB of E is
X-- L_X_1:    block
X	subtype I is INTEGER range F(3)'low to F(3)'High;
X    begin
X	process
X	    variable V1: A1;
X	begin
X	    V1(2 to 4) := F(5)(2 to 4);
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-1-0-0001a.vhdl-*-*
echo x - s-06-3-0-0001a.vhdl
sed 's/^X//' >s-06-3-0-0001a.vhdl <<'*-*-END-of-s-06-3-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-3-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a selected name can be an attribute name.
X-- DPS 05/7/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage trick2 is
X    type ONE is range 1 to 1;
X    type R1 is record
X                  X1: ONE;
X                 RE1: BOOLEAN;
X               end record;
X    type R2 is record
X                  X1: ONE;
X                 RE2: R1;
X               end record;
Xend trick2;
X
Xpackage body trick2 is
X    function rr1(i : integer) return R1 is
X     variable vr : r1;
X    begin
X        return vr;
X    end rr1;
X
X    function rr2(i: integer) return R2 is
X     variable vr : r2;
X    begin
X        return vr;
X    end rr2;
Xend trick2;
X
Xuse trick2.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
X
X    attribute AT1 of port is R1;
X    for AT1 of port PT use rr1(3);
X    attribute AT2 of port is R2;
X    for AT2 of port PT use rr2(4);
X    type A1 is array (BOOLEAN) of BOOLEAN;
X
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable V1: BOOLEAN;
X	    variable V2: A1;
X	begin
X	    V1 := PT'AT1.RE1;
X	    V1 := PT'AT2.RE2.RE1;
X	    V1 := V2(PT'AT1.RE1);
X	    V1 := V2(PT'AT2.RE2.RE1);
X	   return;
X	end process;
X--     end block;
Xend BB ;
*-*-END-of-s-06-3-0-0001a.vhdl-*-*
echo x - s-06-3-0-0002a.vhdl
sed 's/^X//' >s-06-3-0-0002a.vhdl <<'*-*-END-of-s-06-3-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-3-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a selected name can be an indexed name.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- QQ:    block
X
X    type TWO is range 1 to 2;
X    type R1 is record
X                  X1: TWO;
X                 RE1: BOOLEAN;
X               end record;
X    type A1 is array (TWO) of R1;
X    type A2 is array (TWO) of A1;
X    type A11 is array (TWO, TWO) of R1;
X    type A22 is array (TWO, TWO) of A1;
X
X    begin
X	process
X	    variable V1: BOOLEAN;
X	    variable V2: A1 ; 
X	    variable V3: A2 ; 
X	    variable V4: A11; 
X	    variable V5: A22; 
X
X	begin
X
X	    V1 := V2(1).RE1;
X	    V1 := V3(2)(1).RE1;
X	    V1 := V4(1,2).RE1;
X	    V1 := V5(1,2)(1).RE1;
X	    return;
X	end process;
X--     end block;
Xend BB;
X
*-*-END-of-s-06-3-0-0002a.vhdl-*-*
echo x - s-06-3-0-0003a.vhdl
sed 's/^X//' >s-06-3-0-0003a.vhdl <<'*-*-END-of-s-06-3-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-3-0-0003A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a selected name can be a selected name (to any
X-- depth; check for n=65).
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- QQ: block
X    begin
X	process
X	    type ONE is range 1 to 1;
X
X	    type R0 is record X: ONE; RE: BOOLEAN; end record;
X
X	    type R1 is record X: ONE; RE: R0; end record;
X	    type R2 is record X: ONE; RE: R1; end record;
X	    type R3 is record X: ONE; RE: R2; end record;
X	    type R4 is record X: ONE; RE: R3; end record;
X	    type R5 is record X: ONE; RE: R4; end record;
X	    type R6 is record X: ONE; RE: R5; end record;
X	    type R7 is record X: ONE; RE: R6; end record;
X	    type R8 is record X: ONE; RE: R7; end record;
X	    type R9 is record X: ONE; RE: R8; end record;
X
X	    type R10 is record X: ONE; RE: R9; end record;
X	    type R11 is record X: ONE; RE: R10; end record;
X	    type R12 is record X: ONE; RE: R11; end record;
X	    type R13 is record X: ONE; RE: R12; end record;
X	    type R14 is record X: ONE; RE: R13; end record;
X	    type R15 is record X: ONE; RE: R14; end record;
X	    type R16 is record X: ONE; RE: R15; end record;
X	    type R17 is record X: ONE; RE: R16; end record;
X	    type R18 is record X: ONE; RE: R17; end record;
X	    type R19 is record X: ONE; RE: R18; end record;
X	
X	    type R20 is record X: ONE; RE: R19; end record;
X	    type R21 is record X: ONE; RE: R20; end record;
X	    type R22 is record X: ONE; RE: R21; end record;
X	    type R23 is record X: ONE; RE: R22; end record;
X	    type R24 is record X: ONE; RE: R23; end record;
X	    type R25 is record X: ONE; RE: R24; end record;
X	    type R26 is record X: ONE; RE: R25; end record;
X	    type R27 is record X: ONE; RE: R26; end record;
X	    type R28 is record X: ONE; RE: R27; end record;
X	    type R29 is record X: ONE; RE: R28; end record;
X	
X	    type R30 is record X: ONE; RE: R29; end record;
X	    type R31 is record X: ONE; RE: R30; end record;
X	    type R32 is record X: ONE; RE: R31; end record;
X	    type R33 is record X: ONE; RE: R32; end record;
X	    type R34 is record X: ONE; RE: R33; end record;
X	    type R35 is record X: ONE; RE: R34; end record;
X	    type R36 is record X: ONE; RE: R35; end record;
X	    type R37 is record X: ONE; RE: R36; end record;
X	    type R38 is record X: ONE; RE: R37; end record;
X	    type R39 is record X: ONE; RE: R38; end record;
X	
X	    type R40 is record X: ONE; RE: R39; end record;
X	    type R41 is record X: ONE; RE: R40; end record;
X	    type R42 is record X: ONE; RE: R41; end record;
X	    type R43 is record X: ONE; RE: R42; end record;
X	    type R44 is record X: ONE; RE: R43; end record;
X	    type R45 is record X: ONE; RE: R44; end record;
X	    type R46 is record X: ONE; RE: R45; end record;
X	    type R47 is record X: ONE; RE: R46; end record;
X	    type R48 is record X: ONE; RE: R47; end record;
X	    type R49 is record X: ONE; RE: R48; end record;
X	
X	    type R50 is record X: ONE; RE: R49; end record;
X	    type R51 is record X: ONE; RE: R50; end record;
X	    type R52 is record X: ONE; RE: R51; end record;
X	    type R53 is record X: ONE; RE: R52; end record;
X	    type R54 is record X: ONE; RE: R53; end record;
X	    type R55 is record X: ONE; RE: R54; end record;
X	    type R56 is record X: ONE; RE: R55; end record;
X	    type R57 is record X: ONE; RE: R56; end record;
X	    type R58 is record X: ONE; RE: R57; end record;
X	    type R59 is record X: ONE; RE: R58; end record;
X	
X	    type R60 is record X: ONE; RE: R59; end record;
X	    type R61 is record X: ONE; RE: R60; end record;
X	    type R62 is record X: ONE; RE: R61; end record;
X	    type R63 is record X: ONE; RE: R62; end record;
X	    type R64 is record X: ONE; RE: R63; end record;
X	    type R65 is record X: ONE; RE: R64; end record;
X	
X	    variable V1: R65;
X	
X	begin
X	
X	    V1.
X	    RE.RE.RE.RE.RE.RE.RE.RE.RE.RE.    -- 10
X	    RE.RE.RE.RE.RE.RE.RE.RE.RE.RE.    -- 20
X	    RE.RE.RE.RE.RE.RE.RE.RE.RE.RE.    -- 30
X	    RE.RE.RE.RE.RE.RE.RE.RE.RE.RE.    -- 40
X	    RE.RE.RE.RE.RE.RE.RE.RE.RE.RE.    -- 50
X	    RE.RE.RE.RE.RE.RE.RE.RE.RE.RE.    -- 60
X	    RE.RE.RE.RE.RE.RE                 -- 66
X	        := TRUE;
X	
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-3-0-0003a.vhdl-*-*
echo x - s-06-3-0-0004a.vhdl
sed 's/^X//' >s-06-3-0-0004a.vhdl <<'*-*-END-of-s-06-3-0-0004a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-3-0-0004A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X--    Check that the select suffix in an expanded name of an entity declared
X--    immediately within a labeled construct may be a charater literal or an
X--    identifier declared immediately within the construct denoted by 
X--    the select prefix.
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E is
Xend E;
X
Xarchitecture EB of E is
X-- B1:Block
X	type chars is ('a', 'b', 'c', 'd', 'e');
X	signal s1 : BIT;
X    begin
X	P: process 
X		variable c     : chars;
X	        variable P_all_done : boolean;
X	   begin
X		L1 : for LL1 in False downto True  loop
X		    L2 : for LL2 in  0 to 5 loop
X			P.c := 'a';          -- Selected prefix is process id,
X					     -- suffix is identifier decl'd
X					     -- in process.
X
X			if L1.LL1 then   -- Selected prefix is loop,
X					     -- suffix is identifier that
X					     --	refers to loop iteration id.
X					     
X			   P_all_done := True;
X			end if;
X		    end loop L2;
X		end loop L1;
X         end process P;
X         
X         B2 : block
X		signal s2 : BIT;
X	      begin
X		S2 <= B1.s1;      -- Selected prefix is block, suffix
X				  -- is identifier decl'd in the block
X
X		process
X			variable c_var : chars := B1.'a'; 
X					-- Selected prefix is enclosing block
X					-- selected suffix is character literal
X		begin
X			null;
X		end process;
X
X	      end block;
X--   end block;
Xend EB;
*-*-END-of-s-06-3-0-0004a.vhdl-*-*
echo x - s-06-4-0-0001a.vhdl
sed 's/^X//' >s-06-4-0-0001a.vhdl <<'*-*-END-of-s-06-4-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-4-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an indexed name can be an attribute name.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage trick_it is
X    type THREE is range 1 to 3;
X    type A1 is array (THREE) of BOOLEAN;
X    type A2 is array (THREE, THREE) of BOOLEAN;
X    type A3 is array (THREE) of A1;
Xend trick_it;
X
Xpackage body trick_it is
X    function Af1 (g : integer) return A1 is
X	variable vaf1 : A1;
X    begin
X	return Vaf1;
X    end Af1;
X
X    function Af2 (g : integer) return A2 is
X	variable vaf1 : A2;
X    begin
X	return Vaf1;
X    end Af2;
X
X    function Af3(g : integer) return A3 is
X	variable vaf1 : A3;
X    begin
X	return Vaf1;
X    end Af3;
Xend trick_it;
X
Xuse trick_it.all;
Xentity E  is
X	generic (g : integer);
X    port (PT: BOOLEAN) ;
X    attribute AT1 of port is A1;
X    attribute AT2 of port is A2;
X    attribute AT3 of port is A3;
X    for AT1 of port PT  use Af1(g) ;
X    for AT2 of port PT use Af2(g) ;
X    for AT3 of port PT use Af3(g) ; 
Xend E;
X
Xarchitecture BB of E is
X-- SSS:    block
X    begin
X	process
X
X	    variable V: BOOLEAN;
X
X	begin
X
X   	    V := PT'AT1(1);  
X    	    V := PT'AT2(2, 3);
X	    V := PT'AT3(1)(3);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-4-0-0001a.vhdl-*-*
echo x - s-06-4-0-0002a.vhdl
sed 's/^X//' >s-06-4-0-0002a.vhdl <<'*-*-END-of-s-06-4-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-4-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an indexed name can be a selected name.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
X
X    type THREE is range 1 to 3;
X    type A1 is array (THREE) of BOOLEAN;
X    type A2 is array (THREE, THREE) of BOOLEAN;
X    type A3 is array (THREE) of A1;
X
X    type R1 is record
X                 RE1: A1;
X               end record;
X    
X    type R2 is record
X                 RE2: A2;
X               end record;
X    
X    type R3 is record
X                 RE3: A3;
X               end record;
X    
Xend E;
X
Xarchitecture BB of E is
X-- QQ: block
X    begin
X	process
X	    variable V: BOOLEAN;
X	    variable V1: R1 ; -- := (RE1=>(others=>TRUE));
X	    variable V2: R2 ; -- := (RE2=>(others=>(others=>TRUE)));
X	    variable V3: R3 ; -- := (RE3=>(others=>(others=>TRUE)));
X
X	begin
X
X	    V := V1.RE1(1);
X	    V := V2.RE2(2, 3);
X	    V := V3.RE3(1)(3);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-4-0-0002a.vhdl-*-*
echo x - s-06-4-0-0003a.vhdl
sed 's/^X//' >s-06-4-0-0003a.vhdl <<'*-*-END-of-s-06-4-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-4-0-0003A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an indexed name can be a slice name.
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X--  ZZ: block
X    begin
X	process
X	    type TEN is range 1 to 10;
X	    type ABASE1 is array (TEN range <>) of BOOLEAN;
X	    subtype A1 is ABASE1(TEN);
X	    type ABASE2 is array (TEN range <>) of A1;
X	    subtype A2 is ABASE2(TEN);
X	    variable Sl_of_sl : A2;
X	    variable V2: A2 ; -- := (others=>(others=>TRUE));
X	begin
X
X	    Sl_of_sl(1 to 8)(7)  := V2(2 to 9)(2);
X	    Sl_of_sl(2 to 9)(9)  := V2(2 to 9)(9);
X	    Sl_of_sl(3 to 10)(3) := V2(2 to 9)(5);
X	    Sl_of_sl(4 to 4)(4)  := V2(5 to 5)(5);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-4-0-0003a.vhdl-*-*
echo x - s-06-4-0-0004a.vhdl
sed 's/^X//' >s-06-4-0-0004a.vhdl <<'*-*-END-of-s-06-4-0-0004a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-4-0-0004A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an indexed name can be an indexed name (to any
X-- depth; check for n=65).
X-- DPS 05/07/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X
X	    type TWO is range 1 to 2;
X	
X	    type A0 is array (TWO) of BOOLEAN;
X	
X	    type A1 is array (TWO) of A0;
X	    type A2 is array (TWO) of A1;
X	    type A3 is array (TWO) of A2;
X	    type A4 is array (TWO) of A3;
X	    type A5 is array (TWO) of A4;
X	    type A6 is array (TWO) of A5;
X	    type A7 is array (TWO) of A6;
X	    type A8 is array (TWO) of A7;
X	    type A9 is array (TWO) of A8;
X	    type A10 is array (TWO) of A9;
X	
X	    type A11 is array (TWO) of A10;
X	    type A12 is array (TWO) of A11;
X	    type A13 is array (TWO) of A12;
X	    type A14 is array (TWO) of A13;
X	    type A15 is array (TWO) of A14;
X	    type A16 is array (TWO) of A15;
X	    type A17 is array (TWO) of A16;
X	    type A18 is array (TWO) of A17;
X	    type A19 is array (TWO) of A18;
X	    type A20 is array (TWO) of A19;
X	
X	    type A21 is array (TWO) of A20;
X	    type A22 is array (TWO) of A21;
X	    type A23 is array (TWO) of A22;
X	    type A24 is array (TWO) of A23;
X	    type A25 is array (TWO) of A24;
X	    type A26 is array (TWO) of A25;
X	    type A27 is array (TWO) of A26;
X	    type A28 is array (TWO) of A27;
X	    type A29 is array (TWO) of A28;
X	    type A30 is array (TWO) of A29;
X	
X	    type A31 is array (TWO) of A30;
X	    type A32 is array (TWO) of A31;
X	    type A33 is array (TWO) of A32;
X	    type A34 is array (TWO) of A33;
X	    type A35 is array (TWO) of A34;
X	    type A36 is array (TWO) of A35;
X	    type A37 is array (TWO) of A36;
X	    type A38 is array (TWO) of A37;
X	    type A39 is array (TWO) of A38;
X	    type A40 is array (TWO) of A39;
X	
X	    type A41 is array (TWO) of A40;
X	    type A42 is array (TWO) of A41;
X	    type A43 is array (TWO) of A42;
X	    type A44 is array (TWO) of A43;
X	    type A45 is array (TWO) of A44;
X	    type A46 is array (TWO) of A45;
X	    type A47 is array (TWO) of A46;
X	    type A48 is array (TWO) of A47;
X	    type A49 is array (TWO) of A48;
X	    type A50 is array (TWO) of A49;
X	
X	    type A51 is array (TWO) of A50;
X	    type A52 is array (TWO) of A51;
X	    type A53 is array (TWO) of A52;
X	    type A54 is array (TWO) of A53;
X	    type A55 is array (TWO) of A54;
X	    type A56 is array (TWO) of A55;
X	    type A57 is array (TWO) of A56;
X	    type A58 is array (TWO) of A57;
X	    type A59 is array (TWO) of A58;
X	    type A60 is array (TWO) of A59;
X	
X	    type A61 is array (TWO) of A60;
X	    type A62 is array (TWO) of A61;
X	    type A63 is array (TWO) of A62;
X	    type A64 is array (TWO) of A63;
X	    type A65 is array (TWO) of A64;
X	
X	    variable V1: A65;
X	
X	begin
X	
X	    V1
X	        (1)(2)(1)(2)(1)(2)(1)(2)(1)(2)     -- 10
X	        (1)(2)(1)(2)(1)(2)(1)(2)(1)(2)     -- 20
X	        (1)(2)(1)(2)(1)(2)(1)(2)(1)(2)     -- 30
X	        (1)(2)(1)(2)(1)(2)(1)(2)(1)(2)     -- 40
X	        (1)(2)(1)(2)(1)(2)(1)(2)(1)(2)     -- 50
X	        (1)(2)(1)(2)(1)(2)(1)(2)(1)(2)     -- 60
X	        (1)(2)(1)(2)(1)(2)
X	            := TRUE;
X
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-4-0-0004a.vhdl-*-*
echo x - s-06-5-0-0001a.vhdl
sed 's/^X//' >s-06-5-0-0001a.vhdl <<'*-*-END-of-s-06-5-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-5-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a slice name can be an indexed name.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type FIVE is range 1 to 5;
X	    type ABASE1 is array (FIVE range <>) of BOOLEAN;
X	    subtype A1 is ABASE1(FIVE);
X	    type ABASE2 is array (FIVE range <>) of A1;
X	    subtype A2 is ABASE2(FIVE);
X	    variable V1: A1;
X	    variable V2: A2 ; -- := (others=>(others=>TRUE));
X	begin
X	    V1(2 to 4) := V2(3)(2 to 4);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-5-0-0001a.vhdl-*-*
echo x - s-06-5-0-0002a.vhdl
sed 's/^X//' >s-06-5-0-0002a.vhdl <<'*-*-END-of-s-06-5-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-5-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a slice name can be a selected name.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity GU  is
X    port (PT: BOOLEAN) ;
Xend GU;
X
Xarchitecture BB of GU is
X-- F1: block
X    begin
X	process
X	    type FIVE is range 1 to 5;
X	    type ABASE is array (FIVE range <>) of BOOLEAN;
X	    subtype A1 is ABASE(FIVE);
X	    type R1 is record
X	                 RE1: A1;
X	               end record;
X	    type R2 is record
X	                 RE2: R1;
X	               end record;
X	    variable V1: A1;
X	    variable V2: R1 ; -- := (RE1=>(others=>TRUE));
X	    variable V3: R2 ; -- := (RE2=>(RE1=>(others=>TRUE)));
X	begin
X	    V1(2 to 4) := V2.RE1(2 to 4);
X	    V1(2 to 4) := V3.RE2.RE1(2 to 4);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-5-0-0002a.vhdl-*-*
echo x - s-06-5-0-0003a.vhdl
sed 's/^X//' >s-06-5-0-0003a.vhdl <<'*-*-END-of-s-06-5-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-5-0-0003A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a slice name can be an attribute name.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage TR is
X    type FIVE is range 1 to 5;
X    type ABASE is array (FIVE range <>) of BOOLEAN;
X    subtype A1 is ABASE(FIVE);
X    attribute AT1 of port is A1;
Xend TR;
X
Xpackage body TR is
X   function fat1(i:integer) return a1 is
X	variable va1 : a1;
X   begin
X	return Va1;
X   end fat1;
X
Xend tr;
X
Xuse tr.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
X
X    for AT1 of port PT use fat1(8);
X
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable V1: A1;
X	begin
X	    V1(2 to 4) := PT'AT1(2 to 4);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-5-0-0003a.vhdl-*-*
echo x - s-06-5-0-0004a.vhdl
sed 's/^X//' >s-06-5-0-0004a.vhdl <<'*-*-END-of-s-06-5-0-0004a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-5-0-0004A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of a slice name can be a slice name (to any depth;
X-- check for n=65).
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type I1 is range 0 to 131;
X	    type ABASE is array (I1 range <>) of BOOLEAN;
X	    subtype A1 is ABASE(I1);
X	    variable V1: A1 ; -- := A1'(others=>TRUE);
X	begin
X
X	    V1(65 to 66) :=  V1
X	        (  1 to 130)(  2 to 129)(  3 to 128)(  4 to 127)(  5 to 126)
X	        (  6 to 125)(  7 to 124)(  8 to 123)(  9 to 122)( 10 to 121) 
X	        ( 11 to 120)( 12 to 119)( 13 to 118)( 14 to 117)( 15 to 116)
X	        ( 16 to 115)( 17 to 114)( 18 to 113)( 19 to 112)( 20 to 111) 
X	        ( 21 to 110)( 22 to 109)( 23 to 108)( 24 to 107)( 25 to 106)
X	        ( 26 to 105)( 27 to 104)( 28 to 103)( 29 to 102)( 30 to 101) 
X	        ( 31 to 100)( 32 to  99)( 33 to  98)( 34 to  97)( 35 to  96)
X	        ( 36 to  95)( 37 to  94)( 38 to  93)( 39 to  92)( 40 to  91) 	
X	        ( 41 to  90)( 42 to  89)( 43 to  88)( 44 to  87)( 45 to  86)
X	        ( 46 to  85)( 47 to  84)( 48 to  83)( 49 to  82)( 50 to  81) 
X	        ( 51 to  80)( 52 to  79)( 53 to  78)( 54 to  77)( 55 to  76)
X	        ( 56 to  75)( 57 to  74)( 58 to  73)( 59 to  72)( 60 to  71) 
X	        ( 61 to  70)( 62 to  69)( 63 to  68)( 64 to  67)( 65 to  66);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-5-0-0004a.vhdl-*-*
echo x - s-06-5-0-0005a.vhdl
sed 's/^X//' >s-06-5-0-0005a.vhdl <<'*-*-END-of-s-06-5-0-0005a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-5-0-0005A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that dynamic expressions are permitted in lower and upper bounds in
X-- range specifications in array slices.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X
X    type ENUM1 is (M1, M2, M3, M4, M5);
X    type ABASE is array (ENUM1 range <>) of BOOLEAN;
X    subtype A1 is ABASE(ENUM1 range M1 to M5);
Xend P;
X
Xpackage body P is
X    function F(i : integer) return ENUM1 is
X    begin
X        return M2;
X    end F;
X
X    function G(j : integer) return ENUM1 is
X    begin
X        return M4;
X    end G;
X
Xend P;
X
Xuse P.all;
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable ii : integer;
X	    variable jj : integer;
X	    variable V1 : A1 ; -- := (others=>TRUE);
X	    variable V4: A1 ; -- := (others=>TRUE);
X	    variable V2, V3: ENUM1;
X	begin
X	    V1(M1 to M3) := V1(F(ii) to G(jj));
X	    V1(M1 to M3) := V1(G(jj) to F(ii));
X	    V1(V2 to V3) := V4(V2 to V3);
X	    V1(M1 to M3) := V1(V3 to V2);
X	    return;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-5-0-0005a.vhdl-*-*
echo x - s-06-5-0-0006a.vhdl
sed 's/^X//' >s-06-5-0-0006a.vhdl <<'*-*-END-of-s-06-5-0-0006a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-5-0-0006A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the base type of the resulting slice is the same as the base type
X-- of the prefix.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type ENUM1 is (M1, M2, M3, M4, M5, M6);
X	    type A1 is array (ENUM1 range <>) of BOOLEAN;
X	    subtype A11 is A1 (M1 to M3);
X	    subtype A12 is A1 (M4 to M6);
X	    variable V1: A1 (M1 to M6) ; 
X	    variable V11: A11; 
X	    variable V12: A12; 
X	begin
X	
X	    if (
X	            (V11 = V12)
X	        and (V11(M2 to M3) = V12(M4 to M5))
X	        and (V1(M1 to M3) = V11(M1 to M3))
X	        and (V1(M2 to M3) = V12(M4 to M5))
X	       ) then
X	          return;
X	    end if;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-5-0-0006a.vhdl-*-*
echo x - s-06-6-0-0001a.vhdl
sed 's/^X//' >s-06-6-0-0001a.vhdl <<'*-*-END-of-s-06-6-0-0001a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-6-0-0001A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an attribute name may be an indexed name.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- CC:    block
X    begin
X	process
X	    type A1 is array (1 to 2) of BOOLEAN;
X	    type A2 is array (1 to 2) of A1;
X	    variable V: A2;
X	begin
X	    if V(1)'LOW = 1 then
X	        return;
X	    end if;
X	end process;
X--     end block;
Xend BB;
X
Xpackage P is
X    type A1 is array (1 to 2) of BOOLEAN;
X    type A2 is array (1 to 2) of A1;
Xend P;
X
Xuse P.all;
X
Xentity E1  is
X    port (PT: A2) ;
X    attribute AT1 of port is BOOLEAN;
X    for AT1 of port PT use TRUE;
Xend E1;
X
Xarchitecture BB1 of E1 is
X--  ZZ:   block
X    begin
X	process
X	begin
X   	    if PT'AT1 then
X                return;
X    	    end if;
X	end process;
X--     end block;
Xend BB1;
*-*-END-of-s-06-6-0-0001a.vhdl-*-*
echo x - s-06-6-0-0002a.vhdl
sed 's/^X//' >s-06-6-0-0002a.vhdl <<'*-*-END-of-s-06-6-0-0002a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-6-0-0002A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an attribute name may be a slice name.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    type ABASE is array (INTEGER range <>) of BOOLEAN;
X	    subtype A1 is ABASE(1 to 5);
X	    variable V: A1;
X	begin
X	    if V(2 to 4)'LOW = 2 then
X	        return;
X	    end if;
X	end process;
X--     end block;
Xend BB;
X
Xpackage P is
X    type A1 is array (1 to 5) of BOOLEAN;
Xend P;
X
Xuse P.all;
Xentity E1  is
X    port (PT: A1) ;
X	attribute AT1 of port is BOOLEAN;
X	for AT1 of port PT use TRUE;
Xend E1;
X
Xarchitecture BB1 of E1 is
X-- L_X_2:    block
X    begin
X	process
X	begin
X	    if PT'AT1 then
X	        return;
X	    end if;
X	end process;
X--     end block;
Xend BB1;
*-*-END-of-s-06-6-0-0002a.vhdl-*-*
echo x - s-06-6-0-0003a.vhdl
sed 's/^X//' >s-06-6-0-0003a.vhdl <<'*-*-END-of-s-06-6-0-0003a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-6-0-0003A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an attribute name may be a selected name.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xentity E  is
X    port (PT: BOOLEAN) ;
Xend E;
X
Xarchitecture BB of E is
X-- CC:    block    
X    begin
X	process    
X	    type A1 is array (1 to 5) of BOOLEAN;
X	    type R1 is record
X	                 RE1: REAL;
X	                 RE2: A1;
X	               end record;
X	    variable V: R1;
X	begin
X	    if V.RE2'LOW = 1 then
X	        return;
X	    end if;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-6-0-0003a.vhdl-*-*
echo x - s-06-6-0-0004a.vhdl
sed 's/^X//' >s-06-6-0-0004a.vhdl <<'*-*-END-of-s-06-6-0-0004a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-1-6-0004A.VHD
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an attribute name may be an attribute name.
X-- DPS 05/08/85
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage scz is
X 	    type I1 is range 1 to 5;
X	    subtype I11 is I1 range 2 to 4;
X	    type A1 is array (I1 range 2 to 4) of BOOLEAN;
Xend scz;
X
Xuse scz.all;
Xentity E is
X	port (PT: BOOLEAN)
X	generic (V_all : A1)
Xend E;
X
Xarchitecture BB of E is
X-- L_X_1:    block
X    begin
X	process
X	    variable V : boolean;
X	    attribute AT1 of variable is A1;
X	    for AT1 of variable V use V_all;
X
X	begin
X
X	    if I11'BASE'Left = 1 then
X	        return;
X	    elsif I11'BASE'RIGHT = 5 then
X	        return;
X	    elsif V'AT1'LOW = 2 then
X	        return;
X	    elsif V'AT1'HIGH = 4 then
X	        return;
X	    end if;
X	end process;
X--     end block;
Xend BB;
*-*-END-of-s-06-6-0-0004a.vhdl-*-*
echo x - s-06-6-0-0005a.vhdl
sed 's/^X//' >s-06-6-0-0005a.vhdl <<'*-*-END-of-s-06-6-0-0005a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-6-0-0005A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X-- Check that the prefix of an attribute name may be the name of a function,
X-- body, entity, signal, or port.
X-- DPS 05/08/85
X-- ADO 05/16/88
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage P is
X    attribute AT1 of function is BOOLEAN;
Xend P;
X
Xpackage body P is
X    function F return BOOLEAN is
X        for AT1 of function F use TRUE;
X    begin
X        return FALSE;
X    end F;
Xend P;
X
Xentity ESUB  is
X    port (PT: BOOLEAN) ;
Xend ESUB;
X
Xentity E is
X	port (PT: BOOLEAN) ;
X--    attribute AT3 of body is BOOLEAN;
X    attribute AT4 of entity is BOOLEAN;
X        for AT4 of entity E use TRUE;
X
X    attribute AT5 of signal is BOOLEAN;
X
X    attribute AT6 of port is BOOLEAN;
X        for AT6 of port PT use TRUE;
X
Xend E;
X
Xuse p.all;
Xarchitecture AB of E is
X-- L_X_1:    block
X        signal S1: BOOLEAN;
X--        for AT3 of body AB use TRUE;
X        for AT5 of signal S1 use TRUE;
X    begin
X	process
X	begin
X    	    S1 <= F'AT1 and E'AT4 and S1'AT5 and PT'AT6;
X	end process;
X--     end block;
Xend AB;
*-*-END-of-s-06-6-0-0005a.vhdl-*-*
echo x - s-06-6-0-0006a.vhdl
sed 's/^X//' >s-06-6-0-0006a.vhdl <<'*-*-END-of-s-06-6-0-0006a.vhdl-*-*'
X
X-------------------------------------------------------------------------------
X	--
X	--		Copyright Intermetrics 1986
X	--
X	-- 	This material may be reproduced by or for the 
X	--      U.S. Government pursuant to the copyright license 
X	-- 	under DAR clause 7-104.9(a) (1981 May)
X	--
X	--
X-------------------------------------------------------------------------------
X-- File: %P%
X-- Original file name: S-06-6-0-0006A.VHDL
X-- Version: %W% - last modified %E%
X-- sccsid:  -- %G% %W% --
X-- Description:
X--     Check that the prefix of an attribute name may be a function call
X-- 
X-- Modification History:
X-- ---------------------------------------------------------------------------
X-- Updated to 1076-1987 VHDL, checked w/Recognizer. (Deene)Ogden@mcc.com 20jun88
X-- ***************************************************************************
X-- Begin test: >>>
X
Xpackage e is
X   
X   type arr is array(0 to 50) of boolean;
Xend e;
X
Xpackage body e is
X   function ret_arr(I : integer) return arr is
X	variable RA : arr ;
X	begin
X	    return  RA;
X   end ret_arr;
Xend e;
X
Xuse e.all;
Xentity P is
Xend P;
X
Xarchitecture L of P is
X-- O: block
X   begin
X   process
X    variable c : integer ;
X	begin
X           c := ret_arr(2)'low;
X   end process;
X-- end block;
Xend L;	
X
*-*-END-of-s-06-6-0-0006a.vhdl-*-*
exit
--
Steve Grout @ MCC VLSI CAD Program, Austin TX.  [512] 343-0860 
ARPA: grout@mcc.arpa
UUCP: {ihnp4,seismo,harvard,gatech,pyramid}!ut-sally!im4u!milano!grout