aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/vests/vhdl-ams/ad-hoc/fromUC/simultaneous_stmts/limiter.ams
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/vests/vhdl-ams/ad-hoc/fromUC/simultaneous_stmts/limiter.ams')
-rw-r--r--testsuite/vests/vhdl-ams/ad-hoc/fromUC/simultaneous_stmts/limiter.ams153
1 files changed, 153 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-ams/ad-hoc/fromUC/simultaneous_stmts/limiter.ams b/testsuite/vests/vhdl-ams/ad-hoc/fromUC/simultaneous_stmts/limiter.ams
new file mode 100644
index 000000000..3e605b442
--- /dev/null
+++ b/testsuite/vests/vhdl-ams/ad-hoc/fromUC/simultaneous_stmts/limiter.ams
@@ -0,0 +1,153 @@
+
+-- Copyright (C) 2000-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: limiter.ams,v 1.1 2002-03-27 22:11:19 paw Exp $
+-- $Revision: 1.1 $
+--
+-- ---------------------------------------------------------------------
+
+--
+-- R1(10.0) R2(10.0)
+-- o----^^^^^^^^------o-^^^--o--------------o
+-- V_in T1| | V_out
+-- | |
+-- | |
+-- _|_ ---
+-- \ / / \
+-- --- ---
+-- | |
+-- T2 o o T3
+-- | |
+-- ----- ---
+-- --- -----
+-- | |
+-- | |
+-- V_in_gnd | | V_out_gnd
+-- o----------------------------------------o
+
+
+ PACKAGE electricalsystem IS
+ NATURE electrical IS real ACROSS real THROUGH ground reference;
+ FUNCTION SIN(X:real) RETURN real;
+ FUNCTION EXP(X:real) RETURN real;
+ END PACKAGE electricalsystem;
+
+-------------------------- LIMITER ------------------------------
+use work.electricalsystem.all;
+
+entity limiter is
+generic (lim:real:=1.0);
+port (terminal v_in,v_out :electrical);
+end entity limiter;
+
+architecture behav of limiter is
+
+terminal t1,t2,t3 :electrical;
+
+constant k:real := 0.02586; -- thermal voltage
+constant iss:real := 1.8104e-15;
+constant gmin:real := 1.0e-12;
+
+quantity vd1 across id1 through t1 to t2;
+quantity vd2 across id2 through t3 to v_out;
+quantity V_volt1 across i_volt1 through t2 to ground ;
+quantity V_volt2 across i_volt2 through ground to t3;
+quantity v_r1 across i_r1 through V_in to T1;
+quantity v_r2 across i_r2 through T1 to V_out;
+
+BEGIN
+
+ if (vd1 >= (-5.0*k)) use
+ id1 == iss * (exp(vd1/k)-1.0) + vd1*gmin;
+ elsif (vd1<-5.0*k) use
+ id1 == -1.0*iss + vd1*gmin;
+ end use;
+
+ if (vd2 >= (-5.0*k)) use
+ id2 == iss * (exp(vd2/k)-1.0) + vd2*gmin;
+ elsif (vd2<-5.0*k) use
+ id2 == -1.0*iss + vd2*gmin;
+ end use;
+ V_volt1 == (lim);
+ V_volt2 == (lim);
+ V_r1 == i_r1*10.0;
+ V_r2 == i_r2*10.0;
+
+end architecture behav;
+
+
+--------------------------- Test Waveforms -----------------------------
+
+use work.electricalsystem.all;
+ENTITY sineSource IS
+generic( amp:real:=1.0);
+ PORT( TERMINAL ta2,tb2 : electrical);
+END sineSource;
+
+ARCHITECTURE sinebehavior OF sineSource IS
+quantity Vsine across isine through ta2 to tb2;
+
+BEGIN
+ Vsine == (amp*sin((2.0*22.0/7.0*10.7e6)*real(time'pos(now))*1.0e-15));
+
+END ARCHITECTURE sinebehavior;
+
+
+------------------------------ Test Case -------------------------------
+use work.electricalsystem.all;
+entity testbench is
+end entity;
+
+architecture basic of testbench is
+
+
+terminal t1,t2 :electrical;
+
+quantity v_out across i_out through t2 to ground;
+
+component limiter is
+generic (lim:real:=1.0);
+port(terminal v_in,v_out :electrical);
+end component;
+
+component sinesource is
+generic( amp:real:=1.0);
+ PORT( TERMINAL ta2,tb2 : electrical);
+end component;
+
+BEGIN
+
+lim : limiter generic map(lim=>3.0)
+ port map(t1,t2);
+
+sine: sinesource generic map(amp=>6.0)
+ port map(t1,ground);
+
+v_out ==i_out*1.0e3;
+
+end basic;