- #! /usr/bin/perl
-
- # $Id: autochar.pl,v 1.40 1999/06/10 07:38:06 ryu Exp $
-
- # 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.
-
-
- ($Program) = $0 =~ /([^\/]*)$/;
-
- #-------------------------------------------------------------------------------
- # Setup
- #-------------------------------------------------------------------------------
-
- $autochar = $ENV{'AUTOCHAR'};
-
- use Getopt::Std;
- use File::Basename;
-
- # load program defaults
- require $autochar . '/lib/defaults.spec';
-
- # load program components
- require $autochar . '/src/utils.pl';
- require $autochar . '/src/common.pl';
- require $autochar . '/src/math.pl';
- require $autochar . '/src/globals.pl';
- require $autochar . '/src/model.pl';
- require $autochar . '/src/data.pl';
-
- # load characterization modules
- require $autochar . '/src/load_delay.pl';
- require $autochar . '/src/input_cap.pl';
- require $autochar . '/src/setup_hold.pl';
- require $autochar . '/src/clock_q.pl';
- require $autochar . '/src/clock_enable.pl';
-
-
- #-------------------------------------------------------------------------------
- # Parse Command
- #-------------------------------------------------------------------------------
-
- ©right();
-
- getopts('Dhso:c:');
-
- $input_spec = $ARGV[0];
- ($base,$dir,$type) = fileparse($input_spec, '\..*');
-
- $rptout = $base . '.rpt';
-
- if ($opt_h || !$input_spec) {
- print "Usage: $Program [-hs] [-c cellname] [-o report] input+\n";
- print " -h: help usage\n";
- print " -s: skip running spice if output found\n";
- print " (default: run hspice)\n";
- print " -c: cellname\n";
- print " (default: none)\n";
- print " -o: output report\n";
- print " (default: input.rpt)\n";
- print "input: input control file(s)\n";
- exit 0;
- }
-
- $rptout = ($opt_o) ? $opt_o : $rptout;
- $skip = $opt_s;
- $cellname = $opt_c;
- $debug = $opt_D;
-
- open(OUT, "> $rptout") || die "ERROR: Cannot create file '$rptout'.\n";
- &print_header(OUT, "#");
-
-
- #-------------------------------------------------------------------------------
- # Main
- #-------------------------------------------------------------------------------
-
- # run each spec file
- foreach $input_spec (@ARGV) {
-
- (-e $input_spec) || die "ERROR: Cannot open '$input_spec'.\n";
- printf STDERR "Evaluating '$input_spec' ...\n";
-
- # run spec
- require $input_spec;
- }
-
- close(OUT);
- printf STDERR "Created '$rptout'.\n";
-
- exit 0;
-
- #-------------------------------------------------------------------------------
- # Subroutines
- #-------------------------------------------------------------------------------
-
- # autochar --
- # Called directly from spec file.
- #
- sub autochar {
- my(@arguments) = @_;
-
- # reset counter with each call to 'autochar'.
- $spice_run = 0;
-
- &init_autochar();
-
- if ($sim_type eq 'load_delay') {
- &ld_run(@arguments);
- } elsif ($sim_type eq 'input_cap') {
- &ic_run(@arguments);
- } elsif ($sim_type eq 'setup_hold') {
- &sh_run(@arguments);
- } elsif ($sim_type eq 'clock_q') {
- &cq_run(@arguments);
- } elsif ($sim_type eq 'clock_enable') {
- &ce_run(@arguments);
- } else {
- die "ERROR: unknown simulation type '$sim_type'.\n";
- }
- }
-
-
- # copychar --
- # Called directly from spec file.
- #
- sub copychar {
- my(@arguments) = @_;
-
- if ($sim_type eq 'load_delay') {
- &ld_copy_data($cellname, @arguments);
- } elsif ($sim_type eq 'input_cap') {
- &ic_copy_data($cellname, @arguments);
- } elsif ($sim_type eq 'setup_hold') {
- &sh_copy_data($cellname, @arguments);
- } elsif ($sim_type eq 'clock_q') {
- &cq_copy_data($cellname, @arguments);
- } elsif ($sim_type eq 'clock_enable') {
- &ce_copy_data($cellname, @arguments);
- } else {
- die "ERROR: unknown simulation type '$sim_type'.\n";
- }
- }
-
- sub copyright {
- print "
- AutoChar
-
- Version $version
- Copyright (C) 1999 Robert K. Yu
- email: robert\@yu.org
-
- 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.\n\n";
-
- }
-
- sub init_autochar {
- &set_measure_values (
- \$input_prop_r, \$input_prop_f,
- \$output_prop_r, \$output_prop_f,
- \$trans_r1, \$trans_r2,
- \$trans_f1, \$trans_f2,
- \$slew_r1, \$slew_r2,
- \$slew_f1, \$slew_f2);
- }
-
-
# |
Change |
User |
Description |
Committed |
|
#1
|
6489 |
robert_yu |
Saved here. |
16 years ago
|
|