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'}' @