input_cap.pl,v #1

  • //
  • guest/
  • robert_yu/
  • autochar-1.5.3/
  • src/
  • RCS/
  • input_cap.pl,v
  • View
  • Commits
  • Open Download .zip Download (21 KB)
head	1.26;
access;
symbols;
locks; strict;
comment	@# @;


1.26
date	99.06.07.15.02.39;	author ryu;	state Exp;
branches;
next	1.25;

1.25
date	99.01.20.13.34.06;	author ryu;	state Exp;
branches;
next	1.24;

1.24
date	99.01.20.07.44.59;	author ryu;	state Exp;
branches;
next	1.23;

1.23
date	99.01.14.10.19.02;	author ryu;	state Exp;
branches;
next	1.22;

1.22
date	99.01.13.07.18.42;	author ryu;	state Exp;
branches;
next	1.21;

1.21
date	98.09.12.19.54.02;	author ryu;	state Exp;
branches;
next	1.20;

1.20
date	98.09.08.13.16.49;	author ryu;	state Exp;
branches;
next	1.19;

1.19
date	98.09.06.20.43.23;	author ryu;	state Exp;
branches;
next	1.18;

1.18
date	98.09.05.22.10.32;	author ryu;	state Exp;
branches;
next	1.17;

1.17
date	98.09.01.04.49.20;	author ryu;	state Exp;
branches;
next	1.16;

1.16
date	98.08.30.19.24.00;	author ryu;	state Exp;
branches;
next	1.15;

1.15
date	98.08.26.09.35.38;	author ryu;	state Exp;
branches;
next	1.14;

1.14
date	98.08.23.22.11.24;	author ryu;	state Exp;
branches;
next	1.13;

1.13
date	98.08.23.21.59.07;	author ryu;	state Exp;
branches;
next	1.12;

1.12
date	98.08.23.21.16.02;	author ryu;	state Exp;
branches;
next	1.11;

1.11
date	98.08.23.12.03.44;	author ryu;	state Exp;
branches;
next	1.10;

1.10
date	98.08.23.10.07.56;	author ryu;	state Exp;
branches;
next	1.9;

1.9
date	98.08.23.06.56.57;	author ryu;	state Exp;
branches;
next	1.8;

1.8
date	98.08.18.09.33.00;	author ryu;	state Exp;
branches;
next	1.7;

1.7
date	98.08.17.02.41.17;	author ryu;	state Exp;
branches;
next	1.6;

1.6
date	98.08.16.13.37.40;	author ryu;	state Exp;
branches;
next	1.5;

1.5
date	98.08.15.11.14.39;	author ryu;	state Exp;
branches;
next	1.4;

1.4
date	98.08.15.11.09.28;	author ryu;	state Exp;
branches;
next	1.3;

1.3
date	98.08.15.10.53.55;	author ryu;	state Exp;
branches;
next	1.2;

1.2
date	98.08.15.10.17.14;	author ryu;	state Exp;
branches;
next	1.1;

1.1
date	98.08.15.10.11.04;	author ryu;	state Exp;
branches;
next	;


desc
@#! /usr/local/bin/perl
@


1.26
log
@Optional space in measure results
@
text
@#	$Id: input_cap.pl,v 1.25 1999/01/20 13:34:06 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.

#
#   ic_run --
#	Top-level function to input cap characterization.
#	Generate the spice netlists, run hspice, and extract
#	data.
#
sub ic_run {

    local($inexp, $tie, @@tie_list) = @@_;
    local($term, $termname, $termtype);

    printf OUT "### INPUT CAP ##############################################################\n\n";
    printf OUT "Cellname:\t\"$cellname\"\n";
    printf OUT "\n";
    printf OUT "    Input\tCeff\t\tCeff\t\tTerror\n";
    printf OUT "    \t\t[F]\t\t[scaled]\t[s]\n";
    printf OUT "    ----------\t----------\t----------\t----------\n";

    foreach $term (@@termlist) {
	($termname, $termtype) = split(':', $term);
	if (($termtype eq 'i') && ($termname =~ /$inexp/)) {
	    &ic_char($termname, $tie, @@tie_list);
	}
    }
    printf OUT "\n\n";
}


sub ic_char {

    my($in, $tie, @@tie_list) = @@_;
    my($run_name);
    local($optmod, $optparam, $optmeasure);

    # give names to these puppies
    $optmod = 'optmod';
    $optparam = 'optcap';
    $optmeasure = 'opterror';

    $run_name = &run_file_name($cellname, $in, 'ic');
    open(SPICEIN,">$run_name") || die "ERROR:  Cannot open file '$run_name'.";

    # Create the hspice netlist(s)
    &print_header(SPICEIN, '*');
    printf SPICEIN "*	Char:	Input Capacitance Characterization\n";
    printf SPICEIN "*	Input:	\"$in\"\n";

    &ic_print_setup (SPICEIN);
    &ic_print_source (SPICEIN);
    &ic_print_dut (SPICEIN, $in, $tie, @@tie_list);
    &ic_print_measure (SPICEIN);
    &ic_print_trans (SPICEIN);

    printf SPICEIN ".end\n";
    close(SPICEIN);

    &run_spice($run_name);

    &ic_report_spice($in, $run_name);
}


sub ic_print_setup {

    my ($fp) = @@_;

    printf $fp "\n*--- SETUP ---------------------------------------------------\n";
    printf $fp ".include '$techpath/$spice_corner'\n";
    printf $fp ".include '$spice_netlist'\n";
    if ($spice_include ne 'none') {
	printf $fp "$spice_include\n";
    }

    if ($spice_type eq 'smartspice') {
	printf $fp ".param ceq = '$cstart'\n" ;
    } else {
	printf $fp "$optim_options\n";
	printf $fp ".model $optmod opt\n";
	printf $fp ".param ceq = $optparam('$cstart', '$cmin', '$cmax')\n" ;
    }
}


sub ic_print_source {

    my ($fp) = @@_;

    printf $fp "\n*--- INPUTS --------------------------------------------------\n";
    printf $fp "vin0 in0 $low_value pulse (
+	'$low_value'
+	'$high_value'
+	'$trans_delay'
+	'$trans_risetime'
+	'$trans_falltime'
+	'$trans_pulse_width'
+	'$trans_period')\n";

    # put two of them, in the future, integrate
    # the current going out of the source to
    # figure the charge, if no buffers are used.
    printf $fp "vin1 in1 $low_value pulse (
+	'$low_value'
+	'$high_value'
+	'$trans_delay'
+	'$trans_risetime'
+	'$trans_falltime'
+	'$trans_pulse_width'
+	'$trans_period')\n";

}


sub ic_print_dut {

    my($fp, $in, $tie, $tie_list) = @@_;
    my($term, $termname, $termtype);
    my($buf, $outload);
    my($vcvs, @@inlist, @@reflist);
    local($term_no, @@vcvs_list, @@output_loads);

    $term_no = 0;

    if ($buffer{$in} ne '') {
	$buf = $buffer{$in};
    } else {
	$buf = $buffer{'default'};
    }

    printf $fp "\n*--- TEST CIRCUIT --------------------------------------------\n";

    @@inlist = ($in);
    @@reflist = ('input0');

    if ($buf eq 'none') {
	die "ERROR:  You must specify a buffer type to characterize input capacitance.\n";
    } else {
	printf $fp "xbuf0 in0 input0 $buf\n";
	printf $fp "xbuf1 in1 input1 $buf\n";
    }

    printf $fp "xdut0\n";
    foreach $term (@@termlist) {
	($termname, $termtype) = split(':', $term);
	if ($termname eq $in) {
	    printf $fp "+\tinput0\t\$ $term\n";
	    next;
	}
	if ($termtype eq 'i') {
	    printf $fp "+\t%s\t\$ $term\n",
		&lookup_input($termname, \@@inlist, \@@reflist, $tie, @@tie_list);
	    next;
	}
	if ($termtype eq 'o') {
	    printf $fp "+\t%s\t\$ $term\n", &lookup_output_load($termname);
	    next;
	}
    }
    printf $fp "+\t$cellname\n";

    # if any
    foreach $vcvs (@@vcvs_list) {
	printf $fp "$vcvs\n";
    }

    printf $fp "\n*--- LOADS ---------------------------------------------------\n";
    # if any
    foreach $outload (@@output_loads) {
	printf $fp "$outload\n";
    }

    # print the matching cap
    printf $fp "ceff input1 $low_value ceq\n";

}


sub ic_print_measure {

    my($fp) = @@_;

    printf $fp "\n*--- MEASURE -------------------------------------------------\n";
    printf $fp ".option autostop\n";

    if ($spice_type eq 'smartspice') {
	printf $fp ".measure tran dut_r delay v(in0) val='$midpoint_value' rise=1\n";
    } else {
	printf $fp ".measure tran dut_r trig=v(in0) val='$midpoint_value' rise=1\n";
    }
    printf $fp "+\ttarg=v(input0) val='$midpoint_value' rise=1\n";

    if ($spice_type eq 'smartspice') {
	printf $fp ".measure tran dut_f delay v(in0) val='$midpoint_value' fall=1\n";
    } else {
	printf $fp ".measure tran dut_f trig=v(in0) val='$midpoint_value' fall=1\n";
    }
    printf $fp "+\ttarg=v(input0) val='$midpoint_value' fall=1\n";
    printf $fp ".measure tran dut_delay param='(dut_r + dut_f)/2.0'\n";

    if ($spice_type eq 'smartspice') {
	printf $fp ".measure tran cap_r delay v(in1) val='$midpoint_value' rise=1\n";
    } else {
	printf $fp ".measure tran cap_r trig=v(in1) val='$midpoint_value' rise=1\n";
    }
    printf $fp "+\ttarg=v(input1) val='$midpoint_value' rise=1\n";

    if ($spice_type eq 'smartspice') {
	printf $fp ".measure tran cap_f delay v(in1) val='$midpoint_value' fall=1\n";
    } else {
	printf $fp ".measure tran cap_f trig=v(in1) val='$midpoint_value' fall=1\n";
    }
    printf $fp "+\ttarg=v(input1) val='$midpoint_value' fall=1\n";
    printf $fp ".measure tran cap_delay param='(cap_r + cap_f)/2.0'\n";

    if ($spice_type eq 'smartspice') {
	printf $fp ".measure tran $optmeasure param='abs(dut_delay - cap_delay)'\n";
    } else {
	printf $fp ".measure tran $optmeasure param='abs(dut_delay - cap_delay)' goal=0\n";
    }
}


sub ic_print_trans {

    my($fp) = @@_;

    printf $fp "\n*--- TRANSIENT -----------------------------------------------\n";

    if ($spice_type eq 'smartspice') {
	printf $fp ".trans $trans_timestep '$trans_timestop'\n";
	printf $fp ".modif proff prtbl
+	optimize ceq=opt('$cmin' '$cmax' '$cstart')
+	targets opterror=1e-15
+	options avg=0.001\n";
    } else {
	printf $fp ".trans $trans_timestep '$trans_timestop' sweep
+	optimize=$optparam
+	results=$optmeasure
+	model=$optmod\n";

	printf $fp "\n\n* Final value:\n";
	printf $fp ".alter\n";
	printf $fp ".trans $trans_timestep '$trans_timestop'\n";
	printf $fp ".measure tran ceff param='ceq'\n";
    }
}


sub ic_report_spice {

    my($in, $run_name) = @@_;
    my($base,$dir,$ext,$spiceout);
    my($ceq, $cscaled, $cerror);

    ($base,$dir,$ext) = fileparse($run_name, '\.sp');
    $spiceout = $base . '.out';

    printf STDERR "Extracting results from '$spiceout' ...\n";

    open(SPICEOUT, $spiceout) || die "ERROR: Cannot find '$spiceout'.\n";

    if ($spice_type eq 'smartspice') {
	while (<SPICEOUT>) {
	    if (($name, $value) = /^(ceq) *=\s+([0-9\+\-eE\.]+)/) {
		$ceq = $value;
	    }
	    if (($name, $value) = /^(opterror) *=\s+([0-9\+\-eE\.]+)/) {
		$cerror = $value;
	    }
	}
    } else {
	while (<SPICEOUT>) {
	    if (($name, $value) = /^ +(ceff) *= +([0-9\+\-eE\.]+)/) {
		$ceq = $value;
	    }
	    if (($name, $value) = /^ +($optmeasure) *= +([0-9\+\-eE\.]+)/) {
		$cerror = $value;
	    }
	}
    }

    $cscaled = $ceq / $scale_cload;
    printf OUT "    %10s\t%.4e\t%.4e\t%.4e\n",
	$in, $ceq, $cscaled, $cerror;

    &ic_save_data($cellname, $in, $cscaled);

    close SPICEOUT;
}


1;
@


1.25
log
@works with smartspice
@
text
@d1 1
a1 1
#	$Id: input_cap.pl,v 1.24 1999/01/20 07:44:59 ryu Exp ryu $
d285 1
a285 1
	    if (($name, $value) = /^(ceq)\s+=\s+([0-9\+\-eE\.]+)/) {
d288 1
a288 1
	    if (($name, $value) = /^(opterror)\s+=\s+([0-9\+\-eE\.]+)/) {
d294 1
a294 1
	    if (($name, $value) = /^ +(ceff) += +([0-9\+\-eE\.]+)/) {
d297 1
a297 1
	    if (($name, $value) = /^ +($optmeasure) += +([0-9\+\-eE\.]+)/) {
@


1.24
log
@No perl header
@
text
@d1 1
a1 1
#	$Id: input_cap.pl,v 1.23 1999/01/14 10:19:02 ryu Exp ryu $
d95 8
a102 3
    printf $fp "$optim_options\n";
    printf $fp ".model $optmod opt\n";
    printf $fp ".param ceq = $optparam('$cstart', '$cmin', '$cmax')\n" ;
d206 5
a210 1
    printf $fp ".measure tran dut_r trig=v(in0) val='$midpoint_value' rise=1\n";
d212 6
a217 1
    printf $fp ".measure tran dut_f trig=v(in0) val='$midpoint_value' fall=1\n";
d221 5
a225 1
    printf $fp ".measure tran cap_r trig=v(in1) val='$midpoint_value' rise=1\n";
d227 6
a232 1
    printf $fp ".measure tran cap_f trig=v(in1) val='$midpoint_value' fall=1\n";
d236 5
a240 1
    printf $fp ".measure tran $optmeasure param='dut_delay - cap_delay' goal=0\n";
d249 9
a257 1
    printf $fp ".trans $trans_timestep '$trans_timestop' sweep
d262 5
a266 4
    printf $fp "\n\n* Final value:\n";
    printf $fp ".alter\n";
    printf $fp ".trans $trans_timestep '$trans_timestop'\n";
    printf $fp ".measure tran ceff param='ceq'\n";
d282 9
a290 3
    while (<SPICEOUT>) {
	if (($name, $value) = /^ +(ceff) += +([0-9\+\-eE\.]+)/) {
	    $ceq = $value;
d292 8
a299 2
	if (($name, $value) = /^ +($optmeasure) += +([0-9\+\-eE\.]+)/) {
	    $cerror = $value;
@


1.23
log
@Using /usr/bin/perl
@
text
@d1 1
a1 3
#! /usr/bin/perl

#	$Id: input_cap.pl,v 1.22 1999/01/13 07:18:42 ryu Exp ryu $
@


1.22
log
@GPL
@
text
@d1 1
a1 1
#! /usr/local/bin/perl
d3 1
a3 1
#	$Id$
@


1.21
log
@Added slew-rate to setup and hold; support for non-linear models for clock-q
@
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 19
a23 3
#	$Id: input_cap.pl,v 1.20 1998/09/08 13:16:49 ryu Exp ryu $
#	Input Capacitance Characterization Functions
#	Author: Robert K. Yu
@


1.20
log
@slew rate at the clock input of setup_hold (wip)
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.19 1998/09/06 20:43:23 ryu Exp ryu $
d24 1
d80 1
a80 1
    printf $fp ".include '$init{'techpath'}/$init{'corner'}'\n";
d82 2
a83 2
    if ($init{'include'} ne 'none') {
	printf $fp "$init{'include'}\n";
d85 1
a85 1
    printf $fp "$optim{'options'}\n";
d96 8
a103 8
    printf $fp "vin0 in0 $init{'low'} pulse (
+	'$init{'low'}'
+	'$init{'high'}'
+	'$trans{'delay'}'
+	'$trans{'risetime'}'
+	'$trans{'falltime'}'
+	'$trans{'pulse_width'}'
+	'$trans{'period'}')\n";
d108 8
a115 8
    printf $fp "vin1 in1 $init{'low'} pulse (
+	'$init{'low'}'
+	'$init{'high'}'
+	'$trans{'delay'}'
+	'$trans{'risetime'}'
+	'$trans{'falltime'}'
+	'$trans{'pulse_width'}'
+	'$trans{'period'}')\n";
d179 1
a179 1
    printf $fp "ceff input1 $init{'low'} ceq\n";
d191 4
a194 4
    printf $fp ".measure tran dut_r trig=v(in0) val='$init{'midpoint'}' rise=1\n";
    printf $fp "+\ttarg=v(input0) val='$init{'midpoint'}' rise=1\n";
    printf $fp ".measure tran dut_f trig=v(in0) val='$init{'midpoint'}' fall=1\n";
    printf $fp "+\ttarg=v(input0) val='$init{'midpoint'}' fall=1\n";
d197 4
a200 4
    printf $fp ".measure tran cap_r trig=v(in1) val='$init{'midpoint'}' rise=1\n";
    printf $fp "+\ttarg=v(input1) val='$init{'midpoint'}' rise=1\n";
    printf $fp ".measure tran cap_f trig=v(in1) val='$init{'midpoint'}' fall=1\n";
    printf $fp "+\ttarg=v(input1) val='$init{'midpoint'}' fall=1\n";
d212 1
a212 1
    printf $fp ".trans $trans{'timestep'} '$trans{'timestop'}' sweep
d219 1
a219 1
    printf $fp ".trans $trans{'timestep'} '$trans{'timestop'}'\n";
d245 1
a245 1
    $cscaled = $ceq / $init{'scale_cload'};
@


1.19
log
@clock enable
@
text
@d3 1
a3 1
#	Copyright (c) 1998, Robert K. Yu.  All Rights Reserved.
d9 1
a9 1
#	$Id: input_cap.pl,v 1.18 1998/09/05 22:10:32 ryu Exp ryu $
d68 1
a68 1
    &ic_run_spice($run_name);
a219 18
}


sub ic_run_spice {

    my($run_name) = @@_;
    my($base,$dir,$type,$spiceout);

    ($base,$dir,$type) = fileparse($run_name, '\.sp');
    $spiceout = $base . '.out';

    # Run hspice
    if ($skip && (-e $spiceout)) {
	printf STDERR "Found \"%s\", skipping run.\n", $spiceout;
    } else {
	printf STDERR "Running %s on \"%s\" ...\n", $init{'spice_cmd'}, $run_name;
	`$init{'spice_cmd'} $run_name`;
    }
@


1.18
log
@Consolidate lookup_input functions into one, using list of names and refnames.
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.17 1998/09/01 04:49:20 ryu Exp ryu $
d151 1
a151 1
	    printf $fp "+\tinput0\n";
d155 1
a155 1
	    printf $fp "+\t%s\n",
d160 1
a160 1
	    printf $fp "+\t%s\n", &lookup_output_load($termname);
d190 1
a190 1
    printf $fp ".meas tran dut_r trig=v(in0) val='$init{'midpoint'}' rise=1\n";
d192 1
a192 1
    printf $fp ".meas tran dut_f trig=v(in0) val='$init{'midpoint'}' fall=1\n";
d194 1
a194 1
    printf $fp ".meas tran dut_delay param='(dut_r + dut_f)/2.0'\n";
d196 1
a196 1
    printf $fp ".meas tran cap_r trig=v(in1) val='$init{'midpoint'}' rise=1\n";
d198 1
a198 1
    printf $fp ".meas tran cap_f trig=v(in1) val='$init{'midpoint'}' fall=1\n";
d200 1
a200 1
    printf $fp ".meas tran cap_delay param='(cap_r + cap_f)/2.0'\n";
d202 1
a202 1
    printf $fp ".meas tran $optmeasure param='dut_delay - cap_delay' goal=0\n";
d219 1
a219 1
    printf $fp ".meas tran ceff param='ceq'\n";
@


1.17
log
@Consistent quotes
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.16 1998/08/30 19:24:00 ryu Exp ryu $
d124 1
a124 1
    my($vcvs, $refname);
d137 2
a138 1
    $refname = 'input0';
d156 1
a156 1
		&lookup_input($termname, $in, $refname, $tie, @@tie_list);
@


1.16
log
@Using term instead of port; extract all cell and terminal properties into synopsys model.
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.15 1998/08/26 09:35:38 ryu Exp ryu $
d52 1
a52 1
    open(SPICEIN,">$run_name") || die "ERROR:  Cannot open file \"$run_name\".";
d251 1
a251 1
    open(SPICEOUT, $spiceout) || die "ERROR: Cannot find \"$spiceout\".\n";
@


1.15
log
@added slewrate modelling.
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.14 1998/08/23 22:11:24 ryu Exp $
d22 1
a22 1
    local($port, $portname, $porttype);
d30 4
a33 4
    foreach $port (@@portlist) {
	($portname, $porttype) = split(':', $port);
	if (($porttype eq 'i') && ($portname =~ /$inexp/)) {
	    &ic_char($portname, $tie, @@tie_list);
d122 1
a122 1
    my($port, $portname, $porttype);
d125 1
a125 1
    local($port_no, @@vcvs_list, @@output_loads);
d127 1
a127 1
    $port_no = 0;
d147 3
a149 3
    foreach $port (@@portlist) {
	($portname, $porttype) = split(':', $port);
	if ($portname eq $in) {
d153 1
a153 1
	if ($porttype eq 'i') {
d155 1
a155 1
		&lookup_input($portname, $in, $refname, $tie, @@tie_list);
d158 2
a159 2
	if ($porttype eq 'o') {
	    printf $fp "+\t%s\n", &lookup_output_load($portname);
@


1.14
log
@Robert K. Yu
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.13 1998/08/23 21:59:07 ryu Exp ryu $
d44 1
a44 1
    my($optmod, $optparam, $optmeasure);
d242 1
a242 1
    ($in, $run_name) = @@_;
@


1.13
log
@save_data functions moved into model.pl; pass lists by reference
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.12 1998/08/23 21:16:02 ryu Exp ryu $
d11 1
a11 1
#	Author: Robert Yu
@


1.12
log
@Write out synopsys lib.
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.11 1998/08/23 12:03:44 ryu Exp ryu $
d265 1
a265 1
    $celldata{"$cellname:input_cap:$in"} = $cscaled;
@


1.11
log
@celldata
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.10 1998/08/23 10:07:56 ryu Exp ryu $
d264 1
@


1.10
log
@Added writing of data fle
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.9 1998/08/23 06:56:57 ryu Exp ryu $
d264 1
a264 1
    printf DATA "\$data{'$cellname:input_cap:$in'} = %.4e;\n", $cscaled;
@


1.9
log
@Using my and use instead of local and require.
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.8 1998/08/18 09:33:00 ryu Exp ryu $
d264 2
@


1.8
log
@Debugged clock to q module; changed generated file convention
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.7 1998/08/17 02:41:17 ryu Exp ryu $
d42 3
a44 3
    local($in, $tie, @@tie_list) = @@_;
    local($run_name);
    local($optmod, $optparam, $optmeasure);
d76 1
a76 1
    local ($fp) = @@_;
d92 1
a92 1
    local ($fp) = @@_;
d121 5
a125 4
    local($fp, $in, $tie, $tie_list) = @@_;
    local($port, $portname, $porttype);
    local($buf, $port_no, $outload, @@output_loads);
    local($vcvs, @@vcvs_list, $refname);
d184 1
a184 1
    local($fp) = @@_;
d207 1
a207 1
    local($fp) = @@_;
d224 2
a225 2
    local($run_name) = @@_;
    local($base,$dir,$type,$spiceout);
d243 2
a244 2
    local($base,$dir,$ext,$spiceout);
    local($ceq, $cscaled, $cerror);
@


1.7
log
@Debuggin
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.6 1998/08/16 13:37:40 ryu Exp ryu $
d36 1
d51 1
a51 1
    $run_name = &run_file_name($cellname, $in);
d231 1
a231 1
	printf STDERR "\"%s\" found, skipping run.\n", $spiceout;
d248 2
a262 1

@


1.6
log
@checking in
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.5 1998/08/15 11:14:39 ryu Exp ryu $
d26 3
a28 3
    printf OUT "    Input\tCeff\t\tTerror\n";
    printf OUT "    \t\t[F]\t\t[s]\n";
    printf OUT "    ----------\t----------\t----------\n";
a60 1
    &ic_print_load (SPICEIN);
d122 1
a122 1
    local($buf, $port_no, @@output_loads);
a167 10
    # print the matching cap
    printf $fp "ceff input1 $init{'low'} ceq\n";
}


sub ic_print_load {

    local($fp) = @@_;
    local($outload);

d173 4
d230 1
a230 1
	printf STDERR "\"%s\" found.\n", $spiceout;
a231 1
	printf STDERR "\"%s\" not found.\n", $spiceout;
d242 1
a242 1
    local($ceq,$cerror);
d257 3
a259 1
    printf OUT "    %10s\t%.4e\t%.4e\n", $in, $ceq, $cerror;
@


1.5
log
@removed fail check, since matching filters it out
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.4 1998/08/15 11:09:28 ryu Exp ryu $
d42 1
a42 1
    local($devices, $run_name);
d123 1
a123 1
    local($buf, $port_no, $outload, @@output_loads);
d177 1
@


1.4
log
@check for failed simulation
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.3 1998/08/15 10:53:55 ryu Exp ryu $
a256 4
	    # check
	    if ($value eq 'failed') {
		die "ERROR: failed measurement finding input cap to '$in'\n";
	    }
@


1.3
log
@wip
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.2 1998/08/15 10:17:14 ryu Exp ryu $
d20 1
d24 6
d249 1
a249 1
    local(@@ceq);
d256 9
a264 2
	if (($name, $value) = /^ +(ceq) += +([0-9\+\-eE\.]+)/) {
	    push(@@ceq, $value);
d267 3
@


1.2
log
@work in progress
@
text
@d9 1
a9 1
#	$Id: input_cap.pl,v 1.1 1998/08/15 10:11:04 ryu Exp ryu $
a12 1

d20 13
d41 1
a41 1
    $optmeasure = 'optmeas';
d88 1
a88 1
    printf $fp "vin0 vin0 $init{'low'} pulse (
d100 1
a100 1
    printf $fp "vin1 vin1 $init{'low'} pulse (
d134 2
a135 2
	printf $fp "xbuf0 vin0 input0 $buf\n";
	printf $fp "xbuf1 vin1 input1 $buf\n";
d207 1
a207 1
    printf $fp ".trans $trans{'timestep'} '$trans{'timestop'}'
d212 1
a212 1
    printf $fp "\n* Final value:\n";
@


1.1
log
@entered into RCS
@
text
@d9 1
a9 1
#	$Id: load_delay.pl,v 1.3 1998/08/13 09:08:03 ryu Exp ryu $
a83 1
    }
d96 1
a96 1
    }
d202 1
a202 1
    printf $fp ".trans $trans{'timestep'} '$trans{'timestop'}'
@
# Change User Description Committed
#1 6489 robert_yu Saved here.