rming
This commit is contained in:
parent
ab9ab1640d
commit
add5a573f2
|
|
@ -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;
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue