summaryrefslogtreecommitdiff
path: root/testsuite/vests/vhdl-ams/ad-hoc/fromUC/regression_test/test139.ams
blob: 16e5a9ebfe6f8943a08f67bed6cd779bf67b00c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

-- Copyright (C) 2001-2002 The University of Cincinnati.  
-- All rights reserved. 

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

-- UC MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
-- SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-- IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
-- OR NON-INFRINGEMENT.  UC SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
-- LICENSEE AS A RESULT OF USING, RESULT OF USING, MODIFYING OR
-- DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

-- By using or copying this Software, Licensee agrees to abide by the
-- intellectual property laws, and all other applicable laws of the U.S.,
-- and the terms of this license.

-- You may modify, distribute, and use the software contained in this
-- package under the terms of the "GNU GENERAL PUBLIC LICENSE" version 2,
-- June 1991. A copy of this license agreement can be found in the file
-- "COPYING", distributed with this archive.

-- 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: test139.ams,v 1.1 2002-03-27 22:11:18 paw Exp $
-- $Revision: 1.1 $
--
-- ---------------------------------------------------------------------

-----------------------------------------------------------------------
-- SIERRA REGRESSION TESTING MODEL
-- Develooped at:
-- Distriburted Processing Laboratory
-- University of cincinnati
-- Cincinnati
-----------------------------------------------------------------------
-- File          : test139.ams
-- Author(s)     : Geeta Balarkishnan(gbalakri@ececs.uc.edu)
-- Created       : May 2001
-----------------------------------------------------------------------
-- Description :
-----------------------------------------------------------------------
-- this test checks the correctness of the record declaration as a type
-- it also checks for the usage of the record element declarations.
-- the assert statement is also checked.
-- the record is declared within a package
-- the test also checks the correctness of the function impelmentation.
-- the function accepts the record parameters and returns the result of 
-- type real.
-----------------------------------------------------------------------
PACKAGE electricalsystem IS
 
    SUBTYPE voltage IS real;
    SUBTYPE current IS real;
 
    NATURE electrical IS
        voltage ACROSS
        current THROUGH ground reference;
 
END PACKAGE electricalsystem;
 
PACKAGE types IS
 
    TYPE cmodel IS RECORD
        cj     : real;    
        cjsw   : real;    
        defw   : real;    
        narrow : real;    
    END RECORD;
 
END PACKAGE types;
 
USE work.electricalsystem.all;
USE work.types.all;
 
ENTITY test IS
    GENERIC (cnom : real := 0.0;
             model : cmodel := (0.0, 0.0, 1.0e-6, 0.0);
             l : real := 0.0;
             w : real := 0.0;
             ic : real := 0.0 );
    PORT (TERMINAL t1,t2 : electrical);
END ENTITY test;
 
ARCHITECTURE atest OF test IS
    	FUNCTION c_init (	cnom : real;
             		model : cmodel;
             		l, w : real)
        RETURN real IS
        VARIABLE ceff : real;  -- effective capacitance value
        VARIABLE weff : real;  -- effective channel width
 	BEGIN
 
        IF cnom /= 0.0 THEN
            ASSERT (model.cj = 0.0 AND model.cjsw = 0.0)
                    REPORT "Both cnom and model specified";
            ceff := cnom;
        ELSE
            ASSERT (l > 0.0)
                    REPORT "Channel length not specified";
            IF w = 0.0 THEN
                weff := model.defw;
            ELSE
                weff := w;
            END IF;
            ASSERT (weff > 0.0) 
                    REPORT "Channel width not specified";
            ceff := model.cj*(l-model.narrow)*(weff-model.narrow) +
                        model.cjsw*(l+weff-2.0*model.narrow);
        END IF;
        RETURN (ceff);
    	END FUNCTION c_init;
 
    	CONSTANT ceff : real := c_init(cnom, model, l, w);
    	QUANTITY v ACROSS i THROUGH t1 TO t2;
BEGIN
    i == ceff * v'dot;
END ARCHITECTURE atest;