This commit is contained in:
stefanjones 2002-11-26 11:31:39 +00:00
parent ab9ab1640d
commit add5a573f2
2 changed files with 0 additions and 462 deletions

View File

@ -1,66 +0,0 @@
/*
* project.h
*
* Diagonalization by Successive Rotations Method
* (The Jacobi Method)
*
* Date: October 4, 1991
*
* Author: Shen Lin
*
* Copyright (C) University of California, Berkeley
*
*/
/************************************************************
*
* Macros
*
************************************************************/
#ifndef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#endif
#ifndef MIN
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#endif
#ifndef ABS
#define ABS(x) ((x) >= 0 ? (x) : (-(x)))
#endif
#ifndef SGN
#define SGN(x) ((x) >= 0 ? (1.0) : (-1.0))
#endif
/************************************************************
*
* Defines
*
************************************************************/
#define MAX_DIM 16
#define Title "Diagonalization of a Symmetric matrix A (A = S^-1 D S)\n"
#define Left_deg 7 /* should be greater than or equal to 6 */
#define Right_deg 2
/************************************************************
*
* Data Structure Definitions
*
************************************************************/
typedef struct linked_list_of_max_entry{
struct linked_list_of_max_entry *next;
int row, col;
float value;
} MAXE, *MAXE_PTR;
typedef struct {
double *Poly[MAX_DIM];
double C_0[MAX_DIM];
} Mult_Out;
typedef struct {
double *Poly;
double C_0;
} Single_Out;

View File

@ -1,396 +0,0 @@
/*
* project.h
*
* Timing Simulator (ESWEC)
*
* Date: October 5, 1990
*
* Author: Shen Lin
*
* Copyright (C) University of California, Berkeley
*
*/
#ifndef _SWEC_H_
#define _SWEC_H_
/************************************************************
*
* Defines
*
************************************************************/
#define MainTitle " Timing Simulator\n"
#define MAXDEVICE 4
#define MAXMOS 31500 /* suggested value */
#define MAXDD 256 /* suggested value */
#define MAXVCCS 128 /* suggested value */
#define MAXTIME 1000000
#define MAXNODE 136
#define TAB_SIZE 8192 /* originally 2048 */
#define NUM_STEPS_PER_MICRON 10 /* 0.1 micron is the smallest step */
#define MAX_FET_SIZE 80 /* largest fet in microns */
#define Vol_Step 1.0e-3 /* voltage resolution */
#define SCL 1000.0 /* voltage scaler (1V/3mv) */
#define MAX_CP_TX_LINES 4 /* max number of coupled lines in
a multiconductor line system */
/************************************************************
*
* Macro
*
************************************************************/
#ifndef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#endif
#ifndef MIN
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#endif
#ifndef ABS
#define ABS(x) ((x) >= 0 ? (x) : (-(x)))
#endif
/************************************************************
*
* Data Structure Definitions
*
************************************************************/
typedef struct reglist REGLIST;
typedef struct node NODE;
typedef struct mosfet MOSFET;
typedef struct emosfet EMOSFET;
typedef struct diode DIODE;
typedef struct ediode EDIODE;
typedef struct vccs VCCS;
typedef struct evccs EVCCS;
typedef struct i_cap I_CAP;
typedef struct ei_cap EI_CAP;
typedef struct resistor RESISTOR;
typedef struct eresistor ERESISTOR;
typedef struct rline RLINE;
typedef struct erline ERLINE;
typedef struct txline TXLine;
typedef struct etxline ETXLine;
typedef struct cpline CPLine;
typedef struct ecpline ECPLine;
typedef struct bqueue BQUEUE;
typedef struct pqueue PQUEUE;
typedef struct ms_device MS_DEVICE;
typedef struct bp_device BP_DEVICE;
typedef struct dd_device DD_DEVICE;
struct mosfet{
int type; /* 1 : NMOS, 2 : PMOS */
MS_DEVICE *device; /* NULL if the nominal device model */
NODE *out_node;
NODE *in_node;
float Cs, Cd;
MOSFET *nx;
int time; /* instantaneous information */
float voltage, dvg; /* instantaneous information */
float vgN_1; /* gate voltage at previous event point */
float G; /* effective conductance at t(n) */
float effective; /* W over effective L */
int tabW; /* width in ns/um */
REGLIST *region; /* region associated with this mos */
/* NULL if driven by the node of the same region */
};
struct diode{
float Is; /* saturation current */
float Vj; /* junction potential */
double G;
NODE *in_node;
NODE *out_node;
DIODE *nx;
};
struct vccs{
float Is; /* saturation current */
NODE *in_node;
NODE *out_node;
NODE *pcv_node;
NODE *ncv_node;
DIODE *nx;
};
typedef struct {
char name[10]; /* device name */
int type; /* 1 : NMOS, 2 : PMOS */
int device_id; /* device id */
} DEVICENAME;
struct ms_device{
char name[10];
int used; /* device used in circuit flag */
float rho; /* device vsat denom param */
float alpha; /* device vsat denom vgg param */
float vt; /* device zero bias threshold voltage in mv*/
float gamma; /* device backgate bias vt param */
float fermi; /* device fermi potential in mv */
float theta; /* device backgate bias vt width param */
float mu; /* device vt width param */
float eta; /* device saturation slope */
float eta5; /* eta - 0.5 */
int pzld; /* positive lambda */
float lambda; /* channel-length modulation */
float kp; /* device conductance parameter */
float cgs0; /* gate-source overlap capacitance
per meter channel width */
float cgd0; /* gate-drain overlap capacitance
per meter channel width */
float cox; /* oxide-field capacitance
per square meter of gate area */
float cjsw; /* zero-biased junction sidewall capacitace
per meter of junction perimeter */
float cj0; /* zero-biased junction bottom capacitace
per square meter of junction area */
float keq; /* abrupt junction parameter */
float ld; /* lateral diffusion */
float *thresh;
float *sat;
float *dsat;
float *body;
float *gammod;
};
struct bp_device{
char name[10];
int type; /* 1 : NPN; 2 : PNP */
float rc; /* collector resistance */
float re; /* emitter resistance */
float rb; /* zero bias base resistance */
float Is; /* transport saturation current */
float Af; /* ideal maximum forward alpha */
float Ar; /* ideal maximum reverse alpha */
float Vje; /* B-E built-in potential */
float Vjc; /* B-C built-in potential */
};
struct dd_device{
char name[10];
float Is; /* saturation current */
float rs; /* ohmic resistance */
float Vj; /* junction potential */
};
typedef struct linked_lists_of_Bpoint{
struct linked_lists_of_Bpoint *next;
int time;
float voltage;
float slope;
} BPOINT, *BPOINTPTR;
typedef struct linked_lists_of_nodeName{
char id[24];
struct linked_lists_of_nodeName *left, *right;
NODE *nd;
} NDname, *NDnamePt;
struct node {
NDnamePt name;
EMOSFET *mptr; /* pointer to head of src/drn MOSFET list */
EMOSFET *gptr; /* pointer to head of gate MOSFET list */
EI_CAP *cptr; /* pointer to head of internodal cap list */
ERESISTOR *rptr; /* pointer to head of internodal resistor list */
ERLINE *rlptr; /* pointer to head of internodal TX line list */
ETXLine *tptr; /* pointer to head of transmission line list */
ECPLine *cplptr; /* pointer to head of coupled lines list */
EDIODE *ddptr; /* pointer to head of diode list */
EVCCS *vccsptr; /* pointer to head of VCCS list */
EVCCS *cvccsptr;/* pointer to head of controlled VCCS list */
NODE *next; /* pointer to next node */
REGLIST *region; /* region associated with this node */
NODE *base_ptr; /* group src/drn nodes into region */
/* charles 2,2 1/18/93
float V;
float dv; voltage at t(n-1) and slope at t(n)
*/
double V;
double dv;
float CL; /* grounded capacitance in F */
double gsum; /*^ sum of the equivalent conductance */
double cgsum; /*^ sum of the constant conductance */
double is; /*^ equivalent Is */
int tag; /* -2 : Vdd, -3 : Vss, -1 : initial value */
int flag; /*^ flag to show some features of the node */
PQUEUE *qptr; /*^ pointer to the entry in the queue or waiting list */
FILE *ofile; /* output file for the signal at this node */
/* NULL if not for print */
int dvtag;
};
struct reglist{
REGLIST *rnxt; /* pointer to next region */
NODE *nlist; /* node list */
MOSFET *mos;
I_CAP *cap;
RESISTOR *res;
TXLine *txl;
CPLine *cpl;
struct linked_lists_of_Bpoint *Bpoint; /* break points at primary inputs */
struct linked_lists_of_Bpoint *head; /* header of the break points at primary inputs */
int eTime; /* time when this region previously evaluated */
int DCvalue;
/* 1, 0, 2 : unknown, 3 : unchangeable 1, 4 : unchangeable 0 */
BQUEUE *prediction;
};
struct bqueue{
int key; /* time for the event to be fired, or DC weight */
BQUEUE *left;
BQUEUE *right;
BQUEUE *pred;
BQUEUE *pool;
REGLIST *region; /* region id */
};
struct pqueue {
NODE *node;
PQUEUE *next;
PQUEUE *prev;
};
struct i_cap {
NODE *in_node;
NODE *out_node;
float cap;
I_CAP *nx;
};
struct resistor {
NODE *in_node;
NODE *out_node;
float g; /* conductance */
int ifF; /* whether floating */
float g1; /* conductance for floating resistor */
RESISTOR *nx;
};
struct rline {
NODE *in_node;
NODE *out_node;
float g; /* conductance */
RLINE *nx;
};
typedef struct linked_lists_of_vi_txl{
struct linked_lists_of_vi_txl *next;
struct linked_lists_of_vi_txl *pool;
int time;
/* charles 2,2
float v_i, v_o;
float i_i, i_o;
*/
double v_i, v_o;
double i_i, i_o;
} VI_list_txl;
typedef struct linked_lists_of_vi{
struct linked_lists_of_vi *next;
struct linked_lists_of_vi *pool;
int time;
float v_i[MAX_CP_TX_LINES], v_o[MAX_CP_TX_LINES];
float i_i[MAX_CP_TX_LINES], i_o[MAX_CP_TX_LINES];
} VI_list;
typedef struct {
double c, x;
double cnv_i, cnv_o;
} TERM;
typedef struct {
int ifImg;
double aten;
TERM tm[3];
} TMS;
struct cpline {
int noL;
int ext;
float ratio[MAX_CP_TX_LINES];
float taul[MAX_CP_TX_LINES];
TMS *h1t[MAX_CP_TX_LINES][MAX_CP_TX_LINES];
TMS *h2t[MAX_CP_TX_LINES][MAX_CP_TX_LINES][MAX_CP_TX_LINES];
TMS *h3t[MAX_CP_TX_LINES][MAX_CP_TX_LINES][MAX_CP_TX_LINES];
double h1C[MAX_CP_TX_LINES][MAX_CP_TX_LINES];
double h2C[MAX_CP_TX_LINES][MAX_CP_TX_LINES][MAX_CP_TX_LINES];
double h3C[MAX_CP_TX_LINES][MAX_CP_TX_LINES][MAX_CP_TX_LINES];
double h1e[MAX_CP_TX_LINES][MAX_CP_TX_LINES][3];
NODE *in_node[MAX_CP_TX_LINES];
NODE *out_node[MAX_CP_TX_LINES];
int tag_i[MAX_CP_TX_LINES], tag_o[MAX_CP_TX_LINES];
CPLine *nx;
struct linked_lists_of_vi *vi_head;
struct linked_lists_of_vi *vi_tail;
float dc1[MAX_CP_TX_LINES], dc2[MAX_CP_TX_LINES];
};
struct txline {
int lsl; /* 1 if the line is lossless, otherwise 0 */
int ext; /* a flag, set if time step is greater than tau */
float ratio;
float taul;
double sqtCdL;
double h2_aten;
double h3_aten;
double h1C;
double h1e[3];
int ifImg;
NODE *in_node;
NODE *out_node;
int tag_i, tag_o;
TERM h1_term[3];
TERM h2_term[3];
TERM h3_term[6];
TXLine *nx;
struct linked_lists_of_vi_txl *vi_head;
struct linked_lists_of_vi_txl *vi_tail;
float dc1, dc2;
int newtp; /* flag indicating new time point */
};
struct evccs {
VCCS *vccs;
EVCCS *link;
};
struct ediode {
DIODE *dd;
EDIODE *link;
};
struct emosfet {
MOSFET *mos;
EMOSFET *link;
};
struct ei_cap {
I_CAP *cap;
EI_CAP *link;
};
struct eresistor {
RESISTOR *res;
ERESISTOR *link;
};
struct erline {
RLINE *rl;
ERLINE *link;
};
struct etxline {
TXLine *line;
ETXLine *link;
};
struct ecpline {
CPLine *line;
ECPLine *link;
};
#endif