- head 1.17;
- access;
- symbols;
- locks; strict;
- comment @-- @;
-
-
- 1.17
- date 99.07.28.14.55.42; author ryu; state Exp;
- branches;
- next 1.16;
-
- 1.16
- date 99.01.14.10.18.22; author ryu; state Exp;
- branches;
- next 1.15;
-
- 1.15
- date 99.01.13.07.25.40; author ryu; state Exp;
- branches;
- next 1.14;
-
- 1.14
- date 98.09.12.19.54.34; author ryu; state Exp;
- branches;
- next 1.13;
-
- 1.13
- date 98.09.08.12.28.50; author ryu; state Exp;
- branches;
- next 1.12;
-
- 1.12
- date 98.09.01.04.26.37; author ryu; state Exp;
- branches;
- next 1.11;
-
- 1.11
- date 98.08.30.19.23.36; author ryu; state Exp;
- branches;
- next 1.10;
-
- 1.10
- date 98.08.29.17.28.35; author ryu; state Exp;
- branches;
- next 1.9;
-
- 1.9
- date 98.08.24.00.49.12; author ryu; state Exp;
- branches;
- next 1.8;
-
- 1.8
- date 98.08.23.22.11.09; author ryu; state Exp;
- branches;
- next 1.7;
-
- 1.7
- date 98.08.18.09.32.38; author ryu; state Exp;
- branches;
- next 1.6;
-
- 1.6
- date 98.08.17.16.58.46; author ryu; state Exp;
- branches;
- next 1.5;
-
- 1.5
- date 98.08.17.04.25.40; author ryu; state Exp;
- branches;
- next 1.4;
-
- 1.4
- date 98.08.17.02.39.18; author ryu; state Exp;
- branches;
- next 1.3;
-
- 1.3
- date 98.08.16.13.40.46; author ryu; state Exp;
- branches;
- next 1.2;
-
- 1.2
- date 98.08.16.11.58.20; author ryu; state Exp;
- branches;
- next 1.1;
-
- 1.1
- date 98.08.15.18.24.07; author ryu; state Exp;
- branches;
- next ;
-
-
- desc
- @Added variables for setup/hold characterization
- @
-
-
- 1.17
- log
- @checking in
- @
- text
- @# $Id: setup_hold.spec,v 1.16 1999/01/14 10:18:22 ryu Exp ryu $
-
- # Copyright (C) 1999 Robert K. Yu
- # email: robert@@yu.org
-
- # This file is part of Autochar.
-
- # Autochar 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, or (at your option)
- # any later version.
-
- # Autochar 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 Autochar; see the file COPYING. If not, write to the
- # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- # Boston, MA 02111-1307, USA.
-
- #------ SETUP/HOLD TIME CHARACTERIZATION ---------------------------------------
-
-
- #-------------------------------------------------------------------------------
- # The syntax are the same as the Perl language. Any
- # valid Perl expression can be used. In fact, this file is
- # executed directly, so the order of the definitions is
- # important: Be sure the '&autochar' command, which is actually
- # a subroutine call to the function 'autochar', is called after
- # the necessary definitions are made.
- #-------------------------------------------------------------------------------
-
- # Any of the global defaults may be changed here. See
- # $AUTOCHAR/lib/defaults.pl for a list of what they are.
-
- # $spice_cmd = 'hspice';
- # $techpath = '/path/to/spice/libraries';
- # $spice_corner = 'hspice.ttlh';
- # $spice_include = '.include /some/special/include.file';
- # $scale_cload = 0.66e-15;
- # $scale_delay = 0.060e-9;
- # $trans_period = '2ns';
- # etc.
-
-
- #-------------------------------------------------------------------------------
- # Specify the characterization type.
-
- $sim_type = 'setup_hold';
-
-
- #-------------------------------------------------------------------------------
- # Specify the name of the spice subckt and the file containing
- # the spice subckt.
-
- $cellname = 'dff';
- $spice_netlist = 'dff.sp';
-
-
- #-------------------------------------------------------------------------------
- # List of the terms to the cell. Order is unimportant.
- # Each name is prefixed by a ":x" letter to indicate type:
- # :i = input
- # :o = output
- # :b = biput
- # :v = vdd supply
- # :g = gnd
-
- # Declare the list manually
- @@termlist = (
- 'd:i',
- 'clk:i',
- 'q:o',
- );
-
-
- # Alternatively, get the term definition from other netlist.
- # @@termlist = &read_spice_terms ("filename", $cellname);
-
-
- #-------------------------------------------------------------------------------
- # Vary the slewrate of the input clock.
- # @@slewrate = &vary_list(<start>, <incr>, <N>, <units>);
- # @@slewrate = &vary_list(500, 200, 3, '');
-
- # Or specify the explicit list of slewrate values
- # @@slewrate = (0.66667, 1.33333, 2, 2.66667, 5.3333);
-
-
- #-------------------------------------------------------------------------------
- # Define input buffers. The name of the buffer is a two-port subckt
- # that will be placed between the input pulse source and the input
- # term being characterized. Typically, this is a buffer of some sort.
- # If 'none' is specified, then no buffer will be added.
-
- $buffer{'d'} = 'buf';
- $buffer{'clk'} = 'buf';
- # $buffer{'in3'} = 'none';
-
- # Define any special differential inputs. For example,
- # in0 and in1 are defined as a differential input pair,
- # with in1 being the reference.
- # $differential{'in0'} = 'in1';
-
- # Define any special equivalent inputs. For example,
- # in0 and in1 are defined as a equivalent input pair,
- # with in1 being the reference.
- # $equivalent{'in0'} = 'in1';
-
-
- #-------------------------------------------------------------------------------
- # Define the output loads.
-
- # Specify the loads for the output(s) that are not being characterized.
- # If 'none' is specified, then no output loading is added. Use
- # the words 'cap:', 'res:', or 'subckt:' to indicate an output load that
- # is an ideal capacitor, an ideal resistor, or a one-port spice subckt.
-
- $load{'default'} = 'none';
- $load{'q'} = 'cap:10ff';
- # $load{'out1'} = 'cap:10ff';
- # $load{'out1'} = 'res:1K';
- # $load{'out1'} = 'subckt:buf_4x';
-
-
- #-------------------------------------------------------------------------------
- # Define the setup and hold constraints.
-
- # Define the percentage to use to determine pass/fail:
- # if the voltage of the internal node is >= the specified percentage
- # of its final value, then it is said to be passing. If
- # it is < the given percentage of its final value, then
- # it is said to be failing. The measurement of the internal
- # node is made when the clock is at the specified percent
- # of its final value.
- $criterion_percent = 0.8;
- $clock_percent = 0.8;
-
- if ($spice_type eq 'smartspice') {
-
- # Specify the initial window size, and the number of iterations
- # this window is stepped in order to find the initial passing
- # and failing boundaries. Typically in picoseconds.
- window = 1000;
- iterations = 20;
-
- # Specify the max resolution of the characterization. Once
- # the window is sized below this value, characterization is
- # stopped.
- resolution = 5;
-
- # Setup and hold values must be specified as integers
- # (due to smartspice implementation reasons). The actual values
- # is scaled by this value. Typcically 1e-12 is used for picoseconds.
- setup_hold_scale = '1e-12';
-
- } else {
-
- # default hspice:
-
- # Define the relative input parameter variation
- # and relative output results function variance for convergence.
- # See the hspice 'Optimization' chapter for details.
- $relin = 0.001;
- $relout = 0.001;
-
- # Define the range of minimum and maximum setup values allowed.
- # Setup time is defined positive before the clock.
- @@setup_range = ('0', '1ns');
-
- # Define the range of minimum and maximum hold values allowed.
- # Hold time is defined positive after the clock.
- @@hold_range = ('0', '1ns');
-
- }
-
-
-
- #-------------------------------------------------------------------------------
- # Characterization command. The general form is:
- # &autochar ( <d>, <clktype>, <clk>, <qtype>, <q>, <ctype>, <c>, [ <tie>, <unused>+] );
- #
- # <d> = name of the flop data input term
- # <clktype> = either 'rising' or 'falling' clock edges
- # <clk> = name of the flop clock term
- # <qtype> = either 'inverting' or 'non_inverting' w.r.t. d
- # <q> = name of the flop data output term
- # <ctype> = either 'inverting' or 'non_inverting' w.r.t. d
- # <c> = name of the internal criterion node
- #
- # Optional:
- # <tie> = how to tie the other inputs, either 'tie_high' or 'tie_low'
- # <unused>= name(s) of the inputs to be tied. These are regular
- # perl expresssions. Be sure to write brackets [ and ]
- # as \[ and \], respectively. < and > are ok.
- #
-
- # characterize all inputs
- &autochar ('d', 'rising', 'clk', 'non_inverting', 'q', 'inverting', 'n10');
-
-
- #-------------------------------------------------------------------------------
- # In some cases, it is desirable to skip the characterization of certain arcs
- # and to copy the data from another set of arcs instead. The general form is:
- # ©char (<d>, <clktype>, <clk>, <refd>, <refclk>);
-
- # ©char ('d', 'falling', 'ph1_b', 'd', 'ph1');
-
-
- # Must return a value to make perl happy.
- 1;
- @
-
-
- 1.16
- log
- @Using /usr/bin/perl
- @
- text
- @d1 1
- a1 3
- #! /usr/bin/perl
-
- # $Id: setup_hold.spec,v 1.15 1999/01/13 07:25:40 ryu Exp ryu $
- a130 6
- # Define the relative input parameter variation
- # and relative output results function variance for convergence.
- # See the hspice 'Optimization' chapter for details.
- $relin = 0.001;
- $relout = 0.001;
-
- d141 38
- a178 7
- # Define the range of minimum and maximum setup values allowed.
- # Setup time is defined positive before the clock.
- @@setup_range = ('0', '1ns');
-
- # Define the range of minimum and maximum hold values allowed.
- # Hold time is defined positive after the clock.
- @@hold_range = ('0', '1ns');
- @
-
-
- 1.15
- log
- @GPL
- @
- text
- @d1 1
- a1 1
- #! /usr/local/bin/perl
- d3 1
- a3 1
- # $Id$
- @
-
-
- 1.14
- log
- @Simplified parameters; got rid of @@init, @@trans
- @
- text
- @d3 1
- a3 5
- # Copyright (c) 1998-2001, Robert K. Yu. All Rights Reserved.
- #
- # No part of this program may be used, reproduced, stored in a
- # retrieval system, or transmitted in any form or by any
- # means without the prior permission of the author.
- d5 2
- a6 3
- # $Id: setup_hold.spec,v 1.13 1998/09/08 12:28:50 ryu Exp ryu $
- # Autochar Specification File
- # Author: Robert K. Yu
- d8 16
- @
-
-
- 1.13
- log
- @copyright notice
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.12 1998/09/01 04:26:37 ryu Exp ryu $
- d29 7
- a35 7
- # $init{'spice_cmd'} = 'hspice';
- # $init{'techpath'} = '/path/to/spice/libraries';
- # $init{'corner'} = 'hspice.ttlh';
- # $init{'include'} = '.include /some/special/include.file';
- # $init{'scale_cload'} = 0.66e-15;
- # $init{'scale_delay'} = 0.060e-9;
- # $trans{'period'} = '2ns';
- d72 9
- a80 1
- # @@termlist = &read_verilog_terms ("filename", $cellname);
- @
-
-
- 1.12
- log
- @read_spice_terms
- @
- text
- @d3 1
- a3 1
- # Copyright (c) 1998, Robert K. Yu. All Rights Reserved.
- d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.11 1998/08/30 19:23:36 ryu Exp ryu $
- @
-
-
- 1.11
- log
- @Renamed port to term
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.10 1998/08/29 17:28:35 ryu Exp ryu $
- d70 2
- a71 1
- # Alternatively, get the term definition from verilog netlist.
- @
-
-
- 1.10
- log
- @1.3
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.9 1998/08/24 00:49:12 ryu Exp ryu $
- d54 1
- a54 1
- # List of the ports to the cell. Order is unimportant.
- d63 1
- a63 1
- @@portlist = (
- d70 2
- a71 2
- # Alternatively, get the port definition from verilog netlist.
- # @@portlist = &read_verilog_ports ("filename", $cellname);
- d77 1
- a77 1
- # port being characterized. Typically, this is a buffer of some sort.
- d142 1
- a142 1
- # <d> = name of the flop data input port
- d144 1
- a144 1
- # <clk> = name of the flop clock port
- d146 1
- a146 1
- # <q> = name of the flop data output port
- @
-
-
- 1.9
- log
- @Added copychar syntax
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.8 1998/08/23 22:11:09 ryu Exp ryu $
- d166 1
- a166 1
- # ©char ('D', 'falling', 'PH1_B', 'D', 'PH1');
- @
-
-
- 1.8
- log
- @Robert K. Yu
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.7 1998/08/18 09:32:38 ryu Exp ryu $
- d159 8
- @
-
-
- 1.7
- log
- @Changed default corner.
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.6 1998/08/17 16:58:46 ryu Exp ryu $
- d11 1
- a11 1
- # Author: Robert Yu
- @
-
-
- 1.6
- log
- @Clean up Clock_Q module
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.5 1998/08/17 04:25:40 ryu Exp ryu $
- d31 1
- a31 1
- # $init{'corner'} = 'hspice.tthl';
- @
-
-
- 1.5
- log
- @Added clock_percent
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.4 1998/08/17 02:39:18 ryu Exp ryu $
- a136 3
- # Define the range of minimum pulse width.
- @@min_pulse_width_range = ('0', '2ns');
-
- d154 1
- a154 1
- # as \[ and \], respectively.
- @
-
-
- 1.4
- log
- @Using hspice's bisect method.
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.3 1998/08/16 13:40:46 ryu Exp ryu $
- d123 3
- a125 1
- # it is said to be failing.
- d127 1
- @
-
-
- 1.3
- log
- @checking in work in progress
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.2 1998/08/16 11:58:20 ryu Exp ryu $
- d56 5
- a60 5
- # .i = input
- # .o = output
- # .b = biput
- # .v = vdd supply
- # .g = gnd
- d113 5
- a117 4
- # Define the error tolerance value between successive
- # test values. Characterization will stop when the
- # difference between successive values is <= tolerance.
- $tolerance = '10ps';
- d143 1
- a143 1
- # <clktype> = either 'rise' or 'fall' clock edges
- d158 1
- a158 1
- &autochar ('d', 'rise', 'clk', 'non_inverting', 'q', 'inverting', 'n10');
- @
-
-
- 1.2
- log
- @changed syntax.
- @
- text
- @d9 1
- a9 1
- # $Id: setup_hold.spec,v 1.1 1998/08/15 18:24:07 ryu Exp ryu $
- d118 7
- d139 1
- a139 1
- # &autochar ( <d>, <clktype>, <clk>, <qtype>, <q>, [ <tie>, <unused>+] );
- d142 1
- d144 1
- a144 1
- # <clktype> = either 'rise' or 'fall' clock edges
- d146 2
- a147 1
- # <qtype> = either 'inverting' or 'non_inverting'
- d157 1
- a157 1
- &autochar ('d', 'rise', 'clk', 'non_inverting', 'q');
- @
-
-
- 1.1
- log
- @Initial revision
- @
- text
- @d9 1
- a9 1
- # $Id: input_cap.spec,v 1.2 1998/08/15 09:22:19 ryu Exp $
- d126 3
- d132 1
- a132 1
- # &autochar ( <d>, <clk>, <q>, [ <tie>, <unused>+] );
- d134 5
- a138 3
- # <d> = name of the flop data input port
- # <clk> = name of the flop clock port
- # <q> = name of the flop data output port
- d148 1
- a148 4
- &autochar ('d', 'clk', 'q');
-
- # characterize certain inputs
- # &autochar ('in1', tie_high, '.*');
- @