-- Copyright (C) 2001 Bill Billowitch.

-- Some of the work to develop this test suite was done with Air Force
-- support.  The Air Force and Bill Billowitch assume no
-- responsibilities for this software.

-- This file is part of VESTs (Vhdl tESTs).

-- VESTs is free software; you can redistribute it and/or modify it
-- under the terms of the GNU General Public License as published by the
-- Free Software Foundation; either version 2 of the License, or (at
-- your option) any later version. 

-- VESTs is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-- for more details. 

-- You should have received a copy of the GNU General Public License
-- along with VESTs; if not, write to the Free Software Foundation,
-- Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 

-- ---------------------------------------------------------------------
--
-- $Id: tc1785.vhd,v 1.2 2001-10-26 16:29:43 paw Exp $
-- $Revision: 1.2 $
--
-- ---------------------------------------------------------------------

Package c09s06b00x00p04n07i01785pkg is
  type info is record
                 field_1 : integer;
                 field_2 : real;
               end record;
  type stuff is array (Integer range 1 to 2) of info;
end c09s06b00x00p04n07i01785pkg;

use work.c09s06b00x00p04n07i01785pkg.all;
entity c09s06b00x00p04n07i01785ent_a is
  port    (
    port_0  : in Boolean        ;
    port_1  : in Bit            ;
    port_2  : in Character      ;
    port_3  : in SEVERITY_LEVEL ;
    port_4  : in Integer        ;
    port_5  : in Real           ;
    port_6  : in TIME           ;
    port_7  : in Natural        ;
    port_8  : in Positive       ;
    port_9  : in String         ; 
    port_A  : in Bit_vector     ;
    port_B  : in stuff
    );
end c09s06b00x00p04n07i01785ent_a;


use work.c09s06b00x00p04n07i01785pkg.all;
architecture c09s06b00x00p04n07i01785arch_a of c09s06b00x00p04n07i01785ent_a is
  -- Check that the data was passed...
begin
  TESTING: PROCESS(port_0,port_1,port_2,port_3,port_4,port_5,port_6,port_7,port_8)
  BEGIN
    assert NOT(   port_0 = True                and 
                  port_1 = '0'                and 
                  port_2 = '@'                  and 
                  port_3 = NOTE                and 
                  port_4 = 123456789                 and
                  port_5 = 987654321.5              and
                  port_6 = 110 ns                  and
                  port_7 = 12312                  and 
                  port_8 = 3423                  and 
                  port_9 = "16 characters OK"          and 
                  port_A = B"01010010100101010010101001010100"    and 
                  port_B = ((123, 456.7), (890, 135.7))) 
      report "***PASSED TEST: c09s06b00x00p04n07i01785"
      severity NOTE;
    assert (   port_0 = True                and 
               port_1 = '0'                and 
               port_2 = '@'                  and 
               port_3 = NOTE                and 
               port_4 = 123456789                 and
               port_5 = 987654321.5              and
               port_6 = 110 ns                  and
               port_7 = 12312                  and 
               port_8 = 3423                  and 
               port_9 = "16 characters OK"          and 
               port_A = B"01010010100101010010101001010100"    and 
               port_B = ((123, 456.7), (890, 135.7))) 
      report "***FAILED TEST: c09s06b00x00p04n07i01785 - Port map aspect associates a single actual with each local port in the corresponding component declaration test failed."
      severity ERROR;
  END PROCESS TESTING;
end c09s06b00x00p04n07i01785arch_a;

-----------------------------------------------------------------------

ENTITY c09s06b00x00p04n07i01785ent IS
END c09s06b00x00p04n07i01785ent;


use work.c09s06b00x00p04n07i01785pkg.all;
ARCHITECTURE c09s06b00x00p04n07i01785arch OF c09s06b00x00p04n07i01785ent IS
  subtype reg32    is Bit_vector ( 31 downto 0 );
  subtype string16    is String ( 1 to 16 );
  
  signal sig_0  :   Boolean        := TRUE;
  signal sig_1  :   Bit            := '0';
  signal sig_2  :   Character      := '@';
  signal sig_3  :   SEVERITY_LEVEL := NOTE;
  signal sig_4  :   Integer        := 123456789;
  signal sig_5  :   Real           := 987654321.5;
  signal sig_6  :   TIME           := 110 NS;
  signal sig_7  :   Natural        := 12312;
  signal sig_8  :   Positive       := 3423;
  signal sig_9  :   String16       := "16 characters OK";
  signal sig_A  :   REG32          := B"0101_0010_1001_0101_0010_1010_0101_0100";
  signal sig_B  :   stuff          := (( 123, 456.7 ), ( 890, 135.7 ));

  component MultiType
    port    (
      port_0  : in Boolean        ;
      port_1  : in Bit            ;
      port_2  : in Character      ;
      port_3  : in SEVERITY_LEVEL ;
      port_4  : in Integer        ;
      port_5  : in Real           ;
      port_6  : in TIME           ;
      port_7  : in Natural        ;
      port_8  : in Positive       ;
      port_9  : in String         ;
      port_A  : in Bit_vector     ;
      port_B  : in stuff
      );
  end component;
  for u1 : MultiType use entity work.c09s06b00x00p04n07i01785ent_a (c09s06b00x00p04n07i01785arch_a);

BEGIN
  u1 : MultiType
    port map (
      port_0 => sig_0,
      port_1 => sig_1,
      port_2 => sig_2,
      port_3 => sig_3,
      port_4 => sig_4,
      port_5 => sig_5,
      port_6 => sig_6,
      port_7 => sig_7,
      port_8 => sig_8,
      port_9 => sig_9,
      port_A => sig_A,
      port_B => sig_B
      );

END c09s06b00x00p04n07i01785arch;