-- 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:16 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;