1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California.  All rights reserved.
4 Authors: 1985 Thomas L. Quarles
5          1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #ifndef URC
9 #define URC
10 
11 
12 #include "devdefs.h"
13 
14     /*
15      *  structures used to describe uniform RC lines
16      */
17 
18 /* information needed for each instance */
19 
20 typedef struct sURCinstance {
21     struct sURCmodel *URCmodPtr;    /* backpointer to model */
22     struct sURCinstance *URCnextInstance;   /* pointer to next instance of
23                                              * current model*/
24     IFuid URCname;    /* pointer to character string naming this instance */
25     int UNCstate;     /* not used, placeholder for GENinstance */
26     int URCposNode;   /* number of positive node of URC */
27     int URCnegNode;   /* number of negative node of URC */
28     int URCgndNode;   /* number of the "ground" node of the URC */
29 
30     double URClength; /* length of line */
31     int URClumps;     /* number of lumps in line */
32     unsigned URClenGiven : 1;   /* flag to indicate length was specified */
33     unsigned URClumpsGiven : 1; /* flag to indicate lumps was specified */
34 
35 } URCinstance;
36 
37 /* per model data */
38 
39 typedef struct sURCmodel {     /* model structure for a resistor */
40     int URCmodType;            /* type index of this device type */
41     struct sURCmodel *URCnextModel; /* pointer to next possible model
42                                      * in linked list */
43     URCinstance *URCinstances; /* pointer to list of instances that have this
44                                 * model */
45     IFuid URCmodName;   /* pointer to character string naming this model */
46 
47     double URCk;        /* propagation constant for URC */
48     double URCfmax;     /* max frequence of interest */
49     double URCrPerL;    /* resistance per unit length */
50     double URCcPerL;    /* capacitance per unit length */
51     double URCisPerL;   /* diode saturation current per unit length */
52     double URCrsPerL;   /* diode resistance per unit length */
53     unsigned URCkGiven : 1;      /* flag to indicate k was specified */
54     unsigned URCfmaxGiven : 1;   /* flag to indicate fmax was specified */
55     unsigned URCrPerLGiven : 1;  /* flag to indicate rPerL was specified */
56     unsigned URCcPerLGiven : 1;  /* flag to indicate cPerL was specified */
57     unsigned URCisPerLGiven : 1; /* flag to indicate isPerL was specified */
58     unsigned URCrsPerLGiven : 1; /* flag to indicate rsPerL was specified */
59 
60 } URCmodel;
61 
62 /* device parameters */
63 #define URC_LEN      1
64 #define URC_LUMPS    2
65 #define URC_POS_NODE 3
66 #define URC_NEG_NODE 4
67 #define URC_GND_NODE 5
68 
69 /* model parameters */
70 #define URC_MOD_K       101
71 #define URC_MOD_FMAX    102
72 #define URC_MOD_RPERL   103
73 #define URC_MOD_CPERL   104
74 #define URC_MOD_ISPERL  105
75 #define URC_MOD_RSPERL  106
76 #define URC_MOD_URC     107
77 
78 
79 #ifdef __STDC__
80 
81 extern int  URCask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
82 extern int  URCmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
83 extern int  URCmParam(int,IFvalue*,GENmodel*);
84 extern int  URCparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*);
85 extern void URCparse(int,GENERIC*,GENERIC*,GENERIC*);
86 extern int  URCsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
87 
88 #else /* stdc */
89 
90 extern int  URCask();
91 extern int  URCmAsk();
92 extern int  URCmParam();
93 extern int  URCparam();
94 extern void URCparse();
95 extern int  URCsetup();
96 
97 #endif /* stdc */
98 
99 #endif /*URC*/
100