2 changed files with 0 additions and 462 deletions
@ -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 |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue