0707070124061642351006440006700000000000011777770500302370600003700000000140spice3c1/lib/scripts/spiceinit* Standard spice and nutmeg init file - nothing's here 'cause it's too slow * See cpinterface.c 0707070124061642361006440006700000000000011777770500302370600003500000001767spice3c1/lib/scripts/setplot* set the current working plot .control begin unset resp if $argc set resp = $argv[1] else if $?plots = 0 echo Error: there aren\'t any plots currently loaded. goto bottom else if $#plots = 0 echo Error: there aren\'t any plots currently loaded. goto bottom end end if $?resp = 0 set oldplot = $curplot echo ' Type the name of the desired plot:' echo '' echo ' new New plot' foreach pl $plots set curplot = $pl strcmp i $pl $oldplot if $i = 0 echo "Current $pl $curplottitle ({$curplotname})" else echo " $pl $curplottitle ({$curplotname})" end end set curplot = $oldplot echo -n '? ' set resp = $< end end strcmp i $resp "" if $i = 0 goto bottom end strcmp i $resp new if $i = 0 set curplot = new goto bottom end foreach pl $plots strcmp i $resp $pl if $i = 0 set curplot = $pl goto bottom end end echo Error: no such plot name $resp label bottom unset resp i pl newflag oldplot end 0707070124061642340407550006700000000000021777770500302370600002500000000000spice3c1/lib/scripts0707070124062000521006440006700000000000010000000500250475400004200000000157spice3c1/lib/helpdir/helpfile.fdl FILE ORGANIZATION SEQUENTIAL RECORD CARRIAGE_CONTROL NONE FORMAT STREAM_LF 0707070124062000531006440006700000000000010000000500250475600004000000044310spice3c1/lib/helpdir/nutmeg.idxmainargumentsdashdashndashodashrdasht bugs caveatsacommands$alias)alter+9asciiplot,6break0bug2cd3Wcdump4Ocompose5=continue9 cross;define=deftypeAdestroyGBdiffJdisplayMdowhileSdumpUechoVeditWelseYendZoforeach[fourier]jgotoa|hardcopychelphhistorycommpuifrjobsslabeltletulinearizewwload{oldhelp}plotcombplotlingridlinplot9loglognogrid\nointerpWpointplotpolarsamepsmithtitlexcompressxdeltaxindicesxlabelxlimitxlogydeltaylabelhylimitBylogprintquitrehashrepeatrusageacceptelapsedBfaultsloadtimelutime(rejectedsolvetime^spacetimetotaltimetotitertraniterWtranpointstransolvetimentrantimesetsetplotzsettypeYshellshiftshowsourcestatestatusstep-stoprstrcmpȓunaliasundefine4unlet`unsetversion|whileIwrite7cshstuffaliasesccomglobhistorysubio(quotingsemiunixcomcomm4variablesub-expressionsconstantsboltzcFeecharge@falsei H_f_i_l_e. The TEXT: H variables Gwidth, height, Hand Gnobreak Hdetermine the TEXT: H width and height of the plot, and whether there are TEXT: H page breaks, respectively. Note that you will have TEXT: H problems if you try to Gasciiplot Hsomething with an X- TEXT: H scale that isn't monotonic (i.e, something like TEXT: H _s_i_n(_T_I_M_E) ), because Gasciiplot Huses a simple-minded TEXT: H sort of linear interpolation. Also, most of the key- TEXT: H words that Gplot Hrecognises aren't used by GasciiplotH. TEXT: H TEXT: SEEALSO: nutmeg:plot SEEALSO: nutmeg:hardcopy SEEALSO: nutmeg:width SEEALSO: nutmeg:height SEEALSO: nutmeg:noasciiplotvalue SEEALSO: nutmeg:nobreak SEEALSO: nutmeg:expressions SUBJECT: break TITLE: break TEXT: TEXT: Gbreak H[ _n_u_m_b_e_r ] TEXT: H If there is a Gwhile, dowhile, Hor Gforeach Hblock enclos- TEXT: H ing this statement, control passes out of the block. TEXT: H Otherwise an error results. If a _n_u_m_b_e_r is given, that TEXT: H number of enclosing blocks are exited. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: bug TITLE: bug TEXT: TEXT: Gbug HThis sends a bug report to the maintainer of SPICE3, if TEXT: H it has been compiled with the BUGADDR option. TEXT: H TEXT: SUBJECT: cd TITLE: cd TEXT: TEXT: Gcd H[ _d_i_r_e_c_t_o_r_y ] TEXT: H Change the current working directory to _d_i_r_e_c_t_o_r_y, or TEXT: H the user's home directory if none is given. TEXT: H TEXT: SUBJECT: cdump TITLE: cdump TEXT: TEXT: Gcdump TEXT: H HThis is a debugging command for printing out the con- TEXT: H tents of the currently active control structures. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: compose TITLE: compose TEXT: TEXT: Gcompose H_v_e_c_n_a_m_e [ _p_a_r_a_m = _v_a_l_u_e ] ... TEXT: H or TEXT: H TEXT: Gcompose H_v_e_c_n_a_m_e Gvalues H_v_a_l_u_e ... TEXT: H Both forms of this command create a new vector called TEXT: H _v_e_c_n_a_m_e. In the first form, the values in the vector TEXT: H are determined by the parameters given. In the second TEXT: H form, the given values are used to form the vector. TEXT: H TEXT: The first form of this command is currently unimple- TEXT: H mented. Currently, in order to get any desired vector TEXT: H one may use the Glet Hcommand with various functions such TEXT: H as Gvector(), rnd(), Hand so on. GCompose His intended to TEXT: H be a more convenient method of constructing such vec- TEXT: H tors. TEXT: H TEXT: SEEALSO: nutmeg:let SUBJECT: continue TITLE: continue TEXT: TEXT: Gcontinue H[ _n_u_m_b_e_r ] TEXT: H If there is a Gwhile, dowhile, Hor Gforeach Hblock enclos- TEXT: H ing this statement, control returns to the beginning of TEXT: H that block. If there is no such enclosing block, an TEXT: H error results. If a _n_u_m_b_e_r is given, control is passed TEXT: H to the beginning of the _n_u_m_b_e_r'th enclosing block. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: cross TITLE: cross TEXT: TEXT: Gcross H_v_e_c_n_a_m_e _n_u_m_b_e_r [ _s_o_u_r_c_e ] ... TEXT: H A new vector is constructed, with name _v_e_c_n_a_m_e and TEXT: H values consisting of the _n_u_m_b_e_r'th element of each of TEXT: H the _s_o_u_r_c_e vectors. This is a rather awkward way to TEXT: H deal with multi-dimensional data - a more general TEXT: H method is being developed. TEXT: H TEXT: SUBJECT: define TITLE: define TEXT: TEXT: Gdefine H_f_u_n_c_t_i_o_n(_a_r_g, ...) _e_x_p_r_e_s_s_i_o_n TEXT: H Define the macro with the name _f_u_n_c_t_i_o_n and arguments TEXT: H _a_r_g, ... to be _e_x_p_r_e_s_s_i_o_n, which may involve the argu- TEXT: H ments. When the function is later used, the arguments TEXT: H it is given are substituted for the formal arguments TEXT: H when it is parsed. If _e_x_p_r_e_s_s_i_o_n is not present, any TEXT: H definitions for _f_u_n_c_t_i_o_n are printed, and if there are TEXT: H no arguments to _d_e_f_i_n_e then all currently active defin- TEXT: H itions are printed. Note that you may have different TEXT: H functions defined with the same name but different ari- TEXT: H ties. Some useful definitions (which are part of the TEXT: H default environment) are: TEXT: H TEXT: Gdefine maxH(x,y) (x > y) * x + (x <= y) * y TEXT: H Gdefine minH(x,y) (x < y) * x + (x >= y) * y TEXT: H TEXT: SEEALSO: nutmeg:undefine SEEALSO: nutmeg:expressions SUBJECT: deftype TITLE: deftype TEXT: TEXT: Gdeftype v H_t_y_p_e_n_a_m_e [ _a_b_b_r_e_v ] TEXT: H or TEXT: H TEXT: Gdeftype p H_p_l_o_t_t_y_p_e [ _p_a_t_t_e_r_n ] ... TEXT: H This command is intended to make Gnutmeg Heasier to use TEXT: H with simulators other than SPICE3. It is only a tem- TEXT: H porary facility, however. The first form defines a new TEXT: H type for vectors. The _t_y_p_e_n_a_m_e may then be used as a TEXT: H vector type specification in a rawfile, and will be TEXT: H used for the Gdisplay Hcommand to indicate the type. If TEXT: H an _a_b_b_r_e_v is given, values of that type can be named TEXT: H _a_b_b_r_e_v(_s_o_m_e_t_h_i_n_g) where _s_o_m_e_t_h_i_n_g is the name given in TEXT: H the rawfile (and _s_o_m_e_t_h_i_n_g doesn't contain TEXT: H parentheses). The second form defines a plot type. TEXT: H The (one word) name for a plot with any of the _p_a_t_t_e_r_ns TEXT: H present in its plot type name as given in the raw file TEXT: H will be _p_l_o_t_t_y_p_e<_n_u_m>, where <_n_u_m> is a positive TEXT: H integer incremented every time a rawfile is read or a TEXT: H new plot is defined. TEXT: H TEXT: SUBJECT: destroy TITLE: destroy TEXT: destroy [ _p_l_o_t_n_a_m_e ... ] [ all ] TEXT: Throw away the data in the named plot and reclaim the TEXT: storage space. This can be necessary if a lot of large TEXT: simulations are being done. spice should warn the user TEXT: if the size of the program is approaching the maximum TEXT: allowable size (within about 90%), but it is advisable TEXT: to run the rusage command occasionally if running out TEXT: of space is a possibility. If the argument to destroy TEXT: is all, all plots except the constant plot will be TEXT: thrown away. It is not possible to destroy the con- TEXT: stant plot. If no argument is given the current plot TEXT: is destroyed. TEXT: SEEALSO: nutmeg:setplot SEEALSO: nutmeg:rusage SUBJECT: diff TITLE: diff TEXT: TEXT: Gdiff H_p_l_o_t_1 _p_l_o_t_2 [ _v_e_c_n_a_m_e ] ... TEXT: H Compare the vectors in the named _p_l_o_ts and print out TEXT: H any values which differ significantly in corresponding TEXT: H vectors in the two plots. If no _v_e_c_n_a_m_es are men- TEXT: H tioned, all vectors in the plots are compared, and if TEXT: H one or more names are given only those vectors are com- TEXT: H pared. The variables GabstolH, GreltolH, and Gvntol Hare TEXT: H used to determine if two values are "significantly" TEXT: H different. (See the SPICE3 User's Guide for details of TEXT: H these variables.) TEXT: H TEXT: SEEALSO: nutmeg:abstol SEEALSO: nutmeg:vntol SEEALSO: nutmeg:reltol SUBJECT: display TITLE: display TEXT: TEXT: Gdisplay H[ _v_e_c_n_a_m_e ] ... TEXT: H List the names, types and lengths of the vectors TEXT: H defined in the current plot, and whether the vector is TEXT: H real or complex. If one or more _v_e_c_a_m_es are given the TEXT: H list is restricted to those vectors. Additional infor- TEXT: H mation is also given: if there is a minimum or maximum TEXT: H value for the vector defined, this is listed (see the TEXT: H manual page for Gsconvert Hfor a definition of the TEXT: H rawfile format and the manner in which this and the TEXT: H rest of the per-vector parameters are defined), if TEXT: H there is a default grid type or a default plot type, TEXT: H they are mentioned, and if there is a default color or TEXT: H a default scale for the vector it is noted. Addition- TEXT: H ally, one vector in the plot will have the notation TEXT: H G[default scale] Happended - this vector will be used as TEXT: H the x-scale for the Gplot Hcommand if none is given or is TEXT: H the vectors named have no default scales of their own. TEXT: H A better description of these parameters is given with TEXT: H the description of the Gplot Hcommand. TEXT: H TEXT: SUBJECT: dowhile TITLE: dowhile TEXT: TEXT: Gdowhile H_c_o_n_d_i_t_i_o_n TEXT: H This line, together with a matching Gend Hstatement, TEXT: H defines a block of commands that are executed while the TEXT: H _c_o_n_d_i_t_i_o_n remains true. (The _c_o_n_d_i_t_i_o_n is an expres- TEXT: H sion which is considered true if it evaluates to a TEXT: H non-0 value.) Unlike the Gwhile Hstatement, the test is TEXT: H done at the bottom of the loop. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: dump TITLE: dump TEXT: TEXT: Gdump HThis command causes a debugging print of the internal TEXT: H data structures used by the simulator. It is not TEXT: H guaranteed to provide any useful information. (Gspice TEXT: H Honly) TEXT: H TEXT: SUBJECT: echo TITLE: echo TEXT: TEXT: Gecho H[ G-n H] [ _s_t_u_f_f ] ... TEXT: H Print the _s_t_u_f_f on the standard output. If the G-n Hflag TEXT: H is given, don't append a newline. TEXT: H TEXT: SUBJECT: edit TITLE: edit TEXT: TEXT: Gedit H[ _f_i_l_e_n_a_m_e ] TEXT: H Print the current circuit definition into a file, call TEXT: H up the editor on that file and allow the user to modify TEXT: H it, and then read it back in, replacing the original TEXT: H definition. If a Gfilename His given, then edit that file TEXT: H and Gsource Hit, making the circuit the current one. TEXT: H TEXT: SUBJECT: else TITLE: else TEXT: TEXT: Gelse HPart of an Gif-else Hblock. See the description of the TEXT: H Gif Hstatement. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: end TITLE: end TEXT: TEXT: Gend HThis statement terminates a block. It is an error for TEXT: H an Gend Hto appear without a matching Gbegin, if, while, TEXT: H repeat, foreach, Hor Gdowhile Hstatement. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: foreach TITLE: foreach TEXT: TEXT: Gforeach H_v_a_r [ _v_a_l_u_e ] ... TEXT: H This statement opens a block which will be executed TEXT: H once for each _v_a_l_u_e given. Each time through, the _v_a_r TEXT: H will be set to sucessive _v_a_l_u_es. After the loop is TEXT: H exited it will have the last value that was assigned to TEXT: H it. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: fourier TITLE: fourier TEXT: TEXT: Gfourier H_f_u_n_d_a_m_e_n_t_a_l__f_r_e_q_u_e_n_c_y [ _v_a_l_u_e ] ... TEXT: H Does a fourier analysis of each of the given values, TEXT: H using the first 10 multiples of the fundamental fre- TEXT: H quency (or the first _n_f_r_e_q_s, if that variable is set). TEXT: H The _v_a_l_u_es may be any valid expression. They are TEXT: H interpolated onto a fixed-spaced grid with the number TEXT: H of points given by the Gfourgridsize Hvariable, or 200 if TEXT: H it is not set. The interpolation will be of degree TEXT: H Gpolydegree Hif that variable is set, or 1. If Gpolyde- TEXT: H gree His 0, then no interpolation will be done. This TEXT: H command is executed when a G.four Hline is present in the TEXT: H input file and Gspice His being run in batch mode. TEXT: H TEXT: SEEALSO: nutmeg:fourgridsize SEEALSO: nutmeg:nfreqs SUBJECT: goto TITLE: goto TEXT: TEXT: Ggoto H_l_a_b_e_l TEXT: H If there is a Glabel Hstatement in an enclosing block TEXT: H defining the _l_a_b_e_l, transfer execution to the statement TEXT: H following it. Note that if Ggoto His used outside of a TEXT: H block, the label must be above the GgotoH. There is a TEXT: H Gbegin Hmacro pre-defined as _i_f _1 which may be used if TEXT: H forward label references are required outside of a loop TEXT: H construct. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: hardcopy TITLE: hardcopy TEXT: TEXT: Ghardcopy H[ _f_i_l_e_n_a_m_e ] [ _p_l_o_t _a_r_g_u_m_e_n_t_s ] TEXT: H This command has a syntax identical to that of the Gplot TEXT: H Hcommand, except for a _f_i_l_e_n_a_m_e in which to put the plot TEXT: H image. If no plot arguments are given, the user will TEXT: H be prompted to select a window which will be dumped TEXT: H into the file (if he is using a graphics system with TEXT: H windows such as X). If no _f_i_l_e_n_a_m_e is given a tem- TEXT: H porary file will be used. If the Ghcopydev Hvariable is TEXT: H defined, the file will be printed using the command TEXT: H "lpr -g -P_h_c_o_p_y_d_e_v file", and if a temporary file was TEXT: H used, it will be removed. This is likely to work only TEXT: H on a UNIX system. The format of the plot image file is TEXT: H given in the UNIX manual page for Gplot(5)H, and may be TEXT: H plotted on a terminal with the UNIX Gplot Hprogram. TEXT: H TEXT: SEEALSO: nutmeg:plot SEEALSO: nutmeg:asciiplot SEEALSO: nutmeg:hcopydev SUBJECT: help TITLE: help TEXT: help [ _t_o_p_i_c ] ... TEXT: This is an interactive graphical help browser. Its TEXT: operation should be largely self-explanatory. The user TEXT: is presented with a window (if he is using the X win- TEXT: dows system) or a screenful of information. TEXT: TEXT: In the X version, there will be a number of "buttons" TEXT: which the user can click the mouse in, each of which TEXT: correspond to a sub-topic of the topic discussed in the TEXT: window, or a "see also" topic which is related to the TEXT: current one. If the user clicks the mouse in one of TEXT: these buttons, a new window will be created overlapping TEXT: the old one, which contains the information on the TEXT: requested topic. Each window also contains buttons in TEXT: the upper right-hand corner: Delete Window will cause TEXT: the window and all others that are its "descendants" to TEXT: go away; Quit Help will cause all the windows to disap- TEXT: pear and help system to be exited; and possibly Next TEXT: Page and Prev Page, which allow the user to scroll TEXT: around the text if there is more data than will fit on TEXT: a reasonable screen. TEXT: TEXT: If X is unavailable, the information will be paged as TEXT: in the _m_o_r_e program. At the end of the text there will TEXT: be a menu of the available sub-topics and see-alsos. TEXT: TEXT: If for some reason the help directory is unavailable, TEXT: the oldhelp command will be used. TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:helpregfont SEEALSO: nutmeg:helpboldfont SEEALSO: nutmeg:helpitalicfont SEEALSO: nutmeg:helptitlefont SEEALSO: nutmeg:helpbuttonfont SEEALSO: nutmeg:helpbuttonstyle SEEALSO: nutmeg:helpinitxpos SEEALSO: nutmeg:helpinitypos SEEALSO: nutmeg:oldhelp SUBJECT: historycomm TITLE: history command TEXT: TEXT: Ghistory H[ G-r H] [ _n_u_m_b_e_r ] ... TEXT: H Print out the last _n_u_m_b_e_r commands typed by the user, TEXT: H or all the commands saved if there are no arguments. TEXT: H The number of commands saved is determined by the value TEXT: H of the Ghistory Hvariable. If the G-r Hflag is given, the TEXT: H list is printed in reverse order. TEXT: H TEXT: SEEALSO: nutmeg:historyvar SEEALSO: nutmeg:historysub SUBJECT: if TITLE: if TEXT: TEXT: Gif H_c_o_n_d_i_t_i_o_n TEXT: H This statement defines a block to be executed if the TEXT: H _c_o_n_d_i_t_i_o_n is true. See the section on the command TEXT: H language for more details. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: jobs TITLE: jobs TEXT: TEXT: Gjobs HPrint out a summary of all the simulations which have TEXT: H been started with the Gaspice Hcommand. TEXT: H TEXT: SEEALSO: spice:aspice SUBJECT: label TITLE: label TEXT: TEXT: Glabel H_l_a_b_e_l_n_a_m_e TEXT: H This defines a label which can be used as an argument TEXT: H to GgotoH. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: let TITLE: let TEXT: TEXT: Glet H_v_e_c_n_a_m_e G= H_e_x_p_r TEXT: H Create a vector with name _v_e_c_n_a_m_e and value given by TEXT: H the expression _e_x_p_r. None of the vector options such TEXT: H as default scale, color, etc that are read from the TEXT: H rawfile are preserved when a vector is created in this TEXT: H manner. TEXT: H TEXT: SEEALSO: nutmeg:expressions SEEALSO: nutmeg:compose SUBJECT: linearize TITLE: linearize TEXT: TEXT: Glinearize H[ _v_e_c_n_a_m_e ] ... TEXT: H The purpose of this command is to force data from a TEXT: H transient analysis to conform to a linear scale. Due TEXT: H to the algorithm used to determine the timesteps used, TEXT: H the time scale may not be linear. If no _v_e_c_n_a_m_es are TEXT: H given, all the vectors in the current plot are copied TEXT: H to a new plot which becomes the current plot, and their TEXT: H data is interpolated onto a linear time scale. If one TEXT: H or more vectors are named, only those vectors are TEXT: H copied. The variable Gpolydegree Hdetermines how the TEXT: H interpolation is done. Note that this command is only TEXT: H available in GspiceH, and the current plot must TEXT: H correspond to the current circuit (otherwise the wrong TEXT: H values for the start, step, and stop times may be TEXT: H used). TEXT: H TEXT: SUBJECT: load TITLE: load TEXT: TEXT: Gload H[ _f_i_l_e_n_a_m_e ] ... TEXT: H Loads the data in either binary or ascii format from TEXT: H the files named. The default filename is GrawspiceH, or TEXT: H the argument to the G-r Hcommand line option if one was TEXT: H given. The last plot in the file becomes the current TEXT: H plot. A description of the rawfile format is given in TEXT: H the manual page for GsconvertH. TEXT: H TEXT: SEEALSO: nutmeg:write SUBJECT: oldhelp TITLE: oldhelp TEXT: help [ all ] [ _c_o_m_m_a_n_d_n_a_m_e ] ... TEXT: A brief helpful message is printed, followed by one- TEXT: line descriptions of all the commands named, or all TEXT: commands if all was given. If there are no arguments TEXT: only a few useful commands are described. This command TEXT: is available in case for some reason the documentation TEXT: browser is broken. TEXT: SEEALSO: nutmeg:help SUBJECT: plot TITLE: plot TEXT: TEXT: Gplot [ _e_x_p_r ... [ Gvs H_x-_e_x_p_r ] ] H[ _o_p_t_i_o_n_s ] ... TEXT: H Plot the values of the expressions on the graphics dev- TEXT: H ice, if there is one. For each set of expressions that TEXT: H is followed by a Gvs H_x-_e_x_p_r clause, all those vectors TEXT: H are plotted with the _x-_e_x_p_r for a scale. Multiple sets TEXT: H of expressions with different x-scales may be given in TEXT: H this manner. The available options are listed below. TEXT: H Note that options must appear after expressions. TEXT: H TEXT: SUBTOPIC: nutmeg:combplot nutmeg:lingrid nutmeg:linplot SUBTOPIC: nutmeg:loglog nutmeg:nogrid nutmeg:nointerp SUBTOPIC: nutmeg:pointplot nutmeg:samep SUBTOPIC: nutmeg:title nutmeg:xcompress SUBTOPIC: nutmeg:xdelta nutmeg:xindices nutmeg:xlabel SUBTOPIC: nutmeg:xlimit nutmeg:xlog nutmeg:ydelta SUBTOPIC: nutmeg:ylabel nutmeg:ylimit nutmeg:ylog SEEALSO: nutmeg:hardcopy SEEALSO: nutmeg:asciiplot SEEALSO: nutmeg:expressions SEEALSO: nutmeg:graphics SEEALSO: nutmeg:device SEEALSO: nutmeg:term SEEALSO: nutmeg:color SEEALSO: nutmeg:geometry SEEALSO: nutmeg:dontplot SUBJECT: combplot TITLE: combplot TEXT: TEXT: Gcombplot TEXT: H HUse a comb plot instead of connected points. Each TEXT: H point is connected to the bottom of the screen by a TEXT: H line. TEXT: H TEXT: SUBJECT: lingrid TITLE: lingrid TEXT: TEXT: Glingrid TEXT: H HUse a linear grid. This is the default grid type. TEXT: H TEXT: SUBJECT: linplot TITLE: linplot TEXT: TEXT: Glinplot TEXT: H HPlot data as points connected by lines. This is the TEXT: H default. TEXT: H TEXT: SUBJECT: loglog TITLE: loglog TEXT: TEXT: Gloglog TEXT: H HUse a log-log grid. TEXT: H TEXT: SUBJECT: nogrid TITLE: nogrid TEXT: nogrid TEXT: Don't plot a grid. The data will be plotted on a TEXT: linear scale and only the border lines at the bottom TEXT: and left sides of the screen will be drawn. TEXT: SUBJECT: nointerp TITLE: nointerp TEXT: nointerp TEXT: Normally asciiplot interpolates data onto a linear TEXT: scale before plotting it. If this option is given this TEXT: won't be done - each line will correspond to one data TEXT: point as generated by the simulation. TEXT: SEEALSO: nutmeg:asciiplot SUBJECT: pointplot TITLE: pointplot TEXT: TEXT: Gpointplot TEXT: H HPlot data points as unconnected points. Each sucessive TEXT: H expression is plotted with a different character to TEXT: H mark the points. The characters used may be changed by TEXT: H setting the variable GpointcharsH. TEXT: H TEXT: SUBJECT: polar TITLE: polar TEXT: TEXT: Gpolar TEXT: H HUse a polar grid instead of a rectangular grid. TEXT: H TEXT: SEEALSO: nutmeg:smith SUBJECT: samep TITLE: samep TEXT: TEXT: Gsamep TEXT: H HIf this option appears anywhere on the command line, TEXT: H all the options used in the last Gplot Hcommand are used TEXT: H for the current one, overriding options on the current TEXT: H line if they appear on both lines. TEXT: H TEXT: SUBJECT: smith TITLE: smith TEXT: TEXT: Gsmith TEXT: H HUse a smith grid instead of a rectangular or polar TEXT: H grid. There are a few problems, the major ones being TEXT: H that the grid is centered around the x-axis, and that TEXT: H too few labels are printed on the perimeter of the plot TEXT: H area. TEXT: H TEXT: SUBJECT: title TITLE: title TEXT: TEXT: Gtitle H_s_t_r_i_n_g TEXT: H The string will be used as the title printed near the TEXT: H bottom of the screen instead of the title of the plot TEXT: H that includes the first vector mentioned on the line TEXT: H that has one. TEXT: H TEXT: SUBJECT: xcompress TITLE: xcompress TEXT: TEXT: Gxcompress H_v_a_l_u_e TEXT: H Plot only one out of every _v_a_l_u_e points in each of the TEXT: H vectors. TEXT: H TEXT: SUBJECT: xdelta TITLE: xdelta TEXT: TEXT: Gxdelta H_v_a_l_u_e TEXT: H This value is used as the spacing between grid lines on TEXT: H the x-axis. TEXT: H TEXT: SUBJECT: xindices TITLE: xindices TEXT: TEXT: Gxindices H_l_o_w_e_r _u_p_p_e_r TEXT: H Only data points with indices between _l_o_w_e_r and _u_p_p_e_r TEXT: H are plotted. _u_p_p_e_r must be greater or equal to _l_o_w_e_r. TEXT: H TEXT: SUBJECT: xlabel TITLE: xlabel TEXT: TEXT: Gxlabel H_s_t_r_i_n_g TEXT: H The string is used as the label for the x-axis, instead TEXT: H of the name of the first scale used. TEXT: H TEXT: SUBJECT: xlimit TITLE: xlimit TEXT: TEXT: Gxlimit H_l_o_w_e_r _u_p_p_e_r TEXT: H The plot area in the x-direction is restricted to lie TEXT: H between _l_o_w_e_r and _u_p_p_e_r. The area actually used may be TEXT: H somewhat larger to provide nicely spaced grid lines, TEXT: H however. TEXT: H TEXT: SUBJECT: xlog TITLE: xlog TEXT: TEXT: Gxlog HUse a log scale for the x-axis and a linear scale for TEXT: H the y-axis. TEXT: H TEXT: SUBJECT: ydelta TITLE: ydelta TEXT: TEXT: Gydelta H_v_a_l_u_e TEXT: H Use the _v_a_l_u_e as the spacing between the grid lines on TEXT: H the y-axis. TEXT: H TEXT: SUBJECT: ylabel TITLE: ylabel TEXT: TEXT: Gylabel H_s_t_r_i_n_g TEXT: H Use the _s_t_r_i_n_g as the label for the y-axis. (By TEXT: H default none is printed.) TEXT: H TEXT: SUBJECT: ylimit TITLE: ylimit TEXT: TEXT: Gylimit H_l_o_w_e_r _u_p_p_e_r TEXT: H Limit the plot area in the y-direction to lie between TEXT: H _l_o_w_e_r and _u_p_p_e_r. It may be expanded slightly to allow TEXT: H for nicely spaced grid lines. TEXT: H TEXT: SUBJECT: ylog TITLE: ylog TEXT: TEXT: Gylog HUse a log scale for the y-axis and a linear scale for TEXT: H the x-axis. TEXT: H TEXT: SUBJECT: print TITLE: print TEXT: TEXT: Gprint H[ Gcol H] [ Gline H] [ _e_x_p_r ] ... TEXT: H Print the values of the given expressions to the stan- TEXT: H dard output. If Gcol His specified, print the values in TEXT: H columns, with the scale in the leftmost column on each TEXT: H page. If Gline His specified, print the value of each TEXT: H expression on one line (or more if needed). If all TEXT: H expressions have a length of 1, the default style is TEXT: H GlineH, otherwise Gcol His the default. TEXT: H TEXT: SUBJECT: quit TITLE: quit TEXT: TEXT: Gquit HExit the program. If there are circuits that are in TEXT: H the middle of a simulation, or plots that have not been TEXT: H saved in a file, the user is reminded of this and asked TEXT: H to confirm. (The variable Gnoaskquit Hdisables this.) TEXT: H TEXT: SEEALSO: nutmeg:noaskquit SUBJECT: rehash TITLE: rehash TEXT: TEXT: Grehash TEXT: H HRecalculate the internal hash tables used when looking TEXT: H up UNIX commands, and make all UNIX commands in the TEXT: H user's PATH available for command completion. This is TEXT: H a no-op unless you have the Gunixcom Hvariable set. TEXT: H TEXT: SEEALSO: nutmeg:unixcomcomm SEEALSO: nutmeg:unixcom SUBJECT: repeat TITLE: repeat TEXT: TEXT: Grepeat H[ _n_u_m_b_e_r ] TEXT: H Execute the statements in the block defined by this TEXT: H line and the corresponding Gend Hstatement _n_u_m_b_e_r times, TEXT: H or indefinitely if no _n_u_m_b_e_r is given. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: rusage TITLE: rusage TEXT: TEXT: Grusage H[ Gall H] [ _r_e_s_o_u_r_c_e ] ... TEXT: H Print out various resource usage statistics. If Gall His TEXT: H given as an argument, all the information available is TEXT: H printed. If no arguments are given, only total time TEXT: H and space usage are printed. Otherwise, information TEXT: H corresponding to each of the arguments is printed. The TEXT: H resource types recognised are given below. Note that TEXT: H many of them are available only with GspiceH, and some TEXT: H only available with UNIX. TEXT: H TEXT: SUBTOPIC: nutmeg:accept nutmeg:elapsed nutmeg:faults SUBTOPIC: nutmeg:loadtime nutmeg:lutime nutmeg:rejected SUBTOPIC: nutmeg:solvetime nutmeg:space nutmeg:time SUBTOPIC: nutmeg:totaltime nutmeg:totiter nutmeg:traniter SUBTOPIC: nutmeg:tranpoints nutmeg:transolvetime nutmeg:trantime SUBJECT: accept TITLE: accept TEXT: TEXT: Gaccept TEXT: H HThe number of accepted time points. TEXT: H TEXT: SUBJECT: elapsed TITLE: elapsed TEXT: TEXT: Gelapsed TEXT: H HThe total amount of time elapsed since the last Grusage TEXT: H elapsed Hcommand. TEXT: H TEXT: SUBJECT: faults TITLE: faults TEXT: TEXT: Gfaults TEXT: H HThe number of page faults caused by the program so far. TEXT: H TEXT: SUBJECT: loadtime TITLE: loadtime TEXT: TEXT: Gloadtime TEXT: H HThe amount of time spent loading the matrix. TEXT: H TEXT: SUBJECT: lutime TITLE: lutime TEXT: TEXT: Glutime TEXT: H HThe amount of time spent doing transient L-U decomposi- TEXT: H tion. TEXT: H TEXT: SUBJECT: rejected TITLE: rejected TEXT: TEXT: Grejected TEXT: H HThe number of rejected time points. TEXT: H TEXT: SUBJECT: solvetime TITLE: solvetime TEXT: TEXT: Gsolvetime TEXT: H HThe amount of time spent solving the matrix. TEXT: H TEXT: SUBJECT: space TITLE: space TEXT: TEXT: Gspace TEXT: H HThe amount of data space currently used by the program. TEXT: H TEXT: SUBJECT: time TITLE: time TEXT: TEXT: Gtime HThe amount of time spent so far doing the current TEXT: H analysis. TEXT: H TEXT: SUBJECT: totaltime TITLE: totaltime TEXT: TEXT: Gtotaltime TEXT: H HThe total amount of time spent by the program since it TEXT: H was started. TEXT: H TEXT: SUBJECT: totiter TITLE: totiter TEXT: TEXT: Gtotiter TEXT: H HThe total number of iterations. TEXT: H TEXT: SUBJECT: traniter TITLE: traniter TEXT: TEXT: Gtraniter TEXT: H HThe number of transient iterations. TEXT: H TEXT: SUBJECT: tranpoints TITLE: tranpoints TEXT: TEXT: Gtranpoints TEXT: H HThe number of transient time points. TEXT: H TEXT: SUBJECT: transolvetime TITLE: transolvetime TEXT: TEXT: Gtransolvetime TEXT: H HThe amount transient solve time. TEXT: H TEXT: SUBJECT: trantime TITLE: trantime TEXT: TEXT: Gtrantime TEXT: H HThe total transient time so far. TEXT: H TEXT: SUBJECT: set TITLE: set TEXT: TEXT: Gset H[ _v_a_r_n_a_m_e [ G= H_v_a_l_u_e ] ] ... TEXT: H The Gset Hcommand allows the user to examine and set TEXT: H variables. In the first form, the names and values of TEXT: H all the variables are printed. Some may be prefixed TEXT: H with a '*', which means that they are associated with TEXT: H the current plot, and will change when the current plot TEXT: H changes. Others may be prefixed by a '+', which means TEXT: H that they are associated with the current circuit. If TEXT: H a variable is defined which has the same name as one TEXT: H associated with the current plot or circuit, it takes TEXT: H precedence for printing with the Gset Hcommand and $ TEXT: H expansion, but it will not change the value used by the TEXT: H circuit. Some variables are read-only and may not be TEXT: H changed by the user. This is not indicated by the Gset TEXT: H Hcommand, however. TEXT: H TEXT: In the second form, where a _v_a_r_n_a_m_e is given, that TEXT: H variable is either set (with a 'true' boolean value), TEXT: H or given the _v_a_l_u_e specified. A value may be a number, TEXT: H a string, or a list of values. A string is anything TEXT: H which isn't a list or parsable as a number, and a list TEXT: H is surrounded by parentheses. The variables which have TEXT: H any meaning to Gnutmeg Hor Gspice Hare listed in the GVARI- TEXT: H ABLES Hsection of the manual. TEXT: H TEXT: SEEALSO: nutmeg:unset SEEALSO: nutmeg:variables SEEALSO: nutmeg:variablesub SUBJECT: setplot TITLE: setplot TEXT: TEXT: Gsetplot H[ _p_l_o_t_n_a_m_e ] TEXT: H Set the current plot to the plot with the given name, TEXT: H or if no name is given, prompt the user with a menu. TEXT: H Note that Gsetplot His a command script - it is possible TEXT: H to change the current plot by setting the variable Gcur- TEXT: H plotH. TEXT: H TEXT: SEEALSO: nutmeg:curplot SEEALSO: nutmeg:plotvars SUBJECT: settype TITLE: settype TEXT: TEXT: Gsettype H_t_y_p_e [ _v_e_c_t_o_r ] ... TEXT: H Change the type of the named vectors to _t_y_p_e. Type TEXT: H names can be found in the manual page for GsconvertH, or TEXT: H they may be defined with the Gdeftype Hcommand. TEXT: H TEXT: SUBJECT: shell TITLE: shell TEXT: TEXT: Gshell H[ _c_o_m_m_a_n_d ] ... TEXT: H Fork a shell, or execute the arguments as a command to TEXT: H the shell. This command works with both UNIX and VMS. TEXT: H TEXT: SEEALSO: nutmeg:unixcom SUBJECT: shift TITLE: shift TEXT: TEXT: Gshift H[ _v_a_r_n_a_m_e ] [ _n_u_m_b_e_r ] TEXT: H If _v_a_r_n_a_m_e is the name of a list variable, it is TEXT: H shifted to the left by _n_u_m_b_e_r elements. (I.e, the TEXT: H _n_u_m_b_e_r leftmost elements are removed.) The default TEXT: H _v_a_r_n_a_m_e is GargvH, and the default _n_u_m_b_e_r is 1. TEXT: H TEXT: SEEALSO: nutmeg:variables SUBJECT: show TITLE: show TEXT: TEXT: Gshow H[ _d_e_v_n_a_m_e ] ... G: H[ _p_a_r_m_n_a_m_e ] ... TEXT: H Print the named device parameters of the requested dev- TEXT: H ices. Either the device name list or the parameter TEXT: H name list may be GallH, and the device names may contain TEXT: H the G*, ?, Hand G[] Hwildcard characters. For lists of the TEXT: H parameters that the various devices recognise, see the TEXT: H SPICE3 User's Guide. TEXT: H TEXT: SEEALSO: nutmeg:alter SUBJECT: source TITLE: source TEXT: TEXT: Gsource H_f_i_l_e_n_a_m_e ... TEXT: H The Gsource Hcommand has two functions - it loads a cir- TEXT: H cuit description from a file or set of files, and it TEXT: H reads commands to be executed from a file. Since com- TEXT: H mands may be imbedded in circuit files, the two are TEXT: H treated in the same manner. Command lines must be sur- TEXT: H rounded by the lines G.control Hand G.endc Hin the file, or TEXT: H prefixed by G*# Hin order to be recognised as commands. TEXT: H (The exception to this rule is the file G.spiceinitH, TEXT: H which is known to contain only commands.) In either TEXT: H case, the first line in the file is ignored, so a com- TEXT: H mand script must begin with a blank line and then a TEXT: H G.control Hline. TEXT: H TEXT: SEEALSO: nutmeg:sourcepath SUBJECT: state TITLE: state TEXT: TEXT: Gstate TEXT: H HIt's not clear what this command should do. Currently TEXT: H it prints the name and status of the current curcuit. TEXT: H TEXT: SUBJECT: status TITLE: status TEXT: TEXT: Gstatus TEXT: H HPrint out a summary of all the Gtrace, stop, save, Hand TEXT: H Giplot Hcommands that are active. The numbers given may TEXT: H be used with the Gdelete Hcommand to de-activate the TEXT: H trace. TEXT: H TEXT: SEEALSO: spice:delete SEEALSO: spice:step SEEALSO: spice:iplot SEEALSO: spice:stop SUBJECT: step TITLE: step TEXT: TEXT: Gstep H[ _n_u_m_b_e_r ] TEXT: H Single-step the simulation, or let it run for _n_u_m_b_e_r TEXT: H time steps if a _n_u_m_b_e_r is given. TEXT: H TEXT: SEEALSO: spice:iplot SEEALSO: spice:stop SEEALSO: nutmeg:status SEEALSO: spice:delete SUBJECT: stop TITLE: stop TEXT: TEXT: Gstop H[ Gafter H_n_u_m ] [ Gwhen H_v_a_l_1 _o_p _v_a_l_2 ] ... TEXT: H Create a breakpoint. If an Gafter Hclause is given, the TEXT: H simulation will stop after _n_u_m points. If a Gwhen TEXT: H Hclause is included, at each point, the _v_a_l_1 _o_p _v_a_l_2 TEXT: H condition will be checked, and if it is true, the simu- TEXT: H lation will stop. If more than one Gwhen Hor Gafter TEXT: H Hclause is put on one line, the conjunction of the con- TEXT: H ditions is checked. The _v_a_ls may be either constants TEXT: H or node names. The possible _o_ps are: TEXT: H Geq Hor G= H(equal to) TEXT: H Gne Hor G<> H(not equal to) TEXT: H Ggt Hor G> H(greater than) TEXT: H Glt Hor G< H(less than) TEXT: H Gge Hor G>= H(greater than or equal to) TEXT: H Gle Hor G<= H(less than or equal to) TEXT: H TEXT: Note that for this command, < and > do not denote IO TEXT: H redirection. TEXT: H TEXT: SEEALSO: spice:step SEEALSO: spice:iplot SEEALSO: spice:delete SEEALSO: nutmeg:status SUBJECT: strcmp TITLE: strcmp TEXT: TEXT: Gstrcmp H_v_a_r_n_a_m_e _s_t_r_i_n_g_1 _s_t_r_i_n_g_2 TEXT: H The value of _v_a_r_n_a_m_e is set to a number that is greater TEXT: H than, equal to, or less than 0 according as _s_t_r_i_n_g_1 is TEXT: H lexically before, equal to, or after _s_t_r_i_n_g_2. This TEXT: H command is a very bad thing, but there seems to be no TEXT: H other way to do string comparisons given the restric- TEXT: H tions of the Gnutmeg Hcommand language. TEXT: H TEXT: SUBJECT: unalias TITLE: unalias TEXT: TEXT: Gunalias H[ _w_o_r_d ] ... TEXT: H Removes any aliases associated with all the _w_o_r_ds. The TEXT: H argument may be "*", in which case all aliases are TEXT: H deleted. TEXT: H TEXT: SEEALSO: nutmeg:alias SEEALSO: nutmeg:aliases SUBJECT: undefine TITLE: undefine TEXT: TEXT: Gundefine H[ _w_o_r_d ] ... TEXT: H Remove all the macro functions defined for the _w_o_r_ds. TEXT: H If the argument is "*", then all macro functions are TEXT: H deleted. Note that all functions with the given names TEXT: H are removed, so there is no way to delete a function TEXT: H with a particular arity without deleting all functions TEXT: H with that name. TEXT: H TEXT: SEEALSO: nutmeg:define SEEALSO: nutmeg:expressions SUBJECT: unlet TITLE: unlet TEXT: TEXT: Gunlet H[ _v_e_c_n_a_m_e ] ... TEXT: H All the named vectors are removed from the current TEXT: H plot. If you Gunlet Ha vector which is the default scale TEXT: H (e.g. GTIMEH), a random remaining vector will become the TEXT: H default scale. TEXT: H TEXT: SEEALSO: nutmeg:let SUBJECT: unset TITLE: unset TEXT: TEXT: Gunset H[ _v_a_r_n_a_m_e ] ... TEXT: H All the named variables are unset. The argument may be TEXT: H "*", in which case all variables are unset (although TEXT: H this is usually not something that you would want to TEXT: H do). TEXT: H TEXT: SEEALSO: nutmeg:set SEEALSO: nutmeg:variablesub SEEALSO: nutmeg:variables SUBJECT: version TITLE: version TEXT: TEXT: Gversion H[ _v_e_r_s_i_o_n _n_a_m_e ] TEXT: H With no arguments, this command prints out the current TEXT: H version of GspiceH. If there are arguments, it compares TEXT: H the current version with the given version and prints a TEXT: H warning if they differ. A Gversion Hcommand is usually TEXT: H included in the rawfile. TEXT: H TEXT: SUBJECT: while TITLE: while TEXT: TEXT: Gwhile H_c_o_n_d_i_t_i_o_n TEXT: H This command defines a block which is executed while TEXT: H the condition is true. TEXT: H TEXT: SEEALSO: nutmeg:proglang SUBJECT: write TITLE: write TEXT: TEXT: Gwrite H[ _f_i_l_e [ _e_x_p_r ] ... ] TEXT: H Writes out the _e_x_p_rs to the file. First vectors are TEXT: H grouped together by plots, and written out as such. TEXT: H (E.g, if the expression list contained three vectors TEXT: H from one plot and two from another, then two plots will TEXT: H be written, one with three vectors and one with two.) TEXT: H Additionally, if the scale for a vector isn't present, TEXT: H it is automatically written out as well. The default TEXT: H format is GasciiH, but this may be changed with Gset file- TEXT: H typeH. The default filename is GrawspiceH, or the argu- TEXT: H ment to the G-r Hflag on the command line, if there was TEXT: H one, and the default expression list is GallH. TEXT: H TEXT: SEEALSO: nutmeg:load SEEALSO: nutmeg:expressions SUBJECT: cshstuff TITLE: C-shell Like Features TEXT: TEXT: Various features are available in the Gnutmeg Hparser which TEXT: H are derived from the user interface of the C-Shell. These TEXT: H include IO redirection, history substitution, aliases, glo- TEXT: H bal substitution, and command completion. TEXT: H TEXT: SUBTOPIC: nutmeg:aliases nutmeg:ccom nutmeg:glob SUBTOPIC: nutmeg:historysub nutmeg:io nutmeg:quoting SUBTOPIC: nutmeg:semi nutmeg:unixcomcomm nutmeg:variablesub SUBJECT: aliases TITLE: Aliases TEXT: TEXT: After history expansion, if the first word on the command TEXT: H line has been defined as an alias, the text for which it is TEXT: H an alias for is substituted. The alias may contain refer- TEXT: H ences to the arguments provided on the command line, in TEXT: H which case the appropriate arguments are substituted in. If TEXT: H there are no such references, any arguments given are TEXT: H appended to the end of the alias text. TEXT: H TEXT: In the body if the alias text, any strings of the form TEXT: H G!:H_n_u_m_b_e_r are replaced with the _n_u_m_b_e_r'th argument of the TEXT: H actual command line. Note that when the alias is defined TEXT: H with the Galias Hcommand, these strings must be quoted to TEXT: H prevent history substitution from replacing the G!H's before TEXT: H the Galias Hcommand can get to them. TEXT: H TEXT: Thus the command TEXT: H TEXT: Galias Hfoo Gecho H'!:2' '!:1' TEXT: H TEXT: Causes "foo bar baz" to be replaced with "echo baz bar". TEXT: H Other G! Hmodifiers as described in the section on history TEXT: H substitution may also be used, always refering to the actual TEXT: H command line arguments given. TEXT: H TEXT: If a command line starts with a backslash (`\') any alias TEXT: H substitution is inhibited. TEXT: H TEXT: SEEALSO: nutmeg:alias SEEALSO: nutmeg:unalias SUBJECT: ccom TITLE: Command Completion TEXT: TEXT: With BSD UNIX, Tenex-style command completion is available. TEXT: H If GEOF H(control-D) is typed after the first character on the TEXT: H line, a list of the commands or possible arguments is TEXT: H printed. (If a control-D is typed as the first character on TEXT: H a line it will exit the program.) If an escape is typed, TEXT: H then the program will try to complete the word being typed TEXT: H based on the choices available, or if there is more than one TEXT: H posibility, it will complete as much as it can. Command TEXT: H completion knows about commands, most keywords, variable and TEXT: H vector names, file names, and several other types of argu- TEXT: H ments. TEXT: H TEXT: SEEALSO: spice:dashq SUBJECT: glob TITLE: Global Substitution TEXT: TEXT: The characters `~', `{', and `}' have the same effects as TEXT: H they do in the C-Shell, i.e., home directory and alternative TEXT: H expansion. The string ~_u_s_e_r at the beginning of a word is TEXT: H replaced by the given user's home directory, or if the first TEXT: H component of the pathname is simply ~, the current user's TEXT: H directory is used. The string TEXT: H _S_t_u_f_fG{H_S_t_r_i_n_g_1,_S_t_r_i_n_g_2,..._S_t_r_i_n_g_NG}H_M_o_r_e_s_t_u_f_f is replaced by TEXT: H the list of words _S_t_u_f_f_S_t_r_i_n_g_1_M_o_r_e_s_t_u_f_f TEXT: H _S_t_u_f_f_S_t_r_i_n_g_2_M_o_r_e_s_t_u_f_f ... _S_t_u_f_f_S_t_r_i_n_g_N_M_o_r_e_s_t_u_f_f. Curly TEXT: H braces may be nested. It is possible to use the wildcard TEXT: H characters G`*'H, G`?'H, G`['H, and G`]' Hto match filenames, where TEXT: H G`*' Hdenotes 0 or more characters, G`?' Hdenotes one character, TEXT: H and G[] Hdenotes a range of characters, but only if you Gunset TEXT: H noglob Hfirst. This makes them rather useless for typing TEXT: H algebraic expressions, so you should Gset noglob Hagain after TEXT: H you are done with wildcard expansion. Note that the pattern TEXT: H G[^abc] Hwill match all characters _e_x_c_e_p_t G`a', `b', Hand G`c'. TEXT: H HIdeally the parser should know which commands require TEXT: H filename arguments in which positions, and so glob expansion TEXT: H for those words only. TEXT: H TEXT: SEEALSO: nutmeg:noglob SUBJECT: historysub TITLE: History Substitution TEXT: TEXT: History substitutions are prefixed by the character G!H, or at TEXT: H the beginning of a line, the character G^H. Briefly, the TEXT: H string G!! His replaced by the previous command, the string TEXT: H G!H_p_r_e_f_i_x is replaced by the last command with that prefix, TEXT: H the string G!?H_p_a_t_t_e_r_n is replaced by the last command con- TEXT: H taining that pattern, the string G!H_n_u_m_b_e_r is replaced by the TEXT: H event with that number, and G^H_o_l_d_p_a_t_t_e_r_nG^H_n_e_w_p_a_t_t_e_r_n is TEXT: H replaced by the previous command with _n_e_w_p_a_t_t_e_r_n substituted TEXT: H for _o_l_d_p_a_t_t_e_r_n. TEXT: H TEXT: Additionally, a G!H_s_t_r_i_n_g sequence may be followed by a modif- TEXT: H ier prefixed with a G:H. This modifier may select one or more TEXT: H words from the event - :_1 selects the first word, :_2-_5 TEXT: H selects the second through the fifth word, :$ selects the TEXT: H last word, and :$-_0 selects all of the words but reverses TEXT: H their order. TEXT: H TEXT: Two other G: Hmodifiers are supported: :_p will cause the com- TEXT: H mand to be printed but not executed, and :_s^_o_l_d^_n_e_w will TEXT: H replace the pattern _o_l_d with the pattern _n_e_w. (The sequence TEXT: H ^_o_l_d^_n_e_w is synonymous with !!:_s^_o_l_d^_n_e_w.) TEXT: H TEXT: All the commands typed by the user are saved on the _h_i_s_t_o_r_y TEXT: H _l_i_s_t. This may be examined with the Ghistory Hcommand, and TEXT: H its maximum length changed by changing the value of the Ghis- TEXT: H tory Hvariable. TEXT: H TEXT: SEEALSO: nutmeg:historyvar SUBJECT: io TITLE: I/O Redirection TEXT: TEXT: The input to or output from commands may be changed from the TEXT: H terminal to a file by including an IO redirection on the TEXT: H command line. The possible redirections are: TEXT: H TEXT: > _f_i_l_e TEXT: H Sends the output of the command into the _f_i_l_e. TEXT: H TEXT: >> _f_i_l_e TEXT: H Appends output to the _f_i_l_e or creates it if it doesn't TEXT: H exist. TEXT: H TEXT: >& _f_i_l_e TEXT: H Sends both the output and the error messages to the TEXT: H _f_i_l_e. TEXT: H TEXT: >>& _f_i_l_e TEXT: H Appends both the output and the error messages to the TEXT: H _f_i_l_e. TEXT: H TEXT: < _f_i_l_e TEXT: H Reads input from the _f_i_l_e. TEXT: H TEXT: Both an input redirection and an output redirection may be TEXT: H present on a command line. More than one of each may not be TEXT: H present, however. IO redirections must be at the end of the TEXT: H command line. TEXT: H TEXT: SUBJECT: quoting TITLE: Quoting TEXT: TEXT: Words may be quoted with the characters " (double quote), ' TEXT: H (single quote), and ` (back quote). A word enclosed by any TEXT: H of these quotes may contain white space. A string enclosed TEXT: H by double quotes may have further special-character substi- TEXT: H tutions done on it, but it will be considered one word by TEXT: H the program. A number so quoted is considered a string. A TEXT: H string enclosed by single quotes also has all its special TEXT: H characters protected. Thus no glob expansion (*, ?, etc), TEXT: H variable expansion ($), or history substitution (^, !) will TEXT: H be done. Numbers are still considered numbers though. A TEXT: H string enclosed by backquotes is considered a command to the TEXT: H shell and is executed, and the output of the command TEXT: H repalaces the text. Obviously the command should not gen- TEXT: H erate too much output. This only works on UNIX systems. TEXT: H TEXT: SUBJECT: semi TITLE: Multiple Commands TEXT: TEXT: More than one command may be put on one line, seperated by TEXT: H semicolins (;). The semicolins must be isolated by white TEXT: H space, however. Thus a multi-command alias might be written TEXT: H _a_l_i_a_s _w_o_r_d '_c_o_m_m_a_n_d_1 ; _c_o_m_m_a_n_d_2 ; ...'. TEXT: H TEXT: SUBJECT: unixcomcomm TITLE: UNIX Commands TEXT: TEXT: If the variable Gunixcom His set and the operating system is TEXT: H BSD UNIX, commands which are not built-ins are considered TEXT: H UNIX commands and executed as if the program were a shell. TEXT: H However, using this option increases the start-up time of TEXT: H the program a lot. Probably Gspice Hshould not be used as a TEXT: H login shell. TEXT: H TEXT: SEEALSO: nutmeg:unixcom SEEALSO: nutmeg:commands SUBJECT: variablesub TITLE: Variable Substitution TEXT: TEXT: The values of variables may be used in commands by writing TEXT: H G$varname Hwhere the value of the variable is to appear. The TEXT: H special variables $$ and $< refer to the process ID of the TEXT: H program and a line of input which is read from the terminal TEXT: H when the variable is evaluated, respectively. If a variable TEXT: H has a name of the form $&_w_o_r_d, then _w_o_r_d is considered a TEXT: H vector, and its value is taken to be the value of the vari- TEXT: H able. If $_f_o_o is a valid variable, and is of type GlistH, TEXT: H then the expression $_f_o_o[_l_o_w-_h_i_g_h] represents a range of TEXT: H elements. Either the upper index or the lower may be left TEXT: H out, and the reverse of a list may be obtained with TEXT: H $_f_o_o[_l_e_n-_0]. Also, the notation $?_f_o_o evaluates to 1 if the TEXT: H variable _f_o_o is defined, 0 otherwise, and $#_f_o_o evaluates to TEXT: H the number of elements in _f_o_o if it is a list, 1 if it is a TEXT: H number or string, and 0 if it is a boolean variable. TEXT: H TEXT: SUBJECT: expressions TITLE: Expressions TEXT: TEXT: An expression is an algebraic combination of already defined TEXT: H vectors, constants, operations, and functions. The func- TEXT: H tions may be pre-defined functions or user-defined macros. TEXT: H TEXT: A vector must either be defined in the Gcurrent plot Hor be TEXT: H defined in the Gconstant plotH, a set of constants which are TEXT: H described below. A Gplot His a group of vectors that come TEXT: H from the same simulation or otherwise belong together. The TEXT: H current plot can be changed by the Gsetplot Hcommand, and is TEXT: H generally the results of the last simulation run or the con- TEXT: H tents of the last Grawfile Hloaded in. If no other plots are TEXT: H defined, the current plot is the constant plot. TEXT: H TEXT: The case of alphabetic characters in a vector name is not TEXT: H significant. TEXT: H TEXT: To reference vectors in a plot that is not the _c_u_r_r_e_n_t _p_l_o_t TEXT: H (see the Gsetplot Hcommand, below), the notation TEXT: H Gplotname.vecname Hcan be used. Either a plotname or a vector TEXT: H name may be the wildcard GallH. If the plotname is GallH, TEXT: H matching vectors from all plots are specified, and if the TEXT: H vector name is GallH, all vectors in the specified plots are TEXT: H referenced. (The Gconstant plot His never matched by a plot TEXT: H wildcard, however.) Note that you may not use binary opera- TEXT: H tions on expressions involving wildcards - it is not obvious TEXT: H what Gall + all Hshould denote, for instance. TEXT: H TEXT: In GspiceH, a vector name beginning with the `@' symbol is TEXT: H considered a reference to an internal device or model param- TEXT: H eter, or a circuit parameter. If the vector name is of the TEXT: H form G@H_n_a_m_eG[H_p_a_r_a_mG]H, this denotes the parameter _p_a_r_a_m of the TEXT: H device or model named _n_a_m_e. Of course, there must be a dev- TEXT: H ice or model with that name defined for the current circuit TEXT: H and _p_a_r_a_m must be a valid parameter name for that device or TEXT: H model type. See the SPICE3 User's Guide for a listing of TEXT: H the parameters available. If the vector name is of the form TEXT: H G@H_p_a_r_a_m, this refers to a parameter of the circuit with the TEXT: H name _p_a_r_a_m. Currently, the only parameters available are TEXT: H the resource variables described under the Grusage Hcommand. TEXT: H These vectors may be used as arguments to Gtrace, save, Hand TEXT: H Giplot Hin addition to GprintH. TEXT: H TEXT: A detailed description of the format a number may be written TEXT: H in can be found in the SPICE3 User's Guide - examples are TEXT: H G14.6MEG Hand G-1.231E-4H. Note that you can either use scien- TEXT: H tific notation or one of the abbreviations like _M_E_G or _G, TEXT: H but not both. A number may have trailing alphabetic charac- TEXT: H ters after it. TEXT: H TEXT: Vector names may be of the form _s_t_r_i_n_g(_s_o_m_e_t_h_i_n_g), if the TEXT: H _s_t_r_i_n_g is not the name of a built-in or user-defined func- TEXT: H tion. TEXT: H TEXT: Some examples of expressions are: TEXT: H TEXT: GcosH(TIME) + GdbH(v(3)) TEXT: H TEXT: GsinH(GcosH(GlogH(10))) TEXT: H TEXT: TIME * GrndH(v(9)) - 15 * GcosH(vin#branch) ^ 7.9e5 TEXT: H TEXT: Gnot H((ac3.FREQ[32] G& Htran1.TIME[10]) Ggt H3) TEXT: H TEXT: SUBTOPIC: nutmeg:constants nutmeg:functions nutmeg:operators SEEALSO: nutmeg:plot SEEALSO: nutmeg:print SUBJECT: constants TITLE: Constants TEXT: TEXT: The following values are defined in a plot called the Gcon- TEXT: H stant Hplot. This is the default plot if no rawfile has been TEXT: H loaded and no simulation has been run. Note that these con- TEXT: H stants are visible no matter what the current plot is, but TEXT: H they are overridden by a vector with the same name in the TEXT: H current plot. These values are in MKS units. TEXT: H TEXT: SUBTOPIC: nutmeg:boltz nutmeg:c nutmeg:e SUBTOPIC: nutmeg:echarge nutmeg:false nutmeg:i SUBTOPIC: nutmeg:kelvin nutmeg:no nutmeg:pi SUBTOPIC: nutmeg:planck nutmeg:true nutmeg:yes SUBJECT: boltz TITLE: boltz TEXT: TEXT: Gboltz TEXT: H HBoltzman's constant (1.38062e-23 joules/degree kelvin). TEXT: H TEXT: SUBJECT: c TITLE: c TEXT: TEXT: Gc HThe speed of light (2.997925e8 meters/second). TEXT: H TEXT: SUBJECT: e TITLE: e TEXT: TEXT: Ge HThe base of natural logarithms TEXT: H (2.71828182844590452353). TEXT: H TEXT: SUBJECT: echarge TITLE: echarge TEXT: TEXT: Gecharge TEXT: H HThe charge on an electron (1.60219e-19 coulombs). TEXT: H TEXT: SUBJECT: false TITLE: false TEXT: TEXT: Gfalse TEXT: H HDefined as 0. TEXT: H TEXT: SUBJECT: i TITLE: i TEXT: TEXT: Gi HThe square root of -1. In our expression syntax, this TEXT: H may also be written as G(0,1)H. TEXT: H TEXT: SUBJECT: kelvin TITLE: kelvin TEXT: TEXT: Gkelvin TEXT: H HAbsolute zero in centagrade (-273.15 degrees). TEXT: H TEXT: SUBJECT: no TITLE: no TEXT: TEXT: Gno HDefined as 0. TEXT: H TEXT: SUBJECT: pi TITLE: pi TEXT: TEXT: Gpi HPi (3.14159265358979323846). TEXT: H TEXT: SUBJECT: planck TITLE: planck TEXT: TEXT: Gplanck TEXT: H HPlanck's constant (6.62620e-34 joule-seconds). TEXT: H TEXT: SUBJECT: true TITLE: true TEXT: TEXT: Gtrue HDefined as 1. TEXT: H TEXT: SUBJECT: yes TITLE: yes TEXT: TEXT: Gyes HDefined as 1. TEXT: H TEXT: SUBJECT: functions TITLE: Functions TEXT: TEXT: The pre-defined functions available are listed below. In TEXT: H general, all operations and functions will work on either TEXT: H real or complex values. Operations such as the logarithm of TEXT: H a negative number will yield errors, however. TEXT: H TEXT: Note that all functions and operations operate pointwise on TEXT: H their arguments unless otherwise described. TEXT: H TEXT: SUBTOPIC: nutmeg:abs nutmeg:atan nutmeg:cos SUBTOPIC: nutmeg:db nutmeg:exp nutmeg:im SUBTOPIC: nutmeg:interpolate nutmeg:j nutmeg:length SUBTOPIC: nutmeg:ln nutmeg:log nutmeg:mag SUBTOPIC: nutmeg:mean nutmeg:norm nutmeg:ph SUBTOPIC: nutmeg:pos nutmeg:re nutmeg:rnd SUBTOPIC: nutmeg:sin nutmeg:sqrt nutmeg:tan SUBTOPIC: nutmeg:unitvec nutmeg:vector SUBJECT: abs TITLE: abs TEXT: TEXT: Gabs HAbsolute value. This is actually the same function as TEXT: H GmagH. TEXT: H TEXT: SUBJECT: atan TITLE: atan TEXT: TEXT: Gatan HArc tangent. This function (and all the trig func- TEXT: H tions) treat their arguments as radians unless the TEXT: H Gunits Hvariable is set to GdegreesH. TEXT: H TEXT: SUBJECT: cos TITLE: cos TEXT: TEXT: Gcos HThe cosine of the argument. TEXT: H TEXT: SUBJECT: db TITLE: db TEXT: TEXT: Gdb HDecibels (20.0 * log base 10 of the argument). TEXT: H TEXT: SUBJECT: exp TITLE: exp TEXT: TEXT: Gexp HE to the power of the argument. TEXT: H TEXT: SUBJECT: im TITLE: im TEXT: TEXT: Gim HThe imaginary part of the argument. TEXT: H TEXT: SUBJECT: interpolate TITLE: interpolate TEXT: TEXT: Ginterpolate TEXT: H HThis function takes its data and interpolates it onto a TEXT: H grid which is determined by the scale of the currently TEXT: H active plot. The degree is determined by the Gpolyde- TEXT: H gree Hvariable. This is especially useful if the argu- TEXT: H ment belongs to a plot which is not the current one. TEXT: H Some restrictions are that the current scale, the old TEXT: H scale, and the argument must be real, and that either TEXT: H both scales must be strictly increasing or strictly TEXT: H decreasing. TEXT: H TEXT: SUBJECT: j TITLE: j TEXT: TEXT: Gj HThe argument multiplied by the square root of -1. TEXT: H TEXT: SUBJECT: length TITLE: length TEXT: TEXT: Glength TEXT: H HThe length of the argument. TEXT: H TEXT: SUBJECT: ln TITLE: ln TEXT: TEXT: Gln HThe natural logarithm of the argument. TEXT: H TEXT: SUBJECT: log TITLE: log TEXT: TEXT: Glog HThe logarithm base 10 of the argument. TEXT: H TEXT: SUBJECT: mag TITLE: mag TEXT: TEXT: Gmag HThe magnitude of the argument. TEXT: H TEXT: SUBJECT: mean TITLE: mean TEXT: TEXT: Gmean HThe mean value of the elements in the argument. This TEXT: H returns a vector of length 1. TEXT: H TEXT: SUBJECT: norm TITLE: norm TEXT: TEXT: Gnorm HThe elements of the argument are all multiplied by the TEXT: H magnitude of the inverse of the largest argument. TEXT: H TEXT: SUBJECT: ph TITLE: ph TEXT: TEXT: Gph HThe phase of the argument (expressed in radians). TEXT: H TEXT: SUBJECT: pos TITLE: pos TEXT: TEXT: Gpos HThis function returns a vector which is 1 if the TEXT: H corresponding element of the argument has a non-0 real TEXT: H part, and 0 otherwise. TEXT: H TEXT: SUBJECT: re TITLE: re TEXT: TEXT: Gre HThe real part of the argument. TEXT: H TEXT: SUBJECT: rnd TITLE: rnd TEXT: TEXT: Grnd HThis function returns a vector which contains random TEXT: H values between 0 and the corresponding element of the TEXT: H argument. If the argument is complex then the random TEXT: H value is also complex. TEXT: H TEXT: SUBJECT: sin TITLE: sin TEXT: TEXT: Gsin HThe sine of the argument. TEXT: H TEXT: SUBJECT: sqrt TITLE: sqrt TEXT: TEXT: Gsqrt HThe square root of the argument. TEXT: H TEXT: SUBJECT: tan TITLE: tan TEXT: TEXT: Gtan HThe tangent of the argument. TEXT: H TEXT: SUBJECT: unitvec TITLE: unitvec TEXT: TEXT: Gunitvec TEXT: H HThis function returns a vector consisting of all 1's, TEXT: H with length equal to the magnitute of its argument. TEXT: H TEXT: SUBJECT: vector TITLE: vector TEXT: TEXT: Gvector TEXT: H HThis function returns a vector consisting of the TEXT: H integers from 0 up to the magnitude of its argument. TEXT: H This function and the Gunitvec Hfunction both examine TEXT: H only the first element of their arguments. TEXT: H TEXT: SUBJECT: operators TITLE: Operators TEXT: TEXT: The operations available are described below. They all take TEXT: H two operands, except for unary minus and unary negation (G~H). TEXT: H TEXT: SUBTOPIC: nutmeg:and nutmeg:comma nutmeg:divide SUBTOPIC: nutmeg:eq nutmeg:ge nutmeg:gt SUBTOPIC: nutmeg:ind nutmeg:le nutmeg:lt SUBTOPIC: nutmeg:minus nutmeg:mod nutmeg:ne SUBTOPIC: nutmeg:not nutmeg:or nutmeg:plus SUBTOPIC: nutmeg:power nutmeg:ran nutmeg:times SUBJECT: and TITLE: and TEXT: TEXT: Gand Hor G& TEXT: H H1 if both operands are non-zero, 0 otherwise. TEXT: H TEXT: SUBJECT: comma TITLE: comma TEXT: TEXT: G, H(comma) TEXT: H The notation _a G, H_b refers to the complex number with TEXT: H real part _a and imaginary part _b. Such a construction TEXT: H may not be used in the argument list to a macro func- TEXT: H tion, however, since commas are used to seperate the TEXT: H arguments and parentheses may be ignored. The expres- TEXT: H sion _a G+ j(H_bG) His equivalent. TEXT: H TEXT: SUBJECT: divide TITLE: divide TEXT: TEXT: G/ HThe first operand divided by the second. TEXT: H TEXT: SUBJECT: eq TITLE: eq TEXT: TEXT: Geq Hor G= TEXT: H H1 if both operands are equal, 0 otherwise. TEXT: H TEXT: SUBJECT: ge TITLE: ge TEXT: TEXT: Gge Hor G>= TEXT: H H1 if the first operand is greater than or equal to the TEXT: H second, 0 otherwise. TEXT: H TEXT: SUBJECT: gt TITLE: gt TEXT: TEXT: Ggt Hor G> TEXT: H H1 if the first operand is greater than the second, 0 TEXT: H otherwise. TEXT: H TEXT: SUBJECT: ind TITLE: ind TEXT: TEXT: _v_a_l_u_eG[H_i_n_d_e_xG] Hor _v_a_l_u_eG[H_l_o_w, _h_i_g_hG] TEXT: H HThe first notation refers to the _i_n_d_e_x'th element of TEXT: H _v_a_l_u_e. The second notation refers to all of the ele- TEXT: H ments of _v_a_l_u_e which fall between the _h_i_g_h'th and the TEXT: H _l_o_w'th element, inclusive. If _h_i_g_h is less than _l_o_w, TEXT: H the order of the elements in the result is reversed. TEXT: H Note that a complex _i_n_d_e_x will have the same effect as TEXT: H using the real part for the lower value and the ima- TEXT: H ginary part for the upper, since this is the way the TEXT: H parser reads this expression. TEXT: H TEXT: SUBJECT: le TITLE: le TEXT: TEXT: Gle Hor G<= TEXT: H H1 if the first argument is less than or equal to the TEXT: H second, 0 otherwise. TEXT: H TEXT: SUBJECT: lt TITLE: lt TEXT: TEXT: Glt Hor G< TEXT: H H1 if the first argument is less than the second, 0 oth- TEXT: H erwise. TEXT: H TEXT: SUBJECT: minus TITLE: minus TEXT: TEXT: G- HThe first argument minus the second. Also may be used TEXT: H as unary minus. TEXT: H TEXT: SUBJECT: mod TITLE: mod TEXT: TEXT: G% HThe modulo operation. The result is the remainder when TEXT: H the first number is divided by the second. Note that TEXT: H both arguments are rounded down to the nearest integer TEXT: H before the operation is performed. TEXT: H TEXT: SUBJECT: ne TITLE: ne TEXT: TEXT: Gne Hor G<> TEXT: H H1 if the two operands are not equal, 0 otherwise. TEXT: H TEXT: SUBJECT: not TITLE: not TEXT: TEXT: Gnot Hor G~ TEXT: H H1 if the operand is 0, 0 otherwise. TEXT: H TEXT: SUBJECT: or TITLE: or TEXT: TEXT: Gor Hor G| TEXT: H H1 if either of the two operands is 1, 0 otherwise. TEXT: H TEXT: SUBJECT: plus TITLE: plus TEXT: TEXT: G+ HThe plus operation. TEXT: H TEXT: SUBJECT: power TITLE: power TEXT: TEXT: G^ HThe first operand raised to the power of the second. TEXT: H Note that if the base is less than 0, the exponent must TEXT: H be an integer. TEXT: H TEXT: SUBJECT: ran TITLE: ran TEXT: TEXT: _v_a_l_u_e_1G[[H_v_a_l_u_e_2G]] Hor _v_a_l_u_eG[[H_l_o_w, _h_i_g_hG]] TEXT: H HThe first notation refers to all the elements of _v_a_l_u_e_1 TEXT: H for which the element of the corresponding scale equals TEXT: H _v_a_l_u_e_2. The second notation refers to all of the ele- TEXT: H ments of _v_a_l_u_e for which the corresponding elements of TEXT: H the scale fall between _h_i_g_h and _l_o_w, inclusive. If TEXT: H _h_i_g_h is less than _l_o_w, the order of the elements in the TEXT: H result is reversed. TEXT: H TEXT: SUBJECT: times TITLE: times TEXT: TEXT: G* HThe multiplication operation. TEXT: H TEXT: SUBJECT: graphics TITLE: Graphics TEXT: TEXT: GNutmeg Hcan make use of a number of graphics systems to TEXT: H display data for the Gplot Hand Ghardcopy Hcommands. Currently TEXT: H the X graphics system is the best supported and prefered TEXT: H interface, and MFB (Model Frame Buffer) is used for graphics TEXT: H terminals. The file format used by the Ghardcopy Hcommand is TEXT: H the UNIX _p_l_o_t(_5) format. TEXT: H TEXT: If the UNIX environment variable GDISPLAY His defined, it is TEXT: H assumed that an X workstation is available. Also, if the TEXT: H variable Gdisplay His set the value will be used as the name TEXT: H of the display to try to open. If neither of these is set, TEXT: H or if the program was not compiled with X, MFB is used for TEXT: H graphics. TEXT: H TEXT: SUBTOPIC: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: X TITLE: X TEXT: TEXT: When a plot is requested and X is available, a plot window TEXT: H is opened. If the variable Gmaxwins His set and there are TEXT: H already that many plot windows available, the oldest one is TEXT: H re-used. If the window being opened is the _nth window, and TEXT: H the variable GgeometryH_n is defined, then this string is used TEXT: H as the window's geometry (see the X documentation for a TEXT: H description of geometry specifications). Otherwise the user TEXT: H is prompted for the window's size and position: as usual, TEXT: H the left button will create the window with the default size TEXT: H and position, the middle button allows the user to drag the TEXT: H window open, and the right button allows the user to create TEXT: H a window of the default size at any location. The defaults TEXT: H are such that the window will be 1/3 the height and width of TEXT: H the screen, positioned in the center. TEXT: H TEXT: After the window is created and the data is plotted, the TEXT: H buttons have various functions. The left button causes a TEXT: H new plot command to be issued, with the limits on the x- and TEXT: H y-axis roughly 4 times the size of those in the first window TEXT: H (i.e, zoom out). The middle button causes the window to TEXT: H disappear. The right button allows the user to drag open a TEXT: H box (or circle), and then creates a new window which zooms TEXT: H in on this area. TEXT: H TEXT: If the cursor is positioned in a plot window and characters TEXT: H are typed on the keyboard, they will appear as text in the TEXT: H window in the same font as the other text. The cursor will TEXT: H move to the right as text is added, but due to the way X TEXT: H windows are handled by GnutmegH, text must be typed slowly so TEXT: H the cursor can keep up with it. This allows one to add text TEXT: H to a window or remove it with spaces before sending it to a TEXT: H printer with a window-dump program. TEXT: H TEXT: If a Ghardcopy Hcommand with no expressions is given, the user TEXT: H will be prompted to select a window which will be dumped TEXT: H into the file. TEXT: H TEXT: If a Ghelp Hwindow is also on the screen, all updates TEXT: H (refreshes, etc) in plot windows will be delayed until the TEXT: H help window is exited. TEXT: H TEXT: SEEALSO: nutmeg:help SUBJECT: hpux TITLE: HP-UX Notes TEXT: TEXT: GNutmeg Hruns on the HP series 9000 computers. TEXT: H TEXT: SUBJECT: input TITLE: Circuit Input Format TEXT: TEXT: The input format for SPICE is of the free format type. TEXT: H Fields on a line are separated by one or more blanks, a TEXT: H comma, an equal (=) sign, or a left or right parenthesis; TEXT: H extra spaces are ignored. A line may be continued by enter- TEXT: H ing a + (plus) in column 1 of the following line; SPICE con- TEXT: H tinues reading beginning with column 2. TEXT: H TEXT: A name field must begin with a letter (A through Z) and TEXT: H cannot contain any delimiters. SPICE is not case-sensitive. TEXT: H TEXT: A number field may be an integer field (12, -44), a TEXT: H floating point field (3.14159), either an integer or float- TEXT: H ing point number followed by an integer exponent (1E-14, TEXT: H 2.65E3), or either an integer or a floating point number TEXT: H followed by one of the following scale factors: TEXT: H TEXT: T = 1E12 G = 1E9 MEG = 1E6 K = 1E3 MIL = 25.4E-6 TEXT: H M = 1E-3 U = 1E-6 N = 1E-9 P = 1E-12 F = 1E-15 TEXT: H TEXT: TEXT: Letters immediately following a number that are not TEXT: H scale factors are ignored, and letters immediately following TEXT: H a scale factor are ignored. Hence, 10, 10V, 10VOLTS, and TEXT: H 10HZ all represent the same number, and M, MA, MSEC, and TEXT: H MMHOS all represent the same scale factor. Thus 1000, TEXT: H 1000.0, 1000HZ, 1E3, 1.0E3, 1KHZ, and 1K all represent the TEXT: H same number. TEXT: H TEXT: The circuit to be analyzed is described to SPICE by a TEXT: H set of _e_l_e_m_e_n_t _l_i_n_e_s, which define the circuit topology and TEXT: H element values, and a set of control lines, which define the TEXT: H model parameters and the run controls. The first line in TEXT: H the input file must be a title line, and the last line must TEXT: H be a G.END Hline. The order of the remaining lines is arbi- TEXT: H trary (except, of course, that continuation lines must TEXT: H immediately follow the line being continued, and element TEXT: H lines belonging to a subcircuit must be between the G.SUBCKT TEXT: H Hand G.ENDS Hlines for that subcircuit). TEXT: H TEXT: Each element in the circuit is specified by an element TEXT: H line that contains the element name, the circuit nodes to TEXT: H which the element is connected, and the values of the param- TEXT: H eters that determine the electrical characteristics of the TEXT: H element. The first letter of the element name specifies the TEXT: H element type. The format for the SPICE element types is TEXT: H given in what follows. The strings XXXXXXX, YYYYYYY, and TEXT: H ZZZZZZZ denote arbitrary alphanumeric strings. For example, TEXT: H a resistor name must begin with the letter `R' and can con- TEXT: H tain one or more characters. Hence, R, R1, RSE, ROUT, and TEXT: H R3AC2ZY are valid resistor names. TEXT: H TEXT: TEXT: Data fields that are enclosed in less than and greater TEXT: H than signs '< >' are optional. All indicated punctuation TEXT: H (parentheses, equal signs, etc.) is optional and merely TEXT: H indicate the presence of any delimiter. A consistent style TEXT: H such as that shown here will make the input easier to under- TEXT: H stand. With respect to branch voltages and currents, SPICE TEXT: H uniformly uses the associated reference convention (current TEXT: H flows in the direction of voltage drop). TEXT: H TEXT: Nodes names may be arbitrary character strings. The TEXT: H datum (ground) node must be named '0'. The circuit cannot TEXT: H contain a loop of voltage sources and/or inductors and can- TEXT: H not contain a cutset of current sources and/or capacitors. TEXT: H Each node in the circuit must have a dc path to ground. TEXT: H Every node must have at least two connections except for TEXT: H transmission line nodes (to permit unterminated transmission TEXT: H lines) and MOSFET substrate nodes (which have two internal TEXT: H connections anyway). TEXT: H TEXT: SUBTOPIC: nutmeg:comment nutmeg:endcard nutmeg:ic SUBTOPIC: nutmeg:include nutmeg:nodeset nutmeg:option SUBTOPIC: nutmeg:subckts nutmeg:titlecard SEEALSO: nutmeg:source SUBJECT: comment TITLE: Comment Lines TEXT: TEXT: An asterisk in the first column indicates that this TEXT: H line is a comment line. Comment lines may be placed any- TEXT: H where in the circuit description. TEXT: H TEXT: GGeneral Form: TEXT: H TEXT: * H_a_r_b_i_t_r_a_r_y _t_e_x_t TEXT: H TEXT: GExamples: TEXT: H TEXT: * HRF=1K GAIN SHOULD BE 100 TEXT: H G* HMAY THE FORCE BE WITH MY CIRCUIT TEXT: H TEXT: SUBJECT: endcard TITLE: End Line TEXT: TEXT: This line must always be the last line in the input TEXT: H file. Note that the period is an integral part of the name. TEXT: H TEXT: GExamples: TEXT: H TEXT: H.GEND TEXT: H TEXT: SUBJECT: ic TITLE: IC Line TEXT: TEXT: GGeneral form: TEXT: H TEXT: .IC HV(_N_O_D_N_U_M)=_V_A_L V(_N_O_D_N_U_M)=_V_A_L ... TEXT: H TEXT: GExamples: TEXT: H TEXT: .IC HV(11)=5 V(4)=-5 V(2)=2.2 TEXT: H TEXT: TEXT: This line is for setting transient initial conditions. TEXT: H It has two different interpretations, depending on whether TEXT: H the GUIC Hparameter is specified on the G.TRAN Hline. Also, one TEXT: H should not confuse this line with the G.NODESET Hline. The TEXT: H G.NODESET Hline is only to help dc convergence, and does not TEXT: H affect final bias solution (except for multi-stable cir- TEXT: H cuits). The two interpretations of this line are as fol- TEXT: H lows: TEXT: H TEXT: 1. When the GUIC Hparameter is specified on the G.TRAN Hline, TEXT: H then the node voltages specified on the G.IC Hline are TEXT: H used to compute the capacitor, diode, BJT, JFET, and TEXT: H MOSFET initial conditions. This is equivalent to TEXT: H specifying the GICH=... parameter on each device line, TEXT: H but is much more convenient. The GICH=... parameter can TEXT: H still be specified and will take precedence over the TEXT: H G.IC Hvalues. Since no dc bias (initial transient) solu- TEXT: H tion is computed before the transient analysis, one TEXT: H should take care to specify all dc source voltages on TEXT: H the G.IC Hline if they are to be used to compute device TEXT: H initial conditions. TEXT: H TEXT: 2. When the GUIC Hparameter is not specified on the G.TRAN TEXT: H Hline, the dc bias (initial transient) solution will be TEXT: H computed before the transient analysis. In this case, TEXT: H the node voltages specified on the Gbias solution. Dur- TEXT: H ing transient analysis, the constraint on these node TEXT: H voltages is removed. TEXT: H TEXT: SUBJECT: include TITLE: INCLUDE Line TEXT: TEXT: GGeneral form: TEXT: H TEXT: .INCLUDE H_F_I_L_E_N_A_M_E TEXT: H TEXT: GExamples: TEXT: H TEXT: .INCLUDE HMODELS.DEF TEXT: H TEXT: TEXT: This line causes the named file to be interpolated into TEXT: H the circuit at the point it appears. Included files may be TEXT: H nested arbitrarily. Comments are inserted into the circuit TEXT: H at the beginning and end of the included segments. TEXT: H TEXT: SUBJECT: nodeset TITLE: Nodeset Line TEXT: TEXT: GGeneral form: TEXT: H TEXT: .NODESET HV(_N_O_D_N_U_M)=_V_A_L V(_N_O_D_N_U_M)=_V_A_L ... TEXT: H TEXT: GExamples: TEXT: H TEXT: .NODESET HV(12)=4.5 V(4)=2.23 TEXT: H TEXT: TEXT: This line helps the program find the dc or initial TEXT: H transient solution by making a preliminary pass with the TEXT: H specified nodes held to the given voltages. The restriction TEXT: H is then released and the iteration continues to the true TEXT: H solution. A G.NODESET Hline may be necessary for convergence TEXT: H on bistable or astable circuits. In general, this line TEXT: H should not be necessary. TEXT: H TEXT: SUBJECT: option TITLE: Option Line TEXT: TEXT: GGeneral form: TEXT: H TEXT: .OPTIONS H_O_P_T_1 _O_P_T_2 ... (or _O_P_T=_O_P_T_V_A_L ...) TEXT: H TEXT: GExamples: TEXT: H TEXT: .OPTIONS HRELTOL=.005 TRTOL=8 TEXT: H TEXT: TEXT: This line allows the user to reset program control and TEXT: H user options for specific simulation purposes. TEXT: H TEXT: SEEALSO: nutmeg:set SUBJECT: pc TITLE: MS-DOS Notes TEXT: TEXT: GNutmeg Hruns on the IBM PC. TEXT: H TEXT: SUBJECT: proglang TITLE: The Command Language TEXT: TEXT: Gnutmeg Hcommands include constructs for looping, conditional TEXT: H execution, etc. Thus simple programs may be written and exe- TEXT: H cuted as scripts. As a programming language it is quite TEXT: H simple, however, and line oriented (all blocks must begin TEXT: H with some sort of control statement, like _i_f, and end with TEXT: H the _e_n_d statement). Because of GnutmegH's numeric orienta- TEXT: H tion, string variables are only minimally supported and are TEXT: H quite awkward to deal with. (See the Gstrcmp Hcommand.) TEXT: H TEXT: The following control structures are available: TEXT: H TEXT: TEXT: H Gwhile H_c_o_n_d_i_t_i_o_n TEXT: H _s_t_a_t_e_m_e_n_t TEXT: H ... TEXT: H Gend TEXT: H TEXT: HWhile _c_o_n_d_i_t_i_o_n, an arbitrary algebraic expression, is true, TEXT: H execute the _s_t_a_t_e_m_e_n_ts. TEXT: H TEXT: TEXT: H Grepeat H[_n_u_m_b_e_r] TEXT: H _s_t_a_t_e_m_e_n_t TEXT: H ... TEXT: H Gend TEXT: H TEXT: HExecute the _s_t_a_t_e_m_e_n_ts _n_u_m_b_e_r times, or forever if no argu- TEXT: H ment is given. TEXT: H TEXT: TEXT: H Gdowhile H_c_o_n_d_i_t_i_o_n TEXT: H _s_t_a_t_e_m_e_n_t TEXT: H ... TEXT: H Gend TEXT: H TEXT: HThe same as GwhileH, except that the _c_o_n_d_i_t_i_o_n is tested after TEXT: H the _s_t_a_t_e_m_e_n_ts are executed. TEXT: H TEXT: TEXT: H Gforeach H_v_a_r _v_a_l_u_e ... TEXT: H _s_t_a_t_e_m_e_n_t TEXT: H ... TEXT: H Gend TEXT: H TEXT: HThe _s_t_a_t_e_m_e_n_ts are executed once for each of the _v_a_l_u_es, TEXT: H each time with the variable _v_a_r set to the current one. TEXT: H (_v_a_r can be accessed by the $_v_a_r notation - see below). TEXT: H TEXT: TEXT: H Gif H_c_o_n_d_i_t_i_o_n TEXT: H _s_t_a_t_e_m_e_n_t TEXT: H ... TEXT: H Gelse TEXT: H H_s_t_a_t_e_m_e_n_t TEXT: H ... TEXT: H Gend TEXT: H TEXT: HIf the _c_o_n_d_i_t_i_o_n is non-zero then the first set of _s_t_a_t_e_- TEXT: H _m_e_n_ts are executed, otherwise the second set. The Gelse Hand TEXT: H the second set of _s_t_a_t_e_m_e_n_ts may be omitted. TEXT: H TEXT: Glabel H_w_o_r_d TEXT: H TEXT: If a _s_t_a_t_e_m_e_n_t of the form Ggoto H_w_o_r_d is encountered, control TEXT: H is transfered to this point, otherwise this is a no-op. TEXT: H TEXT: Ggoto H_w_o_r_d TEXT: H TEXT: If a statement of the form Glabel H_w_o_r_d is present in the TEXT: H block or an enclosing block, control is transfered there. TEXT: H Note that if the label is at the top level, it _m_u_s_t be TEXT: H before the Ggoto Hstatement (i.e, a forward Ggoto Hmay occur TEXT: H only within a block). TEXT: H TEXT: Gcontinue H[ _n_u_m_b_e_r ] TEXT: H TEXT: If there is a Gwhile, dowhile, Hor Gforeach Hblock enclosing TEXT: H this statement, control passes to the test, or in the case TEXT: H of GforeachH, the next value is taken. Otherwise an error TEXT: H results. If a _n_u_m_b_e_r is given, that many surrounding blocks TEXT: H are continued. If there are not that many blocks, an error TEXT: H results. TEXT: H TEXT: Gbreak H[ _n_u_m_b_e_r ] TEXT: H TEXT: If there is a Gwhile, dowhile, Hor Gforeach Hblock enclosing TEXT: H this statement, control passes out of the block. Otherwise TEXT: H an error results. If a _n_u_m_b_e_r is given, that many surround- TEXT: H ing blocks are continued. If there are not that many TEXT: H blocks, an error results. TEXT: H TEXT: Control structures may be nested. When a block is entered TEXT: H and the input is the terminal, the prompt becomes a number TEXT: H of >'s equalling the number of blocks the user has entered. TEXT: H The current control structures may be examined with the TEXT: H debugging command GcdumpH. TEXT: H TEXT: There are predefined aliases Gendif, endwhileH, and so on for TEXT: H all the above control statements if you prefer them over TEXT: H GendH. TEXT: H TEXT: If a word is typed as a command, and there is no built-in TEXT: H command with that name, the directories in the _s_o_u_r_c_e_p_a_t_h TEXT: H list are searched in order for the file. If it is found, it TEXT: H is read in as a command file (as if it were GsourceH'd). TEXT: H Before it is read, however, the variables _a_r_g_c and _a_r_g_v are TEXT: H set to the number of words following the filename on the TEXT: H command line, and a list of those words respectively. After TEXT: H the file is finished, these variables are GunsetH. Note that TEXT: H if one command file calls another, it must save its _a_r_g_v and TEXT: H _a_r_g_c since they will be altered. Also, command files should TEXT: H not be re-entrant since there are no local variables. (Of TEXT: H course, the procedures may explicitly manipulate a global TEXT: H stack.) This way one can write scripts analogous to shell TEXT: H scripts for Gnutmeg Hand Gspice HNote that for the script to TEXT: H work with GspiceH, it must begin with a blank line (or what- TEXT: H ever you like, since it will be thrown away) and then a line TEXT: H with G.control Hon it. This is an unfortunate result of the TEXT: H Gsource Hcommand being used for both circuit input and command TEXT: H file execution. Note also that this allows the user to TEXT: H merely type the name of a circuit file as a command, and it TEXT: H will be automatically loaded. TEXT: H TEXT: For examples of Gnutmeg H"programs", check the scripts pro- TEXT: H vided in the _s_c_r_i_p_t_s directory in the SPICE3 library. (This TEXT: H may be found in ~_c_a_d/_l_i_b/_s_p_i_c_e_3 on Berkeley machines.) TEXT: H Currently only the Gsetplot Hcommand is implemented as a TEXT: H script. TEXT: H TEXT: SEEALSO: nutmeg:commands SEEALSO: nutmeg:unixcomcomm SUBJECT: refs TITLE: References TEXT: TEXT: [1] A. Vladimirescu and S. Liu, "The Simulation of MOS TEXT: H Integrated Circuits Using SPICE2", ERL Memo No. ERL M80/7, TEXT: H Electronics Research Laboratory, University of California, TEXT: H Berkeley, Oct. 1980. TEXT: H TEXT: [2] B. J. Sheu, D. L. Scharfetter, and P. K. Ko, "SPICE2 TEXT: H Implementation of BSIM" ERL Memo No. ERL M85/42, Electronics TEXT: H Research Laboratory, University of California, Berkeley, May TEXT: H 1985. TEXT: H TEXT: [3] J. R. Pierret, "A MOS Parameter Extraction Program for TEXT: H the BSIM Model" ERL Memo Nos. ERL M84/99 and M84/100, Elec- TEXT: H tronics Research Laboratory, University of California, TEXT: H Berkeley, Nov. 1984. TEXT: H TEXT: [4] H.Statz et al.,"GaAs FET Device and Circuit Simulation TEXT: H in SPICE", Internal memorandum, Raytheon Research Division, TEXT: H Lexington, Mass. ,1985. TEXT: H TEXT: SUBJECT: sconvert TITLE: sconvert TEXT: TEXT: GNAME TEXT: H Hsconvert - convert spice formats TEXT: H TEXT: GSYNOPSIS TEXT: H sconvert fromtype fromfile totype tofile TEXT: H sconvert fromtype totype TEXT: H sconvert TEXT: H TEXT: DESCRIPTION TEXT: H Sconvert Htranslates spice output files among three formats: TEXT: H the old binary format, a new binary format, and a new ascii TEXT: H format. The formats are specified by the Gfromtype Hand TEXT: H Gtotype Harguments: `o' for the old format, `b' for the new TEXT: H binary format, and `a' for the new ascii format. GFromtype TEXT: H Hspecifies the format to be read, and Gtotype Hspecifies the TEXT: H format to be written. If Gfromfile Hand Gtofile Hare given, TEXT: H then they are used as the input and output, otherwise stan- TEXT: H dard input and output are used. (Note that this second TEXT: H option is only available on UNIX systems - on VMS and other TEXT: H systems you must supply the filenames.) If no arguments are TEXT: H given, the parameters are prompted for. TEXT: H TEXT: Binary format is the preferred format for general use, as it TEXT: H is the most economical in terms of space and speed of TEXT: H access, and ascii is provided to make it easy to modify data TEXT: H files and transfer them between machines with different TEXT: H floating-point formats. The old format is provided only for TEXT: H backward compatibility. TEXT: H TEXT: The ascii format consists of lines or sets of lines intro- TEXT: H duced by a keyword. The GTitle Hand GDate Hlines should be the TEXT: H first in the file and should occus only once. There may be TEXT: H any number of _p_l_o_t_s in the file, each one beginning with the TEXT: H GPlotnameH, GFlagsH, GNo. VariablesH, GNo. PointsH, GVariablesH, and TEXT: H GValues Hlines. GCommand Hand GOption Hlines are optional and may TEXT: H occur anywhere between the GPlotname Hand GValues Hlines. Note TEXT: H that after the GVariables Hkeyword there must be _n_u_m_v_a_r_s TEXT: H "declarations" of outputs, and after the GValues Hkeyword, TEXT: H there must be _n_u_m_p_o_i_n_t_s lines, each consisting of _n_u_m_v_a_r_s TEXT: H values. (If this is confusing just create an ascii rawfile TEXT: H with Gnutmeg Hand look at it...) TEXT: H GLine name Description TEXT: H HTitle An arbitrary string describing the circuit TEXT: H Date A free-format date string TEXT: H Plotname A string describing the analysis type - TEXT: H see the description for the Gdeftype TEXT: H nutmeg Hcommand TEXT: H Flags Currently, either Gcomplex Hor Greal TEXT: H HNo. Variables The number of variables (_n_u_m_v_a_r_s) TEXT: H No. Points The number of points (_n_u_m_p_o_i_n_t_s) TEXT: H Command An arbitrary nutmeg command TEXT: H Option Gnutmeg Hvariables TEXT: H Variables A number of variable lines (see below) TEXT: H Values A number of data lines (see below) TEXT: H TEXT: Any text on a GCommand Hline is executed when the file is TEXT: H loaded as if it were typed as a command. By default, Gspice TEXT: H Hputs a Gversion Hcommand into every rawfile it creates. TEXT: H TEXT: Text on a GOption Hline is parsed as if it were the arguments TEXT: H to a Gnutmeg set Hcommand. The variables set are then avail- TEXT: H able normally, except that they are read only and are asso- TEXT: H ciated with the plot (see the Gnutmeg Hdocumentation). TEXT: H TEXT: A variable line looks like _n_u_m_b_e_r _n_a_m_e _t_y_p_e_n_a_m_e [ _p_a_r_m=_v_a_l_u_e TEXT: H ] .... The _n_u_m_b_e_rs are irrelevant, the _n_a_m_e is the name by TEXT: H which this quantity will be refered to by GnutmegH, the TEXT: H Gtypename Hmay either a pre-defined type or one defined with TEXT: H the Gdeftype Hcommand, and the _p_a_r_m's are listed below. TEXT: H GPredefined Types TEXT: H TEXT: H HName Description SPICE2 Numeric Code TEXT: H TEXT: H notype Dimensionless value 0 TEXT: H time Time 1 TEXT: H frequency Frequency 2 TEXT: H voltage Voltage 3 TEXT: H Current Current 4 TEXT: H output-noise SPICE2 .noise result 5 TEXT: H input-noise SPICE2 .noise result 6 TEXT: H HD2 SPICE2 .disto result 7 TEXT: H HD3 SPICE2 .disto result 8 TEXT: H DIM2 SPICE2 .disto result 9 TEXT: H SIM2 SPICE2 .disto result 10 TEXT: H DIM3 SPICE2 .disto result 11 TEXT: H pole SPICE3 pz result 12 TEXT: H zero SPICE3 pz result 13 TEXT: H GParameters TEXT: H TEXT: H HName Description TEXT: H TEXT: H min Minimum significant value for this output TEXT: H max Maximum significant value for this output TEXT: H color The name of a color to use for this value TEXT: H scale The name of another output to use as the scale for this one TEXT: H grid The type of grid to use - numeric codes are: TEXT: H 0 Linear grid TEXT: H 1 Log-log grid TEXT: H 2 X-log/Y-linear grid TEXT: H 3 X-linear/Y-log grid TEXT: H 4 Polar grid TEXT: H 5 Smith grid TEXT: H plot The plotting style to use - numeric codes are: TEXT: H 0 Connected points TEXT: H 1 "Comb" style TEXT: H 2 Unconnected points TEXT: H dims The dimensions of this vector - not yet fully supported TEXT: H TEXT: If one of the flags is _c_o_m_p_l_e_x, the points look like r,i TEXT: H where r and i are floating point (in %e format). Otherwise TEXT: H they are in %e format. Only one of _r_e_a_l and _c_o_m_p_l_e_x should TEXT: H appear. TEXT: H TEXT: The lines are guaranteed to be less than 80 columns wide TEXT: H (unless the plot title or variable names are very long, or a TEXT: H large number of variable options are given), so this format TEXT: H is safe to mail between systems that enforce 80 character TEXT: H lines. TEXT: H TEXT: The binary format is similar to the ascii format in organi- TEXT: H zation, except that it is not readable (strings are NULL TEXT: H terminated instead of newline terminated) and the values are TEXT: H in the machine's double precision floating point format TEXT: H instead of in ascii. This makes it much easier to read and TEXT: H write and makes the file smaller. TEXT: H TEXT: The circuit title, date, and analysis type name in that TEXT: H order are at the start of the plot, each terminated by a TEXT: H NULL byte. Then the flags field (a _s_h_o_r_t, which is 1 for TEXT: H real data and 2 for complex data), the number of outputs, TEXT: H and the number of points (both _i_n_t_e_g_e_rs) are present. Fol- TEXT: H lowing this is a list of NULL-terminated strings which are TEXT: H command lines. This list is terminated by an extra NULL TEXT: H byte. Then come the options, which consist of the name, TEXT: H followed by the type and the value in binary. The output TEXT: H "declarations" consist of the name, type code, flags, color, TEXT: H grid type, plot type, and dimension information in that TEXT: H order. Next come the values, which are either doubles or TEXT: H pairs of doubles in the case of complex data. TEXT: H TEXT: The old format (which is used by SPICE2 with the -r option) TEXT: H is as follows: TEXT: H GOld TEXT: H TEXT: H HField(s) Size in Bytes TEXT: H TEXT: H title 80 TEXT: H date 8 TEXT: H time 8 TEXT: H numoutputs 2 TEXT: H the integer 4 2 TEXT: H output names 8 for each output TEXT: H types of output 2 for each output TEXT: H node index 2 for each output TEXT: H plot title 24 TEXT: H data numpoints * numoutputs * 8 TEXT: H TEXT: The data is in the form of double-precision numbers, or TEXT: H pairs of single-precision numbers if the data is complex. TEXT: H TEXT: The values recognised for the "types of output" fields are TEXT: H described in the GPredefined Values Htable above. TEXT: H TEXT: GSEE ALSO TEXT: H Hnutmeg(1), spice(1), writedata(3) TEXT: H TEXT: GAUTHOR TEXT: H HWayne Christopher (faustus@cad.berkeley.edu) TEXT: H TEXT: GBUGS TEXT: H HIf variable names and the title and plotname strings have TEXT: H trailing blanks in them they will be stripped off when the TEXT: H file is read, if it is in ascii format. TEXT: H TEXT: If a plot title begins with "Title:" Gnutmeg Hwill be fooled TEXT: H into thinking that this is an ascii format file. GSconvert TEXT: H Halways requires the type to be specified, however. TEXT: H TEXT: The binary format is not well-designed and may be changed in TEXT: H the future. TEXT: H TEXT: SUBJECT: variables TITLE: Variables TEXT: TEXT: There are many variables that have special meaning to the TEXT: H program. (Note the difference between a _v_a_r_i_a_b_l_e and a _v_e_c_- TEXT: H _t_o_r - a _v_a_r_i_a_b_l_e is manipulated with the commands _s_e_t and TEXT: H _u_n_s_e_t, and may be substituted in a command line with the $ TEXT: H notation. A _v_e_c_t_o_r is a datum which can be plotted, manipu- TEXT: H lated algebraicly, and so forth.) TEXT: H TEXT: A variable may also be set with the G.option Hline in the TEXT: H input file. A variable set in this manner is not specific TEXT: H to the circuit it appears in, however. TEXT: H TEXT: While any variable may be GsetH, only the following ones will TEXT: H have any significance to Gnutmeg Hor the simulator. In addi- TEXT: H tion to those described here, all circuit variables TEXT: H described in the GOptions Hsection of the SPICE3 User's Guide TEXT: H may be set in this manner. TEXT: H TEXT: SUBTOPIC: nutmeg:booleans nutmeg:lists nutmeg:numerics SUBTOPIC: nutmeg:plotvars nutmeg:strings SEEALSO: nutmeg:set SEEALSO: nutmeg:unset SEEALSO: nutmeg:variablesub SEEALSO: nutmeg:options SUBJECT: booleans TITLE: Booleans TEXT: TEXT: The following variables take boolean values (either are set TEXT: H or aren't). TEXT: H TEXT: SUBTOPIC: nutmeg:acct nutmeg:appendwrite nutmeg:cpdebug SUBTOPIC: nutmeg:dontplot nutmeg:ignoreeof nutmeg:list SUBTOPIC: nutmeg:noasciiplotvalue nutmeg:noaskquit nutmeg:nobjthack SUBTOPIC: nutmeg:nobreak nutmeg:noclobber nutmeg:node SUBTOPIC: nutmeg:noglob nutmeg:nogridvar nutmeg:nomoremode SUBTOPIC: nutmeg:nonomatch nutmeg:nopage nutmeg:noparse SUBTOPIC: nutmeg:noprintscale nutmeg:nosort nutmeg:nosubckt SUBTOPIC: nutmeg:opts nutmeg:renumber nutmeg:slowplot SUBTOPIC: nutmeg:strictnumparse nutmeg:ticmarks nutmeg:unixcom SUBJECT: acct TITLE: acct TEXT: TEXT: Gacct HWhen Gspice His run in batch mode, print out accounting TEXT: H information at the end of the run. TEXT: H TEXT: SEEALSO: nutmeg:rusage SUBJECT: appendwrite TITLE: appendwrite TEXT: TEXT: Gappendwrite TEXT: H HAppend to the file when a Gwrite Hcommand is issued, if TEXT: H the file already exists. TEXT: H TEXT: SEEALSO: nutmeg:write SUBJECT: cpdebug TITLE: cpdebug TEXT: TEXT: Gcpdebug TEXT: H HTurn on debugging in the C-shell parser. TEXT: H TEXT: SUBJECT: dontplot TITLE: dontplot TEXT: TEXT: Gdontplot TEXT: H HWhen a Gplot Hcommand is given, don't actually do any TEXT: H graphics operations. This is useful for debugging plot TEXT: H routines with a MFB device. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: ignoreeof TITLE: ignoreeof TEXT: TEXT: Gignoreeof TEXT: H HDon't exit the program when an EOF (control-D) is typed TEXT: H at the beginning of a line. TEXT: H TEXT: SUBJECT: list TITLE: list TEXT: TEXT: Glist HWhen Gspice His run in batch mode, list the circuit TEXT: H before running the simulation. This may be set with TEXT: H G.option list Hin the input file. TEXT: H TEXT: SEEALSO: spice:listing SUBJECT: noasciiplotvalue TITLE: noasciiplotvalue TEXT: TEXT: Gnoasciiplotvalue TEXT: H HDon't print the value of the first variable plotted TEXT: H with Gasciiplot Hon the left side of the graph. TEXT: H TEXT: SEEALSO: nutmeg:asciiplot SUBJECT: noaskquit TITLE: noaskquit TEXT: TEXT: Gnoaskquit TEXT: H HDon't ask the user if he really wants to quit when he TEXT: H has simulations in progress or unsaved data. TEXT: H TEXT: SEEALSO: nutmeg:quit SUBJECT: nobjthack TITLE: nobjthack TEXT: TEXT: Gnobjthack TEXT: H HDon't allow BJT's with only 3 nodes. (This only TEXT: H affects subcircuit expansion.) TEXT: H TEXT: SUBJECT: nobreak TITLE: nobreak TEXT: TEXT: Gnobreak TEXT: H HDon't add page breaks when doing an Gasciiplot Hor a TEXT: H Gprint colH. TEXT: H TEXT: SEEALSO: nutmeg:asciiplot SEEALSO: nutmeg:print SUBJECT: noclobber TITLE: noclobber TEXT: TEXT: Gnoclobber TEXT: H HWhen output is redirected with >, etc, don't overwrite TEXT: H an existing file. TEXT: H TEXT: SEEALSO: nutmeg:io SUBJECT: node TITLE: node TEXT: TEXT: Gnode HCauses the node table to be printed when Gspice His run TEXT: H in batch mode. This is currently unimplemented. TEXT: H TEXT: SUBJECT: noglob TITLE: noglob TEXT: TEXT: Gnoglob TEXT: H HDon't expand the characters G*H, G?H, G[H, and G] Hin an input TEXT: H line to match filenames. This is generally a good idea TEXT: H if you want to use G* Hfor arithmetic expressions. TEXT: H TEXT: SEEALSO: nutmeg:glob SUBJECT: nogridvar TITLE: nogrid TEXT: TEXT: Gnogrid TEXT: H HDon't print a grid when plotting data. This should be TEXT: H a keyword for the Gplot Hcommand. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: nomoremode TITLE: nomoremode TEXT: nomoremode TEXT: When more output is generated by a single command than TEXT: will fit on the screen, pause and wait for the user to TEXT: type a carriage return. The following commands are TEXT: also recognised: TEXT: TEXT: q Discard the rest of the output. TEXT: c Print the rest of the output without pausing. TEXT: ? Print a help message. TEXT: TEXT: Note that setting this variable will turn off _m_o_r_e TEXT: _m_o_d_e, _a_n_d _a_l_l _o_u_t_p_u_t _w_i_l_l _b_e _p_r_i_n_t_e_d _w_i_t_h_o_u_t _a_n_y TEXT: _p_a_u_s_e_s. TEXT: SUBJECT: nonomatch TITLE: nonomatch TEXT: TEXT: Gnonomatch TEXT: H HDon't complain when a glob expression (one containing TEXT: H G*H, G?H, G[H, or G]H) doesn't match anything. The unexpanded TEXT: H expression is left unchanged. TEXT: H TEXT: SEEALSO: nutmeg:glob SUBJECT: nopage TITLE: nopage TEXT: TEXT: Gnopage TEXT: H HThis is the same as the Gnobreak Hoption. TEXT: H TEXT: SEEALSO: nutmeg:nobreak SUBJECT: noparse TITLE: noparse TEXT: TEXT: Gnoparse TEXT: H HDon't parse a circuit when loading it. The circuit TEXT: H cannot be simulated if it isn't parsed. TEXT: H TEXT: SEEALSO: nutmeg:source SUBJECT: noprintscale TITLE: noprintscale TEXT: TEXT: Gnoprintscale TEXT: H HWhen doing a Gprint colH, don't print the scale in the TEXT: H leftmost column of each page. TEXT: H TEXT: SEEALSO: nutmeg:print SUBJECT: nosort TITLE: nosort TEXT: TEXT: Gnosort TEXT: H HDon't sort alphabetically when doing a Gdisplay Hcommand. TEXT: H TEXT: SEEALSO: nutmeg:display SUBJECT: nosubckt TITLE: nosubckt TEXT: TEXT: Gnosubckt TEXT: H HDon't expand subcircuits. A circuit with subcircuits TEXT: H cannot be parsed if this is set. TEXT: H TEXT: SUBJECT: opts TITLE: opts TEXT: TEXT: Gopts HWhen Gspice His run in batch mode, print out all the TEXT: H variables set and their values. TEXT: H TEXT: SEEALSO: nutmeg:set SEEALSO: nutmeg:variables SEEALSO: nutmeg:batchmode SUBJECT: renumber TITLE: renumber TEXT: TEXT: Grenumber TEXT: H HAfter expanding subcircuits, renumber all the lines TEXT: H sequentially. TEXT: H TEXT: SEEALSO: spice:listing SUBJECT: slowplot TITLE: slowplot TEXT: TEXT: Gslowplot TEXT: H HPause after plotting each value and wait for the user TEXT: H to type a carriage return. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: strictnumparse TITLE: strictnumparse TEXT: TEXT: Gstrictnumparse TEXT: H HDon't allow trailing characters after a number, unless TEXT: H they are seperated from the number with an underscore TEXT: H (`_'). This may prevent some errors like writing TEXT: H G1meter Hand expecting it to have a value of 1. TEXT: H TEXT: SEEALSO: nutmeg:expressions SUBJECT: ticmarks TITLE: ticmarks TEXT: TEXT: Gticmarks TEXT: H HPrint an 'x' every ten points for each curve plotted. TEXT: H This variable may also be set to a number, which is the TEXT: H number of points between each tic mark. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: unixcom TITLE: unixcom TEXT: TEXT: Gunixcom TEXT: H HIf a command is given which is not a built-in command, TEXT: H try to execute it as a UNIX command. Setting this TEXT: H option increases the start-up time of the program a TEXT: H great deal, since all commands in the user's path are TEXT: H added to the command completion data structures, which TEXT: H are rather slow to update. TEXT: H TEXT: SEEALSO: nutmeg:unixcomcomm SUBJECT: lists TITLE: Lists TEXT: TEXT: The following variables take on lists as values. A list is TEXT: H surrounded by parentheses, and may contain any variable TEXT: H types as elements. TEXT: H TEXT: SUBTOPIC: nutmeg:debug nutmeg:plots nutmeg:sourcepath SUBJECT: debug TITLE: debug TEXT: TEXT: Gdebug TEXT: H HThis variable may be a boolean, in which case all TEXT: H debugging is turned on, a string, in which case the TEXT: H string specifies which part of the program for which to TEXT: H turn on debugging, or a list of these strings, which TEXT: H turns on any combination of debuggings. The possible TEXT: H values are: TEXT: H TEXT: Gsiminterface HThe interface to the simulator. TEXT: H Gcshpar HThe C-shell pre-processor and parser. TEXT: H Gparser HThe parser for expressions. TEXT: H Geval HThe expression evaluation routines. TEXT: H Gvecdb HThe vector database. TEXT: H Ggraf HThe plotting routines. TEXT: H Gginterface HGraphics package interface routines. TEXT: H Gcontrol HThe control structure code. TEXT: H Gasync HThe Gaspice Hand Grspice Hcode. TEXT: H TEXT: SUBJECT: plots TITLE: plots TEXT: TEXT: Gplots TEXT: H HThis variable is read-only, and contains the names of TEXT: H the plots available. The variable Gcurplot Hmay be set TEXT: H to any of these, or the word GnewH, in which case it TEXT: H creates a new, empty plot. TEXT: H TEXT: SEEALSO: nutmeg:curplot SUBJECT: sourcepath TITLE: sourcepath TEXT: TEXT: Gsourcepath TEXT: H HThe set of directories that will be searched when a TEXT: H Gsource Hcommand or a command that may be the invocation TEXT: H of a script is given. TEXT: H TEXT: SEEALSO: nutmeg:source SUBJECT: numerics TITLE: Numerics TEXT: TEXT: The following variables take numeric values. No distinction TEXT: H is made at the user level between floating point numbers and TEXT: H integers. TEXT: H TEXT: SUBTOPIC: nutmeg:abstol nutmeg:cptime nutmeg:fourgridsize SUBTOPIC: nutmeg:gridsize nutmeg:height nutmeg:helpxpos SUBTOPIC: nutmeg:helpypos nutmeg:historyvar nutmeg:maxwins SUBTOPIC: nutmeg:nfreqs nutmeg:numdgt nutmeg:polydegree SUBTOPIC: nutmeg:polysteps nutmeg:rawfileprec nutmeg:reltol SUBTOPIC: nutmeg:vntol nutmeg:width nutmeg:xbrushheight SUBTOPIC: nutmeg:xbrushwidth SUBJECT: abstol TITLE: abstol TEXT: TEXT: Gabstol TEXT: H HThe absolute tolerance used by the Gdiff Hcommand. Also TEXT: H the Gspice Hoption described in the SPICE3 User's Guide. TEXT: H TEXT: SEEALSO: nutmeg:diff SEEALSO: nutmeg:abstol SUBJECT: cptime TITLE: cptime TEXT: TEXT: Gcptime TEXT: H HThe total amount of CPU time to allow for a simulation. TEXT: H TEXT: SUBJECT: fourgridsize TITLE: fourgridsize TEXT: TEXT: Gfourgridsize TEXT: H HWhen a Gfourier Hcommand is given, the data is first TEXT: H interpolated onto a linear grid. The size of the grid TEXT: H is given by this variable. The default is 200. TEXT: H TEXT: SEEALSO: nutmeg:fourier SUBJECT: gridsize TITLE: gridsize TEXT: TEXT: Ggridsize TEXT: H HIf this variable is set, it causes all data plotted to TEXT: H be interpolated onto a grid of this size. The degree TEXT: H of the interpolation is given by the variable Gpolyde- TEXT: H greeH. TEXT: H TEXT: SEEALSO: nutmeg:plot SEEALSO: nutmeg:polydegree SUBJECT: height TITLE: height TEXT: TEXT: Gheight TEXT: H HThe height of a page to use when printing the output of TEXT: H Gasciiplot Hor Gprint colH. The default is 60. TEXT: H TEXT: SEEALSO: nutmeg:asciiplot SEEALSO: nutmeg:print SUBJECT: helpxpos TITLE: helpxpos TEXT: helpxpos TEXT: The starting X-position of the top-level help window. TEXT: The default is with the upper left corner at (100, TEXT: 100). TEXT: SEEALSO: nutmeg:help SEEALSO: nutmeg:helpypos SUBJECT: helpypos TITLE: helpypos TEXT: helpxpos TEXT: The starting Y-position of the top-level help window. TEXT: The default is with the upper left corner at (100, TEXT: 100). TEXT: SEEALSO: nutmeg:help SEEALSO: nutmeg:helpxpos SUBJECT: historyvar TITLE: history variable TEXT: TEXT: Ghistory TEXT: H HThe number of events to save on the history list. The TEXT: H default is 1000. TEXT: H TEXT: SEEALSO: nutmeg:historycomm SEEALSO: nutmeg:historyvar SUBJECT: maxwins TITLE: maxwins TEXT: TEXT: Gmaxwins TEXT: H HThe maximum number of X windows to create. If this TEXT: H many windows are already on the screen and another is TEXT: H requested, the oldest one is re-used. TEXT: H TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: nfreqs TITLE: nfreqs TEXT: TEXT: Gnfreqs TEXT: H HHow many multiples of the fundamental frequency to TEXT: H print in the Gfourier Hcommand. The default is 10. TEXT: H TEXT: SEEALSO: nutmeg:fourier SUBJECT: numdgt TITLE: numdgt TEXT: TEXT: Gnumdgt TEXT: H HHow many significant digits to print for GfourierH, Gprint TEXT: H colH, etc output. The default is 6. TEXT: H TEXT: SEEALSO: nutmeg:print SEEALSO: nutmeg:fourier SUBJECT: polydegree TITLE: polydegree TEXT: TEXT: Gpolydegree TEXT: H HThis variable determines the degree of the polynomial TEXT: H that is fit to points when a plot is done. If it is TEXT: H not set or set to 1, then the points are connected by TEXT: H lines. If it is greater than 1, then a polynomial TEXT: H curve is fit to the points. If the value of Gpolydegree TEXT: H His _n, then for each _n + 1 adjacent points, a _nth degree TEXT: H curve is fit. If this is not possible (due to the fact TEXT: H that the points aren't monotonic), the curve is rotated TEXT: H 90 degrees and another attempt is made. If is is still TEXT: H unsucessful, _n is decreased by 1 and the process is TEXT: H repeated. Thus four points in the shape of a diamond TEXT: H may be fit with quadratics to approximate a circle. TEXT: H (Although it's not clear that this situation comes up TEXT: H often in circuit simulation.) The variable Ggridsize TEXT: H Hdetermines the size of the grid on which the curve is TEXT: H fit (if the data is monotonic). TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: polysteps TITLE: polysteps TEXT: TEXT: Gpolysteps TEXT: H HThe number of intermediate points to plot between each TEXT: H actual point used for interpolation. The default is TEXT: H 10. Note that if interpolation is used for plotting, TEXT: H the Gticmarks Hfeature is disabled. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: rawfileprec TITLE: rawfileprec TEXT: TEXT: Grawfileprec TEXT: H HThe number of digits to use in the ascii rawfile for- TEXT: H mat. The default is 15, which should be enough. TEXT: H TEXT: SEEALSO: nutmeg:write SUBJECT: reltol TITLE: reltol TEXT: TEXT: Greltol TEXT: H HThe relative tolerance used by the Gdiff Hcommand. See TEXT: H the SPICE3 User's Guide. TEXT: H TEXT: SEEALSO: nutmeg:diff SEEALSO: nutmeg:reltol SUBJECT: vntol TITLE: vntol TEXT: TEXT: Gvntol TEXT: H HThe absolute voltage tolerance used for the Gdiff Hcom- TEXT: H mand. See the SPICE3 User's Guide. TEXT: H TEXT: SEEALSO: nutmeg:diff SEEALSO: nutmeg:vntol SUBJECT: width TITLE: width TEXT: TEXT: Gwidth TEXT: H HThe width of a page to use when printing the output of TEXT: H Gasciiplot Hor Gprint colH. The default is 130. TEXT: H TEXT: SEEALSO: nutmeg:print SEEALSO: nutmeg:asciiplot SUBJECT: xbrushheight TITLE: xbrushheight TEXT: TEXT: Gxbrushheight TEXT: H HThe height of the "brush" used by X to plot data. The TEXT: H default is 1. TEXT: H TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: xbrushwidth TITLE: xbrushwidth TEXT: TEXT: Gxbrushwidth TEXT: H HThe width of the "brush" used by X to plot data. The TEXT: H default is 1. TEXT: H TEXT: SEEALSO: nutmeg:plot SEEALSO: nutmeg:X SUBJECT: plotvars TITLE: Plot-specific Variables TEXT: TEXT: The following variables are specific to each plot. When the TEXT: H current plot changes, these variables take on new values, TEXT: H and they cannot be altered by the user. In addition to TEXT: H these variables, any variables defined in the rawfile on a TEXT: H GOption: Hline are associated with the plot and are read-only, TEXT: H but variables defined by a GCommand: set ... Hline are not. TEXT: H TEXT: SUBTOPIC: nutmeg:curplot nutmeg:curplotdate nutmeg:curplotname SUBTOPIC: nutmeg:curplottitle SUBJECT: curplot TITLE: curplot TEXT: TEXT: Gcurplot TEXT: H HThe name of the currently active plot. TEXT: H TEXT: SEEALSO: nutmeg:plots SEEALSO: nutmeg:setplot SUBJECT: curplotdate TITLE: curplotdate TEXT: TEXT: Gcurplotdate TEXT: H HThe date associated with the currently active plot. TEXT: H This is generally the date of the simulation. TEXT: H TEXT: SUBJECT: curplotname TITLE: curplotname TEXT: TEXT: Gcurplotname TEXT: H HThe type name of the currently active plot. Note that TEXT: H this is Gnot Hthe name used by GsetplotH, but rather an TEXT: H English description of the type of simulation done. TEXT: H TEXT: SUBJECT: curplottitle TITLE: curplottitle TEXT: TEXT: Gcurplottitle TEXT: H HThe title of the circuit associated with the currently TEXT: H active plot. TEXT: H TEXT: SUBJECT: strings TITLE: Strings TEXT: TEXT: These variables take on strings as values. TEXT: H TEXT: SUBTOPIC: nutmeg:color nutmeg:device nutmeg:xdisplay SUBTOPIC: spice:editor nutmeg:filetype nutmeg:geometry SUBTOPIC: nutmeg:gridstyle nutmeg:hbfont nutmeg:hbstyle SUBTOPIC: nutmeg:hcopydev nutmeg:helpboldfont nutmeg:helpitalicfont SUBTOPIC: nutmeg:helpregfont nutmeg:helptitlefont nutmeg:modelcard SUBTOPIC: nutmeg:plotstyle nutmeg:pointchars nutmeg:program SUBTOPIC: nutmeg:prompt nutmeg:rawfile nutmeg:rhost SUBTOPIC: nutmeg:rprogram nutmeg:spicepath nutmeg:subend SUBTOPIC: nutmeg:subinvoke nutmeg:substart nutmeg:term SUBTOPIC: nutmeg:units nutmeg:xfont SUBJECT: color TITLE: color TEXT: TEXT: GcolorH_n_u_m_b_e_r TEXT: H If a variable with the name GcolorH_n_u_m_b_e_r is set to the TEXT: H name of a color recognised by X (see the file TEXT: H G/usr/lib/rgb.txt Hfor a list of such colors), the TEXT: H _n_u_m_b_e_r'th value plotted in a window will have this TEXT: H color. Gcolor0 Hdenotes the background color and Gcolor1 TEXT: H Hdenotes the grid and text color. TEXT: H TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: device TITLE: device TEXT: TEXT: Gdevice TEXT: H HThe path name of the graphics device for MFB to use for TEXT: H plotting, or the display name for X to use. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: xdisplay TITLE: display TEXT: TEXT: Gdisplay TEXT: H HThe display name for X to use for plotting, generally TEXT: H of the form _h_o_s_t:_n_u_m_b_e_r. TEXT: H TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: filetype TITLE: filetype TEXT: TEXT: Gfiletype TEXT: H HThe type of rawfile that the Gwrite Hcommand should TEXT: H create. Currently the only types supported are Gascii TEXT: H Hand GbinaryH. TEXT: H TEXT: SEEALSO: nutmeg:write SUBJECT: geometry TITLE: geometry TEXT: TEXT: Ggeometry TEXT: H HThe X geometry specification to use for creating win- TEXT: H dows. This is of the form TEXT: H G=H_h_e_i_g_h_tGxH_w_i_d_t_hG+H_x_o_f_f_s_e_tG+H_y_o_f_f_s_e_t. Note that the G= Hmust be TEXT: H included in the string. Also, variables of the form TEXT: H GgeometryH_n_u_m_b_e_r may be set, which determine the geometry TEXT: H to use for the _n_u_m_b_e_rth window created. TEXT: H TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: gridstyle TITLE: gridstyle TEXT: gridstyle TEXT: This variable is used to determine the style of grid TEXT: used by the commands plot, hardcopy, and asciiplot, if TEXT: no grid style keywords are given on the command line. TEXT: Possible values are: TEXT: lingrid Use a linear grid TEXT: loglog Use a log scales for both axes TEXT: xlog Use a log scale for the X axis TEXT: ylog Use a log scale for the Y axis TEXT: nogrid Don't draw any grid (but draw the data on a linear scale) TEXT: SEEALSO: nutmeg:plot SUBJECT: hbfont TITLE: helpbuttonfont TEXT: helpbuttonfont TEXT: The name of the X font to use for the labels in the TEXT: buttons in the help system. The default is "6x10". TEXT: SUBJECT: hbstyle TITLE: helpbuttonstyle TEXT: helpbuttonstyle TEXT: This option controls the style of layout that the help TEXT: system will use for formatting sub-topic and see-also TEXT: buttons. If it is left, buttons in a column will be TEXT: aligned on their left sides. If it is center, columns TEXT: of buttons will be centered around their midlines. If TEXT: it is unif, buttons in a column will all be the same TEXT: size and the text will be centered within each button. TEXT: The default is left. TEXT: SEEALSO: nutmeg:help SUBJECT: hcopydev TITLE: hcopydev TEXT: TEXT: Ghcopydev TEXT: H HIf this variable is set to the name of a printer (the TEXT: H name used in the G-P Hoption to GlprH), it directs the TEXT: H Ghardcopy Hcommand to immediately send the raster file to TEXT: H this printer. This works only on UNIX. TEXT: H TEXT: SEEALSO: nutmeg:hardcopy SUBJECT: helpboldfont TITLE: helpboldfont TEXT: helpboldfont TEXT: The name of the X font to use for bold characters in TEXT: the help system. The default is "timrom12b". Note TEXT: that this font should have the same height as the regu- TEXT: lar and italic fonts. TEXT: SUBJECT: helpitalicfont TITLE: helpitalicfont TEXT: helpitalicfont TEXT: The name of the X font to use for italic characters in TEXT: the help system. The default is "timrom12i". Note TEXT: that this font should have the same height as the regu- TEXT: lar and bold fonts. TEXT: SUBJECT: helpregfont TITLE: helpregfont TEXT: helpregfont TEXT: The name of the X font to use for regular characters in TEXT: the help system. The default is "timrom12". Note TEXT: that this font should have the same height as the bold TEXT: and italic fonts. TEXT: SUBJECT: helptitlefont TITLE: helptitlefont TEXT: helptitlefont TEXT: The name of the X font to use for titles in the help TEXT: system. The default is "accordb". TEXT: SUBJECT: modelcard TITLE: modelcard TEXT: TEXT: Gmodelcard TEXT: H HThe name of the line used to introduce a model, gen- TEXT: H erally G.modelH. TEXT: H TEXT: SUBJECT: plotstyle TITLE: plotstyle TEXT: plotstyle TEXT: This variable is used to determine the plot style if no TEXT: plotstyle keyword is given on the command line for the TEXT: commands plot, hardcopy, and asciiplot. Its value may TEXT: be one of: TEXT: linplot Connect points with line segments TEXT: combplot Connect each point to the X-axis TEXT: pointplot Plot each point as a discrete character TEXT: SEEALSO: nutmeg:plot SUBJECT: pointchars TITLE: pointchars TEXT: TEXT: Gpointchars TEXT: H HThe characters in this string are used to plot suces- TEXT: H sive data values if the Gpointplot Hkeyword is given in a TEXT: H Gplot Hcommand. The default is TEXT: H "oxabcdefhgijklmnpqrstuvwyz". TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: program TITLE: program TEXT: TEXT: Gprogram TEXT: H HThe full path name of the current program. TEXT: H TEXT: SUBJECT: prompt TITLE: prompt TEXT: TEXT: Gprompt TEXT: H HThe prompt that the command interpreter should use. In TEXT: H this string, the character `!' is replaced by the TEXT: H current command number. If the program is reading TEXT: H lines which form a part of a control block, the prompt TEXT: H becomes a set of `>' characters, one for each level of TEXT: H control structure. The default prompt is "G$H_p_r_o_g_r_a_m G! TEXT: H -> H". TEXT: H TEXT: SUBJECT: rawfile TITLE: rawfile TEXT: TEXT: Grawfile TEXT: H HThe name of the rawfile to use as a default for the TEXT: H Gwrite Hcommand, or for batch mode. TEXT: H TEXT: SEEALSO: nutmeg:write SEEALSO: nutmeg:load SUBJECT: rhost TITLE: rhost TEXT: TEXT: Grhost TEXT: H HThe name of the machine to run remote simulations on. TEXT: H This machine must have a spice daemon running. TEXT: H TEXT: SEEALSO: spice:rspice SUBJECT: rprogram TITLE: rprogram TEXT: TEXT: Grprogram TEXT: H HThe name of the program to run when an Grspice Hcommand TEXT: H is given. TEXT: H TEXT: SEEALSO: spice:rspice SUBJECT: spicepath TITLE: spicepath TEXT: TEXT: Gspicepath TEXT: H HThe filename to execute when an Gaspice Hcommand is TEXT: H given. TEXT: H TEXT: SEEALSO: spice:aspice SUBJECT: subend TITLE: subend TEXT: TEXT: Gsubend TEXT: H HThe name of the subcircuit-ending line, generally TEXT: H G.endsH. TEXT: H TEXT: SUBJECT: subinvoke TITLE: subinvoke TEXT: TEXT: Gsubinvoke TEXT: H HThe prefix used to call up an instance of a subcircuit, TEXT: H generally "GxH". TEXT: H TEXT: SUBJECT: substart TITLE: substart TEXT: TEXT: Gsubstart TEXT: H HThe name of the line used to start a subcircuit defini- TEXT: H tion, generally TEXT: H TEXT: SUBJECT: term TITLE: term TEXT: TEXT: Gterm HThe name of the terminal type for MFB. Note that these TEXT: H names are often not the same as the ones that _t_e_r_m_c_a_p TEXT: H recognises, so the value of the environment variable TEXT: H TERM may not work (but it will be used if this variable TEXT: H is not set). See the beginning of the file TEXT: H "spice3/lib/mfbcap" for descriptions of the terminals TEXT: H supported. TEXT: H TEXT: SEEALSO: nutmeg:plot SUBJECT: units TITLE: units TEXT: TEXT: Gunits TEXT: H HIf this variable is set to GdegreesH, all trig functions TEXT: H will use degrees instead of radians for the units of TEXT: H their arguments. TEXT: H TEXT: SEEALSO: nutmeg:sin SEEALSO: nutmeg:cos SEEALSO: nutmeg:tan SUBJECT: xfont TITLE: xfont TEXT: TEXT: Gxfont TEXT: H HThe name of the font to use in an X window. This may TEXT: H be a proportional font. TEXT: H TEXT: SEEALSO: nutmeg:X SEEALSO: nutmeg:plot SUBJECT: vms TITLE: VAX-VMS Notes TEXT: TEXT: GNutmeg Hcan be run under VAX/VMS. Some features like command, TEXT: H etc completion, expansion of `*', `?', and [], backquote TEXT: H substitution, the shell command, and so forth do not work. TEXT: H TEXT: GNutmeg Hwill look for start-up commands in the file _s_p_i_c_e._r_c TEXT: H in the current directory. TEXT: H TEXT: The standard suffix for rawspice files in VMS is ".raw". TEXT: H TEXT: You will have to respond to the -_m_o_r_e- prompt during Gplot TEXT: H Hwith a carriage return instead of any key as you can do with TEXT: H UNIX. TEXT: H TEXT: 0707070124062000551006440006700000000000010000000500250476400003700000014054spice3c1/lib/helpdir/spice.idxdashbdashiEdashqspiceMaspice Wrspice~resetresume[runbdeleteiplotlistingteditor dashs!trace#`tran$save%trananalysis(\op3analyses5acanalysis6Adcanalysis?JopanalysisHepzanalysisKpzXsetcircYac[dc\subckts]titlecardmmodelso.bjtvcdjfetmesfetmosfetrmodelswmodelurc optionsabstolAbypasschgtoldefadidefas>defldefwgminitl1itl2Hitl5 pivrel!pivtol#lreltol$Ztnom%;trtol&vntol'`convergence(=elements.&cl/$depsource45VCVS6sf8g;h>ivAExponentialNfmSpulseVpwl\sin_Gkc'semicondfCapacitorstjuncdzjj~0mqruzsw3texamplesex1ex2^ex3"ex4ex5Ƽbatchmodeʥ0707070124062000561006440006700000000000010000000500250477000003700000346601spice3c1/lib/helpdir/spice.txtSUBJECT: dashb TITLE: -b TEXT: TEXT: G-b HRun in batch mode. Instead of prompting the user TEXT: H interactively, Gspice Hwill execute the source files TEXT: H given on the line, or if there are none, it will read TEXT: H from the standard input. (Gspice Honly) TEXT: H TEXT: SUBJECT: dashi TITLE: -i TEXT: TEXT: G-i HRun in interactive (as opposed to batch) mode. This is TEXT: H the default. (Gspice Honly) TEXT: H TEXT: SUBJECT: dashq TITLE: -q TEXT: TEXT: G-b HRun in batch mode. Instead of prompting the user TEXT: H interactively, Gspice Hwill execute the source files TEXT: H given on the line, or if there are none, it will read TEXT: H from the standard input. (Gspice Honly) TEXT: H TEXT: SEEALSO: nutmeg:ccom SUBJECT: spice TITLE: SPICE3 Summary TEXT: TEXT: SPICE is a general-purpose circuit simulation program TEXT: H for nonlinear dc, nonlinear transient, and linear ac ana- TEXT: H lyses. Circuits may contain resistors, capacitors, induc- TEXT: H tors, mutual inductors, independent voltage and current TEXT: H sources, four types of dependent sources, transmission TEXT: H lines, switches, and the five most common semiconductor dev- TEXT: H ices: diodes, BJTs, JFETs, MESFETs, and MOSFETs. TEXT: H TEXT: The SPICE3 version is based directly on SPICE 2G.6. TEXT: H While SPICE3 is being developed to include new features, it TEXT: H will continue to support those capabilities and models which TEXT: H remain in extensive use in the SPICE2 program. TEXT: H TEXT: SPICE has built-in models for the semiconductor dev- TEXT: H ices, and the user need specify only the pertinent model TEXT: H parameter values. The model for the BJT is based on the TEXT: H integral charge model of Gummel and Poon; however, if the TEXT: H Gummel- Poon parameters are not specified, the model reduces TEXT: H to the simpler Ebers-Moll model. In either case, charge TEXT: H storage effects, ohmic resistances, and a current-dependent TEXT: H output conductance may be included. The diode model can be TEXT: H used for either junction diodes or Schottky barrier diodes. TEXT: H The JFET model is based on the FET model of Shichman and TEXT: H Hodges. Four MOSFET models are implemented: MOS1 is TEXT: H described by a square-law I-V characteristic, MOS2[1] is an TEXT: H analytical model, while MOS3[1] is a semi-empirical model, TEXT: H and MOS4[2,3] is the new BSIM (Berkeley Short-channel IGFET TEXT: H Model). MOS2, MOS3, and MOS4 include second-order effects TEXT: H such as channel length modulation, subthreshold conduction, TEXT: H scattering limited velocity saturation, small-size effects, TEXT: H and charge-controlled capacitances. TEXT: H TEXT: SUBJECT: aspice TITLE: aspice TEXT: TEXT: Gaspice H_i_n_f_i_l_e [ _o_u_t_f_i_l_e ] TEXT: H Run SPICE3 asynchronously with _i_n_f_i_l_e as an input cir- TEXT: H cuit. If _o_u_t_f_i_l_e is given, the output is saved in this TEXT: H file. After this command is issued, the job is started TEXT: H in the background, and you may continue using the TEXT: H invoking program interactively. When the job is fin- TEXT: H ished, the rawfile is loaded and becomes the current TEXT: H plot, and the output generated is printed. You may TEXT: H specify the pathname of the program to be run with the TEXT: H Gspicepath Hvariable. TEXT: H TEXT: SEEALSO: nutmeg:jobs SEEALSO: spice:rspice SUBJECT: rspice TITLE: rspice TEXT: TEXT: Grspice H[ _i_n_p_u_t_f_i_l_e ] ... TEXT: H Runs a Gspice Hjob remotely, using the _i_n_p_u_t_f_i_l_es as TEXT: H input, or the current circuit if no argument is given. TEXT: H The program waits for the job to complete, and passes TEXT: H output from the remote job to the user's standard out- TEXT: H put. When the job is finished the data is loaded in as TEXT: H with GaspiceH. If the variable Grhost His set, Grspice Hwill TEXT: H connect to this host instead of the default remote TEXT: H server machine. If the variable Grprogram His set, then TEXT: H Grspice Hwill use this as the pathname to the program to TEXT: H run. Note that this command will work only if your TEXT: H system administrator has set up a Gspice Hdaemon on one TEXT: H of your machines. (See the README file in the distri- TEXT: H bution directory for details on how to do this.) If the TEXT: H daemon thinks the remote machine is too loaded already, TEXT: H it may tell the user to try another machine or to try TEXT: H again later. TEXT: H TEXT: SEEALSO: spice:aspice SEEALSO: nutmeg:rhost SEEALSO: nutmeg:rprogram SUBJECT: reset TITLE: reset TEXT: TEXT: Greset TEXT: H HThrow away the internal data structures associated with TEXT: H the current circuit and re-parse the input listing. TEXT: H This command should be obsolete, since this is done TEXT: H automatically by the Grun Hcommand and the other simula- TEXT: H tion commands. TEXT: H TEXT: SEEALSO: spice:run SUBJECT: resume TITLE: resume TEXT: TEXT: Gresume TEXT: H HIf the current circuit is in the middle of a simula- TEXT: H tion, restart the simulation from the point it was left TEXT: H off. TEXT: H TEXT: SEEALSO: spice:run SUBJECT: run TITLE: run TEXT: TEXT: Grun H[ _r_a_w_f_i_l_e ] TEXT: H Run all the analyses given in the current circuit (the TEXT: H default is an operating point analysis). If a _r_a_w_f_i_l_e TEXT: H is given, the output is saved in this file. Otherwise TEXT: H it is made available as the current plot. TEXT: H TEXT: SEEALSO: spice:resume SUBJECT: delete TITLE: delete TEXT: TEXT: Gdelete H[ _n_u_m_b_e_r ] ... TEXT: H Remove the traces or breakpoints with the specified TEXT: H _n_u_m_b_e_rs. The Gstatus Hcommand may be used to obtain TEXT: H these numbers. (Gspice Honly) TEXT: H TEXT: SEEALSO: nutmeg:status SEEALSO: spice:stop SEEALSO: spice:iplot SEEALSO: spice:step SUBJECT: iplot TITLE: iplot TEXT: TEXT: Giplot H[ _n_a_m_e ] ... TEXT: H Incrementally plot the values of all the _n_a_m_es given as TEXT: H the simulation runs. The values which are being traced TEXT: H in this manner can be examined and removed using the TEXT: H Gstatus Hand Gdelete Hcommands. (Gspice Honly) TEXT: H TEXT: SEEALSO: nutmeg:status SEEALSO: spice:delete SEEALSO: spice:step SEEALSO: spice:stop SEEALSO: nutmeg:plot SUBJECT: listing TITLE: listing TEXT: TEXT: Glisting H[ Glogical H] [ Gphysical H] [ Gdeck H] [ Gexpand H] TEXT: H Print a listing of the current circuit to the standard TEXT: H output. The arguments control the format of the list- TEXT: H ing. A Glogical Hlisting is one in which comments are TEXT: H removed and continuation lines are appended to the end TEXT: H of the continued line. A Gphysical Hlisting is one in TEXT: H which comments and continuation lines are preserved. A TEXT: H Gdeck Hlisting is one without line numbers (so as to be TEXT: H acceptible to the circuit parser). The last option, TEXT: H GexpandH, is orthagonal to the previous three - it TEXT: H requests that the circuit be printed after subcircuit TEXT: H expansion. Note that only in an expanded listing are TEXT: H error messages associated with particular lines visi- TEXT: H ble. (Gspice Honly) TEXT: H TEXT: SEEALSO: nutmeg:source SUBJECT: editor TITLE: editor TEXT: TEXT: Geditor TEXT: H HThe name for the editor to use for the Gedit Hcommand. TEXT: H The default is GviH. (Gspice Honly) TEXT: H TEXT: SEEALSO: nutmeg:edit SUBJECT: dashs TITLE: -s TEXT: TEXT: G-s HRun in server mode. This is like batch mode, and it TEXT: H used by the Gspice daemonH. GSpice Hwill read from the TEXT: H standard input up to an GEOFH, and then after it is fin- TEXT: H ished it will send a line consisting of one `@' and TEXT: H then the contents of the rawfile to the standard out- TEXT: H put. (Gspice Honly) TEXT: H TEXT: SUBJECT: trace TITLE: trace TEXT: TEXT: Gtrace H[ _n_o_d_e ] ... TEXT: H Each time point, the value of the named nodes will be TEXT: H printed to the standard output. TEXT: H TEXT: SEEALSO: spice:step SEEALSO: spice:stop SEEALSO: spice:delete SEEALSO: nutmeg:status SEEALSO: spice:iplot SUBJECT: tran TITLE: tran TEXT: TEXT: Gtran H._t_r_a_n _a_r_g_u_m_e_n_t_s TEXT: H Run a transient analysis. See the SPICE3 User's Guide TEXT: H for details. Only available in GspiceH. TEXT: H TEXT: SEEALSO: spice:trananalysis SUBJECT: save TITLE: save TEXT: TEXT: Gsave H[ Gall H] [ _n_o_d_e_n_a_m_e ] ... TEXT: H Save a set of outputs, discarding the rest. If a node TEXT: H has been mentioned in a Gsave Hcommand, it will appear in TEXT: H the working plot after a run has completed, or in the TEXT: H rawfile if spice is run in batch mode (in this case, TEXT: H the command can be given in the input file as G.save TEXT: H ...H). If a node is traced or plotted it will also be TEXT: H saved. If no Gsave Hcommands are given, all nodes will TEXT: H be saved. TEXT: H TEXT: SEEALSO: nutmeg:status SUBJECT: trananalysis TITLE: Transient Analysis TEXT: TEXT: The transient analysis portion of SPICE computes the TEXT: H transient output variables as a function of time over a TEXT: H user-specified time interval. The initial conditions are TEXT: H automatically determined by a dc analysis. All sources TEXT: H which are not time dependent (for example, power supplies) TEXT: H are set to their dc value. The transient time interval is TEXT: H specified on a G.TRAN Hcontrol line. TEXT: H TEXT: GGeneral form: TEXT: H TEXT: .TRAN H_T_S_T_E_P _T_S_T_O_P <_T_S_T_A_R_T <_T_M_A_X>> <_U_I_C> TEXT: H TEXT: GExamples: TEXT: H TEXT: .TRAN 1NS 100NS TEXT: H .TRAN 1NS 1000NS 500NS TEXT: H .TRAN 10NS 1US UIC TEXT: H TEXT: TEXT: H_T_S_T_E_P is the printing or plotting increment for line- TEXT: H printer output. For use with the post-processor, _T_S_T_E_P is TEXT: H the suggested computing increment. _T_S_T_O_P is the final time, TEXT: H and _T_S_T_A_R_T is the initial time. If _T_S_T_A_R_T is omitted, it is TEXT: H assumed to be zero. The transient analysis always begins at TEXT: H time zero. In the interval , the circuit is TEXT: H analyzed (to reach a steady state), but no outputs are TEXT: H stored. In the interval <_T_S_T_A_R_T, _T_S_T_O_P>, the circuit is TEXT: H analyzed and outputs are stored. _T_M_A_X is the maximum step- TEXT: H size that SPICE will use (by default the program chooses TEXT: H either _T_S_T_E_P or (_T_S_T_O_P-_T_S_T_A_R_T)/50.0, whichever is smaller. TEXT: H _T_M_A_X is useful when one wishes to guarantee a computing TEXT: H interval which is smaller than the printer increment, _T_S_T_E_P. TEXT: H TEXT: GUIC H(use initial conditions) is an optional keyword TEXT: H which indicates that the user does not want SPICE to solve TEXT: H for the quiescent operating point before beginning the tran- TEXT: H sient analysis. If this keyword is specified, SPICE uses TEXT: H the values specified using GICH=... on the various elements as TEXT: H the initial transient condition and proceeds with the TEXT: H analysis. If an G.IC Hline has been given, then the node vol- TEXT: H tages on the G.IC Hline are used to compute the intitial con- TEXT: H ditions for the devices. Look at the description on the TEXT: H IC line for its interpretation when UIC is not specified. TEXT: SEEALSO: spice:tran SUBJECT: op TITLE: op TEXT: TEXT: Gop H._o_p _c_a_r_d _a_r_g_u_m_e_n_t_s TEXT: H Perform an operating point analysis on the current cir- TEXT: H cuit. See the SPICE3 User's Guide for details. Only TEXT: H available in GspiceH. TEXT: H TEXT: SEEALSO: spice:opanalysis SUBJECT: analyses TITLE: Analysis Types TEXT: TEXT: The following analyses are currently available in TEXT: H SPICE3. TEXT: H TEXT: SUBTOPIC: spice:acanalysis spice:dcanalysis spice:opanalysis SUBTOPIC: spice:pzanalysis spice:trananalysis SEEALSO: spice:run SUBJECT: acanalysis TITLE: AC Small-Signal Analysis TEXT: TEXT: The ac small-signal portion of SPICE computes the ac TEXT: H output variables as a function of frequency. The program TEXT: H first computes the dc operating point of the circuit and TEXT: H determines linearized, small-signal models for all of the TEXT: H nonlinear devices in the circuit. The resultant linear cir- TEXT: H cuit is then analyzed over a user-specified range of fre- TEXT: H quencies. The desired output of an ac small-signal analysis TEXT: H is usually a transfer function (voltage gain, transim- TEXT: H pedance, etc). If the circuit has only one ac input, it is TEXT: H convenient to set that input to unity and zero phase, so TEXT: H that output variables have the same value as the transfer TEXT: H function of the output variable with respect to the input. TEXT: H TEXT: GGeneral form: TEXT: H TEXT: .AC DEC H_N_D _F_S_T_A_R_T _F_S_T_O_P TEXT: H G.AC OCT H_N_O _F_S_T_A_R_T _F_S_T_O_P TEXT: H G.AC LIN H_N_P _F_S_T_A_R_T _F_S_T_O_P TEXT: H TEXT: GExamples: TEXT: H TEXT: .AC DEC H10 1 10K TEXT: H G.AC DEC H10 1K 100MEG TEXT: H G.AC LIN H100 1 100HZ TEXT: H TEXT: TEXT: GDEC Hstands for decade variation, and _N_D is the number TEXT: H of points per decade. GOCT Hstands for octave variation, and TEXT: H _N_O is the number of points per octave. GLIN Hstands for TEXT: H linear variation, and _N_P is the number of points. _F_S_T_A_R_T is TEXT: H the starting frequency, and _F_S_T_O_P is the final frequency. TEXT: H If this line is included in the circuit file, SPICE will TEXT: H perform an ac analysis of the circuit over the specified TEXT: H frequency range. Note that in order for this analysis to be TEXT: H meaningful, at least one independent source must have been TEXT: H specified with an ac value. TEXT: H TEXT: SEEALSO: spice:ac SUBJECT: dcanalysis TITLE: DC Analysis TEXT: TEXT: The dc analysis portion of SPICE determines the dc TEXT: H operating point of the circuit with inductors shorted and TEXT: H capacitors opened. A dc analysis is automatically performed TEXT: H prior to a transient analysis to determine the transient TEXT: H initial conditions, and prior to an ac small-signal analysis TEXT: H to determine the linearized, small-signal models for non- TEXT: H linear devices. The dc analysis can also be used to gen- TEXT: H erate dc transfer curves: a specified independent voltage TEXT: H or current source is stepped over a user-specified range and TEXT: H the dc output variables are stored for each sequential TEXT: H source value. TEXT: H TEXT: GGeneral form: TEXT: H TEXT: .DC H_S_R_C_N_A_M _V_S_T_A_R_T _V_S_T_O_P _V_I_N_C_R <_S_R_C_2 _S_T_A_R_T_2 _S_T_O_P_2 _I_N_C_R_2> TEXT: H TEXT: GExamples: TEXT: H TEXT: .DC HVIN 0.25 5.0 0.25 TEXT: H G.DC HVDS 0 10 .5 VGS 0 5 1 TEXT: H G.DC HVCE 0 10 .25 IB 0 10U 1U TEXT: H TEXT: TEXT: This line defines the dc transfer curve source and TEXT: H sweep limits. _S_R_C_N_A_M is the name of an independent voltage TEXT: H or current source. _V_S_T_A_R_T, _V_S_T_O_P, and _V_I_N_C_R are the start- TEXT: H ing, final, and incrementing values respectively. The first TEXT: H example will cause the value of the voltage source _V_I_N to be TEXT: H swept from 0.25 Volts to 5.0 Volts in increments of 0.25 TEXT: H Volts. A second source (_S_R_C_2) may optionally be specified TEXT: H with associated sweep parameters. In this case, the first TEXT: H source will be swept over its range for each value of the TEXT: H second source. This option can be useful for obtaining sem- TEXT: H iconductor device output characteristics. See the second TEXT: H example circuit in the GExamples Hsection of the guide. TEXT: H TEXT: SEEALSO: spice:dc SUBJECT: opanalysis TITLE: Operating Point TEXT: TEXT: GGeneral form: TEXT: H TEXT: .OP TEXT: H TEXT: TEXT: HThe inclusion of this line in an input file will force TEXT: H SPICE to determine the dc operating point of the circuit TEXT: H with inductors shorted and capacitors opened. Note: a dc TEXT: H analysis is automatically performed prior to a transient TEXT: H analysis to determine the transient initial conditions, and TEXT: H prior to an ac small-signal analysis to determine the TEXT: H linearized, small-signal models for nonlinear devices. TEXT: H TEXT: SPICE performs a dc operating point analysis if no TEXT: H other analyses are requested. TEXT: H TEXT: SEEALSO: spice:op SUBJECT: pzanalysis TITLE: Pole-Zero Analysis TEXT: TEXT: The pole-zero analysis portion of SPICE computes the TEXT: H poles and/or zeros in the small-signal ac transfer function. TEXT: H The program first computes the dc operating point and then TEXT: H determines the linearized, small-signal models for all the TEXT: H nonlinear devices in the circuit. This circuit is then used TEXT: H to find the poles and zeros. TEXT: H TEXT: Two types of transfer functions are allowed: one of the TEXT: H form (output voltage)/(input voltage) and the other of the TEXT: H form (output voltage)/(input current). These two types of TEXT: H transfer functions cover all the cases and one can find the TEXT: H poles/zeros of functions like input/output impedance and TEXT: H voltage gain. The input and output ports are specified as TEXT: H two pairs of nodes. TEXT: H TEXT: The pole-zero analysis works with resistors, capaci- TEXT: H tors, inductors, linear-controlled sources, independent TEXT: H sources, BJTs, MOSFETs, JFETs and diodes. Transmission TEXT: H lines are not supported. TEXT: H TEXT: GGeneral forms: TEXT: H TEXT: .PZ H_N_O_D_E_1 _N_O_D_E_2 _N_O_D_E_3 _N_O_D_E_4 _C_U_R _P_O_L TEXT: H G.PZ H_N_O_D_E_1 _N_O_D_E_2 _N_O_D_E_3 _N_O_D_E_4 _C_U_R _Z_E_R TEXT: H G.PZ H_N_O_D_E_1 _N_O_D_E_2 _N_O_D_E_3 _N_O_D_E_4 _C_U_R _P_Z TEXT: H G.PZ H_N_O_D_E_1 _N_O_D_E_2 _N_O_D_E_3 _N_O_D_E_4 _V_O_L _P_O_L TEXT: H G.PZ H_N_O_D_E_1 _N_O_D_E_2 _N_O_D_E_3 _N_O_D_E_4 _V_O_L _Z_E_R TEXT: H G.PZ H_N_O_D_E_1 _N_O_D_E_2 _N_O_D_E_3 _N_O_D_E_4 _V_O_L _P_Z TEXT: H TEXT: GExamples: TEXT: H TEXT: .PZ 1 0 3 0 CUR POL TEXT: H .PZ 2 3 5 0 VOL ZER TEXT: H .PZ 4 1 4 1 CUR PZ TEXT: H TEXT: TEXT: HCUR stands for a transfer function of the type (output TEXT: H voltage)/(input current) while VOL stands for a transfer TEXT: H function of the type (output voltage)/(input voltage). POL TEXT: H stands for pole analysis only, ZER for zero analysis only TEXT: H and PZ for both. This feature is provided mainly because if TEXT: H there is a nonconvergence in finding poles or zeros, then, TEXT: H at least the other can be found. Finally, NODE1 and NODE2 TEXT: H are the two input nodes and NODE3 and NODE4 are the two out- TEXT: H put nodes. Thus, there is complete freedom regarding the TEXT: H output and input ports and the type of transfer function. TEXT: H TEXT: In interactive mode, the command syntax is the same TEXT: H except that the first field is PZ instead of .PZ. To print TEXT: H the results, one should use the command 'print all'. TEXT: H TEXT: SEEALSO: spice:pz SUBJECT: pz TITLE: pz TEXT: TEXT: Gpz H._p_z _c_a_r_d _o_p_t_i_o_n_s TEXT: H Run a pole-zero analysis. See the SPICE3 User's Guide TEXT: H for details. This command is only available in GspiceH. TEXT: H TEXT: SEEALSO: spice:pzanalysis SUBJECT: setcirc TITLE: setcirc TEXT: TEXT: Gsetcirc H[ _c_i_r_c_u_i_t_n_a_m_e ] TEXT: H Change the current circuit. The current circuit is the TEXT: H one that is used for the simulation commands. When a TEXT: H circuit is loaded with the Gsource Hcommand, it becomes TEXT: H the current circuit. If Gsetcirc His given no arguments, TEXT: H it prints a menu of the available circuits. TEXT: H TEXT: SUBJECT: ac TITLE: ac TEXT: TEXT: Gac H._a_c _c_a_r_d _a_r_g_u_m_e_n_t_s TEXT: H Do an ac analysis of the current circuit. See the TEXT: H SPICE3 User's Guide for details. Only available in TEXT: H GspiceH. TEXT: H TEXT: SEEALSO: spice:acanalysis SUBJECT: dc TITLE: dc TEXT: TEXT: Gdc H._d_c _c_a_r_d _a_r_g_u_m_e_n_t_s TEXT: H Calculate the dc transfer curve of the current circuit. TEXT: H See the SPICE3 User's Guide for details. Only avail- TEXT: H able in GspiceH. TEXT: H TEXT: SEEALSO: spice:dcanalysis SUBJECT: subckts TITLE: Subcircuits TEXT: TEXT: A subcircuit that consists of SPICE elements can be TEXT: H defined and referenced in a fashion similar to device TEXT: H models. The subcircuit is defined in the input file by a TEXT: H grouping of element lines; the program then automatically TEXT: H inserts the group of elements wherever the subcircuit is TEXT: H referenced. There is no limit on the size or complexity of TEXT: H subcircuits, and subcircuits may contain other subcircuits. TEXT: H An example of subcircuit usage is given in Appendix A. TEXT: H TEXT: _1._1. ._S_U_B_C_K_T _C_a_r_d TEXT: H TEXT: GGeneral form: TEXT: H TEXT: .SUBCKT H_s_u_b_n_a_m _N_1 <_N_2 _N_3 ...> TEXT: H TEXT: GExamples: TEXT: H TEXT: H.GSUBCKT HOPAMP 1 2 3 4 TEXT: H TEXT: TEXT: A circuit definition is begun with a G.SUBCKT Hline. TEXT: H _S_U_B_N_A_M is the subcircuit name, and _N_1, _N_2, ... are the TEXT: H external nodes, which cannot be zero. The group of element TEXT: H lines which immediately follow the G.SUBCKT Hline define the TEXT: H subcircuit. The last line in a subcircuit definition is the TEXT: H G.ENDS Hline (see below). Control lines may not appear within TEXT: H a subcircuit definition; however, subcircuit definitions TEXT: H may contain anything else, including other subcircuit defin- TEXT: H itions, device models, and subcircuit calls (see below). TEXT: H Note that any device models or subcircuit definitions TEXT: H included as part of a subcircuit definition are strictly TEXT: H local (i.e., such models and definitions are not known out- TEXT: H side the subcircuit definition). Also, any element nodes TEXT: H not included on the G.SUBCKT Hline are strictly local, with TEXT: H the exception of 0 (ground) which is always global. TEXT: H TEXT: _1._2. ._E_N_D_S _C_a_r_d TEXT: H TEXT: GGeneral form: TEXT: H TEXT: .ENDS H<_S_U_B_N_A_M> TEXT: H TEXT: GExamples: TEXT: H TEXT: .ENDS HOPAMP TEXT: H TEXT: TEXT: This line must be the last one for any subcircuit TEXT: H definition. The subcircuit name, if included, indicates TEXT: H which subcircuit definition is being terminated; if omit- TEXT: H ted, all subcircuits being defined are terminated. The name TEXT: H is needed only when nested subcircuit definitions are being TEXT: H made. TEXT: H TEXT: TEXT: _1._3. _S_u_b_c_i_r_c_u_i_t _C_a_l_l_s TEXT: H TEXT: GGeneral form: TEXT: H TEXT: XH_X_Y_Y_Y_Y_Y_Y_Y _N_1 <_N_2 _N_3 ...> _S_U_B_N_A_M TEXT: H TEXT: GExamples: TEXT: H TEXT: XH1 2 4 17 3 1 MULTI TEXT: H TEXT: TEXT: Subcircuits are used in SPICE by specifying pseudo- TEXT: H elements beginning with the letter `X', followed by the cir- TEXT: H cuit nodes to be used in expanding the subcircuit. TEXT: H TEXT: Note that when a circuit is parsed, all devices and TEXT: H local nodes in subcircuits are renamed as TEXT: H _d_e_v_i_c_e_t_y_p_eG:H_s_u_b_c_k_t_n_a_m_eG:H_d_e_v_i_c_e_n_a_m_e. Nested subcircuit TEXT: H instances will have multiple colon-seperated qualifiers. TEXT: H GNutmeg Hwill also accept subcircuit names with components TEXT: H seperated by periods, so long as the names do not clash with TEXT: H names specifiable as _p_l_o_t_n_a_m_eG.H_v_a_l_u_e. TEXT: H TEXT: SUBJECT: titlecard TITLE: Title Line TEXT: TEXT: This line must be the first line in the input file. It TEXT: H is printed at the top of each page of output. TEXT: H TEXT: GExamples: TEXT: H TEXT: HPOWER AMPLIFIER CIRCUIT TEXT: H TEST OF CAM CELL TEXT: H TEXT: SUBJECT: models TITLE: Device Models TEXT: TEXT: GGeneral form: TEXT: H TEXT: .MODEL H_M_N_A_M_E _T_Y_P_E(_P_N_A_M_E_1=_P_V_A_L_1 _P_N_A_M_E_2=_P_V_A_L_2 ... ) TEXT: H TEXT: GExamples: TEXT: H TEXT: .MODEL HMOD1 NPN (BF=50 IS=1E-13 VBF=50) TEXT: H TEXT: TEXT: The G.MODEL Hline specifies a set of model parameters TEXT: H that will be used by one or more devices. _M_N_A_M_E is the TEXT: H model name, and type is one of the following ten types: TEXT: H TEXT: GR Hresistor model TEXT: H GC Hcapacitor model TEXT: H GURC HUniform Distributed RC model TEXT: H GD Hdiode model TEXT: H GNPN HNPN BJT model TEXT: H GPNP HPNP BJT model TEXT: H GNJF HN-channel JFET model TEXT: H GPJF HP-channel JFET model TEXT: H GNMOS HN-channel MOSFET model TEXT: H GPMOS HP-channel MOSFET model TEXT: H GNMF HN-channel MESFET model TEXT: H GPMF HP-channel MESFET model TEXT: H GSW Hvoltage controlled switch TEXT: H GCSW Hcurrent controlled switch TEXT: H TEXT: TEXT: Parameter values are defined by appending the parameter TEXT: H name, as given below for each model type, followed by an TEXT: H equal sign and the parameter value. Model parameters that TEXT: H are not given a value are assigned the default values given TEXT: H below for each model type. TEXT: H TEXT: SUBTOPIC: spice:bjt spice:c spice:d SUBTOPIC: spice:jfet spice:mesfet spice:mosfet SUBTOPIC: spice:rmodel spice:swmodel spice:urc SUBJECT: bjt TITLE: BJT Models TEXT: TEXT: The bipolar junction transistor model in SPICE is an TEXT: H adaptation of the integral charge control model of Gummel TEXT: H and Poon. This modified Gummel-Poon model extends the ori- TEXT: H ginal model to include several effects at high bias levels. TEXT: H The model will automatically simplify to the simpler Ebers- TEXT: H Moll model when certain parameters are not specified. The TEXT: H parameter names used in the modified Gummel-Poon model have TEXT: H been chosen to be more easily understood by the program TEXT: H user, and to reflect better both physical and circuit design TEXT: H thinking. TEXT: H TEXT: The dc model is defined by the parameters GIS, BF, NF, TEXT: H ISE, IKFH, and GNE Hwhich determine the forward current gain TEXT: H characteristics, GIS, BR, NR, ISC, IKRH, and GNC Hwhich deter- TEXT: H mine the reverse current gain characteristics, and GVAF Hand TEXT: H GVAR Hwhich determine the output conductance for forward and TEXT: H reverse regions. Three ohmic resistances GRB, RCH, and GRE Hare TEXT: H included, where GRB Hcan be high current dependent. Base TEXT: H charge storage is modeled by forward and reverse transit TEXT: H times, GTF Hand GTRH, the forward transit time TF being bias TEXT: H dependent if desired, and nonlinear depletion layer capaci- TEXT: H tances which are determined by GCJE, VJEH, and GMJE Hfor the B-E TEXT: H junction , GCJC, VJCH, and GMJC Hfor the B-C junction and GCJS, TEXT: H VJSH, and GMJS Hfor the C-S (Collector-Substrate) junction. TEXT: H The temperature dependence of the saturation current, GISH, is TEXT: H determined by the energy-gap, GEGH, and the saturation current TEXT: H temperature exponent, GXTIH. Additionally base current tem- TEXT: H perature dependence is modeled by the beta temperature TEXT: H exponent GXTB Hin the new model. TEXT: H TEXT: The BJT parameters used in the modified Gummel-Poon TEXT: H model are listed below. The parameter names used in earlier TEXT: H versions of SPICE2 are still accepted. TEXT: H TEXT: Modified Gummel-Poon BJT Parameters. TEXT: H name parameter units default example area TEXT: H TEXT: H 1 GIS Htransport saturation current A 1.0E-16 1.0E-15 * TEXT: H 2 GBF Hideal maximum forward beta - 100 100 TEXT: H 3 GNF Hforward current emission coefficient - 1.0 1 TEXT: H 4 GVAF Hforward Early voltage V infinite 200 TEXT: H 5 GIKF Hcorner for forward beta TEXT: H high current roll-off A infinite 0.01 * TEXT: H 6 GISE HB-E leakage saturation current A 0 1.0E-13 * TEXT: H 7 GNE HB-E leakage emission coefficient - 1.5 2 TEXT: H 8 GBR Hideal maximum reverse beta - 1 0.1 TEXT: H 9 GNR Hreverse current emission coefficient - 1 1 TEXT: H 10 GVAR Hreverse Early voltage V infinite 200 TEXT: H 11 GIKR Hcorner for reverse beta TEXT: H high current roll-off A infinite 0.01 * TEXT: H 12 GISC HB-C leakage saturation current A 0 1.0E-13 * TEXT: H TEXT: TEXT: 13 GNC HB-C leakage emission coefficient - 2 1.5 TEXT: H 14 GRB Hzero bias base resistance Ohms 0 100 * TEXT: H 15 GIRB Hcurrent where base resistance TEXT: H falls halfway to its min value A infinite 0.1 * TEXT: H 16 GRBM Hminimum base resistance TEXT: H at high currents Ohms RB 10 * TEXT: H 17 GRE Hemitter resistance Ohms 0 1 * TEXT: H 18 GRC Hcollector resistance Ohms 0 10 * TEXT: H 19 GCJE HB-E zero-bias depletion capacitance F 0 2PF * TEXT: H 20 GVJE HB-E built-in potential V 0.75 0.6 TEXT: H 21 GMJE HB-E junction exponential factor - 0.33 0.33 TEXT: H 22 GTF Hideal forward transit time sec 0 0.1Ns TEXT: H 23 GXTF Hcoefficient for bias dependence of TF - 0 TEXT: H 24 GVTF Hvoltage describing VBC TEXT: H dependence of TF V infinite TEXT: H 25 GITF Hhigh-current parameter TEXT: H for effect on TF A 0 * TEXT: H 26 GPTF Hexcess phase at freq=1.0/(TF*2PI) Hz deg 0 TEXT: H 27 GCJC HB-C zero-bias depletion capacitance F 0 2PF * TEXT: H 28 GVJC HB-C built-in potential V 0.75 0.5 TEXT: H 29 GMJC HB-C junction exponential factor - 0.33 0.5 TEXT: H 30 GXCJC Hfraction of B-C depletion capacitance - 1 TEXT: H connected to internal base node TEXT: H 31 GTR Hideal reverse transit time sec 0 10Ns TEXT: H 32 GCJS Hzero-bias collector-substrate TEXT: H capacitance F 0 2PF * TEXT: H 33 GVJS Hsubstrate junction built-in potential V 0.75 TEXT: H 34 GMJS Hsubstrate junction exponential factor - 0 0.5 TEXT: H 35 GXTB Hforward and reverse beta TEXT: H temperature exponent - 0 TEXT: H 36 GEG Henergy gap for temperature TEXT: H effect on IS eV 1.11 TEXT: H 37 GXTI Htemperature exponent for effect on IS - 3 TEXT: H 38 GKF Hflicker-noise coefficient - 0 TEXT: H 39 GAF Hflicker-noise exponent - 1 TEXT: H 40 GFC Hcoefficient for forward-bias TEXT: H depletion capacitance formula - 0.5 TEXT: H TEXT: SEEALSO: spice:q SUBJECT: c TITLE: Capacitor Models TEXT: TEXT: The capacitor model contains process information that TEXT: H may be used to compute the capacitance from strictly TEXT: H geometric information. TEXT: H TEXT: Gname Hparameter units default example TEXT: H TEXT: H GCJ Hjunction bottom capacitance F/meters2 - 5e-5 TEXT: H GCJSW Hjunction sidewall capacitance F/meters - 2e-11 TEXT: H GDEFW Hdefault device width meters 1e-6 2e-6 TEXT: H GNARROW Hnarrowing due to side etching meters 0.0 1e-7 TEXT: H TEXT: TEXT: The capacitor has a capacitance computed as TEXT: H TEXT: CAP=CJx(LENGTH-NARROW)x(WIDTH-NARROW)+2xCJSWx(LENGTH+WIDTH-2*NARROW) TEXT: H TEXT: SEEALSO: spice:c SUBJECT: d TITLE: Diode Models TEXT: TEXT: The dc characteristics of the diode are determined by TEXT: H the parameters GIS Hand GNH. An ohmic resistance, GRSH, is TEXT: H included. Charge storage effects are modeled by a transit TEXT: H time, GTTH, and a nonlinear depletion layer capacitance which TEXT: H is determined by the parameters GCJO, VJH, and GMH. The tem- TEXT: H perature dependence of the saturation current is defined by TEXT: H the parameters GEGH, the energy and GXTIH, the saturation TEXT: H current temperature exponent. Reverse breakdown is modeled TEXT: H by an exponential increase in the reverse diode current and TEXT: H is determined by the parameters GBV Hand GIBV H(both of which TEXT: H are positive numbers). TEXT: H TEXT: Gname Hparameter units default example area TEXT: H TEXT: H 1 GIS Hsaturation current A 1.0E-14 1.0E-14 * TEXT: H 2 GRS Hohmic resistance Ohm 0 10 * TEXT: H 3 GN Hemission coefficient - 1 1.0 TEXT: H 4 GTT Htransit-time sec 0 0.1Ns TEXT: H 5 GCJO Hzero-bias junction capacitance F 0 2PF * TEXT: H 6 GVJ Hjunction potential V 1 0.6 TEXT: H 7 GM Hgrading coefficient - 0.5 0.5 TEXT: H 8 GEG Hactivation energy eV 1.11 1.11 Si TEXT: H 0.69 Sbd TEXT: H 0.67 Ge TEXT: H 9 GXTI Hsaturation-current temp. exp - 3.0 3.0 jn TEXT: H 2.0 Sbd TEXT: H 10 GKF Hflicker noise coefficient - 0 TEXT: H 11 GAF Hflicker noise exponent - 1 TEXT: H 12 GFC Hcoefficient for forward-bias - 0.5 TEXT: H depletion capacitance formula TEXT: H 13 GBV Hreverse breakdown voltage V infinite 40.0 TEXT: H 14 GIBV Hcurrent at breakdown voltage A 1.0E-3 TEXT: H TEXT: SEEALSO: spice:juncd SUBJECT: jfet TITLE: JFET Models TEXT: TEXT: The JFET model is derived from the FET model of Shich- TEXT: H man and Hodges. The DC characteristics are defined by the TEXT: H parameters GVTO Hand GBETAH, which determine the variation of TEXT: H drain current with gate voltage, GLAMBDAH, which determines TEXT: H the output conductance, and GISH, the saturation current of TEXT: H the two gate junctions. Two ohmic resistances, GRD Hand GRSH, TEXT: H are included. Charge storage is modeled by nonlinear deple- TEXT: H tion layer capacitances for both gate junctions which vary TEXT: H as the -1/2 power of junction voltage and are defined by the TEXT: H parameters GCGS, CGD, Hand GPBH. TEXT: H TEXT: name parameter units default example area TEXT: H TEXT: H 1 GVTO Hthreshold voltage V -2.0 -2.0 TEXT: H 2 GBETA Htransconductance parameter A/V**2 1.0E-4 1.0E-3 * TEXT: H 3 GLAMBDA Hchannel length modulation TEXT: H parameter 1/V 0 1.0E-4 TEXT: H 4 GRD Hdrain ohmic resistance Ohm 0 100 * TEXT: H 5 GRS Hsource ohmic resistance Ohm 0 100 * TEXT: H 6 GCGS Hzero-bias G-S junction capacitance F 0 5PF * TEXT: H 7 GCGD Hzero-bias G-D junction capacitance F 0 1PF * TEXT: H 8 GPB Hgate junction potential V 1 0.6 TEXT: H 9 GIS Hgate junction saturation current A 1.0E-14 1.0E-14 * TEXT: H 10 GKF Hflicker noise coefficient - 0 TEXT: H 11 GAF Hflicker noise exponent - 1 TEXT: H 12 GFC Hcoefficient for forward-bias - 0.5 TEXT: H depletion capacitance formula TEXT: H TEXT: SEEALSO: spice:j SUBJECT: mesfet TITLE: MESFET Models TEXT: TEXT: The MESFET model is derived from the GaAs FET model of TEXT: H Statz et al. as described in [4]. The dc characteristics TEXT: H are defined by the parameters GVTOH, GBH, and GBETAH, which deter- TEXT: H mine the variation of drain current with gate voltage, TEXT: H GALPHAH, which determines saturation voltage, and GLAMBDAH, TEXT: H which determines the output conductance. The formula are TEXT: H given by TEXT: H TEXT: TEXT: Id = 1 + b(Vgs - VT) TEXT: 8| (Vgs-VT)2_______________ TEXT: | TEXT: | TEXT: | TEXT: | TEXT: 1 - TEXT: | TEXT: | TEXT: | TEXT: 1-o( 3 TEXT: Vds___ TEXT: | TEXT: | TEXT: | TEXT: TEXT: 3| TEXT: | TEXT: | TEXT: | TEXT: (1 + ,\ Vds) for 0o( TEXT: 3_ TEXT: H TEXT: Two ohmic resistances, GRD Hand GRSH, are included. Charge TEXT: H storage is modeled by total gate charge as a function of TEXT: H gate-drain and gate-source voltages and is defined by the TEXT: H parameters GCGS, CGD, Hand GPBH. TEXT: H TEXT: name parameter units default example area TEXT: H TEXT: H 1 GVTO Hpinch-off voltage V -2.0 -2.0 TEXT: H 2 GBETA Htransconductance parameter A/V**2 1.0E-4 1.0E-3 * TEXT: H 3 GB Hdoping tail extending parameter 1/V 0.3 0.3 * TEXT: H 4 GALPHA Hsaturation voltage parameter 1/V 2 2 * TEXT: H 5 GLAMBDA Hchannel length modulation TEXT: H parameter 1/V 0 1.0E-4 TEXT: H 6 GRD Hdrain ohmic resistance Ohm 0 100 * TEXT: H 7 GRS Hsource ohmic resistance Ohm 0 100 * TEXT: H 8 GCGS Hzero-bias G-S junction capacitance F 0 5PF * TEXT: H 9 GCGD Hzero-bias G-D junction capacitance F 0 1PF * TEXT: H 10 GPB Hgate junction potential V 1 0.6 TEXT: H 11 GKF Hflicker noise coefficient - 0 TEXT: H 12 GAF Hflicker noise exponent - 1 TEXT: H 13 GFC Hcoefficient for forward-bias - 0.5 TEXT: H depletion capacitance formula TEXT: H TEXT: SEEALSO: spice:z SUBJECT: mosfet TITLE: MOSFET Models TEXT: TEXT: SPICE provides four MOSFET device models, which differ TEXT: H in the formulation of the I-V characteristic. The variable TEXT: H GLEVEL Hspecifies the model to be used: TEXT: H TEXT: LEVEL = 1 -> Shichman-Hodges TEXT: H LEVEL = 2 -> MOS2 (as described in [1]) TEXT: H LEVEL = 3 -> MOS3, a semi-empirical model (see [1]) TEXT: H LEVEL = 4 -> BSIM (as described in [2]) TEXT: H TEXT: TEXT: The dc characteristics of the level 1 through level 3 TEXT: H MOSFETs are defined by the device parameters GVTO, KP, TEXT: H LAMBDA, PHI Hand GGAMMAH. These parameters are computed by TEXT: H SPICE if process parameters (GNSUB, TOXH, ...) are given, but TEXT: H user-specified values always override. GVTO His positive TEXT: H (negative) for enhancement mode and negative (positive) for TEXT: H depletion mode N-channel (P-channel) devices. Charge storage TEXT: H is modeled by three constant capacitors, GCGSO, CGDO, Hand TEXT: H GCGBO Hwhich represent overlap capacitances, by the nonlinear TEXT: H thin-oxide capacitance which is distributed among the gate, TEXT: H source, drain, and bulk regions, and by the nonlinear TEXT: H depletion-layer capacitances for both substrate junctions TEXT: H divided into bottom and periphery, which vary as the GMJ Hand TEXT: H GMJSW Hpower of junction voltage respectively, and are deter- TEXT: H mined by the parameters GCBD, CBS, CJ, CJSW, MJ, MJSW Hand GPBH. TEXT: H Charge storage effects are modeled by the piecewise linear TEXT: H voltags-dependent capacitance model proposed by Meyer. The TEXT: H thin-oxide charge storage effects are treated slightly dif- TEXT: H ferent for the LEVEL = 1 model. These voltage-dependent TEXT: H capacitances are included only if GTOX His specified in the TEXT: H input description and they are represented using Meyer's TEXT: H formulation. TEXT: H TEXT: There is some overlap among the parameters describing TEXT: H the junctions, e.g. the reverse current can be input either TEXT: H as GIS H(in A) or as GJS H(in A/m**2). Whereas the first is an TEXT: H absolute value the second is multiplied by GAD Hand GAS Hto give TEXT: H the reverse current of the drain and source junctions TEXT: H respectively. This methodology has been chosen since there TEXT: H is no sense in relating always junction characteristics with TEXT: H GAD Hand GAS Hentered on the device line; the areas can be TEXT: H defaulted. The same idea applies also to the zero-bias TEXT: H junction capacitances GCBD Hand GCBS H(in F) on one hand, and GCJ TEXT: H H(in F/m**2) on the other. The parasitic drain and source TEXT: H series resistance can be expressed as either GRD Hand GRS H(in TEXT: H ohms) or GRSH H(in ohms/sq.), the latter being multiplied by TEXT: H the number of squares GNRD Hand GNRS Hinput on the device line. TEXT: H TEXT: SPICE level 1 to level 3 parameters. TEXT: H name parameter units default example TEXT: H TEXT: H TEXT: TEXT: 1 GLEVEL Hmodel index - 1 TEXT: H 2 GVTO Hzero-bias threshold voltage V 0.0 1.0 TEXT: H 3 GKP Htransconductance parameter A/V**2 2.0E-5 3.1E-5 TEXT: H 4 GGAMMA Hbulk threshold parameter V**0.5 0.0 0.37 TEXT: H 5 GPHI Hsurface potential V 0.6 0.65 TEXT: H 6 GLAMBDA Hchannel-length modulation TEXT: H (MOS1 and MOS2 only) 1/V 0.0 0.02 TEXT: H 7 GRD Hdrain ohmic resistance Ohm 0.0 1.0 TEXT: H 8 GRS Hsource ohmic resistance Ohm 0.0 1.0 TEXT: H 9 GCBD Hzero-bias B-D junction capacitance F 0.0 20FF TEXT: H 10 GCBS Hzero-bias B-S junction capacitance F 0.0 20FF TEXT: H 11 GIS Hbulk junction saturation current A 1.0E-14 1.0E-15 TEXT: H 12 GPB Hbulk junction potential V 0.8 0.87 TEXT: H 13 GCGSO Hgate-source overlap capacitance TEXT: H per meter channel width F/m 0.0 4.0E-11 TEXT: H 14 GCGDO Hgate-drain overlap capacitance TEXT: H per meter channel width F/m 0.0 4.0E-11 TEXT: H 15 GCGBO Hgate-bulk overlap capacitance TEXT: H per meter channel length F/m 0.0 2.0E-10 TEXT: H 16 GRSH Hdrain and source diffusion TEXT: H sheet resistance Ohm/sq. 0.0 10.0 TEXT: H 17 GCJ Hzero-bias bulk junction bottom cap. TEXT: H per sq-meter of junction area F/m**2 0.0 2.0E-4 TEXT: H 18 GMJ Hbulk junction bottom grading coef. - 0.5 0.5 TEXT: H 19 GCJSW Hzero-bias bulk junction sidewall cap. TEXT: H per meter of junction perimeter F/m 0.0 1.0E-9 TEXT: H 20 GMJSW Hbulk junction sidewall grading coef. - 0.50(level1) TEXT: H 0.33(level2,3) TEXT: H 21 GJS Hbulk junction saturation current TEXT: H per sq-meter of junction area A/m**2 1.0E-8 TEXT: H 22 GTOX Hoxide thickness meter 1.0E-7 1.0E-7 TEXT: H 23 GNSUB Hsubstrate doping 1/cm**3 0.0 4.0E15 TEXT: H 24 GNSS Hsurface state density 1/cm**2 0.0 1.0E10 TEXT: H 25 GNFS Hfast surface state density 1/cm**2 0.0 1.0E10 TEXT: H 26 GTPG Htype of gate material: - 1.0 TEXT: H +1 opp. to substrate TEXT: H -1 same as substrate TEXT: H 0 Al gate TEXT: H 27 GXJ Hmetallurgical junction depth meter 0.0 1U TEXT: H 28 GLD Hlateral diffusion meter 0.0 0.8U TEXT: H 29 GUO Hsurface mobility cm**2/V-s 600 700 TEXT: H 30 GUCRIT Hcritical field for mobility TEXT: H degradation (MOS2 only) V/cm 1.0E4 1.0E4 TEXT: H 31 GUEXP Hcritical field exponent in TEXT: H mobility degradation (MOS2 only) - 0.0 0.1 TEXT: H 32 GUTRA Htransverse field coef (mobility) TEXT: H (deleted for MOS2) - 0.0 0.3 TEXT: H 33 GVMAX Hmaximum drift velocity of carriers m/s 0.0 5.0E4 TEXT: H 34 GNEFF Htotal channel charge (fixed and TEXT: H mobile) coefficient (MOS2 only) - 1.0 5.0 TEXT: H 35 GKF Hflicker noise coefficient - 0.0 1.0E-26 TEXT: H 36 GAF Hflicker noise exponent - 1.0 1.2 TEXT: H 37 GFC Hcoefficient for forward-bias TEXT: H TEXT: TEXT: depletion capacitance formula - 0.5 TEXT: H 38 GDELTA Hwidth effect on threshold voltage TEXT: H (MOS2 and MOS3) - 0.0 1.0 TEXT: H 39 GTHETA Hmobility modulation (MOS3 only) 1/V 0.0 0.1 TEXT: H 40 GETA Hstatic feedback (MOS3 only) - 0.0 1.0 TEXT: H 41 GKAPPA Hsaturation field factor (MOS3 only) - 0.2 0.5 TEXT: H TEXT: TEXT: The level 4 parameters are all values obtained from TEXT: H process characterization, and can be generated automati- TEXT: H cally. J. Pierret [3] describes a means of generating a TEXT: H 'process' file, and the program GProc2Mod Hprovided with TEXT: H SPICE3 will convert this file into a sequence of G.MODEL TEXT: H Hlines suitable for inclusion in a SPICE circuit file. TEXT: H Parameters marked below with an * in the l/w column also TEXT: H have corresponding parameters with a length and width depen- TEXT: H dency. For example, GVFB His the basic parameter with units TEXT: H of Volts, and GLVFB Hand GWVFB Halso exist and have units of TEXT: H Volt-umeter The formula TEXT: H TEXT: P=P0+Leffective TEXT: PL__________+Weffective TEXT: PW__________ TEXT: H TEXT: is used to evaluate the parameter for the actual device TEXT: H specified with TEXT: H TEXT: Leffective=Linput-DL TEXT: H TEXT: and TEXT: H TEXT: Weffective=Winput-DW TEXT: H TEXT: TEXT: Note that unlike the other models in SPICE, the BSIM TEXT: H model is designed for use with a process characterization TEXT: H system that provides all the parameters, thus there are no TEXT: H defaults for the parameters, and leaving one out is con- TEXT: H sidered an error. For an example set of parameters and the TEXT: H format of a process file, see the SPICE2 implementation TEXT: H notes[2]. TEXT: H TEXT: SPICE BSIM (level 4) parameters. TEXT: H name parameter units l/w TEXT: H TEXT: H GVFB Hflat-band voltage V * TEXT: H GPHI Hsurface inversion potential V * TEXT: H GK1 Hbody effect coefficient V1/2 * TEXT: H GK2 Hdrain/source depletion charge sharing coefficient - * TEXT: H GETA Hzero-bias drain-induced barrier lowering coefficient - * TEXT: H GMUZ Hzero-bias mobility cm2/V-s TEXT: H GDL Hshortening of channel um TEXT: H GDW Hnarrowing of channel um TEXT: H TEXT: TEXT: GU0 Hzero-bias transverse-field mobility degradation coefficient V-1 * TEXT: H GU1 Hzero-bias velocity saturation coefficient um/V * TEXT: H GX2MZ Hsens. of mobility to substrate bias at vds=0 cm2/V2-s * TEXT: H GX2E Hsens. of drain-induced barrier lowering effect to substrate bias V-1 * TEXT: H GX3E Hsens. of drain-induced barrier lowering effect to drain bias at Vds=Vdd V-1 * TEXT: H GX2U0 Hsens. of transverse field mobility degradation effect to substrate bias V-2 * TEXT: H GX2U1 Hsens. of velocity saturation effect to substrate bias umV-2 * TEXT: H GMUS Hmobility at zero substrate bias and at Vds=Vdd cm2/V2-s TEXT: H GX2MS Hsens. of mobility to substrate bias at Vds=Vdd cm2/V2-s * TEXT: H GX3MS Hsens. of mobility to drain bias at Vds=Vdd cm2/V2-s * TEXT: H GX3U1 Hsens. of velocity saturation effect on drain bias at Vds=Vdd umV-2 * TEXT: H GTOX Hgate oxide thickness um TEXT: H GTEMP Htemperature at which parameters were measured C TEXT: H GVDD Hmeasurement bias range V TEXT: H GCGDO Hgate-drain overlap capacitance per meter channel width F/m TEXT: H GCGSO Hgate-source overlap capacitance per meter channel width F/m TEXT: H GCGBO Hgate-bulk overlap capacitance per meter channel length F/m TEXT: H GXPART Hgate-oxide capacitance charge model flag - TEXT: H GN0 Hzero-bias subthreshold slope coefficient - * TEXT: H GNB Hsens. of subthreshold slope to substrate bias - * TEXT: H GND Hsens. of subthreshold slope to drain bias - * TEXT: H GRSH Hdrain and source diffusion sheet resistance O_/[] TEXT: H GJS Hsource drain junction current density A/m2 TEXT: H GPB Hbuilt in potential of source drain junction V TEXT: H GMJ HGrading coefficient of source drain junction - TEXT: H GPBSW Hbuilt in potential of source,drain juntion sidewall V TEXT: H GMJSW Hgrading coefficient of source drain junction sidewall - TEXT: H GCJ HSource drain junction capacitance per unit area F/m2 TEXT: H GCJSW Hsource drain junction sidewall capacitance per unit length F/m TEXT: H GWDF Hsource drain junction default width m TEXT: H GDELL HSource drain junction length reduction m TEXT: H TEXT: TEXT: GXPART H= 0 selects a 40/60 drain/source charge partition TEXT: H in saturation, while GXPART H= 1 selects a 0/100 drain/source TEXT: H charge partition. TEXT: H TEXT: SEEALSO: spice:m SUBJECT: rmodel TITLE: Resistor Models TEXT: TEXT: The resistor model consists of process-related device TEXT: H data that allow the resistance to be calculated from TEXT: H geometric information and to be corrected for temperature. TEXT: H The parameters available are: TEXT: H TEXT: Gname Hparameter units default example TEXT: H TEXT: H GTC1 Hfirst order temperature coeff. O_/C 0.0 - TEXT: H GTC2 Hsecond order temperature coeff. O_/C2 0.0 - TEXT: H GRSH Hsheet resistance O_/[] - 50 TEXT: H GDEFW Hdefault width meters 1e-6 2e-6 TEXT: H GNARROW Hnarrowing due to side etching meters 0.0 1e-7 TEXT: H TEXT: TEXT: The sheet resistance is used with the narrowing parame- TEXT: H ter and _L and _W from the resistor line to determine the nom- TEXT: H inal resistance by the formula TEXT: H TEXT: R=RSHxW-NARROW TEXT: L-NARROW________ TEXT: H TEXT: _D_E_F_W is used to supply a default value for _W if one is not TEXT: H specified on the device line. If either _R_S_H or _L is not TEXT: H specified, then the standard default resistance value of 1k TEXT: H O_ is used. After the nominal resistance is calculated, it TEXT: H is adjusted for temperature by the formula: TEXT: H TEXT: RES(temp)=RES(tnom)x(1+TC1x(temp-tnom)+TC2*(temp-tnom)2) TEXT: H TEXT: SEEALSO: spice:r SUBJECT: swmodel TITLE: Switch Models TEXT: TEXT: The switch model allows an almost ideal switch to be TEXT: H described in SPICE. The switch is not quite ideal, in that TEXT: H the resistance can not change from 0 to infinity, but must TEXT: H always have a finite positive value. By proper selection of TEXT: H the on and off resistances, they can be effectively zero and TEXT: H infinity in comparison to other circuit elements. The TEXT: H parameters available are: TEXT: H TEXT: name parameter units default switch TEXT: H TEXT: H GVT Hthreshold voltage Volts 0.0 S TEXT: H GIT Hthreshold current Amps 0.0 W TEXT: H GVH Hhysteresis voltage Volts 0.0 S TEXT: H GIH Hhysteresis current Amps 0.0 W TEXT: H GRON Hon resistance O_ 1.0 both TEXT: H GROFF Hoff resistance O_ 1/GMIN* both TEXT: H TEXT: TEXT: *(See the description of the G.OPTIONS Hline for a TEXT: H description of GGMINH, its default value results is a off TEXT: H resistance of 1.0e+12 ohms.) TEXT: H TEXT: The use of an ideal element that is highly non-linear TEXT: H such as a switch can cause large discontinuities to occur in TEXT: H the circuit node voltages. A rapid change such as that TEXT: H associated with a switch changing state can cause numerical TEXT: H roundoff or tolerance problems leading to erroneous results TEXT: H or timestep difficulties. The user of switches can improve TEXT: H the situation by taking the following steps: TEXT: H TEXT: First of all it is wise to set ideal switch impedences TEXT: H only high and low enough to be negligible with respect to TEXT: H other circuit elements. Using switch impedences that are TEXT: H close to "ideal" in all cases will aggravate the problem of TEXT: H discontinuities mentioned above. Of course, when modeling TEXT: H real devices such as MOSFETS, the on resistance should be TEXT: H adjusted to a realistic level depending on the size of the TEXT: H device being modelled. TEXT: H TEXT: If a wide range of ON to OFF resistance must be used in TEXT: H the switches (ROFF/RON >1e+12), then the tolerance on errors TEXT: H allowed during transient analysis should be decreased by TEXT: H using the G.OPTIONS Hline and specifying GTRTOL Hto be less than TEXT: H the default value of 7.0. When switches are placed around TEXT: H capacitors, then the option GCHGTOL Hshould also be reduced. TEXT: H Suggested values for these two options are 1.0 and 1e-16 TEXT: H respectively. These changes inform SPICE3 to be more care- TEXT: H ful around the switch points so that no errors are made due TEXT: H to the rapid change in the circuit. TEXT: H TEXT: SEEALSO: spice:sw SUBJECT: urc TITLE: URC Models TEXT: TEXT: The URC model is derived from a model proposed by L. TEXT: H Gertzberrg in 1974. The model is accomplished by a subcir- TEXT: H cuit type expansion of the URC line into a network of lumped TEXT: H RC segments with internally generated nodes. The RC seg- TEXT: H ments are in a geometric progression, increasing toward the TEXT: H middle of the URC line, with K as a proportionality con- TEXT: H stant. The number of lumped segments used, if not specified TEXT: H on the URC line, is determined by the following formula: TEXT: H TEXT: TEXT: N= logK TEXT: TEXT: log TEXT: | TEXT: | TEXT: | TEXT: FmaxxL TEXT: R_xL TEXT: C_x2xi~i~xl2x| TEXT: | K TEXT: (K-1)_____| TEXT: |2 TEXT: | TEXT: | TEXT: |______________________________ TEXT: H TEXT: TEXT: The URC line will be made up strictly of resistor and TEXT: H capacitor segments unless the GISPERL Hparameter is given a TEXT: H non-zero value, in which case the capacitors are replaced TEXT: H with reverse biased diodes with a zero-bias junction capaci- TEXT: H tance equivalent to the capacitance replaced, and with a TEXT: H saturation current of GISPERL Hamps per meter of transmission TEXT: H line and an optional series resistance equivalent to GRSPERL TEXT: H Hohms per meter. TEXT: H TEXT: name parameter units default example area TEXT: H TEXT: H 1 GK HPropagation Constant - 2.0 1.2 - TEXT: H 2 GFMAX HMaximum Frequency of interest Hz 1.0G 6.5MEG - TEXT: H 3 GRPERL HResistance per unit length Ohm/m 1000 10 - TEXT: H 4 GCPERL HCapacitance per unit length F/m 1.0E-15 1PF - TEXT: H 5 GISPERL HSaturation Current per unit length Amp/m 0 - - TEXT: H 6 GRSPERL HDiode Resistance per unit length Ohm/m 0 - - TEXT: H TEXT: SEEALSO: spice:u SUBJECT: options TITLE: Circuit Options TEXT: TEXT: The following options are recognised by SPICE3. Not TEXT: H included are options recognised by the front-end and options TEXT: H supported for backward compatibility with SPICE2. TEXT: H TEXT: SUBTOPIC: spice:abstol spice:bypass spice:chgtol SUBTOPIC: spice:defad spice:defas spice:defl SUBTOPIC: spice:defw spice:gmin spice:itl1 SUBTOPIC: spice:itl2 spice:itl5 spice:pivrel SUBTOPIC: spice:pivtol spice:reltol spice:tnom SUBTOPIC: spice:trtol spice:vntol SEEALSO: nutmeg:set SEEALSO: spice:option SUBJECT: abstol TITLE: abstol TEXT: TEXT: ABSTOL = x TEXT: H Resets the absolute current error tolerance of the pro- TEXT: H gram. The default value is 1 picoamp. TEXT: H TEXT: SUBJECT: bypass TITLE: bypass TEXT: TEXT: BYPASS TEXT: H The bypass option... TEXT: H TEXT: SUBJECT: chgtol TITLE: chgtol TEXT: TEXT: CHGTOL = x TEXT: H Resets the charge tolerance of the program. The TEXT: H default value is 1.0E-14. TEXT: H TEXT: SUBJECT: defad TITLE: defad TEXT: TEXT: DEFAD = x TEXT: H Resets the value for MOS drain diffusion area; the TEXT: H default is 0.0. TEXT: H TEXT: SEEALSO: spice:m SUBJECT: defas TITLE: defas TEXT: TEXT: DEFAS = x TEXT: H Resets the value for MOS source diffusion area; the TEXT: H default is 0.0. TEXT: H TEXT: SEEALSO: spice:m SUBJECT: defl TITLE: defl TEXT: TEXT: DEFL = x TEXT: H Resets the value for MOS channel length; the default is TEXT: H 100.0 micrometer. TEXT: H TEXT: SEEALSO: spice:m SUBJECT: defw TITLE: defw TEXT: TEXT: DEFW = x TEXT: H Resets the value for MOS channel width; the default is TEXT: H 100.0 micrometer. TEXT: H TEXT: SEEALSO: spice:m SUBJECT: gmin TITLE: gmin TEXT: TEXT: GMIN = x TEXT: H Resets the value of GMIN, the minimum conductance TEXT: H allowed by the program. The default value is 1.0E-12. TEXT: H TEXT: SUBJECT: itl1 TITLE: itl1 TEXT: TEXT: ITL1 = x TEXT: Resets the dc iteration limit. The default is 100. TEXT: SEEALSO: spice:dcanalysis SUBJECT: itl2 TITLE: itl2 TEXT: TEXT: ITL2 = x TEXT: Resets the dc transfer curve iteration limit. The TEXT: default is 50. TEXT: SEEALSO: spice:dcanalysis SUBJECT: itl5 TITLE: itl5 TEXT: TEXT: ITL5 = x TEXT: H Resets the transient analysis total iteration limit. TEXT: H The default is 5000. Set ITL5=0 to omit this test. TEXT: H TEXT: SEEALSO: spice:trananalysis SUBJECT: pivrel TITLE: pivrel TEXT: TEXT: PIVREL = x TEXT: H Resets the relative ratio between the largest column TEXT: H entry and an acceptable pivot value. The default value TEXT: H is 1.0E-3. In the numerical pivoting algorithm the TEXT: H allowed minimum pivot value is determined by TEXT: H EPSREL=AMAX1(PIVREL*MAXVAL,PIVTOL) where MAXVAL is the TEXT: H maximum element in the column where a pivot is sought TEXT: H (partial pivoting). TEXT: H TEXT: SUBJECT: pivtol TITLE: pivtol TEXT: TEXT: PIVTOL = x TEXT: H Resets the absolute minimum value for a matrix entry to TEXT: H be accepted as a pivot. The default value is 1.0E-13. TEXT: H TEXT: SUBJECT: reltol TITLE: reltol TEXT: TEXT: RELTOL = x TEXT: H Resets the relative error tolerance of the program. TEXT: H The default value is 0.001 (0.1 percent). TEXT: H TEXT: SUBJECT: tnom TITLE: tnom TEXT: TEXT: TNOM = x TEXT: H Resets the nominal temperature. The default value is TEXT: H 27 deg C (300 deg K). TEXT: H TEXT: SUBJECT: trtol TITLE: trtol TEXT: TEXT: TRTOL = x TEXT: H Resets the transient error tolerance. The default TEXT: H value is 7.0. This parameter is an estimate of the TEXT: H factor by which SPICE overestimates the actual trunca- TEXT: H tion error. TEXT: H TEXT: SUBJECT: vntol TITLE: vntol TEXT: TEXT: VNTOL = x TEXT: H Resets the absolute voltage error tolerance of the pro- TEXT: H gram. The default value is 1 microvolt. TEXT: H TEXT: SUBJECT: convergence TITLE: Convergence TEXT: TEXT: Both dc and transient solutions are obtained by an TEXT: H iterative process which is terminated when both of the fol- TEXT: H lowing conditions hold: TEXT: H TEXT: 1) The nonlinear branch currents converge to within a TEXT: H tolerance of 0.1 percent or 1 picoamp (1.0E-12 Amp), TEXT: H whichever is larger. TEXT: H TEXT: 2) The node voltages converge to within a tolerance of 0.1 TEXT: H percent or 1 microvolt (1.0E-6 Volt), whichever is TEXT: H larger. TEXT: H TEXT: Although the algorithm used in SPICE has been found to TEXT: H be very reliable, in some cases it will fail to converge to TEXT: H a solution. When this failure occurs, the program will ter- TEXT: H minate the job. TEXT: H TEXT: Failure to converge in dc analysis is usually due to an TEXT: H error in specifying circuit connections, element values, or TEXT: H model parameter values. Regenerative switching circuits or TEXT: H circuits with positive feedback probably will not converge TEXT: H in the dc analysis unless the GOFF Hoption is used for some of TEXT: H the devices in the feedback path, or the G.NODESET Hline is TEXT: H used to force the circuit to converge to the desired state. TEXT: H TEXT: SUBJECT: elements TITLE: Circuit Elements TEXT: TEXT: The following circuit elements are available in SPICE. TEXT: H TEXT: SUBTOPIC: spice:cl spice:depsource spice:iv SUBTOPIC: spice:k spice:r spice:semicond SUBTOPIC: spice:sw spice:t SUBJECT: cl TITLE: Capacitors and Inductors TEXT: TEXT: GGeneral form: TEXT: H TEXT: CH_X_X_X_X_X_X_X _N+ _N- _V_A_L_U_E <GICH=_I_N_C_O_N_D> TEXT: H LYYYYYYY N+ N- VALUE <GICH=_I_N_C_O_N_D> TEXT: H TEXT: GExamples: TEXT: H TEXT: CHBYP 13 0 1UF TEXT: H GCHOSC 17 23 10U IC=3V TEXT: H GLHLINK 42 69 1UH TEXT: H GLHSHUNT 23 51 10U IC=15.7MA TEXT: H TEXT: TEXT: _N+ and _N- are the positive and negative element nodes, TEXT: H respectively. _V_A_L_U_E is the capacitance in Farads or the TEXT: H inductance in Henries. TEXT: H TEXT: For the capacitor, the (optional) initial condition is TEXT: H the initial (time-zero) value of capacitor voltage (in TEXT: H Volts). For the inductor, the (optional) initial condition TEXT: H is the initial (time-zero) value of inductor current (in TEXT: H Amps) that flows from _N+, through the inductor, to _N-. Note TEXT: H that the initial conditions (if any) apply only if the GUIC TEXT: H Hoption is specified on the G.TRAN Hline. TEXT: H TEXT: SEEALSO: spice:c SUBJECT: depsource TITLE: Linear Dependent Sources TEXT: TEXT: SPICE allows circuits to contain linear dependent TEXT: H sources characterized by any of the four equations TEXT: H TEXT: i = _g * v v = _e * v i = _f * i v = _h * i TEXT: H TEXT: where _g, _e, _f, and _h are constants representing TEXT: H transconductance,voltage gain, current gain, and transresis- TEXT: H tance, respectively. TEXT: H TEXT: SUBTOPIC: spice:VCVS spice:f spice:g SUBTOPIC: spice:h SUBJECT: VCVS TITLE: Voltage-Controlled Voltage Sources TEXT: TEXT: GGeneral form: TEXT: H TEXT: EH_X_X_X_X_X_X_X _N+ _N- _N_C+ _N_C- _V_A_L_U_E TEXT: H TEXT: GExamples: TEXT: H TEXT: EH1 2 3 14 1 2.0 TEXT: H TEXT: TEXT: _N+ is the positive node, and _N- is the negative node. TEXT: H _N_C+ and _N_C- are the positive and negative controlling nodes, TEXT: H respectively. _V_A_L_U_E is the voltage gain. TEXT: H TEXT: SUBJECT: f TITLE: Current-Controlled Current Sources TEXT: TEXT: GGeneral form: TEXT: H TEXT: FH_X_X_X_X_X_X_X _N+ _N- _V_N_A_M _V_A_L_U_E TEXT: H TEXT: GExamples: TEXT: H TEXT: FH1 13 5 VSENS 5 TEXT: H TEXT: TEXT: _N+ and _N- are the positive and negative nodes, respec- TEXT: H tively. Current flow is from the positive node, through the TEXT: H source, to the negative node. _V_N_A_M is the name of a voltage TEXT: H source through which the controlling current flows. The TEXT: H direction of positive controlling current flow is from the TEXT: H positive node, through the source, to the negative node of TEXT: H _V_N_A_M. _V_A_L_U_E is the current gain. TEXT: H TEXT: SUBJECT: g TITLE: Voltage Controlled Current Sources TEXT: TEXT: GGeneral form: TEXT: H TEXT: GH_X_X_X_X_X_X_X _N+ _N- _N_C+ _N_C- _V_A_L_U_E TEXT: H TEXT: GExamples: TEXT: H TEXT: GH1 2 0 5 0 0.1MMHO TEXT: H TEXT: TEXT: _N+ and _N- are the positive and negative nodes, respec- TEXT: H tively. Current flow is from the positive node, through the TEXT: H source, to the negative node. _N_C+ and _N_C- are the positive TEXT: H and negative controlling nodes, respectively. _V_A_L_U_E is the TEXT: H transconductance (in mhos). TEXT: H TEXT: SUBJECT: h TITLE: Current-Controlled Voltage Sources TEXT: TEXT: GGeneral form: TEXT: H TEXT: HH_X_X_X_X_X_X_X _N+ _N- _V_N_A_M _V_A_L_U_E TEXT: H TEXT: GExamples: TEXT: H TEXT: HHX 5 17 VZ 0.5K TEXT: H TEXT: TEXT: _N+ and _N- are the positive and negative nodes, respec- TEXT: H tively. _V_N_A_M is the name of a voltage source through which TEXT: H the controlling current flows. The direction of positive TEXT: H controlling current flow is from the positive node, through TEXT: H the source, to the negative node of _V_N_A_M. _V_A_L_U_E is the TEXT: H transresistance (in ohms). TEXT: H TEXT: SUBJECT: iv TITLE: Independent Sources TEXT: TEXT: GGeneral form: TEXT: H TEXT: VH_X_X_X_X_X_X_X _N+ _N- <<_D_C> _D_C/_T_R_A_N _V_A_L_U_E> <_A_C <_A_C_M_A_G <_A_C_P_H_A_S_E>>> TEXT: H GIH_Y_Y_Y_Y_Y_Y_Y _N+ _N- <<_D_C> _D_C/_T_R_A_N _V_A_L_U_E> <_A_C <_A_C_M_A_G <_A_C_P_H_A_S_E>>> TEXT: H TEXT: GExamples: TEXT: H TEXT: VHCC 10 0 GDC H6 TEXT: H GVHIN 13 2 0.001 GAC H1 GSINH(0 1 1MEG) TEXT: H GIHSRC 23 21 GAC H0.333 45.0 GSFFMH(0 1 10K 5 1K) TEXT: H GVHMEAS 12 9 TEXT: H TEXT: TEXT: _N+ and _N- are the positive and negative nodes, respec- TEXT: H tively. Note that voltage sources need not be grounded. TEXT: H Positive current is assumed to flow from the positive node, TEXT: H through the source, to the negative node. A current source TEXT: H of positive value, will force current to flow out of the _N+ TEXT: H node, through the source, and into the _N- node. Voltage TEXT: H sources, in addition to being used for circuit excitation, TEXT: H are the 'ammeters' for SPICE, that is, zero valued voltage TEXT: H sources may be inserted into the circuit for the purpose of TEXT: H measuring current. They will, of course, have no effect on TEXT: H circuit operation since they represent short-circuits. TEXT: H TEXT: _D_C/_T_R_A_N is the dc and transient analysis value of the TEXT: H source. If the source value is zero both for dc and tran- TEXT: H sient analyses, this value may be omitted. If the source TEXT: H value is time-invariant (e.g., a power supply), then he TEXT: H value may optionally be preceded by the letters DC. TEXT: H TEXT: _A_C_M_A_G is the ac magnitude and _A_C_P_H_A_S_E is the ac phase. TEXT: H The source is set to this value in the ac analysis. If TEXT: H _A_C_M_A_G is omitted following the keyword GACH, a value of unity TEXT: H is assumed. If _A_C_P_H_A_S_E is omitted, a value of zero is TEXT: H assumed. If the source is not an ac small-signal input, the TEXT: H keyword GAC Hand the ac values are omitted. TEXT: H TEXT: Any independent source can be assigned a time-dependent TEXT: H value for transient analysis. If a source is assigned a TEXT: H time-dependent value, the time-zero value is used for dc TEXT: H analysis. There are five independent source functions: TEXT: H pulse, exponential, sinusoidal, piece-wise linear, and TEXT: H single-frequency FM. If parameters other than source values TEXT: H are omitted or set to zero, the default values shown will be TEXT: H assumed. (_T_S_T_E_P is the printing increment and _T_S_T_O_P is the TEXT: H final time (see the G.TRAN Hline for explanation)). TEXT: H TEXT: SUBTOPIC: spice:Exponential spice:fm spice:pulse SUBTOPIC: spice:pwl spice:sin SUBJECT: Exponential TITLE: Exponential TEXT: TEXT: GEXPH(_V_1 _V_2 _T_D_1 _T_A_U_1 _T_D_2 _T_A_U_2) TEXT: H TEXT: GExamples: TEXT: H TEXT: VHIN 3 0 GEXPH(-4 -1 2NS 30NS 60NS 40NS) TEXT: H TEXT: TEXT: Gparameters default values units TEXT: H TEXT: H V1 (initial value) HVolts or Amps TEXT: H GV2 (pulsed value) HVolts or Amps TEXT: H GTD1 (rise delay time) H0.0 seconds TEXT: H GTAU1 (rise time constant) HTSTEP seconds TEXT: H GTD2 (fall delay time) HTD1+TSTEP seconds TEXT: H GTAU2 (fall time constant) HTSTEP seconds TEXT: H TEXT: TEXT: The shape of the waveform is described by the following TEXT: H table: TEXT: H TEXT: time value TEXT: H TEXT: H 0 to TD1 V1 TEXT: H TD1 to TD2 V1+(V2-V1)*(1-exp(-(time-TD1)/TAU1)) TEXT: H TD2 to TSTOP V1+(V2-V1)*(1-exp(-(time-TD1)/TAU1)) TEXT: H +(V1-V2)*(1-exp(-(time-TD2)/TAU2)) TEXT: H TEXT: SUBJECT: fm TITLE: Single-Frequency FM TEXT: TEXT: GSFFMH(_V_O _V_A _F_C _M_D_I _F_S) TEXT: H TEXT: GExamples: TEXT: H TEXT: VH1 12 0 GSFFMH(0 1M 20K 5 1K) TEXT: H TEXT: TEXT: Gparameters default values units TEXT: H TEXT: H VO (offset) HVolts or Amps TEXT: H GVA (amplitude) HVolts or Amps TEXT: H GFC (carrier frequency) H1/TSTOP Hz TEXT: H GMDI (modulation index) TEXT: H FS (signal frequency) H1/TSTOP Hz TEXT: H TEXT: TEXT: The shape of the waveform is described by the following TEXT: H equation: TEXT: H TEXT: value = VO + VA*sine((twopi*FC*time) + MDI*sine(twopi*FS*time)) TEXT: H TEXT: SUBJECT: pulse TITLE: Pulse TEXT: TEXT: GPULSEH(_V_1 _V_2 _T_D _T_R _T_F _P_W _P_E_R) TEXT: H TEXT: GExamples: TEXT: H TEXT: VHIN 3 0 GPULSEH(-1 1 2NS 2NS 2NS 50NS 100NS) TEXT: H TEXT: TEXT: Gparameters Hdefault values units TEXT: H TEXT: H GV1 (initial value) HVolts or Amps TEXT: H GV2 (pulsed value) HVolts or Amps TEXT: H GTD (delay time) H0.0 seconds TEXT: H GTR (rise time) HTSTEP seconds TEXT: H GTF (fall time) HTSTEP seconds TEXT: H GPW (pulse width) HTSTOP seconds TEXT: H GPER(period) HTSTOP seconds TEXT: H TEXT: TEXT: A single pulse so specified is described by the follow- TEXT: H ing table: TEXT: H TEXT: time value TEXT: H TEXT: H 0 V1 TEXT: H TD V1 TEXT: H TD+TR V2 TEXT: H TD+TR+PW V2 TEXT: H TD+TR+PW+TF V1 TEXT: H TSTOP V1 TEXT: H TEXT: TEXT: Intermediate points are determined by linear interpolation. TEXT: H TEXT: SUBJECT: pwl TITLE: Piece-Wise Linear TEXT: TEXT: GPWLH(_T_1 _V_1 <_T_2 _V_2 _T_3 _V_3 _T_4 _V_4 ...>) TEXT: H TEXT: GExamples: TEXT: H TEXT: VHCLOCK 7 5 GPWLH(0 -7 10NS -7 11NS -3 17NS -3 18NS -7 50NS -7) TEXT: H TEXT: TEXT: Each pair of values (_T_i, _V_i) specifies that the value TEXT: H of the source is _V_i (in Volts or Amps) at time = _T_i. The TEXT: H value of the source at intermediate values of time is deter- TEXT: H mined by using linear interpolation on the input values. TEXT: H TEXT: SUBJECT: sin TITLE: Sinusoidal TEXT: TEXT: GSINH(_V_O _V_A _F_R_E_Q _T_D _T_H_E_T_A) TEXT: H TEXT: GExamples: TEXT: H TEXT: VHIN 3 0 GSINH(0 1 100MEG 1NS 1E10) TEXT: H TEXT: TEXT: Gparameters default value units TEXT: H TEXT: H VO (offset) Volts or Amps TEXT: H VA (amplitude) Volts or Amps TEXT: H FREQ (frequency) 1/TSTOP Hz TEXT: H TD (delay) 0.0 seconds TEXT: H THETA (damping factor) 0.0 1/seconds TEXT: H TEXT: TEXT: HThe shape of the waveform is described by the following TEXT: H table: TEXT: H TEXT: time value TEXT: H TEXT: H 0 to TD VO TEXT: H TD to TSTOP VO + VA*exp(-(time-TD)*THETA)* TEXT: H sine(twopi*FREQ*(time+TD)) TEXT: H TEXT: SUBJECT: k TITLE: Coupled (Mutual) Inductors TEXT: TEXT: GGeneral form: TEXT: H TEXT: KHXXXXXXX GLH_Y_Y_Y_Y_Y_Y_Y GLH_Z_Z_Z_Z_Z_Z_Z _V_A_L_U_E TEXT: H TEXT: GExamples: TEXT: H TEXT: KH43 GLHAA GLHBB 0.999 TEXT: H GKHXFRMR GLH1 GLH2 0.87 TEXT: H TEXT: TEXT: GLH_Y_Y_Y_Y_Y_Y_Y _a_n_d GLH_Z_Z_Z_Z_Z_Z_Z _a_r_e _t_h_e _n_a_m_e_s _o_f _t_h_e _t_w_o _c_o_u_p_l_e_d TEXT: H _i_n_d_u_c_t_o_r_s, _a_n_d _V_A_L_U_E is the coefficient of coupling, K, TEXT: H which must be greater than 0 and less than or equal to 1. TEXT: H Using the 'dot' convention, place a 'dot' on the first node TEXT: H of each inductor. TEXT: H TEXT: SEEALSO: spice:cl SUBJECT: semicond TITLE: Semiconductor Devices TEXT: TEXT: The elements described to this point typically require TEXT: H only a few parameter values. However, the models for the TEXT: H semiconductor devices that are included in the SPICE program TEXT: H require many parameter values. Often, many devices in a TEXT: H circuit are defined by the same set of device model parame- TEXT: H ters. For these reasons, a set of device model parameters TEXT: H is defined on a separate G.MODEL Hline and assigned a unique TEXT: H model name. The device element lines in SPICE then refer to TEXT: H the model name. This scheme alleviates the need to specify TEXT: H all of the model parameters on each device element line. TEXT: H TEXT: Each device element line contains the device name, the TEXT: H nodes to which the device is connected, and the device model TEXT: H name. In addition, other optional parameters may be speci- TEXT: H fied for some devices: geometric factors and an initial TEXT: H condition. TEXT: H TEXT: The area factor used on the diode, BJT, JFET, and MES- TEXT: H FET device lines determines the number of equivalent paral- TEXT: H lel devices of a specified model. The affected parameters TEXT: H are marked with an asterisk under the heading 'area' in the TEXT: H model descriptions below. Several geometric factors associ- TEXT: H ated with the channel and the drain and source diffusions TEXT: H can be specified on the MOSFET device line. TEXT: H TEXT: Two different forms of initial conditions may be speci- TEXT: H fied for some devices. The first form is included to TEXT: H improve the dc convergence for circuits that contain more TEXT: H than one stable state. If a device is specified GOFFH, the dc TEXT: H operating point is determined with the terminal voltages for TEXT: H that device set to zero. After convergence is obtained, the TEXT: H program continues to iterate to obtain the exact value for TEXT: H the terminal voltages. If a circuit has more than one dc TEXT: H stable state, the GOFF Hoption can be used to force the solu- TEXT: H tion to correspond to a desired state. If a device is TEXT: H specified GOFF Hwhen in reality the device is conducting, the TEXT: H program will still obtain the correct solution (assuming the TEXT: H solutions converge) but more iterations will be required TEXT: H since the program must independently converge to two TEXT: H separate solutions. The G.NODESET Hline serves a similar pur- TEXT: H pose as the OFF option. The G.NODESET Hoption is easier to TEXT: H apply and is the preferred means to aid convergence. TEXT: H TEXT: The second form of initial conditions are specified for TEXT: H use with the transient analysis. These are true 'initial TEXT: H conditions' as opposed to the convergence aids above. See TEXT: H the description of the G.IC Hline and the G.TRAN Hline for a TEXT: H detailed explanation of initial conditions. TEXT: H TEXT: SUBTOPIC: spice:Capacitors spice:juncd spice:j SUBTOPIC: spice:m spice:q spice:r SUBTOPIC: spice:u spice:z SUBJECT: Capacitors TITLE: Capacitors TEXT: TEXT: GGeneral form: TEXT: H TEXT: CH_X_X_X_X_X_X_X _N_1 _N_2 <_V_A_L_U_E> <_M_N_A_M_E> <_L=_L_E_N_G_T_H> <_W=_W_I_D_T_H> <_I_C=_V_A_L> TEXT: H TEXT: GExamples: TEXT: H TEXT: CHLOAD 2 10 10P TEXT: H GCHMOD 3 7 CMODEL L=10u W=1u TEXT: H TEXT: TEXT: This is the more general form of the capacitor TEXT: H presented in section 6.2, and allows for the calculation of TEXT: H the actual capacitance value from strictly geometric infor- TEXT: H mation and the specifications of the process. If _V_A_L_U_E is TEXT: H specified, it defines the capacitance. If _M_N_A_M_E is speci- TEXT: H fied, then the capacitance is calculated from the process TEXT: H information in the model _M_N_A_M_E and the given _L_E_N_G_T_H and TEXT: H _W_I_D_T_H. If _V_A_L_U_E is not specified, then _M_N_A_M_E and _L_E_N_G_T_H TEXT: H Gmust Hbe specified. If _W_I_D_T_H is not specified, then it will TEXT: H be taken from the default width given in the model. Either TEXT: H _V_A_L_U_E or _M_N_A_M_E, _L_E_N_G_T_H, and _W_I_D_T_H may be specified, but not TEXT: H both sets. TEXT: H TEXT: SEEALSO: spice:cl SUBJECT: juncd TITLE: Junction Diodes TEXT: TEXT: GGeneral form: TEXT: H TEXT: DH_X_X_X_X_X_X_X _N+ _N- _M_N_A_M_E <_A_R_E_A> <GOFFH> TEXT: H TEXT: GExamples: TEXT: H TEXT: DHBRIDGE 2 10 DIODE1 TEXT: H GDHCLMP 3 7 DMOD 3.0 IC=0.2 TEXT: H TEXT: TEXT: _N+ and _N- are the positive and negative nodes, respec- TEXT: H tively. _M_N_A_M_E is the model name, _A_R_E_A is the area factor, TEXT: H and GOFF Hindicates an (optional) starting condition on the TEXT: H device for dc analysis. If the area factor is omitted, a TEXT: H value of 1.0 is assumed. The (optional) initial condition TEXT: H specification using GICH=_V_D is intended for use with the GUIC TEXT: H Hoption on the Gother than the quiescent operating point. TEXT: H TEXT: SEEALSO: spice:d SUBJECT: j TITLE: Junction Field-Effect Transistors TEXT: TEXT: GGeneral form: TEXT: H TEXT: JH_X_X_X_X_X_X_X _N_D _N_G _N_S _M_N_A_M_E <_A_R_E_A> <GOFFH> <_I_C=_V_D_S,_V_G_S> TEXT: H TEXT: GExamples: TEXT: H TEXT: JH1 7 2 3 JM1 GOFF TEXT: H TEXT: TEXT: H_N_D, _N_G, and _N_S are the drain, gate, and source nodes, TEXT: H respectively. _M_N_A_M_E is the model name, _A_R_E_A is the area TEXT: H factor, and GOFF Hindicates an (optional) initial condition on TEXT: H the device for dc analysis. If the area factor is omitted, TEXT: H a value of 1.0 is assumed. The (optional) initial condition TEXT: H specificaion using GICH=_V_D_S,_V_G_S is intended for use with the TEXT: H GUIC Hoption on the G.TRAN Hline, when a transient analysis is TEXT: H desired starting from other than the quiescent operating TEXT: H point. See the description of the G.IC Hline for a better way TEXT: H to set initial conditions. TEXT: H TEXT: SEEALSO: spice:jfet SUBJECT: m TITLE: MOSFET's TEXT: TEXT: GGeneral form: TEXT: H TEXT: MH_X_X_X_X_X_X_X _N_D _N_G _N_S _N_B _M_N_A_M_E <_L=_V_A_L> <_W=_V_A_L> <_A_D=_V_A_L> <_A_S=_V_A_L> TEXT: H + <_P_D=_V_A_L> <_P_S=_V_A_L> <_N_R_D=_V_A_L> <_N_R_S=_V_A_L> <GOFFH> <_I_C=_V_D_S,_V_G_S,_V_B_S> TEXT: H TEXT: GExamples: TEXT: H TEXT: MH1 24 2 0 20 TYPE1 TEXT: H GMH31 2 17 6 10 MODM L=5U W=2U TEXT: H GMH1 2 9 3 0 MOD1 L=10U W=5U AD=100P AS=100P PD=40U PS=40U TEXT: H TEXT: TEXT: _N_D, _N_G, _N_S, and _N_B are the drain, gate, source, and TEXT: H bulk (substrate) nodes, respectively. _M_N_A_M_E is the model TEXT: H name. _L and _W are the channel length and width, in meters. TEXT: H _A_D and _A_S are the areas of the drain and source diffusions, TEXT: H in sq-meters. Note that the suffix `U' specifies microns TEXT: H (1E-6 m) and P sq-microns (1E-12 sq-m). If any of _L, _W, _A_D, TEXT: H or _A_S are not specified, default values are used. The use TEXT: H of defaults simplifies input file preparation, as well as TEXT: H the editing required if device geometries are to be changed. TEXT: H _P_D and _P_S are the perimeters of the drain and source junc- TEXT: H tions, in meters. _N_R_D and _N_R_S designate the equivalent TEXT: H number of squares of the drain and source diffusions; these TEXT: H values multiply the sheet resistance _R_S_H specified on the TEXT: H G.MODEL Hline for an accurate representation of the parasitic TEXT: H series drain and source resistance of each transistor. _P_D TEXT: H and _P_S default to 0.0 while _N_R_D and _N_R_S to 1.0. GOFF Hindi- TEXT: H cates an (optional) initial condition on the device for dc TEXT: H analysis. The (optional) initial condition specification TEXT: H using GICH=_V_D_S,_V_G_S,_V_B_S is intended for use with the GUIC Hoption TEXT: H on the G.TRAN Hline, when a transient analysis is desired TEXT: H starting from other than the quiescent operating point. See TEXT: H the description of the G.IC Hline for a better and more con- TEXT: H venient way to specify transient initial conditions. TEXT: H TEXT: SEEALSO: spice:mosfet SUBJECT: q TITLE: Bipolar Junction Transistors TEXT: TEXT: GGeneral form: TEXT: H TEXT: QH_X_X_X_X_X_X_X _N_C _N_B _N_E <_N_S> _M_N_A_M_E <_A_R_E_A> <GOFFH> <_I_C=_V_B_E,_V_C_E> TEXT: H TEXT: GExamples: TEXT: H TEXT: QH23 10 24 13 QMOD IC=0.6,5.0 TEXT: H GQH50A 11 26 4 20 MOD1 TEXT: H TEXT: TEXT: _N_C, _N_B, and _N_E are the collector, base, and emitter TEXT: H nodes, respectively. _N_S is the (optional) substrate node. TEXT: H If unspecified, ground is used. _M_N_A_M_E is the model name, TEXT: H _A_R_E_A is the area factor, and GOFF Hindicates an (optional) TEXT: H initial condition on the device for the dc analysis. If the TEXT: H area factor is omitted, a value of 1.0 is assumed. The TEXT: H (optional) initial condition specification using GICH=_V_B_E,_V_C_E TEXT: H is intended for use with the GUIC Hoption on the G.TRAN Hline, TEXT: H when a transient analysis is desired starting from other TEXT: H than the quiescent operating point. See the G.IC Hline TEXT: H description for a better way to set transient initial condi- TEXT: H tions. TEXT: H TEXT: SEEALSO: spice:bjt SUBJECT: r TITLE: Resistors TEXT: TEXT: GGeneral form: TEXT: H TEXT: RH_X_X_X_X_X_X_X _N_1 _N_2 <_V_A_L_U_E> <_M_N_A_M_E> <_L=_L_E_N_G_T_H> <_W=_W_I_D_T_H> TEXT: H TEXT: GExamples: TEXT: H TEXT: RHLOAD 2 10 10K TEXT: H GRHMOD 3 7 RMODEL L=10u W=1u TEXT: H TEXT: TEXT: This is the more general form of the resistor presented TEXT: H in section 6.1, and allows the modeling of temperature TEXT: H effects and for the calculation of the actual resistance TEXT: H value from strictly geometric information and the specifica- TEXT: H tions of the process. If _V_A_L_U_E is specified, it overrides TEXT: H the geometric information and defines the resistance. If TEXT: H _M_N_A_M_E is specified, then the resistance may be calculated TEXT: H from the process information in the model _M_N_A_M_E and the TEXT: H given _L_E_N_G_T_H and _W_I_D_T_H. If _V_A_L_U_E is not specified, then TEXT: H _M_N_A_M_E and _L_E_N_G_T_H Gmust Hbe specified. If _W_I_D_T_H is not speci- TEXT: H fied, then it will be taken from the default width given in TEXT: H the model. TEXT: H TEXT: SEEALSO: spice:rmodel SUBJECT: u TITLE: URC's (Lossy) TEXT: TEXT: GGeneral form: TEXT: H TEXT: UH_X_X_X_X_X_X_X _N_1 _N_2 _N_3 _M_N_A_M_E _L=_L_E_N <_N=_L_U_M_P_S> TEXT: H TEXT: GExamples: TEXT: H TEXT: UH1 1 2 0 URCMOD L=50U TEXT: H GUHRC2 1 12 2 UMODL l=1MIL N=6 TEXT: H TEXT: TEXT: _N_1 and _N_2 are the two element nodes the RC line con- TEXT: H nects, while _N_3 is the node to which the capacitances are TEXT: H connected. _M_N_A_M_E is the model name, _L_E_N is the length of TEXT: H the RC line in meters. _L_U_M_P_S, if specified, is the number TEXT: H of lumped segments to use in modeling the RC line (see the TEXT: H model description for the action taken if this parameter is TEXT: H omitted). TEXT: H TEXT: SEEALSO: spice:t SUBJECT: z TITLE: MESFET's TEXT: TEXT: GGeneral form: TEXT: H TEXT: ZH_X_X_X_X_X_X_X _N_D _N_G _N_S _M_N_A_M_E <_A_R_E_A> <GOFFH> <_I_C=_V_D_S,_V_G_S> TEXT: H TEXT: GExamples: TEXT: H TEXT: ZH1 7 2 3 ZM1 GOFF TEXT: H TEXT: TEXT: H_N_D, _N_G, and _N_S are the drain, gate, and source nodes, TEXT: H respectively. _M_N_A_M_E is the model name, _A_R_E_A is the area TEXT: H factor, and GOFF Hindicates an (optional) initial condition on TEXT: H the device for dc analysis. If the area factor is omitted, TEXT: H a value of 1.0 is assumed. The (optional) initial condition TEXT: H specification, using GICH=_V_D_S,_V_G_S is intended for use with the TEXT: H GUIC Hoption on the G.TRAN Hline, when a transient analysis is TEXT: H desired starting from other than the quiescent operating TEXT: H point. See the description of the G.IC Hline for a better way TEXT: H to set initial conditions. TEXT: H TEXT: SEEALSO: spice:mesfet SUBJECT: sw TITLE: Switches TEXT: TEXT: GGeneral form: TEXT: H TEXT: SH_X_X_X_X_X_X_X _N+ _N- _N_C+ _N_C- _M_O_D_E_L G TEXT: H WH_Y_Y_Y_Y_Y_Y_Y _N+ _N- _V_N_A_M _M_O_D_E_L G TEXT: H TEXT: Examples: TEXT: H TEXT: SH1 1 2 3 4 SWITCH1 GON TEXT: H SH2 5 6 3 0 SM2 GOFF TEXT: H SHWITCH1 1 2 10 0 SMODEL1 TEXT: H GWH1 1 2 VCLOCK SWITCHMOD1 TEXT: H GWH2 3 0 VRAMP SM1 GON TEXT: H WHRESET 5 6 VCLCK LOSSYSWITCH GOFF TEXT: H TEXT: TEXT: HNodes _N+ and _N- are the nodes between which the switch TEXT: H terminals are connected. The model name is mandatory while TEXT: H the initial conditions are optional. For the voltage con- TEXT: H trolled switch, nodes _N_C+ and _N_C- are the positive and nega- TEXT: H tive controlling nodes respectively. For the current con- TEXT: H trolled switch, the controlling current is that through the TEXT: H specified voltage source. The direction of positive con- TEXT: H trolling current flow is from the positive node, through the TEXT: H source, to the negative node. TEXT: H TEXT: SEEALSO: spice:swmodel SUBJECT: t TITLE: Transmission Lines (Lossless) TEXT: TEXT: GGeneral form: TEXT: H TEXT: TH_X_X_X_X_X_X_X _N_1 _N_2 _N_3 _N_4 GZ0H=_V_A_L_U_E <GTDH=_V_A_L_U_E> TEXT: H + <GF=H_F_R_E_Q <GNLH=_N_R_M_L_E_N>> <GICH=_V_1,_I_1,_V_2,_I_2> TEXT: H TEXT: GExamples: TEXT: H TEXT: TH1 1 0 2 0 Z0=50 GTDH=10NS TEXT: H TEXT: TEXT: _N_1 and _N_2 are the nodes at port 1; _N_3 and _N_4 are the TEXT: H nodes at port 2. _Z_0 is the characteristic impedance. The TEXT: H length of the line may be expressed in either of two forms. TEXT: H The transmission delay, _T_D, may be specified directly (as TEXT: H GTDH=10ns, for example). Alternatively, a frequency GF Hmay be TEXT: H given, together with GNLH, the normalized electrical length of TEXT: H the transmission line with respect to the wavelength in the TEXT: H line at the frequency GFH. If a frequency is specified but GNL TEXT: H His omitted, 0.25 is assumed (that is, the frequency is TEXT: H assumed to be the quarter-wave frequency). Note that TEXT: H although both forms for expressing the line length are indi- TEXT: H cated as optional, one of the two must be specified. TEXT: H TEXT: Note that this element models only one propagating TEXT: H mode. If all four nodes are distinct in the actual circuit, TEXT: H then two modes may be excited. To simulate such a situa- TEXT: H tion, two transmission-line elements are required. (see the TEXT: H example in Appendix A for further clarification.) TEXT: H TEXT: The (optional) initial condition specification consists TEXT: H of the voltage and current at each of the transmission line TEXT: H ports. Note that the initial conditions (if any) apply only TEXT: H if the GUIC Hoption is specified on the G.TRAN Hline. TEXT: H TEXT: SUBJECT: examples TITLE: Circuit Examples TEXT: TEXT: The following circuits are examples. TEXT: H TEXT: SUBTOPIC: spice:ex1 spice:ex2 spice:ex3 SUBTOPIC: spice:ex4 spice:ex5 SUBJECT: ex1 TITLE: Example 1 TEXT: TEXT: The following circuit determines the dc operating point TEXT: H of a simple differential pair. In addition, the ac small- TEXT: H signal response is computed over the frequency range 1Hz to TEXT: H 100MEGHz. TEXT: H TEXT: SIMPLE DIFFERENTIAL PAIR TEXT: H GVHCC 7 0 12 TEXT: H GVHEE 8 0 -12 TEXT: H GVHIN 1 0 AC 1 TEXT: H GRHS1 1 2 1K TEXT: H GRHS2 6 0 1K TEXT: H GQH1 3 2 4 MOD1 TEXT: H GQH2 5 6 4 MOD1 TEXT: H GRHC1 7 3 10K TEXT: H GRHC2 7 5 10K TEXT: H GRHE 4 8 10K TEXT: H G.MODEL HMOD1 NPN BF=50 VAF=50 IS=1.E-12 RB=100 CJC=.5PF TF=.6NS TEXT: H G.AC DEC H10 1 100MEG TEXT: H G.END TEXT: H TEXT: SUBJECT: ex2 TITLE: Example 2 TEXT: TEXT: The following file computes the output characteristics TEXT: H of a MOSFET device over the range 0-10V for VDS and 0-5V for TEXT: H VGS. TEXT: H TEXT: MOS OUTPUT CHARACTERISTICS TEXT: H GVHDS 3 0 TEXT: H GVHGS 2 0 TEXT: H GMH1 1 2 0 0 MOD1 L=4U W=6U AD=10P AS=10P TEXT: H G.MODEL HMOD1 NMOS VTO=-2 NSUB=1.0E15 UO=550 TEXT: H * VIDS MEASURES ID, WE COULD HAVE USED VDS, BUT ID WOULD BE NEGATIVE TEXT: H GVHIDS 3 1 TEXT: H G.DC HVDS 0 10 .5 VGS 0 5 1 TEXT: H G.END TEXT: H TEXT: SUBJECT: ex3 TITLE: Example 3 TEXT: TEXT: The following file determines the dc transfer curve and TEXT: H the transient pulse response of a simple RTL inverter. The TEXT: H input is a pulse from 0 to 5 Volts with delay, rise, and TEXT: H fall times of 2ns and a pulse width of 30ns. The transient TEXT: H interval is 0 to 100ns, with printing to be done every TEXT: H nanosecond. TEXT: H TEXT: SIMPLE RTL INVERTER TEXT: H GVHCC 4 0 5 TEXT: H GVHIN 1 0 PULSE 0 5 2NS 2NS 2NS 30NS TEXT: H GRHB 1 2 10K TEXT: H GQH1 3 2 0 Q1 TEXT: H GRHC 3 4 1K TEXT: H G.MODEL HQ1 NPN BF 20 RB 100 TF .1NS CJC 2PF TEXT: H G.DC HVIN 0 5 0.1 TEXT: H G.TRAN H1NS 100NS TEXT: H G.END TEXT: H TEXT: SUBJECT: ex4 TITLE: Example 4 TEXT: TEXT: The following file simulates a four-bit binary adder, TEXT: H using several subcircuits to describe various pieces of the TEXT: H overall circuit. TEXT: H TEXT: ADDER - 4 BIT ALL-NAND-GATE BINARY ADDER TEXT: H *** SUBCIRCUIT DEFINITIONS TEXT: H G.SUBCKT HNAND 1 2 3 4 TEXT: H * NODES: INPUT(2), OUTPUT, VCC TEXT: H GQH1 9 5 1 QMOD TEXT: H GDH1CLAMP 0 1 DMOD TEXT: H GQH2 9 5 2 QMOD TEXT: H GDH2CLAMP 0 2 DMOD TEXT: H GRHB 4 5 4K TEXT: H GRH1 4 6 1.6K TEXT: H GQH3 6 9 8 QMOD TEXT: H GRH2 8 0 1K TEXT: H GRHC 4 7 130 TEXT: H GQH4 7 6 10 QMOD TEXT: H GDHVBEDROP 10 3 DMOD TEXT: H GQH5 3 8 0 QMOD TEXT: H G.ENDS HNAND TEXT: H G.SUBCKT HONEBIT 1 2 3 4 5 6 TEXT: H * NODES: INPUT(2), CARRY-IN, OUTPUT, CARRY-OUT, VCC TEXT: H GXH1 1 2 7 6 NAND TEXT: H GXH2 1 7 8 6 NAND TEXT: H GXH3 2 7 9 6 NAND TEXT: H GXH4 8 9 10 6 NAND TEXT: H GXH5 3 10 11 6 NAND TEXT: H GXH6 3 11 12 6 NAND TEXT: H GXH7 10 11 13 6 NAND TEXT: H GXH8 12 13 4 6 NAND TEXT: H GXH9 11 7 5 6 NAND TEXT: H G.ENDS HONEBIT TEXT: H .SUBCKT TWOBIT 1 2 3 4 5 6 7 8 9 TEXT: H * NODES: INPUT - BIT0(2) / BIT1(2), OUTPUT - BIT0 / BIT1, TEXT: H * CARRY-IN, CARRY-OUT, VCC TEXT: H GXH1 1 2 7 5 10 9 ONEBIT TEXT: H GXH2 3 4 10 6 8 9 ONEBIT TEXT: H G.ENDS HTWOBIT TEXT: H .SUBCKT FOURBIT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 TEXT: H * NODES: INPUT - BIT0(2) / BIT1(2) / BIT2(2) / BIT3(2), TEXT: H * OUTPUT - BIT0 / BIT1 / BIT2 / BIT3, CARRY-IN, CARRY-OUT, TEXT: H GVHCC TEXT: H GXH1 1 2 3 4 9 10 13 16 15 TWOBIT TEXT: H GXH2 5 6 7 8 11 12 16 14 15 TWOBIT TEXT: H .ENDS FOURBIT TEXT: H *** DEFINE NOMINAL CIRCUIT TEXT: H G.MODEL HDMOD D TEXT: H G.MODEL HQMOD NPN(BF=75 RB=100 CJE=1PF CJC=3PF) TEXT: H GVHCC 99 0 DC 5V TEXT: H GVHIN1A 1 0 PULSE(0 3 0 10NS 10NS 10NS 50NS) TEXT: H GVHIN1B 2 0 PULSE(0 3 0 10NS 10NS 20NS 100NS) TEXT: H GVHIN2A 3 0 PULSE(0 3 0 10NS 10NS 40NS 200NS) TEXT: H TEXT: TEXT: GVHIN2B 4 0 PULSE(0 3 0 10NS 10NS 80NS 400NS) TEXT: H GVHIN3A 5 0 PULSE(0 3 0 10NS 10NS 160NS 800NS) TEXT: H GVHIN3B 6 0 PULSE(0 3 0 10NS 10NS 320NS 1600NS) TEXT: H GVHIN4A 7 0 PULSE(0 3 0 10NS 10NS 640NS 3200NS) TEXT: H GVHIN4B 8 0 PULSE(0 3 0 10NS 10NS 1280NS 6400NS) TEXT: H GXH1 1 2 3 4 5 6 7 8 9 10 11 12 0 13 99 FOURBIT TEXT: H GRHBIT0 9 0 1K TEXT: H GRHBIT1 10 0 1K TEXT: H GRHBIT2 11 0 1K TEXT: H GRHBIT3 12 0 1K TEXT: H GRHCOUT 13 0 1K TEXT: H *** (FOR THOSE WITH MONEY (AND MEMORY) TO BURN) TEXT: H G.TRAN H1NS 6400NS TEXT: H G.END TEXT: H TEXT: SUBJECT: ex5 TITLE: Example 5 TEXT: TEXT: The following file simulates a transmission-line TEXT: H inverter. Two transmission-line elements are required since TEXT: H two propagation modes are excited. In the case of a coaxial TEXT: H line, the first line (T1) models the inner conductor with TEXT: H respect to the shield, and the second line (T2) models the TEXT: H shield with respect to the outside world. TEXT: H TEXT: TRANSMISSION-LINE INVERTER TEXT: H GVH1 1 0 PULSE(0 1 0 0.1N) TEXT: H GRH1 1 2 50 TEXT: H GXH1 2 0 0 4 TLINE TEXT: H GRH2 4 0 50 TEXT: H G.SUBCKT HTLINE 1 2 3 4 TEXT: H GTH1 1 2 3 4 Z0=50 TD=1.5NS TEXT: H GTH2 2 0 4 0 Z0=100 TD=1NS TEXT: H G.ENDS HTLINE TEXT: H G.TRAN H0.1NS 20NS TEXT: H G.END TEXT: H TEXT: SUBJECT: batchmode TITLE: Batch Mode TEXT: TEXT: If Gspice His given a circuit file as the standard input, or TEXT: H if it is run with the G-b Hflag, it will process the circuit TEXT: H in batch mode, similar to that of SPICE2. Most of the con- TEXT: H trol lines recognised by SPICE2 will be handled, including TEXT: H G.plotH, G.printH, and G.fourH. The format of the output is some- TEXT: H what different, however, and much less information is avail- TEXT: H able from an operating point analysis. Some SPICE2 options TEXT: H are not supported, and only the analysis types Gtran, op, ac, TEXT: H dc, Hand Gpz Hare recognised. TEXT: H TEXT: SEEALSO: spice:dashb 0707070124062000510407550006700000000000021777770500302427700002500000000000spice3c1/lib/helpdir0707070124061600251006440006700000000000011777770500302371000002400000103056spice3c1/lib/mfbcap############################################################################### # # MFB CAPabilities file # Giles C. Billingsley, UC Berkeley # # # CURRENT ENTRIES # *************** # # a0 or A0 AED 767 with 8-bit encoding # a1 or A1 AED 767 with 8-bit encoding and joystick # a2 or A2 AED 767 with 8-bit encoding and 4 button tablet # a6 or A6 AED 512 with 8-bit encoding for standard version 97 # compatible ROM set # a7 or A7 AED 512 with 8-bit encoding and joystick for standard # version 97 compatible ROM set # a8 or A8 AED 512 with 8-bit encoding and 4 button tablet for # standard version 97 compatible ROM set # af or AF AED 512 with 8-bit encoding for Berkeley Evans Hall ROM set # ae or AE AED 512 with 8-bit encoding and 4 button table for Berkeley # Evans Hall ROM set # ax or AX AED 512 with hex encoding for old Berkeley EECS ROM set # ay or AY AED 512 with hex encoding for old Berkeley EECS ROM set # az or AZ AED 512 with hex encoding for old Berkeley EECS ROM set # aa or AA AED 512 with 8-bit encoding for old Berkeley EECS ROM set # ab or AB AED 512 with 8-bit encoding for old Berkeley EECS ROM set # ac or AC AED 512 with 8-bit encoding for old Berkeley EECS ROM set # # j0 or J0 Jupiter 7 with 8-bit encoding # j1 or J1 Jupiter 7 with 8-bit encoding and joystick # j2 or J2 Jupiter 7 with 8-bit encoding and 4 button tablet # j3 or J3 Jupiter 7 with 8-bit encoding and 3 button optical mouse # # t1 or T1 Tek 4014 with enhanced graphics module # t2 or T2 Basic Tek 4113 with no pointing device # t3 or T3 Tek 4113 with 4 button tablet, dialog area keyboard control # t4 or T4 Tek 4113 with thumbwheels and dialog area keyboard control # t5 or T5 Tek 4113 with 4 button tablet # t6 or T6 Tek 4113 with thumbwheels # t7 or T7 Tek 4510/4510A rasterizer with a 4692 color plotter # ta or TA Basic Tek 4100 family commands # tb or TB Tek 4105 with standard paddle pointing device # # m1 or M1 Metheus Omega 400 display controller with 4 button tablet # # h0 or H0 HP 2648 # h1 or H1 HP 2648 with 3 button tablet # h2 or H2 HP 2648 with binary encoding # ha or Ha HP 9872 color pen plotter # hb or HB HP 9872 color pen plotter with maximum horizontal size # # d0 or D0 DEC vt125 without pointing device # d1 or D1 DEC vt200 series black and white graphics terminal # d2 or D2 DEC vt200 black and white graphics terminal 132 column # d3 or D3 DEC vt220 black and white graphics terminal # d4 or D4 DEC vt240 black and white graphics terminal # d5 or D5 DEC vt241 black and white graphics terminal # # # COMMENTS # ******** # # READ THE MANUAL FOR MFBCAP FOR DEVICE NAMING CONVENTIONS! # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # # Specification of Font Size # ^^^^^^^^^^^^^^^^^^^^^^^^^^ # The following diagram illustrates the meaning of GCH, GCW, GTH, # and GTW. For the font shown, GCH = 12, GCW = 6, GTH = 4, # and GTW = 3. # # _ . . . . . . 0 . . . . . # | . . 0 . # | . . 0 . # | . 0 0 0 0 . 0 0 0 0 . # | 0 0 0 0 . # | 0 0 0 0 # GCH 0 0 0 0 # _ | . 0 0 0 0 0 0 0 # | | . 0 . . # | | . 0 . . # GTH | 0 0 . . # | | . 0 0 0 0 . . . . . . . # - - # |---GCW---|-GTW-| # # # ############################################################################### # # # AED TERMINALS # For all of these entries, it is assumed that the AED has a # seriel link to the host at 9600 baud. The switch settings # in the back of the AED should be as follows: # # COM OPTIONS # 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 # u u u d u u d u d d d d d d d d # # where u = up and d = down # # If you are using a Summagraphics One bitpad, the internal DIP # switches should be set as follows: # # 10 SWITCH DIP 9 SWITCH DIP 6 SWITCH # 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 # O O O O O O O O O O O O O O O O O O O O O O O O O # F N F F F F F F F F N F N F N F F N N F F F F F F # F F F F F F F F F F F F F F F F F F F # # # # # AED 767 with eight bit binary coordinate encoding, no pointing device # NOTE: AED say's that text will not work right (i.e, will destroy the # background rather than overstrike) if the DIP switches aren't set right # in the back. See AED documentation or call AED for this info. # a0|A0|BAED767-8|basic Advanced Electronics Design 767 with 8 bit binary mode, 8BB, TTY, APT, GTH#2, GTW#1, GTO, MXC#768, MYC#575, GCH#9, GCW#6, GTS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\01, GTE=\E, MFP#256, MLS#1, MCL#255, BELL=^A^G\E$<#100>, GIS=\E\E0$<#2000>\E\EG1888N~\^15\06\011L$<#1000>, GFS=\E\E\E\E\E\E\E\E\E\E0$<#3000>\E`\200^L^A, VLT, VTI#255, VTL#8, VTE=K%X%c^A%Y%c%Z%c%T%c, SCS=C%X%c[%X%c, VWM=L%X%c, GMS=$<#1000>\E\E\E\E\E\E\E\E\E\E\E\E\E\E\E\E, IFP=\EG1HHHN+!00FFFFFFFFFFFFFFFF+!01FE82BAAAA2BE80FF+!021824428181422418+!032C4281818181422C+!0455AA55AA55AA55AA+!05CCCC3333CCCC3333+!065500550055005500+!07F0F0F0F00F0F0F0F\EG1888N, GME=^A, GCS=`\120^L\E`\160$<#400>, BLD, NBL#8, BLS=\E4%X%c%Y%c%Z%c%T%c\060\013, BLE=\E4%X%c%Y%c%Z%c%T%c\060%@, SFP="%X%c, SLS=1%=#255%c%c, DFP, FDH#8, FDW#8, FDR, FDE=, FDF=%Y%c, FDS=+!%X%c, MPS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, WPX=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cT%C%c, DLT=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, DCS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cO%Z%c, DLS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cA%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, DBS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%co%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, PLS=!%=#255%c%Z%>>#8%ÿ%c%Z%c%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, FPOLY, PLV=%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLE=\E, KYBRD, KYB=\EC%@[%@^A^H\EC%C%c[%C%c^A, KYX#3, KYY#1, KYS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E^A, KYE=\E, # # AED 767 with joystick and 8 bit binary coordinate encoding # a1|A1|AED767J8|Advanced Electronics Design 767 with joystick and 8 bit mode, POD, PDF=%h1%<<#8%R%>>#2%̀%X%h2%|%X%X%h2%|%R%Ͽ%Y, PDS=\EG1HHHNc%X%h2%Y%h2\050U, PDE=dG1888N\E\E, PDR=j, PRI, MCE=A0, # # AED 767 with tablet and 8 bit binary coordinate encoding # a2|A2|AED767T8|Advanced Electronics Design 767 with tablet and 8 bit mode, PDB, NPB#4, PDS=\EG1HHHNc%X%h2%Y%h2022019001F42828, PDE=3%@G1888N\E, BU1#1, BU2#2, BU3#4, BU4#8, POD, PDR=3^B, PDF=^B%h2%T%h4%X%h4%Y, MCE=A0, # # # # The following AED entries are for release 97 PROMS # # AED with 8 bit binary coordinate encoding, no pointing device # Release 97 standard AED ROM set # a6|A6|BAED8|BAED512-8|basic Advanced Electronics Design 512 with 8 bit mode, 8BB, TTY, APT, GTH#2, GTW#2, GTO, MXC#511, MYC#482, GCH#8, GCW#5, GTS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c^A, GTE=\E, MFP#256, MLS#2, MCL#256, BELL=^A^G\E$<#100>, GIS=\E\E\E\E\E\E\E\E\E\E0$<#2500>\E`\160\^15\06\011LG1888N, GFS=\E\E\E\E\E\E\E\E\E\E0$<#2500>\E`\100^L^A, VLT, VTI#255, VTL#8, VTE=K%X%c^A%Y%c%Z%c%T%c, SCS=C%X%c[%X%c, VWM=L%X%c, GCS=`\120^L\E`\160$<#200>, BLD, NBL#8, BLS=\E4%X%c%Y%c%Z%c%T%c\060\013, BLE=\E4%X%c%Y%c%Z%c%T%c\060%@, SFP="%X%c, DFP, FDH#8, FDW#8, FDR, FDE=, FDF=%Y%c, FDS=+!%X%c, MPS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, WPX=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cT%C%c, DLT=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, DCS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cO%Z%c, DLS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cA%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, DBS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%co%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, IFP=\EG1HHHN+!00FFFFFFFFFFFFFFFF+!01FE82BAAAA2BE80FF+!021824428181422418+!032C4281818181422C+!0455AA55AA55AA55AA+!05CCCC3333CCCC3333+!065500550055005500+!07F0F0F0F00F0F0F0F\EG1888N, PLS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLV=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLE=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E, DLP, LDL#1, LDF=1%Y%c%=#255%c, SFP="%X%c, SSLS=1%=#255%c%c, KYBRD, KYB=\EC%@[%@^A^H\EC%C%c[%C%c^A, KYX#3, KYY#1, KYS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E^A$<#5>, KYE=\E, # # AED with joystick and 8 bit binary coordinate encoding # Release 97 standard AED ROM set # a7|A7|AEDJ8|AED512J8|Advanced Electronics Design 512 with joystick & 8 bit mode, PDF=%h1%<<#8%R%>>#2%̀%X%h2%|%X%X%h2%|%R%Ͽ%Y, POD, PDS=\EG1HHHN$<#20>c%X%h2%Y%h2\002U, PDE=dG1888N$<#20>\E, PDR=j, PRI, MCE=BAED8, # # AED with four button mouse and 8 bit binary coordinate encoding # Release 97 standard AED ROM set # a8|A8|AEDT8|AED512T8|Advanced Electronics Design 512 with tablet and 8 bit mode, PDB, NPB#4, PDS=\EG1HHHNc%X%h2%Y%h2022019001F42828, PDE=3%@G1888N\E, POD, BU1#1, BU2#2, BU3#4, BU4#8, PDR=3\002, PDF=\002%h2%T%h4%X%h4%Y, MCE=BAED8, # # # # AED definition for the Berkeley ROM set developed by Jim McCormick # (Evans Hall AED's) # This ROM set supports raster commands but without ALU modes. # af|AF|BAED8E|basic Advanced Electronics Design 512 with 8 bit mode (Evans Hall), 8BB, TTY, APT, GTH#2, GTW#2, GTO, MXC#510, MYC#482, GCH#8, GCW#5, GTS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c^A, GTE=\E, MFP#256, MLS#2, MCL#256, SCS=C%X%c[%X%c, GIS=\E\E\E\E\E\E\E\E\E\E0$<#3000>\E`\160\^15\06\011LG1888N, GFS=\E\E\E\E\E\E\E\E\E\E0$<#3000>\E`\100^L^A, VLT, VTI#255, VTL#8, VTE=K%X%c^A%Y%c%Z%c%T%c, VWM=L%X%c, GCS=`\120^L\E`\160$<#200>, BELL=^A^G\E$<#100>, DFP, FDH#8, FDW#8, FDR, FDE=, FDF=%Y%c, FDS=\,%X%c, MPS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, WPX=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cT%C%c, DLT=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, DCS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cO%Z%c, DLS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cA%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, DBS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%co%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, IFP=\EG1HHHN\,00FFFFFFFFFFFFFFFF\,01FE82BAAAA2BE80FF\,021824428181422418\,032C4281818181422C\,0455AA55AA55AA55AA\,05CCCC3333CCCC3333\,065500550055005500\,07F0F0F0F00F0F0F0F\EG1888N, DLP, LDL#1, LDF=1%Y%c%=#255%c, SSLS=1%=#255%c%c, KYBRD, KYB=\EC%@[%@^A^H\EC%C%c[%C%c^A, KYX#3, KYY#1, KYS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E^A$<#5>, KYE=\E, BLD, NBL#8, BLS=\E4%X%c%Y%c%Z%c%T%c\060\013, BLE=\E4%X%c%Y%c%Z%c%T%c\060%@, SFP="%X%c, PLS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLV=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLE=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E, RSCPS=^X, RSCSF, OFFMX#0, OFFMY#483, OFFDX#511, OFFDY#29, RSSRC=%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, RSDST=%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, # # AED with Evans Hall ROM Set, tablet, and 8 bit binary encoding # The joystick does not work with this ROM ste. # ae|AE|AEDTE8|Advanced Electronics Design 512 with tablet and 8 bit mode, PDB, NPB#4, PDS=\EG1HHHNc%X%h2%Y%h2022019001F42828, PDE=3%@G1888N\E, POD, BU1#1, BU2#2, BU3#4, BU4#8, PDR=3\002, PDF=\002%h2%T%h4%X%h4%Y, MCE=BAED8E, ############################################################################### # # # JUPITER TERMINALS # For all of these entries, it is assumed that the Jupiter 7 # has a seriel link to the host at 9600 baud. # # # # Jupiter 7 with eight bit binary coordinate encoding, no pointing device. # j0|J0|BJUP7-8|basic Jupiter 7 with 8 bit binary mode, 8BB, TTY, APT, GTH#2, GTW#1, GTO, MXC#768, MYC#575, GCH#9, GCW#6, GTS=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\01, GTE=\E, MFP#16, MLS#1, MCL#256, BELL=^A^G\E$<#100>, GIS=\E\E0$<#2000>\E\EG1888N~\^15\06\011L$<#1000>\E, GFS=\E\E\E\E\E\E\E\E\E\E0$<#3000>\E`\200^L^A, VLT, VTI#255, VTL#8, VTE=\EK%X%c^A%Y%c%Z%c%T%c, SCS=\EC%X%c[%X%c, VWM=\EL%X%c, GMS=$<#900>\E\E\E\E\E\E\E\E\E\E\E\E\E\E\E\E$<#900>, IFP=\EG1HHHN+!00FFFFFFFFFFFFFFFF+!01FE82BAAAA2BE80FF+!021824428181422418+!032C4281818181422C+!0455AA55AA55AA55AA+!05CCCC3333CCCC3333+!065500550055005500+!07F0F0F0F00F0F0F0F\EG1888N, GCS=\E`\120^L\E`\160$<#400>, BLD, NBL#8, BLS=\E4%X%c%Y%c%Z%c%T%c\060\013, BLE=\E4%X%c%Y%c%Z%c%T%c\060%@, SFP=\E"%X%c, SLS=\E1%=#255%c%c, DFP, FDH#8, FDW#8, FDR, FDE=\E, FDF=%Y%c, FDS=\E+!%X%c, MPS=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, WPX=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cT%C%c, DLT=\EA%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, DCS=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cO%Z%c, DLS=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cA%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, DBS=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%co%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, PLS=\E!%Z%>>#8%ÿ%c%Z%c%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, FPOLY, PLV=%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLE=\E, KYBRD, KYB=\EC%@[%@^A^H\EC%C%c[%C%c^A, KYX#3, KYY#1, KYS=\EQ%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E^A, KYE=\E, # # Jupiter 7 with joystick and 8 bit binary encoding # j1|J1|JUP7-J|JUP7-J8|Jupiter 7 with joystick and 8 bit mode, POD, PDF=%h1%<<#8%R%>>#2%̀%X%h2%|%X%X%h2%|%R%Ͽ%Y, PDS=\EG1HHHNc%X%h2%Y%h2\050U, PDE=\EdG1888N\E\E, PDR=\Ej, PRI, MCE=J0, # # Jupiter 7 with tablet and 8 bit binary coordinate encoding (NEVER TESTED) # j2|J2|JUP7-T|JUP7-T8|Jupiter 7 with tablet and 8 bit mode, PDB, NPB#4, PDS=\EG1HHHNc%X%h2%Y%h2022019001F42828, PDE=\E3%@G1888N\E, BU1#1, BU2#2, BU3#4, BU4#8, POD, PDR=3^B, PDF=^B%h2%T%h4%X%h4%Y, MCE=J0, # # Jupiter 7 with 3 button optical mouse and 8 bit binary coordinate encoding # j3|J3|JUP7-O|JUP7-O8|Jupiter 7 with 3 button optical mouse and 8 bit mode, PDB, NPB#3, PDS=\EG1HHHNc%X%h2%Y%h2022019001F42828, PDE=3%@G1888N\E, BU1#2, BU2#4, BU3#1, POD, PDR=3^B, PDF=^B%h2%T%h4%X%h4%Y, MCE=J0, ############################################################################### # # # # # TEKTRONIX TERMINALS # # Tektronix 4014 with thumbwheels # t1|T1|4014-1E|TEK4014-1E|Tektronix 4014-1 with enhanced graphics module, APT, TTY, MLS#1, MCL#1, MXC#4095, MYC#3071, MFP#8, GIS=\E\E\E\E\E\E\E\E\E^L\E^]\E;, GFS=\E\E\E\\EE\E\E\E\E9\E^L\E^_, DLS=\E^]\E`%t1%t2, MPS=\E^]\E`%t1, DLT=%t1, DSB=\E^]\E`%t1%Z%R%t4%t2%T%R%t3%t1, WPX=\E^]\E`%t1%t1, PLS=\E^]\E`%t1, PLV=%t1, PLE=%t1\E, GTS=\E^]%t1\E^_, GTE=\E^], GCW#30, GCH#50, KYBRD, KYS=\E^]%t1\E^_, KYE=\E^], BELL=\E^_^G\E^], POD, PDS=\E\E\E\E^], PDR=\E^Z, PDE=\E\E\E\E^], PDF=%c%Z%c%%<<#5%R%c%%|%R%*#4%X%c%%<<#5%R%c%%|%R%*#4%Y, GCS=\E^L$<#1000>\E\E\E\E\E^], # # Tektronix 4113 with no pointing device, no keyboard # The keyboard is defined with the pointing device to allow the # option of not using the dialog area. # The QUEUSIZE is set to 8K; there must be at least that much memory. # t2|T2|BAS4113|BAS-T4113|BAS-TEK4113|basic Tektronix 4113, TTY, APT, MCL#16, MFP#32767, MLS#8, DFP, KYBRD, GCS=\ERR `` @#ow$_%C%ti$<#200>, GIS=\E\E\E\E^]\ENC00\ENT1=\ENF3\EIM1\ENQH@0\ENU0\ERD14\ERG1>1B02B=3C84D35D>6E87F4\ERU!;6\ERW `` @#ow$_\ERS `` @#ow$_\ERA107\ERB0\ETM111\ETG1B00000100E420D9>3F00F04F4005F0F0060F0F07F4F4F4\EIS!20$<#1000>\ELM0\ELS1\ELV0\ELI700\EKA1\EMC451\EMG1\EMQ2\EMT1\EML1\EMS113, GFS=\E\EKL0\ERW '' @8on?_\ETM331\ETG1C<10F402G8C2F43O0C2F440C2F45RC2F4;T:C2F4C2F4=E:C2F4>0B10?0D20\ELI144\ELV1\EMG0\EMT1\EKA1\EID!$<#1000>\E^_\E^L, VLT, VTL#4, VTI#100, VTE=\ETG!4%X%ti%Y%ti%Z%ti%T%ti, FDW#8, FDH#8, FDS=\EMD%X%ti886, FDE=\EME, FDF=\ERP88%Y%%*%C%+#48%c%Y%>>#1%%*%C%+#48%c%Y%>>#2%%*%C%+#48%c%Y%>>#3%%*%C%+#48%c%Y%>>#4%%*%C%+#48%c%Y%>>#5%%*%C%+#48%c%Y%>>#6%%*%C%+#48%c%Y%>>#7%%*%C%+#48%c, MPS=\ELF%t1, DLS=\ELF%t1\ELG%t2, DSB=\ERR%t1%t2%C%ti, DLT=\ELG%t1, DBS=\ELP%t10^]%Z%R%t4^]%t2^]%T%R%t3\ELE, WPX=\ERH%t1\ERP11%C%ti, SSFP=\EMP%=#0%-%C%ti, SLS=\EMV%X%ti, SFP=\EMP%X%ti, SCS=\EML%X%ti\EMT%X%ti, PLSOL=\EMP%=#0%-%C%ti\ELP%t10, FPOLY, PLS=\ELP%t10, PLV=^]%t1, PLE=\ELE, BELL=\E^_^G\E^], GTH#2, GTO, GTR, GTW#2, GCH#7, GCW#4, ROT, RTS=\EMR%X%tr, GTS=\ELF%t1\ELT%Z%ti, MXC#639, MYC#479, OFFDX#0, OFFDY#0, GTE=\E, OMO=\EMG1, RMO=\EMG0, OFFMX#639, OFFMY#479, ALUJAM=\ERU!;6, ALUOR=\ERU!?6, ALUNOR=\ERU!26, ALUEOR=\ERU!76, RSCPS=\ERX!, RSDST=%t1, RSSRC=%t1%X%+%Z%R%Y%+%T%r%t5, # # Tektronix 4113 with 4 button mouse, dialog area keyboard # t3|T3|4113D|T4113D|TEK4113D|Tektronix 4113, KYS=\ELB2\ELC%�%+#640%-%X%/#8%ti\ELI100\ELL2\ELX%Y%*#5%>>#7%%|#32%c`%Y%*#5%>>#2%%|#96%c%X%*#6%>>#7%%|#32%c%X%*#6%>>#2%%|#64%c\ELZ\EKA1\ELV1\E^_, KYB=^H, KYE=\E^]\ELV0\EDA0\ELBB2\ELLB2\ELX `` @, POD, PDB, NPB#4, PDR=\EIE81, PDS=\ERW'`z @>oi=_, PDF=\002%c%T%t1%=#0%+%X%/#6%X%=#0%+%Y%-#1000%/#6%Y%c%c, BU1#90, BU2#49, BU3#50, BU4#51, PDE=\012\ERW `` @#ow$_, MCE=BAS4113, # # Tektronix 4113 with thumbwheel cursor, dialog area keyboard # t4|T4|4113THD|T4113THD|TEK4113THD|Tektronix 4113 with Thumbwheels, KYS=\ELB2\ELC%�%+#640%-%X%/#8%ti\ELI100\ELL2\ELX%Y%*#5%>>#7%%|#32%c`%Y%*#5%>>#2%%|#96%c%X%*#6%>>#7%%|#32%c%X%*#6%>>#2%%|#64%c\ELZ\EKA1\ELV1\E^_, KYB=^H, KYE=\E^]\ELV0\EDA0\ELBB2\ELLB2\ELX `` @, POD, PDR=\EIE01, PDF=\002%c%Z%t1%c%c, PDE=\012, MCE=BAS4113, # # Tektronix 4113 with 4 button mouse, graphtext keyboard echoing # t5|T5|4113|T4113|TEK4113|Tektronix 4113, POD, PDB, NPB#4, PDR=\EIE81, PDS=\ERW'`z @>oi=_, PDF=\002%c%T%t1%=#0%+%X%/#6%X%=#0%+%Y%-#1000%/#6%Y%c%c, BU1#90, BU2#49, BU3#50, BU4#51, PDE=\012\ERW `` @#ow$_, MCE=BAS4113, # # Tektronix 4113 with thumbwheel cursor, graphtext keyboard echoing # t6|T6|4113TH|T4113TH|TEK4113TH|Tektronix 4113 with Thumbwheels, POD, PDR=\EIE01, PDF=\002%c%Z%t1%c%c, PDE=\012, MCE=BAS4113, # # Tektronix 4510/4510A rasterizer connected to a 4692 color plotter. # Contributed by kelem@aero2.arpa # t7|T7|Tektronix 4692 with rasterizer, APT, TTY, DBS=\EUR%t1%t2, DLS=\ELF%t1\ELG%t2, DLT=\ELG%t1, DSB=\EMP%=#0%-%C%ti\ELP%t10\ELG%Z%R%t4\ELG%t2\ELG%T%R%t3\ELE, FPOLY, GCH#59, GCW#39, GFS=\EKH0^_\E^L, GIS=\ETM111\EMW0\E^L, GTO, GTS=\ELF%t1\ELT%Z%ti, MCL#8, MFP#175, MLS#8, MXC#4095, MYC#3132, MPS=\ELF%t1, PLE=\ELE, PLS=\ELP%t10, PLSOL=\EMP%=#0%-%C%ti\ELP%t10, PLV=\ELG%t1, ROT, RTS=\EMR%X%tr, SCS=\EMT%X%ti\EML%X%ti, SFP=\EMP%X%ti, SLS=\EMV%X%ti, SSFP=\EMP%=#0%-%X%ti, VLT, VTE=\ETG14%X%ti%Y%ti%Z%ti%T%ti, VTI#100, VTL#3, WPX=\ELF%t1\ELG%ti, # # Ken Keller's entry for the 4113 with off screen memory. # kk|KK|k4113|kT4113|kTek4113|Tektronix 4113, MXC#539, MYC#479, OFFDX#99, OFFDY#479, OFFMX#540, OFFMY#0, POD, PDB, NPB#4, PDR=\EIE81, PDS=\ERW'`z @>oi=_, PDF=\002%c%T%t1%=#0%+%X%/#6%X%=#0%+%Y%-#1000%/#6%Y%c%c, BU1#90, BU2#49, BU3#50, BU4#51, PDE=\012\ERW `` @#ow$_, MCE=BAS4113, # # Tektronix 4100 command set with no pointing device, no keyboard # The keyboard is defined with the pointing device to allow the # option of not using the dialog area. # The QUEUSIZE is set to 8K; there must be at least that much memory. # ta|TA|BAS4100|BAS-T4100|BAS-TEK4100|basic Tektronix 4100, TTY, APT, GCS=\E^L$<#1000>\E\E\E\E\E^], MCL#8, MFP#15, MLS#8, MXC#479, MYC#359, GIS=\E\E\E\E%%!0\E^]\ENC00\ENT1=\ENF3\EIM1\ENQH@0\ENU0\ERA107\ETM111\ELM0\ELS1\ELV0\ELI700\ELZ\EKA1\EMC451\EMG0\EMQ2\EMT1\EML1\EMS113, GFS=\E\EKL0\ELI600\ELV1\EKA1$<#1000>\E^_\E%%!1, VLT, VTL#3, VTI#100, VTE=\ETG14%X%ti%Y%ti%Z%ti%T%ti, HLS, MPS=\ELF%t1, DLS=\ELF%t1\ELG%t2, BELL=\E^_^G\E^], DLT=\ELG%t1, DBS=\ELP%t10\ELG%Z%R%t4\ELG%t2\ELG%T%R%t3\ELE, DSB=\EMP%=#0%-%C%ti\ELP%t10\ELG%Z%R%t4\ELG%t2\ELG%T%R%t3\ELE, WPX=\ELF%t1\ELG%ti, SSFP=\EMP%=#0%-%X%ti, SLS=\EMV%X%ti, SFP=\EMP%X%ti, SCS=\EML%X%ti\EMT%X%ti, FPOLY, PLS=\ELP%t10, PLV=\ELG%t1, PLE=\ELE, PLSOL=\EMP%=#0%-%C%ti\ELP%t10, GTH#2, GTO, GTR, GTW#1, GCH#7, GCW#6, ROT, RTS=\EMR%X%tr0, GTS=\ELF%t1\ELT%Z%ti, GTE=$<#10>\E, OMO=\EMG1, RMO=\EMG0, # # Tektronix 4105 color graphics terminal # tb|TB|4105|t4105|tek4105|Tektronix 4105, GIS=\E\E%%!0\E^]\ENC00\ENT1=\ENF3\EIM1\ENQH@0\ENU0\ERA107\ETM111\ERW `` @"oy#W\ELM0\ELS1\ELV0\ELI700\ELZ\EKA1\EMC111\EMG0\EMQ2\EMT1\EML1\EMS113, GFS=\ETG140000\ETF40000\ETF410F4F4\EKL0\E^L\ELI100\ELV1\EKA1$<#1000>\E^_\E%%!1\E^L$<#400>, PDF=%c%Z%c%%<<#5%R%c%%|%R%*#4%X%c%%<<#5%R%c%%|%R%*#4%Y%c, KYBRD, POD, PDS=\E\E\E\E^], PDR=\E^Z, PDE=\E\E\E\E^], MCE=BAS4100, ############################################################################### # # # # # METHEUS TERMINALS # # Metheus Omega 400 display controlloer with raw transfer, # and 4 button mouse as a pointing device. # WARNING: THE METHEUS 400 DOES NOT FILTER CURSOR BOUNCING VERY WELL! # m1|M1|M400|M400DC|OMEGA400|Metheus Omega 400 Display Controller, APT, 8BB, RAW, TTY, MXC#1023, MYC#767, MCL#256, MFP#8, MLS#1, POD, PDB, NPB#4, BU1#68, BU2#72, BU3#80, BU4#96, PDR=J^A, GCW#8, GCH#16, GTH#0, GTW#1, GTO, SLS=P8, RLS, GFS=Q%@%@%@%@N%@`$<#800>, GCS=`$<#500>, SFP=P%X%|#48%c, MPS=R%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%c, DLT=S%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%ca, WPX=P8R%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%cm, PLS=P8R%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%c, PLV=S%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%ca, PLE=, GTS=P8R%X%ÿ%c%X%>>#8%%c%=#768%-%Y%R%ÿ%c%=%R%>>#8%%ck, GTE=\E, VLT, VTI#255, VTL#8, VWM=O%X%ÿ%c, SRM=L%X%ÿ%c, VTE=Q%X%ÿ%c%Y%ÿ%c%Z%ÿ%c%T%ÿ%c, SCS=N%X%c, PDF=%h2%T%h2%?%R%h2%%<<#6%|%R%X%h2%?%R%h2%%<<#6%|%R%r%=#767%-%r%Y, GIS=%@%@%@%@s20\^`3%@J^C%=#255%c%=#246%c%@|%@<%=#255%c%=#134%cX%@%@O%=#255%c$<#500>, DLS=R%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%cS%Z%ÿ%c%Z%>>#8%%c%=#767%-%T%R%ÿ%c%=%R%>>#8%%ca, DSB=P%F%|#48%cR%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%cS%Z%ÿ%c%Z%>>#8%%c%=#767%-%T%R%ÿ%c%=%R%>>#8%%ce, DBS=P%F%|#48%cR%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%cS%Z%ÿ%c%Z%>>#8%%c%=#767%-%T%R%ÿ%c%=%R%>>#8%%cd, RSCPS=R, RSCSF, RSCPE=f, OFFMX#0, OFFMY#552, OFFDX#736, OFFDY#184, RSSRC=%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%c, RSDST=S%X%ÿ%c%X%>>#8%%c%=#767%-%Y%R%ÿ%c%=%R%>>#8%%cp%X%?%c%Y%>>#8%%c%T%?%c%T%>>#8%%c, ############################################################################### # # # HP TERMINALS # # # HP2648 with local cursor control # Because of descenders, the font width is 10x5. # h0|H0|2648|HP2648|HP2648A|Hewlett-Packard 2648A, MCL#2, MFP#255, MLS#2, TTY, APT, MXC#719, MYC#359, KYBRD, GTO, DFP, DLP, MPS=\E*pa%X%d\,%Y%dZ, ALUEOR=\E*m3A, ALUJAM=\E*m4A, ALUNOR=\E*m1A, ALUOR=\E*m2A, DLT=\E*m2B\E*pf%X%d\,%Y%dZ, DSLT=\E*m1B\E*pf%X%d\,%Y%dZ, DBS=\E*m3b%X%d\,%Y%d\,%Z%d\,%T%dE, DSL=\E*m1B\E*pa%X%d\,%Y%d\,%Z%d\,%T%dZ, DLS=\E*m2B\E*pa%X%d\,%Y%d\,%Z%d\,%T%dZ, WPX=\E*pa%X%d\,%Y%d\,%X%d\,%Y%dZ, PLS=\E*pa%X%d\,%Y%d, PLV=\,%X%d\,%Y%d, PLE=\,%X%d\,%Y%dZ, BELL=\E*dS^G\E*dT, LDL#1, LDF=\E*m%Y%d 1C, GCS=\E*d%X%+#65%c$<#500>, GCH#10, GCW#6, GTE=\E*dT, GTH#0, GTW#2, GTS=\E*pa%X%d\,%Y%dZ\E*dS, RTS=\E*m%X%a%/#90%+#1%dN, ROT, GFS=\EH\EJ\E*mR\E*dlaeD$<#1000>, GIS=\E*mR\E*dlafC$<#2000>, KYB=^H, KYS=\E*pa%X%d\,%Y%dZ\E*m4a\E*dS, KYE=\E*dT, KYX#1, KYY#1, SFP=\E&f%X%+#49%cE\21, SCS=\E*m%X%+#49%cA, SLS=, FDH#8, FDW#8, FDR, FDF= %Y%3, FDS=\E&f1a%X%+#49%ck36L\E*m, FDE=D$<#90>, IFP=\E&f1a1k36L\E*m 255 255 255 255 255 255 255 255D\E&f1a2k36L\E*m 254 130 186 170 162 190 128 255D\E&f1a3k30L\E*m 24 36 66 129 129 66 36 24D\E&f1a4k32L\E*m 60 66 129 129 129 129 66 60D\E&f1a5k32L\E*m 85 170 85 170 85 170 85 170D\E&f1a6k32L\E*m 204 204 51 51 204 204 51 51D\E&f1a7k24L\E*m 85 0 85 0 85 0 85 0D\E&f1a8k32L\E*m 240 240 240 240 15 15 15 15D, POD, PDR=\E*s4\^\021, PDS=\E*dK, PRBON=\E*dM, PRBOFF=\E*dN, PDF=\+%d\,%X\+%d\,%Y%3%Z%c, PDE=\021\E*dL, # # HP2648 entry with 3-button mouse. # PDR must be defined as a NULL instead of the definition in h0 # h1|H1|2648-M|HP2648|HP2648A|Hewlett-Packard 2648A with mouse, PDF=\02%c%T\+%d\,%X\+%d%Y%c, PDR=, PDB, NPB#3, BU1#65, BU2#66, BU3#67, MCE=h0, # # hp 2648 with binary transfer # h2|H2|2648-BIN|HP2648-BIN|HP2648A-BIN|Hewlett-Packard 2648A /w binary encoding, MPS=\E*pia%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%cZ, DLT=\E*m2B\E*pi%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%cZ, DSLT=\E*m1B\E*pi%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%cZ, DSL=\E*m1B\E*pia%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%c%Z%>>#5%%|#32%c%Z%%|#32%c%T%>>#5%%|#32%c%T%%|#32%cZ, DLS=\E*m2B\E*pia%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%c%Z%>>#5%%|#32%c%Z%%|#32%c%T%>>#5%%|#32%c%T%%|#32%cZ, WPX=\E*pia%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%c%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%cZ, GTS=\E*pia%X%>>#5%%|#32%c%X%%|#32%c%Y%>>#5%%|#32%c%Y%%|#32%cZ\E*dS, GIS=\E*mR\E*dlafC\E*pI$<#2000>, MCE=h0, # # HP 9872 8-color plotter. # Max horizontal resolution is 40cm/.025mm=16000. # Max vertical resolution is 28cm/.025mm=11200. # Font height is .375cm and width is .285cm. # 28/.375=74.666667 and 40/.285=140.350877. # ha|HA|HP9872A|HP9872|Hewlett-Packard 9872A, MCL#8, SCS=PU;SP%X%+#1%d;, GIS=IN;SP;IN;VS4;, MFP#7, TTY, APT, GCH#74, GCW#140, GTH#0, GTW#0, GTS=PU;PA%X%d\,%Y%d;LB, GTE=^C, GTO, MXC#11100, MYC#8600, MPS=PU;PA%X%d\,%Y%d;, MLS#6, SLS=LT%X%+#1%d;, GFS=SP0;, SSLS=LT;, DLT=PD;PA%X%d\,%Y%d;, DLS=PU;PA%X%d\,%Y%d;PD;PA%Z%d\,%T%d;, DSL=PU;PA%X%d\,%Y%d;LT;PD;PA%Z%d\,%T%d;, DSLT=LT;PD;PA%X%d\,%Y%d;, # # HP 9872 8-color plotter. # For 8.5in by 11in paper, # Horizontal resolution is 11in*25.4mm/in/.025mm=11176. # Vertical resolution is 8.5in*25.4mm/in/.025mm=8636. # Because of paper alignment problems, we have to run at 10.5in by 8in. # Font height is .375cm and width is .285cm. # hb|HB|HP9872B|Hewlett-Packard 9872A, MCL#8, SCS=PU;SP%X%+#1%d;, GIS=IN;SP;IN;VS4;, MFP#7, TTY, APT, GCH#74, GCW#140, GTH#0, GTW#0, GTS=PU;PA%X%d\,%Y%d;LB, GTE=^C, GTO, MXC#8600, MYC#11100, MPS=PU;PA%X%d\,%Y%d;, MLS#6, SLS=LT%X%+#1%d;, CFS=SP0;, SSLS=LT;, DLT=PD;PA%X%d\,%Y%d;, DLS=PU;PA%X%d\,%Y%d;PD;PA%Z%d\,%T%d;, DSL=PU;PA%X%d\,%Y%d;LT;PD;PA%Z%d\,%T%d;, DSLT=LT;PD;PA%X%d\,%Y%d;, ############################################################################### # # # # DEC TERMINALS # # From: decwrl!cad.dec.com!greenberg@ucbvax.berkeley.edu (Steve Greenberg) # Subject: Additional entries in mfbcap for VT200 series terminals # # D1 and D2 are for getenv of a terminal in 80 or 132 column mode respectively. # The other entries are in case the user issues a set term= command. # This works on VMS, I haven't checked it on ultrix. # # DEC VT125 with no pointing device # NEVER BEEN TESTED! # d0|D0|VT125|vt125|DEC VT125, TTY, MCL#4, MXC#767, MYC#479, MLS#4, APT, MFP#1, KYBRD, GIS=\E[2J\EPps(a[0\,479][767\,0])w(p1)w(v), GFS=s(t240)s(t240)s(t120)s(e)\E\\^@, GCS=s(e), GCW#8, GTW#2, GCH#12, GTH#3, SLS=w(p%X%+#1%d), SCS=w(c)w(i%X%d), MPS=p[%X%d\,%Y%d], WPX=p[%X%d\,%Y%d]v[], DBS=p[%X%d\,%Y%d]v(b)[\,%T%d][%Z%d][\,%Y%d](e), DLS=p[%X%d\,%Y%d]v[][%Z%d\,%T%d], DLT=v[][%X%d\,%Y%d], DCS=p[%X%d\,%Y%d]c[%X%+%Z%d\,%Y%d], PLS=p[%X%d\,%Y%d], PLV=v[%X%d\,%Y%d], PLE=v[%X%d\,%Y%d], GTS=p[%X%d\,%Y%+#20%d]t', GTE=', ROT, RTS=t(d%X%ds1), # # DEC VT200 series with no pointing device # NEVER BEEN TESTED! # d1|D1|VT200_Series|vt200_series|vt200|VT200|vt200-80|VT200-80|DEC VT200 Series, MCE=VT125, # # DEC VT200 series with no pointing device, 132 column # NEVER BEEN TESTED! # d2|D2|vt200-132|VT200-132|DEC VT200 Series 132 columns, MCE=VT125, # # DEC VT220 with no pointing device # NEVER BEEN TESTED! # d3|D3|VT220|vt220|DEC VT220, MCE=VT125, # # DEC VT240 with no pointing device # NEVER BEEN TESTED! # d4|D4|VT240|vt240|DEC VT240, MCE=VT125, # # DEC VT241 with no pointing device # NEVER BEEN TESTED! # d5|D5|VT241|vt241|DEC VT241, MCE=VT125, ############################################################################### # # NULL TERMINAL # FOR TESTING PURPOSES ONLY # n0|N0|NULL|Null terminal for performance testing MCL#2, MXC#500, MYC#500, TTY, APT, DFP, DLP, BLD, ROT, VLT, VTI#100, FDH#8, FDW#8, GCH#8, GCW#6, LDL#1, MFP#1, MLS#1, NBL#200, ############################################################################### # # # # H H A RRRRR DDDDD CCCC OOOO PPPPP Y Y # H H A A R R D D C C O O P P Y Y # H H A A R R D D C O O P P Y Y # HHHHHH AAAAA RRRRR D D C O O PPPPP Y # H H A A R R D D C O O P Y # H H A A R R D D C C O O P Y # H H A A R R DDDDD CCCC OOOO P Y # # # The following entries are for hard copy, raster devices. # ############################################################################### # # TRILOG # tp|TP|trilog|TRILOG|Trilog Color Plotter, HCOPY, CACHE#18150, BPIX#3, MXC#660, MCL#7, HCL1#1, HCL2#2, HCL3#3, HCL4#4, HCL5#5, HCL6#6, HCL7#7, # # VARIAN # vp|VP|varian|VARIAN|Varian electrostatic plotter, HCOPY, CACHE#6600, BPIX#1, MXC#2112, MCL#1, HCL1#1, ############################################################################### # # # # # OOOO L DDDDD EEEEEE N N TTTTTTT RRRRR III EEEEEE SSSS # O O L D D E NN N T R R I E S S # O O L D D E N N N T R R I E S # O O L D D EEE N N N T RRRRR I EEE SSSS # O O L D D E N N N T R R I E S # O O L D D E N NN T R R I E S S # OOOO LLLLL DDDDD EEEEEE N N T R R III EEEEEE SSSS # # # The following entries are valid, but very unlikely to be used. # Since MFB performs a sequential search, they have therefore been # placed at the end of this file. # ############################################################################### # # AED TERMINALS # # # AED with hexadecimal coordinate encoding, no pointing device, using # old Berkeley EECS Rom set (no longer used). # ax|AX|BRKBAEDH|BRKAED512H|basic Advanced Electronics Design 512 with hex mode, TTY, APT, GTH#2, GTW#2, GTO, MXC#511, MYC#482, GCH#8, GCW#5, MFP#256, MLS#1, MCL#256, VLT, VTI#255, VTL#8, VTE=K%X%h201%Y%h2%Z%h2%T%h2, SCS=C%X%h2[%X%h2, VWM=L%X%h2, GCS=`\120^L\E`\160$<#400>, GTS=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2^A, GTE=\E, GIS=\E\E\E\E\E\E\E\E\E0$<#2000>\E`\160\E\^15\06\011L\EG1HHH.$<#2000>, GFS=\E\E\E\E\E\E\E\E\E0$<#2000>\E`\100^L^A, BLD, NBL#8, BLS=\E4%X%h2%Y%h2%Z%h2%T%h2300B, BLE=\E4%X%h2%Y%h2%Z%h2%T%h23000, BELL=^A^G\E$<#100>, MPS=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2, WPX=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2T%C%h2, DLT=A%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2, DFP, FDH#8, FDW#8, FDR, FDE=, FDF=%Y%h2, FDS=\,%X%h2, DCS=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2O%Z%c, DSL=1FFFFQ%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2A%Z%>>#6% %R%T%>>#8%|%R%h1%Z%h2%T%h2, DLS=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2A%Z%>>#6% %R%T%>>#8%|%R%h1%Z%h2%T%h2, DBS=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2o%Z%>>#6% %R%T%>>#8%|%R%h1%Z%h2%T%h2, IFP=\,00FFFFFFFFFFFFFFFF\,01FE82BAAAA2BE80FF\,021824428181422418\,032C4281818181422C\,0455AA55AA55AA55AA\,05CCCC3333CCCC3333\,065500550055005500\,07F0F0F0F00F0F0F0F, PLS=!%Z%h4%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2, FPOLY, PLV=%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2, SFP="%X%h2, DLP, LDF=1%Y%h2FF, LDL#1, KYS=Q%X%>>#6% %R%Y%>>#8%|%R%h1%X%h2%Y%h2\E^A, KYE=\E, KYBRD, KYB=\EC00[00^A^H\EC%C%h2[%C%h2^A, KYX#3, KYY#1, # # AED with joystick and hexadecimal coordinate encoding (old Berk. ROM set) # ay|AY|BRKAEDHJ|Advanced Electronics Design 512 with joystick and hex, POD, PDF=%h1%<<#8%R%>>#2%̀%X%h2%|%X%X%h2%|%R%Ͽ%Y, PDS=c%X%h2%Y%h202U, PDE=d, PDR=j, PRI, MCE=BRKBAEDH, # # AED with four button mouse and hexadecimal coordinate encoding # az|AZ|BRKAEDHT|Advanced Electronics Design 512 with tablet and hex, POD, PDB, NPB#4, PDS=c%X%h2%Y%h2022019001F42828, PDE=3%@, PDR=3\002, BU1#1, BU2#2, BU3#4, BU4#8, PDF=\002%h2%%T%h4%X%h4%Y, MCE=BRKBAEDH, # # AED 512 with eight bit binary coordinate encoding, no pointing device, # using old Berkeley EECS Rom set. # aa|AA|BRKBAED8|Basic Advanced Electronics Design 512 with 8 bit mode, 8BB, TTY, APT, GTH#2, GTW#2, GTO, MXC#511, MYC#482, GCH#8, GCW#5, GTS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c^A, GTE=\E, MFP#256, MLS#2, MCL#256, BELL=^A^G\E$<#100>, GIS=\E\E\E\E\E\E\E\E\E\E0$<#2000>\E`\160\^15\06\011LG1888N, GFS=\E\E\E\E\E\E\E\E\E\E0$<#2000>\E`\100^L^A, VLT, VTI#255, VTL#8, VTE=K%X%c^A%Y%c%Z%c%T%c, SCS=C%X%c[%X%c, VWM=L%X%c, GCS=`\120^L\E`\160$<#400>, BLD, NBL#8, BLS=\E4%X%c%Y%c%Z%c%T%c\060\013, BLE=\E4%X%c%Y%c%Z%c%T%c\060%@, SFP="%X%c, FPOLY, DFP, FDH#8, FDW#8, FDR, FDE=, FDF=%Y%c, FDS=\,%X%c, MPS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, WPX=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cT%C%c, DLT=A%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, DCS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cO%Z%c, DLS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%cA%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, DBS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%co%T%>>#8%%R%Z%>>#4%ð%|%R%c%Z%c%T%c, IFP=\EG1HHHN\,00FFFFFFFFFFFFFFFF\,01FE82BAAAA2BE80FF\,021824428181422418\,032C4281818181422C\,0455AA55AA55AA55AA\,05CCCC3333CCCC3333\,065500550055005500\,07F0F0F0F00F0F0F0F\EG1888N, PLS=!%Z%>>#8%ÿ%c%Z%c%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLV=%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c, PLE=\E, DLP, LDL#1, LDF=1%Y%c%=#255%c, SFP="%X%c, SSLS=1%=#255%c%c, KYBRD, KYB=\EC%@[%@^A^H\EC%C%c[%C%c^A, KYX#3, KYY#1, KYS=Q%Y%>>#8%%R%X%>>#4%ð%|%R%c%X%c%Y%c\E^A, KYE=\E, # # AED 512 with joystick and 8 bit binary coordinate encoding # ab|AB|BRKAEDJ8|Advanced Electronics Design 512 with joystick & 8 bit mode, POD, PDF=%h1%<<#8%R%>>#2%̀%X%h2%|%X%X%h2%|%R%Ͽ%Y, PDS=\EG1HHHNc%X%h2%Y%h2\002U, PDE=dG1888N\E\E, PDR=j, PRI, MCE=BRKBAED8, # # AED 512 with tablet and 8 bit binary coordinate encoding # ac|AC|BRKAEDT8|Advanced Electronics Design 512 with tablet and 8 bit mode, PDB, NPB#4, PDS=\EG1HHHNc%X%h2%Y%h2022019001F42828, PDE=3%@G1888N\E, POD, BU1#1, BU2#2, BU3#4, BU4#8, PDR=3\002, PDF=\002%h2%T%h4%X%h4%Y, MCE=BRKBAED8, 0707070124061600261006440006700000000000011777770500302371000002200000000127spice3c1/lib/news This is a sample news file, and will be printed whenever spice or nutmeg is started. 0707070124062100241006440006700000000000011777770500302371000004400000004761spice3c1/lib/components/bipolar.lib* Library of bipolar transistor model parameters * * This is a reduced version of MicroSim's bipolar transistor model library. * You are welcome to make as many copies of it as you find convenient. * * Release date: 86-06-20 * * The parameters in this model library were derived from the data sheets for * each part. Where specified, the part was characterize using the Parts * option. Otherwise, methods used were as follows: * * NE, NC Normally set to 4 * BF, ISE, IKF These are adjusted to give the nominal beta vs. * collector current curve. BF controls the mid- * range beta. ISE/IS controls the low-current * roll-off. IKF controls the high-current rolloff. * ISC Set to ISE. * IS, RB, RE, RC These are adjusted to give the nominal VBE vs. * IC and VCE vs. IC curves in saturation. IS * controls the low-current value of VBE. RB+RE * controls the rise of VBE with IC. RE+RC controls * the rise of VCE with IC. RC is normally set to 0. * VAF Using the voltages specified on the data sheet * VAF is set to give the nominal output impedance * (RO on the .OP printout) on the data sheet. * CJC, CJE Using the voltages specified on the data sheet * CJC and CJE are set to give the nominal input * and output capacitances (CPI and CMU on the .OP * printout; Cibo and Cobo on the data sheet). * TF Using the voltages and currents specified on the * data sheet for FT, TF is adjusted to produce the * nominal value of FT on the .OP printout. * TR Using the rise and fall time circuits on the * data sheet, TR (and if necessary TF) are adjusted * to give a transient analysis which shows the * nominal values of the turn-on delay, rise time, * storage time, and fall time. * KF, AF These parameters are only set if the data sheet has * a spec for noise. Then, AF is set to 1 and KF * is set to produce a total noise at the collector * which is greater than the generator noise at the * collector by the rated number of decibels. * * *** 2N2222 *** * .MODEL Q2N2222 NPN(IS=3.108E-15 XTI=3 EG=1.11 VAF=131.5 BF=217.5 NE=1.541 + ISE=190.7E-15 IKF=1.296 XTB=1.5 BR=6.18 NC=2 ISC=0 IKR=0 RC=1 + CJC=14.57E-12 VJC=.75 MJC=.3333 FC=.5 CJE=26.08E-12 VJE=.75 + MJE=.3333 TR=51.35E-9 TF=451E-12 ITF=.1 VTF=10 XTF=2) * *** 2N2907 * .MODEL Q2N2907 PNP(IS=9.913E-15 XTI=3 EG=1.11 VAF=90.7 BF=197.8 NE=2.264 + ISE=6.191E-12 IKF=.7322 XTB=1.5 BR=3.369 NC=2 ISC=0 IKR=0 RC=1 + CJC=14.57E-12 VJC=.75 MJC=.3333 FC=.5 CJE=20.16E-12 VJE=.75 + MJE=.3333 TR=29.17E-9 TF=405.7E-12 ITF=.4 VTF=10 XTF=2) 0707070124062100251006440006700000000000011777770500302371000004200000003037spice3c1/lib/components/diode.lib* Sample library of diode model parameters * * This is a reduced version of MicroSim's diode model library. * You are welcome to make as many copies of it as you find convenient. * * Release date: November 1988 * * The parameters in this model library were derived from the data sheets for * each part. Most parts were characterize using the Parts option. * Devices can also be characterized without Parts as follows: * IS nominal leakage current * RS for zener diodes: nominal small-signal impedance * at specified operating current * IB for zener diodes: set to nominal leakage current * IBV for zener diodes: at specified operating current * IBV is adjusted to give the rated zener voltage * * *** Zener Diodes *** * * "A" suffix zeners have the same parameters (e.g., 1N750A has the same * parameters as 1N750) * .model D1N750 D(Is=1u Rs=10 Bv=4.24 Ibv=1u) *** Voltage-variable capacitance diodes * The parameters in this model library were derived from the data sheets for * each part. Each part was characterize using the Parts option. * .model MV2201 D(Is=1.365p Rs=1 Ikf=0 N=1 Xti=3 Eg=1.11 Cjo=14.93p M=.4261 + Vj=.75 Fc=.5 Isr=16.02p Nr=2 Bv=25 Ibv=10u) * Motorola pid=MV2201 case=182-03 * 88-09-22 bam creation *** Switching Diodes *** .model D1N4148 D(Is=0.1p Rs=16 CJO=2p Tt=12n Bv=100 Ibv=0.1p) * 85-??-?? Original library .model MBD101 D(Is=192.1p Rs=.1 Ikf=0 N=1 Xti=3 Eg=1.11 Cjo=893.8f M=98.29m + Vj=.75 Fc=.5 Isr=16.91n Nr=2 Bv=5 Ibv=10u) * Motorola pid=MBD101 case=182-03 * 88-09-22 bam creation * End of library file 0707070124062100261006440006700000000000011777770500302371000004100000001647spice3c1/lib/components/jfet.lib* Library of junction field-effect transistor (JFET) model parameters * This is a reduced version of MicroSim's JFET model library. * You are welcome to make as many copies of it as you find convenient. * Release date: November 1988 * The parameters in this model library were derived from the data sheets for * each part. Each part was characterize using the Parts option. .model J2N3819 NJF(Beta=1.304m Betatce=-.5 Rd=1 Rs=1 Lambda=2.25m Vto=-3 + Vtotc=-2.5m Is=33.57f Isr=322.4f N=1 Nr=2 Xti=3 Alpha=311.7 + Vk=243.6 Cgd=1.6p M=.3622 Pb=1 Fc=.5 Cgs=2.414p Kf=9.882E-18 + Af=1) * National pid=50 case=TO92 * 88-08-01 rmn BVmin=25 .model J2N4393 NJF(Beta=9.109m Betatce=-.5 Rd=1 Rs=1 Lambda=6m Vto=-1.422 + Vtotc=-2.5m Is=205.2f Isr=1.988p N=1 Nr=2 Xti=3 Alpha=20.98u + Vk=123.7 Cgd=4.57p M=.4069 Pb=1 Fc=.5 Cgs=4.06p Kf=123E-18 + Af=1) * National pid=51 case=TO18 * 88-07-13 bam BVmin=40 *** end of library file 0707070124062100271006440006700000000000011777770500302371000004300000011556spice3c1/lib/components/linear.lib* Library of linear IC definitions * This is a reduced version of MicroSim's linear subcircuit library. * You are welcome to make as many copies of it as you find convenient. * * Release date: November 1988 * * The parameters in the opamp library were derived from the data sheets for * each part. The macromodel used is similar to the one described in: * * Macromodeling of Integrated Circuit Operational Amplifiers * by Graeme Boyle, Barry Cohn, Donald Pederson, and James Solomon * IEEE Journal of SoliE-State Circuits, Vol. SC-9, no. 6, Dec. 1974 * * Differences from the reference (above) occur in the output limiting stage * which was modified to reduce internally generated currents associated with * output voltage limiting, as well as short-circuit current limiting. * * The opamps are modelled at room temperature and do not track changes with * temperature. This library file contains models for nominal, not worst case, * devices. * *----------------------------------------------------------------------------- * connections: non-inverting input * | inverting input * | | positive power supply * | | | negative power supply * | | | | output * | | | | | .subckt LM324 1 2 3 4 5 * c1 11 12 2.887E-12 c2 6 7 30.00E-12 dc 5 53 dx de 54 5 dx dlp 90 91 dx dln 92 90 dx dp 4 3 dx egnd1 99 0 (3,0) .5 egnd2 99 0 (4,0) .5 fb1 7 99 vb 21.22E6 fb2 7 99 vc -20E6 fb3 7 99 ve 20E6 fb4 7 99 vlp 20E6 fb5 7 99 vln -20E6 ga 6 0 11 12 188.5E-6 gcm 0 6 10 99 59.61E-9 iee 3 10 dc 15.09E-6 hlim 90 0 vlim 1K q1 11 2 13 qx q2 12 1 14 qx r2 6 9 100.0E3 rc1 4 11 5.305E3 rc2 4 12 5.305E3 re1 13 10 1.845E3 re2 14 10 1.845E3 ree 10 99 13.25E6 ro1 8 5 50 ro2 7 99 25 rp 3 4 9.082E3 vb 9 0 dc 0 vc 3 53 dc 1.500 ve 54 4 dc 0 vlim 7 8 dc 0 vlp 91 0 dc 40 vln 0 92 dc 40 .model dx D(Is=800.0E-18 Rs=1) .model qx PNP(Is=800.0E-18 Bf=166.7) .ends *----------------------------------------------------------------------------- * connections: non-inverting input * | inverting input * | | positive power supply * | | | negative power supply * | | | | output * | | | | | .subckt uA741 1 2 3 4 5 * c1 11 12 8.661E-12 c2 6 7 30.00E-12 dc 5 53 dx de 54 5 dx dlp 90 91 dx dln 92 90 dx dp 4 3 dx egnd1 99 0 (3,0) .5 egnd2 99 0 (4,0) .5 fb1 7 99 vb 10.61E6 fb2 7 99 vc -10E6 fb3 7 99 ve 10E6 fb4 7 99 vlp 10E6 fb5 7 99 vln -10E6 ga 6 0 11 12 188.5E-6 gcm 0 6 10 99 5.961E-9 iee 10 4 dc 15.16E-6 hlim 90 0 vlim 1K q1 11 2 13 qx q2 12 1 14 qx r2 6 9 100.0E3 rc1 3 11 5.305E3 rc2 3 12 5.305E3 re1 13 10 1.836E3 re2 14 10 1.836E3 ree 10 99 13.19E6 ro1 8 5 50 ro2 7 99 100 rp 3 4 18.16E3 vb 9 0 dc 0 vc 3 53 dc 1 ve 54 4 dc 1 vlim 7 8 dc 0 vlp 91 0 dc 40 vln 0 92 dc 40 .model dx D(Is=800.0E-18 Rs=1) .model qx NPN(Is=800.0E-18 Bf=93.75) .ends *----------------------------------------------------------------------------- *** Voltage comparators * The parameters in this comparator library were derived from data sheets for * each parts. The macromodel used was developed by MicroSim Corporation, and * is produced by the "Parts" option to PSpice. * * Although we do not use it, another comparator macro model is described in: * * An Integrated-Circuit Comparator Macromodel * by Ian Getreu, Andreas Hadiwidjaja, and Johan Brinch * IEEE Journal of Solid-State Circuits, Vol. SC-11, no. 6, Dec. 1976 * * This reference covers the considerations that go into duplicating the * behavior of voltage comparators. * * The comparators are modelled at room temperature. The macro model does not * track changes with temperature. This library file contains models for * nominal, not worst case, devices. * *----------------------------------------------------------------------------- * connections: non-inverting input * | inverting input * | | positive power supply * | | | negative power supply * | | | | open collector output * | | | | | output ground * | | | | | | .subckt LM111 1 2 3 4 5 6 * f1 9 3 v1 1 iee 3 7 dc 100.0E-6 vi1 21 1 dc .45 vi2 22 2 dc .45 q1 9 21 7 qin q2 8 22 7 qin q3 9 8 4 qmo q4 8 8 4 qmi .model qin PNP(Is=800.0E-18 Bf=833.3) .model qmi NPN(Is=800.0E-18 Bf=1002) .model qmo NPN(Is=800.0E-18 Bf=1000 Cjc=1E-15 Tr=118.8E-9) e1 10 6 9 4 1 v1 10 11 dc 0 q5 5 11 6 qoc .model qoc NPN(Is=800.0E-18 Bf=34.49E3 Cjc=1E-15 Tf=364.6E-12 Tr=79.34E-9) dp 4 3 dx rp 3 4 6.122E3 .model dx D(Is=800.0E-18 Rs=1) * .ends * * End of library file 0707070124062100301006440006700000000000011777770500302371000004000000002335spice3c1/lib/components/nom.lib* Library of standard devices * * This is the master library for MicroSim's standard parts libraries. * You are welcome to make as many copies of it as you find convenient. * * Release date: November 1988 * * This "master library" file calls out the other libraries which we supply. * It takes time for PSpice to scan each library file. When possible, PSpice * creates an index file, called .IDX, to speed up the search process. * The index file re-created whenever PSpice senses that it might be invalid. * If the library search times are too long, you may want to "comment out" * references to device libraries which you are not using. Also, you can always * bypass the library approach and simply copy the model or subcircuit which you * need directly into your circuit file. .INCLUDE /usr/local/lib/spice3lib/components/bipolar.lib ; Bipolar transistors .INCLUDE /usr/local/lib/spice3lib/components/diode.lib ; Diodes .INCLUDE /usr/local/lib/spice3lib/components/jfet.lib ; JFET transistors .INCLUDE /usr/local/lib/spice3lib/components/linear.lib ; Linear ICs: * op-amps and * voltage comparators .INCLUDE /usr/local/lib/spice3lib/components/pwrmos.lib ; Power MOSFETs * * End of library file 0707070124062100311006440006700000000000011777770500302371000004300000006601spice3c1/lib/components/pwrmos.lib* Library of MOSFET model parameters (for "power" MOSFET devices) * * This is a reduced version of MicroSim's power MOSFET model library. * You are welcome to make as many copies of it as you find convenient. * * Release date: November 1988 * * The parameters in this model library were derived from the data sheets for * each part. Each part was characterize using the Parts option. * Device can also be characterized without Parts as follows: * LEVEL Set to 3 (short-channel device). * TOX Determined from gate ratings. * L, LD, W, WD Assume L=2u. Calculate from input capacitance. * XJ, NSUB Assume usual technology. * IS, RD, RB Determined from "source-drain diode forward voltage" * specification or curve (Idr vs. Vsd). * RS Determine from Rds(on) specification. * RDS Calculated from Idss specification or curves. * VTO, UO, THETA Determined from "output characteristics" curve family * (Ids vs. Vds, stepped Vgs). * ETA, VMAX, CBS Set for null effect. * CBD, PB, MJ Determined from "capacitance vs. Vds" curves. * RG Calculate from rise/fall time specification or curves. * CGSO, CGDO Determined from gate-charge, turn-on/off delay and * rise time specifications. * * NOTE: when specifying the instance of a device in your circuit file: * * BE SURE to have the source and bulk nodes connected together, as this * is the way the real device is constructed. * * DO NOT include values for L, W, AD, AS, PD, PS, NRD, or NDS. * The PSpice default values for these parameters are taken into account * in the library model statements. Of course, you should NOT reset * the default values using the .OPTIONS statement, either. * * Example use: M17 15 23 7 7 IRF150 * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * * The "power" MOSFET device models benefit from relatively complete specifi- * cation of static and dynamic characteristics by their manufacturers. The * following effects are modeled: * - DC transfer curves in forward operation, * - gate drive characteristics and switching delay, * - "on" resistance, * - reverse-mode "body-diode" operation. * * The factors not modeled include: * - maximum ratings (eg. high-voltage breakdown), * - safe operating area (eg. power dissipation), * - latch-up, * - noise. * * For high-current switching applications, we advise that you include * series inductance elements, for the source and drain, in your circuit file. * In doing so, voltage spikes due to di/dt will be modeled. According to the * 1985 International Rectifier databook, the following case styles have lead * inductance values of: * TO-204 (modified TO-3) source = 12.5nH drain = 5.0nH * TO-220 source = 7.5nH drain = 3.5-4.5nH * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * .model IRF150 NMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0 Vmax=0 Xj=0 + Tox=100n Uo=600 Phi=.6 Rs=1.624m Kp=20.53u W=.3 L=2u Vto=2.831 + Rd=1.031m Rds=444.4K Cbd=3.229n Pb=.8 Mj=.5 Fc=.5 Cgso=9.027n + Cgdo=1.679n Rg=13.89 Is=194E-18 N=1 Tt=288n) * Int'l Rectifier pid=IRFC150 case=TO3 * 88-08-25 bam creation .model IRF9140 PMOS(Level=3 Gamma=0 Delta=0 Eta=0 Theta=0 Kappa=0 Vmax=0 Xj=0 + Tox=100n Uo=300 Phi=.6 Rs=70.6m Kp=10.15u W=1.9 L=2u Vto=-3.67 + Rd=60.66m Rds=444.4K Cbd=2.141n Pb=.8 Mj=.5 Fc=.5 Cgso=877.2p + Cgdo=369.3p Rg=.811 Is=52.23E-18 N=2 Tt=140n) * Int'l Rectifier pid=IRFC9140 case=TO3 * 88-08-25 bam creation * End of library file 0707070124062100230407550006700000000000021777770500302371000003000000000000spice3c1/lib/components0707070124061600240407550006700000000000051777770500302371000001500000000000spice3c1/lib0707070124062140501006440006700000000000011777770500302371100003600000013027spice3c1/examples/process.proNM1 PM1 NM2 PM2 NM3 PY1 ML1 ML2 DU1 DU2 * * Example process file * *PROCESS=BSIM *RUN= *WAFER= *XPOS=6 *YPOS=5 *OPERATOR=Min-Chie *DATE=July-16-85 * * NMOS-1 PARAMETERS (07-16-85) * -1.0087E+000,-2.1402E-001,3.44354E-001 7.96434E-001,0.00000E+000,0.00000E+000 1.31191E+000,3.23395E-001,-5.7698E-001 1.46640E-001,1.68585E-001,-1.8796E-001 -1.0027E-003,-9.4847E-003,1.47316E-002 5.34334E+002,7.9799E-001,4.7740E-001 4.38497E-002,6.38105E-002,-6.1053E-002 -5.7332E-002,1.01174E+000,1.62706E-002 8.25434E+000,-2.4197E+001,1.95696E+001 -7.6911E-004,9.62411E-003,-3.7951E-003 7.86777E-004,7.35448E-004,-1.7796E-003 1.06821E-003,-8.0958E-003,4.03379E-003 -1.9209E-002,-7.4573E-002,1.47520E-002 5.40612E+002,6.21401E+002,-1.9190E+002 -1.2992E+001,-6.4900E+001,4.29043E+001 -9.4035E+000,1.18239E+002,-2.9747E+001 0.0000E-002,0.00000E-001,0.0000E-002 3.00000E-002,2.70000E+001,5.00000E+000 ** 2.70000E-010,2.70000E-010,1.40000E-010 ** remove the overlap capacitances !! 0.00000E-000,0.00000E-000,0.00000E-000 1.0 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 * *PROCESS=BSIM *RUN= *WAFER= *XPOS=6 *YPOS=5 *OPERATOR= TRANSLATED FROM NM1 * (BY SCALING THE MOBILITY PARAMETERS) *DATE=July-16-85 * * PMOS-1 PARAMETERS (07-16-85) * -1.0087E+000,-2.1402E-001,3.44354E-001 7.96434E-001,0.00000E+000,0.00000E+000 1.31191E+000,3.23395E-001,-5.7698E-001 1.46640E-001,1.68585E-001,-1.8796E-001 -1.0027E-003,-9.4847E-003,1.47316E-002 1.82193E+002,2.7226E-001,1.6288E-001 4.38497E-002,6.38105E-002,-6.1053E-002 -5.7332E-002,1.01174E+000,1.62706E-002 2.81626E+000,-0.8255E+001,0.66768E+001 -7.6911E-004,9.62411E-003,-3.7951E-003 7.86777E-004,7.35448E-004,-1.7796E-003 1.06821E-003,-8.0958E-003,4.03379E-003 -1.9209E-002,-7.4573E-002,1.47520E-002 1.84449E+002,2.12012E+002,-0.6547E+002 -0.4433E+001,-2.2143E+001,1.46383E+001 -3.2083E+000,0.40341E+002,-1.0149E+001 0.0000E-002,0.00000E-001,0.0000E-002 3.00000E-002,2.70000E+001,5.00000E+000 ** 2.70000E-010,2.70000E-010,1.40000E-010 ** remove the overlap capacitances !! 0.00000E-000,0.00000E-000,0.00000E-000 1.0 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 * * *PROCESS=BSIM *RUN=6,8 *WAFER=1 *XPOS=6 *YPOS=5 *OPERATOR=joey & min *DATE=3/8/'85 * * NMOS-2 PARAMETERS (03-08-85) * -1.0682E+000,-6.7765E-002,4.15888E-001 7.93602E-001,0.00000E+000,0.00000E+000 1.38210E+000,1.56889E-001,-6.3435E-001 1.60163E-001,1.41849E-001,-2.0333E-001 -1.1885E-002,1.33579E-002,2.13053E-002 5.44582E+002,9.4444E-001,4.4423E-001 4.02955E-002,5.36003E-002,-5.1224E-002 2.01256E-001,4.30621E-001,-1.5909E-001 -1.1522E+000,-2.5360E+000,2.48135E+001 -3.0525E-003,1.40355E-002,-2.1259E-003 2.33703E-003,-1.9621E-003,-3.0147E-003 -1.5014E-003,-1.7938E-003,5.04494E-003 -9.6961E-002,9.68463E-002,6.56404E-002 5.95572E+002,4.75833E+002,-2.3062E+002 -7.7819E+001,7.75110E+001,8.19963E+001 -1.8177E+001,1.23358E+002,-1.9316E+001 0.0000E-003,0.00000E-002,0.0000E-002 3.20000E-002,2.70000E+001,5.00000E+000 2.69000E-010,2.69000E-010,2.34000E-010 1.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 * * PMOS-2 PARAMETERS (03-08-85) * -2.1389E-001,3.36471E-002,2.20237E-001 6.97239E-001,0.00000E+000,0.00000E+000 5.95618E-001,-9.7957E-002,-8.1902E-002 -2.0029E-002,1.97751E-002,-4.0038E-002 -1.4030E-002,3.62814E-002,1.44720E-002 1.82193E+002,8.6560E-001,5.7444E-001 1.12067E-001,9.28463E-002,-8.8985E-002 2.39431E-002,8.89483E-002,1.05634E-002 7.51914E+000,-1.8327E+000,3.98658E+000 -1.3199E-003,4.00836E-003,1.97847E-004 5.70255E-004,-1.2309E-003,-2.3082E-003 5.07623E-003,-1.8537E-004,1.76966E-003 -1.2781E-002,1.14420E-002,6.36308E-003 1.89043E+002,8.64555E+001,-3.4304E+001 4.09098E+000,3.51921E+000,4.49145E+000 6.71879E-001,7.66627E+000,-1.5826E+000 0.0000E-003,0.00000E-003,0.0000E-003 3.20000E-002,2.70000E+001,5.00000E+000 4.39000E-010,4.39000E-010,2.34000E-010 1.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 * *PROCESS=BSIM *RUN= *WAFER= *XPOS=6 *YPOS=5 *OPERATOR= TRANSLATED FROM NM1 * (BY SHIFTING VFB --- THE SIZE-INDEP. TERM ONLY) *DATE=July-16-85 * * NMOS-3 PARAMETERS (DEPLETION-MODE) (07-16-85) * -5.6087E+000,-2.1402E-001,3.44354E-001 ** -1.0087E+000,-2.1402E-001,3.44354E-001 7.96434E-001,0.00000E+000,0.00000E+000 1.31191E+000,3.23395E-001,-5.7698E-001 1.46640E-001,1.68585E-001,-1.8796E-001 -1.0027E-003,-9.4847E-003,1.47316E-002 5.34334E+002,7.9799E-001,4.7740E-001 4.38497E-002,6.38105E-002,-6.1053E-002 -5.7332E-002,1.01174E+000,1.62706E-002 8.25434E+000,-2.4197E+001,1.95696E+001 -7.6911E-004,9.62411E-003,-3.7951E-003 7.86777E-004,7.35448E-004,-1.7796E-003 1.06821E-003,-8.0958E-003,4.03379E-003 -1.9209E-002,-7.4573E-002,1.47520E-002 5.40612E+002,6.21401E+002,-1.9190E+002 -1.2992E+001,-6.4900E+001,4.29043E+001 -9.4035E+000,1.18239E+002,-2.9747E+001 0.0000E-002,0.00000E-001,0.0000E-002 3.00000E-002,2.70000E+001,5.00000E+000 ** 2.70000E-010,2.70000E-010,1.40000E-010 ** remove the overlap capacitances !! 0.00000E-000,0.00000E-000,0.00000E-000 1.0 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 0.0, 0.0, 0.0 * ************************************** ************************************** * * poly layer-1 * 30.0, 7.0E-5, 0, 0, 0 0, 0, 0, 0, 0 * * metal layer-1 * 0.040, 2.60E-5, 0, 0, 0 0, 0, 0, 0, 0 * * metal layer-2 (top metal) * 0.030, 1.3E-5, 0, 0, 0 0, 0, 0, 0, 0 * * n+ diffusion layer * 35.0, 2.75E-4, 1.90E-10, 1.0E-5, 0.7 0.8, 0.5, 0.33, 0, 0 * * p+ diffusion layer * 120.0, 3.1E-4, 3.0E-010, 1.0E-5, 0.7 0.8, 0.5, 0.33, 0, 0 0707070124062140511006440006700000000000011777770500302371100003000000000211spice3c1/examples/rc.inrick's circuit. r 1 2 1.0 * l 1 2 1.0 c 2 0 1.0 vin 1 0 pulse (0 1) ac 1 * .tran 0.1 7.0 .ac dec 10 .1 10 .plot tran v(3) i(vin) .end 0707070124062140521006440006700000000000011777770500302371100003100000000552spice3c1/examples/rc.outWarning: vin: no DC value, transient time 0 value used Circuit: rick's circuit. (debug printing enabled) Circuit: rick's circuit. Date: Mon May 1 17:02:46 PDT 1989 .plot card ignored since rawfile was produced Total run time: 0.420 seconds. Current data size = 269280, Data limits: hard = 85950464, soft = 85950464. Time since last call: 0.000 seconds. 0707070124062140531006440006700000000000011777770500302371100003100000010074spice3c1/examples/rc.rawTitle: rick's circuit. Date: Mon May 1 17:02:46 PDT 1989 Plotname: acan Flags: complex No. Variables: 4 No. Points: 21 Command: version SPICE 3c1 Alpha test Variables: 0 frequency frequency 1 V(1) voltage 2 V(2) voltage 3 vin#branch current Values: 0 1.000000000000000e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 7.169568003248978e-01,-4.504772433683886e-01 -2.830431996751022e-01,-4.504772433683886e-01 1 1.258925411794167e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 6.151231395586012e-01,-4.865661956385491e-01 -3.848768604413988e-01,-4.865661956385491e-01 2 1.584893192461114e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 5.020954917241716e-01,-4.999956088951521e-01 -4.979045082758284e-01,-4.999956088951521e-01 3 1.995262314968880e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 3.888532701177222e-01,-4.874899018815425e-01 -6.111467298822778e-01,-4.874899018815425e-01 4 2.511886431509580e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 2.864574583735097e-01,-4.521057209499772e-01 -7.135425416264903e-01,-4.521057209499772e-01 5 3.162277660168380e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 2.021083228643781e-01,-4.015725945496360e-01 -7.978916771356220e-01,-4.015725945496360e-01 6 3.981071705534973e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 1.377997439989840e-01,-3.446896786281807e-01 -8.622002560010160e-01,-3.446896786281807e-01 7 5.011872336272723e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 9.160419896210758e-02,-2.884664099936389e-01 -9.083958010378924e-01,-2.884664099936389e-01 8 6.309573444801933e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 5.982062976643351e-02,-2.371542156926180e-01 -9.401793702335665e-01,-2.371542156926180e-01 9 7.943282347242816e-01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 3.859633238788689e-02,-1.926308789215546e-01 -9.614036676121131e-01,-1.926308789215546e-01 10 1.000000000000000e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 2.470452303185763e-02,-1.552230961346476e-01 -9.752954769681424e-01,-1.552230961346476e-01 11 1.258925411794167e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 1.573091939939289e-02,-1.244325422638415e-01 -9.842690806006071e-01,-1.244325422638415e-01 12 1.584893192461114e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 9.983497127712938e-03,-9.941743766972616e-02 -9.900165028722871e-01,-9.941743766972616e-02 13 1.995262314968880e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 6.322454886315693e-03,-7.926210601874136e-02 -9.936775451136843e-01,-7.926210601874136e-02 14 2.511886431509581e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 3.998528935458680e-03,-6.310737438533614e-02 -9.960014710645413e-01,-6.310737438533614e-02 15 3.162277660168380e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 2.526629563608180e-03,-5.020204882927072e-02 -9.974733704363918e-01,-5.020204882927072e-02 16 3.981071705534973e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 1.595683349481166e-03,-3.991412211397558e-02 -9.984043166505188e-01,-3.991412211397558e-02 17 5.011872336272724e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 1.007401362519545e-03,-3.172359539860415e-02 -9.989925986374805e-01,-3.172359539860415e-02 18 6.309573444801934e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 6.358636861541697e-04,-2.520831933165716e-02 -9.993641363138458e-01,-2.520831933165716e-02 19 7.943282347242817e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 4.012970315590302e-04,-2.002837967114395e-02 -9.995987029684410e-01,-2.002837967114395e-02 20 1.000000000000000e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 2.532388129651598e-04,-1.591146388830292e-02 -9.997467611870348e-01,-1.591146388830292e-02 0707070124062140541006440006700000000000011777770500302371100003500000001777spice3c1/examples/rca3040.inrca3040 ckt - rca 3040 wideband amplifier .ac dec 10 1 10ghz .dc vin -0.25 0.25 0.005 .tran 2.0ns 200ns vin 1 0 sin(0 0.1 50meg 0.5ns) ac 1 vcc 2 0 15.0 vee 3 0 -15.0 rs1 30 1 1k rs2 31 0 1k r1 5 3 4.8k r2 6 3 4.8k r3 9 3 811 r4 8 3 2.17k r5 8 0 820 r6 2 14 1.32k r7 2 12 4.5k r8 2 15 1.32k r9 16 0 5.25k r10 17 0 5.25k q1 2 30 5 qnl q2 2 31 6 qnl q3 10 5 7 qnl q4 11 6 7 qnl q5 14 12 10 qnl q6 15 12 11 qnl q7 12 12 13 qnl q8 13 13 0 qnl q9 7 8 9 qnl q10 2 15 16 qnl q11 2 14 17 qnl .model qnl npn bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf + cjc=2pf va 50 .end 0707070124062140551006440006700000000000011777770500302371100003600000000512spice3c1/examples/rca3040.outWarning: vin: no DC value, transient time 0 value used (debug printing enabled) Circuit: rca3040 ckt - rca 3040 wideband amplifier (debug printing enabled) (debug printing enabled) Total run time: 14.660 seconds. Current data size = 318432, Data limits: hard = 85950464, soft = 85950464. Time since last call: 0.000 seconds. 0707070124062140561006440006700000000000011777770500302371200003600001163272spice3c1/examples/rca3040.rawTitle: rca3040 ckt - rca 3040 wideband amplifier Date: Mon May 1 17:02:48 PDT 1989 Plotname: DCtransferCurve Flags: real No. Variables: 33 No. Points: 100 Command: version SPICE 3c1 Alpha test Variables: 0 sweep voltage 1 V(1) voltage 2 V(2) voltage 3 V(3) voltage 4 V(30) voltage 5 V(31) voltage 6 V(5) voltage 7 V(6) voltage 8 V(9) voltage 9 V(8) voltage 10 V(14) voltage 11 V(12) voltage 12 V(15) voltage 13 V(16) voltage 14 V(17) voltage 15 V(10) voltage 16 V(7) voltage 17 V(11) voltage 18 V(13) voltage 19 vee#branch current 20 vcc#branch current 21 vin#branch current 22 q11#base voltage 23 q10#base voltage 24 q9#base voltage 25 q8#base voltage 26 q7#base voltage 27 q6#base voltage 28 q5#base voltage 29 q4#base voltage 30 q3#base voltage 31 q2#base voltage 32 q1#base voltage Values: 0 -2.500000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 1 -2.450000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 2 -2.400000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 3 -2.350000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 4 -2.300000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 5 -2.250000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 6 -2.200000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 7 -2.150000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 8 -2.100000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 9 -2.050000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 10 -2.000000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 11 -1.950000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 12 -1.900000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 13 -1.850000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 14 -1.800000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 15 -1.750000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 16 -1.700000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 17 -1.650000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 18 -1.600000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 19 -1.550000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 20 -1.500000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 21 -1.450000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 22 -1.400000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 23 -1.350000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 24 -1.300000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 25 -1.250000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 26 -1.200000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 27 -1.150000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 28 -1.100000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 29 -1.050000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 30 -9.999999999999998e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 31 -9.499999999999998e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 32 -8.999999999999998e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 33 -8.499999999999998e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 34 -7.999999999999998e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 35 -7.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 36 -6.999999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 37 -6.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 38 -5.999999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 39 -5.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 40 -4.999999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 41 -4.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 42 -3.999999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 43 -3.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 44 -2.999999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 45 -2.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 46 -1.999999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 47 -1.499999999999999e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 48 -9.999999999999986e-03 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 49 -4.999999999999986e-03 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 50 1.409462824231156e-17 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 51 5.000000000000014e-03 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 52 1.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 53 1.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 54 2.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 55 2.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 56 3.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 57 3.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 58 4.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 59 4.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 60 5.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 61 5.500000000000002e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 62 6.000000000000002e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 63 6.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 64 7.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 65 7.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 66 8.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 67 8.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 68 9.000000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 69 9.500000000000001e-02 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 70 1.000000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 71 1.050000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 72 1.100000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 73 1.150000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 74 1.200000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 75 1.250000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 76 1.300000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 77 1.350000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 78 1.400000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 79 1.450000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 80 1.500000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 81 1.550000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 82 1.600000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 83 1.650000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 84 1.700000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 85 1.750000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 86 1.800000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 87 1.850000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 88 1.900000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 89 1.950000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 90 2.000000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 91 2.050000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 92 2.100000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 93 2.150000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 94 2.200000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 95 2.250000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 96 2.300000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 97 2.350000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 98 2.400000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 99 2.450000000000000e-01 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990991192e-02 -2.879678990991192e-02 -8.274694284435054e-01 -8.274694284435054e-01 -5.051369608748560e+00 -4.199502956171703e+00 7.165327561626288e+00 1.608830063870310e+00 7.165327561626283e+00 6.388784168513818e+00 6.388784168513823e+00 7.846830864192478e-01 -1.654399526173634e+00 7.846830864192482e-01 8.044150319351548e-01 2.314952380495672e-02 -2.324698865399696e-02 -2.879678990991192e-05 7.164026575625627e+00 7.164026575625622e+00 -4.213918705241805e+00 8.009059159667978e-01 1.605320947901953e+00 1.602168334650999e+00 1.602168334650999e+00 -8.347207776876063e-01 -8.347207776876063e-01 -3.167646890090311e-02 -3.167646890090311e-02 Title: rca3040 ckt - rca 3040 wideband amplifier Date: Mon May 1 17:02:53 PDT 1989 Plotname: acan Flags: complex No. Variables: 33 No. Points: 101 Command: version SPICE 3c1 Alpha test Variables: 0 frequency frequency 1 V(1) voltage 2 V(2) voltage 3 V(3) voltage 4 V(30) voltage 5 V(31) voltage 6 V(5) voltage 7 V(6) voltage 8 V(9) voltage 9 V(8) voltage 10 V(14) voltage 11 V(12) voltage 12 V(15) voltage 13 V(16) voltage 14 V(17) voltage 15 V(10) voltage 16 V(7) voltage 17 V(11) voltage 18 V(13) voltage 19 vee#branch current 20 vcc#branch current 21 vin#branch current 22 q11#base voltage 23 q10#base voltage 24 q9#base voltage 25 q8#base voltage 26 q7#base voltage 27 q6#base voltage 28 q5#base voltage 29 q4#base voltage 30 q3#base voltage 31 q2#base voltage 32 q1#base voltage Values: 0 1.000000000000000e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750829e-01,-8.422543861046435e-09 9.908252525678904e-03,3.312070587802606e-09 9.753572713511682e-01,-1.033712299710846e-08 1.979828436982463e-02,4.657288880052227e-09 1.161855055828241e-03,2.611460103453079e-09 7.906432866323882e-04,2.244057578177145e-09 -1.121440554753681e+02,9.973029765362148e-06 -3.508649101923866e-07,-1.460515892422505e-12 1.121423050442312e+02,-9.978838551520166e-06 1.116156169925946e+02,-9.999002302880887e-06 -1.116173592026489e+02,9.993221844572719e-06 -5.335599896397241e-01,-5.499136772183469e-08 4.972548841878315e-01,-3.302626791179607e-09 5.335509601092016e-01,5.495921282733342e-08 -1.754324550961935e-07,-7.302465568645985e-13 2.091210461443190e-04,3.070878591211224e-12 -2.073119653776233e-04,-5.752234825468235e-12 -1.233270432491712e-05,-8.422543861046435e-12 -1.121188310583207e+02,1.003930281315992e-05 1.121170810209059e+02,-1.004510922330029e-05 9.234983741355264e-04,2.621135928112498e-09 -1.544741712822299e-07,-6.398034457244221e-13 -3.299066263784230e-07,-1.370070059993848e-12 1.092786297010821e-01,8.056400986902593e-08 -1.092810370842340e-01,-8.057399990947728e-08 1.243478350286215e-01,1.685449683991875e-08 8.706663113707955e-01,-2.340656758108237e-08 1.089907777824679e-02,3.643277646582867e-09 9.864340252425912e-01,-9.264798247151079e-09 1 1.258925411794167e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750830e-01,-1.060335449862232e-08 9.908252525678809e-03,4.169649828640757e-09 9.753572713511683e-01,-1.301366682590172e-08 1.979828436982456e-02,5.863179321164158e-09 1.161855055828261e-03,3.287633486123706e-09 7.906432866324062e-04,2.825101110696484e-09 -1.121440554753678e+02,1.255530060419401e-05 -3.508649101932854e-07,-1.838680571303072e-12 1.121423050442309e+02,-1.256261343270002e-05 1.116156169925943e+02,-1.258799809168513e-05 -1.116173592026486e+02,1.258072092582916e-05 -5.335599896397278e-01,-6.923003025433498e-08 4.972548841878316e-01,-4.157760793088227e-09 5.335509601092052e-01,6.918954964053375e-08 -1.754324550966430e-07,-9.193259473136091e-13 2.091210461443191e-04,3.866007095010486e-12 -2.073119653777447e-04,-7.241634596357587e-12 -1.233270432491701e-05,-1.060335449862232e-11 -1.121188310583204e+02,1.263873342818368e-05 1.121170810209056e+02,-1.264604326546070e-05 9.234983741355473e-04,3.299814627667513e-09 -1.544741712826334e-07,-8.054648163773187e-13 -3.299066263792758e-07,-1.724816014467559e-12 1.092786297010862e-01,1.014240793001526e-07 -1.092810370842381e-01,-1.014366560159416e-07 1.243478350286219e-01,2.121855437477820e-08 8.706663113707952e-01,-2.946712273070211e-08 1.089907777824669e-02,4.586614811504833e-09 9.864340252425913e-01,-1.166368994848455e-08 2 1.584893192461114e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750832e-01,-1.334883242857766e-08 9.908252525678656e-03,5.249278127559066e-09 9.753572713511684e-01,-1.638323586775044e-08 1.979828436982445e-02,7.381305441319655e-09 1.161855055828294e-03,4.138885340346579e-09 7.906432866324344e-04,3.556591579143730e-09 -1.121440554753673e+02,1.580618698333448e-05 -3.508649101915063e-07,-2.314761695383112e-12 1.121423050442304e+02,-1.581539328897278e-05 1.116156169925938e+02,-1.584735068123887e-05 -1.116173592026481e+02,1.583818927221695e-05 -5.335599896397334e-01,-8.715544434646082e-08 4.972548841878316e-01,-5.234310718580244e-09 5.335509601092109e-01,8.710448227306143e-08 -1.754324550957534e-07,-1.157362796793577e-12 2.091210461443191e-04,4.867014574085247e-12 -2.073119653773995e-04,-9.116677816308284e-12 -1.233270432491685e-05,-1.334883242857766e-11 -1.121188310583199e+02,1.591122268563281e-05 1.121170810209051e+02,-1.592042522553693e-05 9.234983741355803e-04,4.154220488980740e-09 -1.544741712818624e-07,-1.014020125642435e-12 -3.299066263776153e-07,-2.171414711280381e-12 1.092786297010927e-01,1.276853507987883e-07 -1.092810370842446e-01,-1.277011839458921e-07 1.243478350286225e-01,2.671257730394456e-08 8.706663113707946e-01,-3.709690961813841e-08 1.089907777824652e-02,5.774205940314973e-09 9.864340252425915e-01,-1.468371567143543e-08 3 1.995262314968880e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750834e-01,-1.680518436211852e-08 9.908252525678413e-03,6.608449628359455e-09 9.753572713511685e-01,-2.062527196132873e-08 1.979828436982428e-02,9.292512992291914e-09 1.161855055828346e-03,5.210547931464658e-09 7.906432866324791e-04,4.477483518357187e-09 -1.121440554753666e+02,1.989881045688990e-05 -3.508649101928598e-07,-2.914112320571164e-12 1.121423050442296e+02,-1.991040050900671e-05 1.116156169925930e+02,-1.995063248222516e-05 -1.116173592026473e+02,1.993909895159962e-05 -5.335599896397424e-01,-1.097222036639708e-07 4.972548841878315e-01,-6.589606776847257e-09 5.335509601092198e-01,1.096580462147306e-07 -1.754324550964302e-07,-1.457033435551411e-12 2.091210461443192e-04,6.127208326888481e-12 -2.073119653777551e-04,-1.147721737414210e-11 -1.233270432491663e-05,-1.680518436211852e-11 -1.121188310583191e+02,2.003104257165892e-05 1.121170810209043e+02,-2.004262788299727e-05 9.234983741356326e-04,5.229853739773843e-09 -1.544741712824778e-07,-1.276575704244423e-12 -3.299066263789074e-07,-2.733649159579821e-12 1.092786297011030e-01,1.607463328344462e-07 -1.092810370842549e-01,-1.607662655856838e-07 1.243478350286234e-01,3.362914238245190e-08 8.706663113707937e-01,-4.670224221730588e-08 1.089907777824625e-02,7.269294591195401e-09 9.864340252425917e-01,-1.848570279833037e-08 4 2.511886431509580e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750838e-01,-2.115647364335703e-08 9.908252525678031e-03,8.319545169703527e-09 9.753572713511688e-01,-2.596567899728255e-08 1.979828436982402e-02,1.169858074542383e-08 1.161855055828429e-03,6.559691200292390e-09 7.906432866325502e-04,5.636817782149417e-09 -1.121440554753653e+02,2.505111814865408e-05 -3.508649101875184e-07,-3.668650053181800e-12 1.121423050442284e+02,-2.506570915978795e-05 1.116156169925918e+02,-2.511635821323928e-05 -1.116173592026461e+02,2.510183835844708e-05 -5.335599896397565e-01,-1.381320704306259e-07 4.972548841878316e-01,-8.295823425104065e-09 5.335509601092340e-01,1.380513009874215e-07 -1.754324550937597e-07,-1.834296417845576e-12 2.091210461443193e-04,7.713698266076729e-12 -2.073119653777360e-04,-1.444896060894266e-11 -1.233270432491622e-05,-2.115647364335703e-11 -1.121188310583178e+02,2.521758851819208e-05 1.121170810209031e+02,-2.523217356103948e-05 9.234983741357156e-04,6.583995772968050e-09 -1.544741712801572e-07,-1.607113594149066e-12 -3.299066263739160e-07,-3.441460393917678e-12 1.092786297011193e-01,2.023676432580053e-07 -1.092810370842712e-01,-2.023927371050653e-07 1.243478350286248e-01,4.233658192211289e-08 8.706663113707922e-01,-5.879463951513269e-08 1.089907777824583e-02,9.151499686673880e-09 9.864340252425921e-01,-2.327212100769273e-08 5 3.162277660168379e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750843e-01,-2.663442229357588e-08 9.908252525677421e-03,1.047368682870936e-08 9.753572713511692e-01,-3.268885312416927e-08 1.979828436982359e-02,1.472764058234018e-08 1.161855055828560e-03,8.258161945570668e-09 7.906432866326626e-04,7.096333147601136e-09 -1.121440554753634e+02,3.153748923119845e-05 -3.508649101884447e-07,-4.618556778939737e-12 1.121423050442264e+02,-3.155585822589864e-05 1.116156169925898e+02,-3.161962160637183e-05 -1.116173592026441e+02,3.160134219219838e-05 -5.335599896397790e-01,-1.738979736488527e-07 4.972548841878315e-01,-1.044382292162084e-08 5.335509601092565e-01,1.737962909443062e-07 -1.754324550942230e-07,-2.309242373193381e-12 2.091210461443195e-04,9.710970766076591e-12 -2.073119653777621e-04,-1.819016368459353e-11 -1.233270432491568e-05,-2.663442229357588e-11 -1.121188310583159e+02,3.174706300972060e-05 1.121170810209011e+02,-3.176542449079328e-05 9.234983741358469e-04,8.288759589734855e-09 -1.544741712806141e-07,-2.023236143318114e-12 -3.299066263748359e-07,-4.332541943594699e-12 1.092786297011451e-01,2.547657686223953e-07 -1.092810370842970e-01,-2.547973599041388e-07 1.243478350286271e-01,5.329859883025337e-08 8.706663113707898e-01,-7.401806576287795e-08 1.089907777824516e-02,1.152105551158030e-08 9.864340252425927e-01,-2.929786452293347e-08 6 3.981071705534973e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750852e-01,-3.353075105384012e-08 9.908252525676456e-03,1.318559050383642e-08 9.753572713511698e-01,-4.115282788042420e-08 1.979828436982291e-02,1.854100098487943e-08 1.161855055828767e-03,1.039640992799047e-08 7.906432866328407e-04,8.933754130072352e-09 -1.121440554753603e+02,3.970334661734015e-05 -3.508649101777725e-07,-5.814418494809849e-12 1.121423050442233e+02,-3.972647181155734e-05 1.116156169925867e+02,-3.980674515157693e-05 -1.116173592026410e+02,3.978373273256126e-05 -5.335599896398146e-01,-2.189245780860451e-07 4.972548841878315e-01,-1.314799407230688e-08 5.335509601092922e-01,2.187965671453516e-07 -1.754324550888872e-07,-2.907163905599217e-12 2.091210461443199e-04,1.222538787060408e-11 -2.073119653776441e-04,-2.290005930722368e-11 -1.233270432491481e-05,-3.353075105384012e-11 -1.121188310583127e+02,3.996718437276740e-05 1.121170810208980e+02,-3.999030010788798e-05 9.234983741360549e-04,1.043493007976980e-08 -1.544741712759933e-07,-2.547103394878873e-12 -3.299066263648788e-07,-5.454347150444930e-12 1.092786297011862e-01,3.207311001739981e-07 -1.092810370843380e-01,-3.207708712413762e-07 1.243478350286308e-01,6.709896048042865e-08 8.706663113707862e-01,-9.318322392073870e-08 1.089907777824410e-02,1.450414955422007e-08 9.864340252425937e-01,-3.688382615922413e-08 7 5.011872336272723e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750866e-01,-4.221271457822406e-08 9.908252525674927e-03,1.659967495479222e-08 9.753572713511707e-01,-5.180834078585813e-08 1.979828436982183e-02,2.334173729996606e-08 1.161855055829096e-03,1.308830464977636e-08 7.906432866331235e-04,1.124693009706917e-08 -1.121440554753554e+02,4.998355198984055e-05 -3.508649101707051e-07,-7.319919197925173e-12 1.121423050442184e+02,-5.001266488449325e-05 1.116156169925818e+02,-5.011372303213350e-05 -1.116173592026361e+02,5.008475211304782e-05 -5.335599896398710e-01,-2.756097146188229e-07 4.972548841878314e-01,-1.655234385174619e-08 5.335509601093486e-01,2.754485583925961e-07 -1.754324550853539e-07,-3.659902517011166e-12 2.091210461443204e-04,1.539085145934365e-11 -2.073119653777759e-04,-2.882946659356737e-11 -1.233270432491335e-05,-4.221271457822406e-11 -1.121188310583078e+02,5.031570404473864e-05 1.121170810208930e+02,-5.034480503109424e-05 9.234983741363853e-04,1.313679864771752e-08 -1.544741712730051e-07,-3.206613190281866e-12 -3.299066263583566e-07,-6.866616232445415e-12 1.092786297012511e-01,4.037765323617302e-07 -1.092810370844029e-01,-4.038266011691066e-07 1.243478350286365e-01,8.447258645378381e-08 8.706663113707802e-01,-1.173107285467236e-07 1.089907777824242e-02,1.825964245027145e-08 9.864340252425953e-01,-4.643398603604646e-08 8 6.309573444801933e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750889e-01,-5.314265908334171e-08 9.908252525672504e-03,2.089775262811251e-08 9.753572713511723e-01,-6.522283675821030e-08 1.979828436982013e-02,2.938550624235238e-08 1.161855055829617e-03,1.647719932090718e-08 7.906432866335711e-04,1.415904610387299e-08 -1.121440554753475e+02,6.292556377174326e-05 -3.508649101565364e-07,-9.215232290547149e-12 1.121423050442106e+02,-6.296221473463243e-05 1.116156169925739e+02,-6.308943940476557e-05 -1.116173592026282e+02,6.305296717852557e-05 -5.335599896399604e-01,-3.469720734709426e-07 4.972548841878313e-01,-2.083816629971821e-08 5.335509601094381e-01,3.467691898024769e-07 -1.754324550782703e-07,-4.607544283354380e-12 2.091210461443212e-04,1.937593401131702e-11 -2.073119653775764e-04,-3.629414810298924e-11 -1.233270432491113e-05,-5.314265908334171e-11 -1.121188310582999e+02,6.334371843423408e-05 1.121170810208851e+02,-6.338035440546543e-05 9.234983741369080e-04,1.653824964723481e-08 -1.544741712669626e-07,-4.036886831040633e-12 -3.299066263452292e-07,-8.644557668063867e-12 1.092786297013541e-01,5.083245372762784e-07 -1.092810370845058e-01,-5.083875701702228e-07 1.243478350286457e-01,1.063446856866474e-07 8.706663113707708e-01,-1.476854572435570e-07 1.089907777823975e-02,2.298752789092376e-08 9.864340252425978e-01,-5.845692499167588e-08 9 7.943282347242816e+00,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750924e-01,-6.690264397033586e-08 9.908252525668662e-03,2.630871183292193e-08 9.753572713511746e-01,-8.211068662421643e-08 1.979828436981743e-02,3.699416054693617e-08 1.161855055830443e-03,2.074356494028759e-08 7.906432866342805e-04,1.782518294693086e-08 -1.121440554753352e+02,7.921859128371832e-05 -3.508649101352944e-07,-1.160129010616085e-11 1.121423050441983e+02,-7.926473211226619e-05 1.116156169925615e+02,-7.942489848250389e-05 -1.116173592026158e+02,7.937898267006567e-05 -5.335599896401021e-01,-4.368119604754192e-07 4.972548841878310e-01,-2.623369708990815e-08 5.335509601095799e-01,4.365565450695496e-07 -1.754324550676504e-07,-5.800554584284214e-12 2.091210461443225e-04,2.439285570409377e-11 -2.073119653775105e-04,-4.569162534619719e-11 -1.233270432490758e-05,-6.690264397033586e-11 -1.121188310582874e+02,7.974501681438816e-05 1.121170810208726e+02,-7.979113876955704e-05 9.234983741377367e-04,2.082042274749977e-08 -1.544741712579202e-07,-5.082139416137915e-12 -3.299066263255650e-07,-1.088285332205180e-11 1.092786297015174e-01,6.399426774155515e-07 -1.092810370846689e-01,-6.400220311275171e-07 1.243478350286601e-01,1.338800272201823e-07 8.706663113707560e-01,-1.859249750763534e-07 1.089907777823553e-02,2.893958301621413e-08 9.864340252426017e-01,-7.359290836736945e-08 10 1.000000000000000e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956750981e-01,-8.422543861047911e-08 9.908252525662575e-03,3.312070587804083e-08 9.753572713511784e-01,-1.033712299710988e-07 1.979828436981315e-02,4.657288880053643e-08 1.161855055831752e-03,2.611460103453050e-08 7.906432866354051e-04,2.244057578177120e-08 -1.121440554753157e+02,9.973029765360146e-05 -3.508649101030020e-07,-1.460515892435659e-11 1.121423050441787e+02,-9.978838551518154e-05 1.116156169925418e+02,-9.999002302878852e-05 -1.116173592025961e+02,9.993221844570695e-05 -5.335599896403268e-01,-5.499136772180088e-07 4.972548841878308e-01,-3.302626791179606e-08 5.335509601098048e-01,5.495921282729951e-07 -1.754324550515059e-07,-7.302465568711785e-12 2.091210461443245e-04,3.070878591211177e-11 -2.073119653778505e-04,-5.752234825456655e-11 -1.233270432490186e-05,-8.422543861047911e-11 -1.121188310582677e+02,1.003930281315788e-04 1.121170810208528e+02,-1.004510922329825e-04 9.234983741390502e-04,2.621135928112468e-08 -1.544741712441940e-07,-6.398034457310032e-12 -3.299066262956912e-07,-1.370070060007004e-11 1.092786297017761e-01,8.056400986899016e-07 -1.092810370849274e-01,-8.057399990944160e-07 1.243478350286831e-01,1.685449683991792e-07 8.706663113707325e-01,-2.340656758108154e-07 1.089907777822883e-02,3.643277646584491e-08 9.864340252426079e-01,-9.264798247152702e-08 11 1.258925411794167e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956751071e-01,-1.060335449862528e-07 9.908252525652926e-03,4.169649828643702e-08 9.753572713511845e-01,-1.301366682590456e-07 1.979828436980637e-02,5.863179321166981e-08 1.161855055833826e-03,3.287633486123648e-08 7.906432866371876e-04,2.825101110696434e-08 -1.121440554752847e+02,1.255530060419001e-04 -3.508649100481121e-07,-1.838680571311683e-11 1.121423050441477e+02,-1.256261343269601e-04 1.116156169925106e+02,-1.258799809168108e-04 -1.116173592025649e+02,1.258072092582512e-04 -5.335599896406828e-01,-6.923003025426745e-07 4.972548841878303e-01,-4.157760793088233e-08 5.335509601101611e-01,6.918954964046614e-07 -1.754324550240638e-07,-9.193259473179210e-12 2.091210461443277e-04,3.866007095010389e-11 -2.073119653778089e-04,-7.241634596405687e-11 -1.233270432489286e-05,-1.060335449862528e-10 -1.121188310582363e+02,1.263873342817961e-04 1.121170810208215e+02,-1.264604326545662e-04 9.234983741411323e-04,3.299814627667455e-08 -1.544741712208060e-07,-8.054648163827262e-12 -3.299066262448562e-07,-1.724816014477268e-11 1.092786297021861e-01,1.014240793000812e-06 -1.092810370853370e-01,-1.014366560158704e-06 1.243478350287194e-01,2.121855437477655e-07 8.706663113706952e-01,-2.946712273070047e-07 1.089907777821822e-02,4.586614811508072e-08 9.864340252426178e-01,-1.166368994848781e-07 12 1.584893192461114e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956751214e-01,-1.334883242858356e-07 9.908252525637635e-03,5.249278127564942e-08 9.753572713511941e-01,-1.638323586775610e-07 1.979828436979563e-02,7.381305441325286e-08 1.161855055837114e-03,4.138885340346462e-08 7.906432866400121e-04,3.556591579143629e-08 -1.121440554752357e+02,1.580618698332650e-04 -3.508649099640338e-07,-2.314761695403799e-11 1.121423050440986e+02,-1.581539328896479e-04 1.116156169924612e+02,-1.584735068123078e-04 -1.116173592025155e+02,1.583818927220888e-04 -5.335599896412470e-01,-8.715544434632608e-07 4.972548841878295e-01,-5.234310718580261e-08 5.335509601107258e-01,8.710448227292654e-07 -1.754324549820290e-07,-1.157362796803933e-11 2.091210461443328e-04,4.867014574085049e-11 -2.073119653777499e-04,-9.116677816304148e-11 -1.233270432487863e-05,-1.334883242858356e-10 -1.121188310581867e+02,1.591122268562470e-04 1.121170810207718e+02,-1.592042522552881e-04 9.234983741444314e-04,4.154220488980622e-08 -1.544741711850225e-07,-1.014020125654730e-11 -3.299066261670302e-07,-2.171414711303011e-11 1.092786297028360e-01,1.276853507986460e-06 -1.092810370859863e-01,-1.277011839457499e-06 1.243478350287771e-01,2.671257730394126e-07 8.706663113706361e-01,-3.709690961813515e-07 1.089907777820140e-02,5.774205940321436e-08 9.864340252426335e-01,-1.468371567144192e-07 13 1.995262314968880e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956751440e-01,-1.680518436213027e-07 9.908252525613399e-03,6.608449628371179e-08 9.753572713512093e-01,-2.062527196134001e-07 1.979828436977859e-02,9.292512992303152e-08 1.161855055842325e-03,5.210547931464426e-08 7.906432866444892e-04,4.477483518356987e-08 -1.121440554751579e+02,1.989881045687398e-04 -3.508649098299430e-07,-2.914112320611632e-11 1.121423050440207e+02,-1.991040050899076e-04 1.116156169923828e+02,-1.995063248220903e-04 -1.116173592024373e+02,1.993909895158352e-04 -5.335599896421413e-01,-1.097222036637020e-06 4.972548841878283e-01,-6.589606776847281e-08 5.335509601116209e-01,1.096580462144614e-06 -1.754324549149906e-07,-1.457033435571669e-11 2.091210461443409e-04,6.127208326888094e-11 -2.073119653776979e-04,-1.147721737406931e-10 -1.233270432485602e-05,-1.680518436213027e-10 -1.121188310581081e+02,2.003104257164274e-04 1.121170810206931e+02,-2.004262788298106e-04 9.234983741496608e-04,5.229853739773610e-08 -1.544741711279415e-07,-1.276575704268642e-11 -3.299066260428985e-07,-2.733649159624257e-11 1.092786297038659e-01,1.607463328341622e-06 -1.092810370870154e-01,-1.607662655854002e-06 1.243478350288684e-01,3.362914238244533e-07 8.706663113705424e-01,-4.670224221729935e-07 1.089907777817474e-02,7.269294591208297e-08 9.864340252426584e-01,-1.848570279834330e-07 14 2.511886431509581e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956751798e-01,-2.115647364338048e-07 9.908252525574989e-03,8.319545169726918e-08 9.753572713512333e-01,-2.596567899730503e-07 1.979828436975160e-02,1.169858074544625e-07 1.161855055850583e-03,6.559691200291926e-08 7.906432866515851e-04,5.636817782149018e-08 -1.121440554750346e+02,2.505111814862230e-04 -3.508649096135014e-07,-3.668650053245495e-11 1.121423050438974e+02,-2.506570915975613e-04 1.116156169922586e+02,-2.511635821320710e-04 -1.116173592023131e+02,2.510183835841494e-04 -5.335599896435586e-01,-1.381320704300896e-06 4.972548841878264e-01,-8.295823425104099e-08 5.335509601130395e-01,1.380513009868846e-06 -1.754324548067809e-07,-1.834296417877472e-11 2.091210461443538e-04,7.713698266075962e-11 -2.073119653778419e-04,-1.444896060895069e-10 -1.233270432482016e-05,-2.115647364338048e-10 -1.121188310579834e+02,2.521758851815979e-04 1.121170810205683e+02,-2.523217356100715e-04 9.234983741579490e-04,6.583995772967584e-08 -1.544741710357475e-07,-1.607113594189856e-11 -3.299066258424754e-07,-3.441460393990281e-11 1.092786297054983e-01,2.023676432574389e-06 -1.092810370886463e-01,-2.023927371044994e-06 1.243478350290132e-01,4.233658192209978e-07 8.706663113703940e-01,-5.879463951511965e-07 1.089907777813249e-02,9.151499686699609e-08 9.864340252426978e-01,-2.327212100771852e-07 15 3.162277660168380e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956752366e-01,-2.663442229362264e-07 9.908252525514112e-03,1.047368682875603e-07 9.753572713512715e-01,-3.268885312421410e-07 1.979828436970882e-02,1.472764058238492e-07 1.161855055863672e-03,8.258161945569741e-08 7.906432866628306e-04,7.096333147600339e-08 -1.121440554748393e+02,3.153748923113503e-04 -3.508649092740449e-07,-4.618556779037562e-11 1.121423050437019e+02,-3.155585822583519e-04 1.116156169920619e+02,-3.161962160630767e-04 -1.116173592021165e+02,3.160134219213426e-04 -5.335599896458049e-01,-1.738979736477825e-06 4.972548841878234e-01,-1.044382292162090e-07 5.335509601152878e-01,1.737962909432351e-06 -1.754324546370702e-07,-2.309242373242390e-11 2.091210461443741e-04,9.710970766075063e-11 -2.073119653777915e-04,-1.819016368456516e-10 -1.233270432476341e-05,-2.663442229362264e-10 -1.121188310577858e+02,3.174706300965617e-04 1.121170810203707e+02,-3.176542449072881e-04 9.234983741710842e-04,8.288759589733924e-08 -1.544741708912061e-07,-2.023236143386751e-11 -3.299066255281926e-07,-4.332541943712180e-11 1.092786297080854e-01,2.547657686212652e-06 -1.092810370912311e-01,-2.547973599030097e-06 1.243478350292427e-01,5.329859883022720e-07 8.706663113701587e-01,-7.401806576285191e-07 1.089907777806552e-02,1.152105551163163e-07 9.864340252427603e-01,-2.929786452298490e-07 16 3.981071705534973e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956753265e-01,-3.353075105393347e-07 9.908252525417627e-03,1.318559050392954e-07 9.753572713513319e-01,-4.115282788051371e-07 1.979828436964101e-02,1.854100098496869e-07 1.161855055884416e-03,1.039640992798862e-07 7.906432866806539e-04,8.933754130070761e-08 -1.121440554745296e+02,3.970334661721362e-04 -3.508649087340824e-07,-5.814418495018791e-11 1.121423050433921e+02,-3.972647181143072e-04 1.116156169917500e+02,-3.980674515144890e-04 -1.116173592018048e+02,3.978373273243332e-04 -5.335599896493649e-01,-2.189245780839097e-06 4.972548841878185e-01,-1.314799407230704e-07 5.335509601188511e-01,2.187965671432143e-06 -1.754324543671169e-07,-2.907163905703880e-11 2.091210461444064e-04,1.222538787060101e-10 -2.073119653780205e-04,-2.290005930715932e-10 -1.233270432467344e-05,-3.353075105393347e-10 -1.121188310574726e+02,3.996718437263884e-04 1.121170810200573e+02,-3.999030010775934e-04 9.234983741919024e-04,1.043493007976794e-07 -1.544741706612605e-07,-2.547103395021677e-11 -3.299066250282448e-07,-5.454347150692070e-11 1.092786297121857e-01,3.207311001717432e-06 -1.092810370953278e-01,-3.207708712391231e-06 1.243478350296063e-01,6.709896048037640e-07 8.706663113697857e-01,-9.318322392068678e-07 1.089907777795939e-02,1.450414955432249e-07 9.864340252428592e-01,-3.688382615932681e-07 17 5.011872336272724e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956754691e-01,-4.221271457841033e-07 9.908252525264713e-03,1.659967495497802e-07 9.753572713514276e-01,-5.180834078603676e-07 1.979828436953355e-02,2.334173730014415e-07 1.161855055917293e-03,1.308830464977266e-07 7.906432867089020e-04,1.124693009706599e-07 -1.121440554740389e+02,4.998355198958812e-04 -3.508649078781073e-07,-7.319919198358177e-11 1.121423050429010e+02,-5.001266488424062e-04 1.116156169912556e+02,-5.011372303187805e-04 -1.116173592013108e+02,5.008475211279257e-04 -5.335599896550073e-01,-2.756097146145622e-06 4.972548841878109e-01,-1.655234385174650e-07 5.335509601244987e-01,2.754485583883317e-06 -1.754324539391734e-07,-3.659902517228052e-11 2.091210461444575e-04,1.539085145933751e-10 -2.073119653780951e-04,-2.882946659349573e-10 -1.233270432453087e-05,-4.221271457841033e-10 -1.121188310569763e+02,5.031570404448217e-04 1.121170810195606e+02,-5.034480503083757e-04 9.234983742248971e-04,1.313679864771381e-07 -1.544741702967367e-07,-3.206613190574096e-11 -3.299066242357001e-07,-6.866616232953877e-11 1.092786297186842e-01,4.037765323572309e-06 -1.092810371018206e-01,-4.038266011646112e-06 1.243478350301827e-01,8.447258645367957e-07 8.706663113691948e-01,-1.173107285466201e-06 1.089907777779118e-02,1.825964245047582e-07 9.864340252430160e-01,-4.643398603625136e-07 18 6.309573444801934e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956756951e-01,-5.314265908371342e-07 9.908252525022355e-03,2.089775262848321e-07 9.753572713515793e-01,-6.522283675856676e-07 1.979828436936323e-02,2.938550624270770e-07 1.161855055969400e-03,1.647719932089981e-07 7.906432867536721e-04,1.415904610386665e-07 -1.121440554732610e+02,6.292556377123963e-04 -3.508649065260283e-07,-9.215232291408177e-11 1.121423050421227e+02,-6.296221473412842e-04 1.116156169904721e+02,-6.308943940425593e-04 -1.116173592005278e+02,6.305296717801631e-04 -5.335599896639498e-01,-3.469720734624416e-06 4.972548841877988e-01,-2.083816629971888e-07 5.335509601334493e-01,3.467691897939684e-06 -1.754324532632039e-07,-4.607544283785659e-11 2.091210461445385e-04,1.937593401130476e-10 -2.073119653783050e-04,-3.629414810278062e-10 -1.233270432430495e-05,-5.314265908371342e-10 -1.121188310561896e+02,6.334371843372239e-04 1.121170810187734e+02,-6.338035440495335e-04 9.234983742771901e-04,1.653824964722741e-07 -1.544741697210087e-07,-4.036886831622244e-11 -3.299066229838800e-07,-8.644557669075453e-11 1.092786297289837e-01,5.083245372673013e-06 -1.092810371121109e-01,-5.083875701612535e-06 1.243478350310962e-01,1.063446856864394e-06 8.706663113682580e-01,-1.476854572433505e-06 1.089907777752459e-02,2.298752789133153e-07 9.864340252432646e-01,-5.845692499208476e-07 19 7.943282347242817e+01,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956760532e-01,-6.690264397107737e-07 9.908252524638248e-03,2.630871183366158e-07 9.753572713518198e-01,-8.211068662492744e-07 1.979828436909329e-02,3.699416054764514e-07 1.161855056051983e-03,2.074356494027287e-07 7.906432868246279e-04,1.782518294691821e-07 -1.121440554720283e+02,7.921859128271330e-04 -3.508649043799322e-07,-1.160129010777646e-10 1.121423050408892e+02,-7.926473211126054e-04 1.116156169892304e+02,-7.942489848148702e-04 -1.116173591992868e+02,7.937898266904944e-04 -5.335599896781227e-01,-4.368119604584572e-06 4.972548841877796e-01,-2.623369708990937e-07 5.335509601476351e-01,4.365565450525732e-06 -1.754324521902667e-07,-5.800554585093551e-11 2.091210461446669e-04,2.439285570406936e-10 -2.073119653786069e-04,-4.569162534605955e-10 -1.233270432394678e-05,-6.690264397107737e-10 -1.121188310549428e+02,7.974501681336707e-04 1.121170810175258e+02,-7.979113876853531e-04 9.234983743600689e-04,2.082042274748499e-07 -1.544741688071343e-07,-5.082139417253418e-11 -3.299066209968742e-07,-1.088285332397403e-10 1.092786297453072e-01,6.399426773976400e-06 -1.092810371284201e-01,-6.400220311096206e-06 1.243478350325440e-01,1.338800272197673e-06 8.706663113667735e-01,-1.859249750759411e-06 1.089907777710207e-02,2.893958301702774e-07 9.864340252436585e-01,-7.359290836818510e-07 20 1.000000000000000e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956766209e-01,-8.422543861195864e-07 9.908252524029479e-03,3.312070587951662e-07 9.753572713522011e-01,-1.033712299725174e-06 1.979828436866546e-02,4.657288880195100e-07 1.161855056182869e-03,2.611460103450112e-07 7.906432869370853e-04,2.244057578174596e-07 -1.121440554700746e+02,9.973029765159618e-04 -3.508649009795585e-07,-1.460515892751266e-10 1.121423050389342e+02,-9.978838551317505e-04 1.116156169872624e+02,-9.999002302675965e-04 -1.116173591973201e+02,9.993221844367930e-04 -5.335599897005853e-01,-5.499136771841650e-06 4.972548841877492e-01,-3.302626791179852e-07 5.335509601701182e-01,5.495921282391229e-06 -1.754324504902556e-07,-7.302465570292865e-11 2.091210461448704e-04,3.070878591206307e-10 -2.073119653794222e-04,-5.752234825426976e-10 -1.233270432337910e-05,-8.422543861195864e-10 -1.121188310529668e+02,1.003930281295415e-03 1.121170810155486e+02,-1.004510922309439e-03 9.234983744914229e-04,2.621135928109520e-07 -1.544741673591636e-07,-6.398034459506194e-11 -3.299066178485844e-07,-1.370070060384208e-10 1.092786297711784e-01,8.056400986541637e-06 -1.092810371542683e-01,-8.057399990587076e-06 1.243478350348386e-01,1.685449683983511e-06 8.706663113644206e-01,-2.340656758099928e-06 1.089907777643243e-02,3.643277646746828e-07 9.864340252442830e-01,-9.264798247315451e-07 21 1.258925411794168e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956775205e-01,-1.060335449892049e-06 9.908252523064644e-03,4.169649828938160e-07 9.753572713528052e-01,-1.301366682618763e-06 1.979828436798741e-02,5.863179321449223e-07 1.161855056390310e-03,3.287633486117786e-07 7.906432871153182e-04,2.825101110691397e-07 -1.121440554669780e+02,1.255530060378991e-03 -3.508648955835081e-07,-1.838680571942810e-10 1.121423050358357e+02,-1.256261343229567e-03 1.116156169841433e+02,-1.258799809127626e-03 -1.116173591942029e+02,1.258072092542055e-03 -5.335599897361861e-01,-6.923003024751470e-06 4.972548841877010e-01,-4.157760793088727e-07 5.335509602057514e-01,6.918954963370773e-06 -1.754324477925090e-07,-9.193259476340928e-11 2.091210461451929e-04,3.866007095000666e-10 -2.073119653803468e-04,-7.241634596293489e-10 -1.233270432247951e-05,-1.060335449892049e-09 -1.121188310498350e+02,1.263873342777311e-03 1.121170810124149e+02,-1.264604326504987e-03 9.234983746996051e-04,3.299814627661571e-07 -1.544741650612815e-07,-8.054648168215954e-11 -3.299066128524676e-07,-1.724816015231272e-10 1.092786298121813e-01,1.014240792929506e-05 -1.092810371952350e-01,-1.014366560087456e-05 1.243478350384753e-01,2.121855437461131e-06 8.706663113606915e-01,-2.946712273053633e-06 1.089907777537111e-02,4.586614811831977e-07 9.864340252452725e-01,-1.166368994881254e-06 22 1.584893192461114e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956789463e-01,-1.334883242917259e-06 9.908252521535484e-03,5.249278128152463e-07 9.753572713537627e-01,-1.638323586832092e-06 1.979828436691276e-02,7.381305441888434e-07 1.161855056719081e-03,4.138885340334767e-07 7.906432873977985e-04,3.556591579133579e-07 -1.121440554620705e+02,1.580618698252819e-03 -3.508648870389488e-07,-2.314761696664707e-10 1.121423050309250e+02,-1.581539328816599e-03 1.116156169791998e+02,-1.584735068042307e-03 -1.116173591892626e+02,1.583818927140166e-03 -5.335599897926096e-01,-8.715544433285259e-06 4.972548841876247e-01,-5.234310718581247e-07 5.335509602622263e-01,8.710448225944172e-06 -1.754324435206707e-07,-1.157362797435601e-10 2.091210461457041e-04,4.867014574065650e-10 -2.073119653821943e-04,-9.116677816111514e-10 -1.233270432105367e-05,-1.334883242917259e-09 -1.121188310448715e+02,1.591122268481363e-03 1.121170810074482e+02,-1.592042522471723e-03 9.234983750295517e-04,4.154220488968883e-07 -1.544741614227316e-07,-1.014020126531117e-10 -3.299066049413059e-07,-2.171414712808996e-10 1.092786298771666e-01,1.276853507844184e-05 -1.092810372601629e-01,-1.277011839315341e-05 1.243478350442390e-01,2.671257730361158e-06 8.706663113547814e-01,-3.709690961780764e-06 1.089907777368903e-02,5.774205940967709e-07 9.864340252468410e-01,-1.468371567208985e-06 23 1.995262314968880e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956812061e-01,-1.680518436330553e-06 9.908252519111930e-03,6.608449629543439e-07 9.753572713552803e-01,-2.062527196246695e-06 1.979828436520956e-02,9.292512993426780e-07 1.161855057240148e-03,5.210547931441089e-07 7.906432878454993e-04,4.477483518336932e-07 -1.121440554542925e+02,1.989881045528115e-03 -3.508648734993926e-07,-2.914112323132481e-10 1.121423050231420e+02,-1.991040050739694e-03 1.116156169713650e+02,-1.995063248059743e-03 -1.116173591814329e+02,1.993909894997292e-03 -5.335599898820348e-01,-1.097222036368189e-05 4.972548841875036e-01,-6.589606776849239e-07 5.335509603517329e-01,1.096580461875557e-05 -1.754324367515922e-07,-1.457033436834516e-10 2.091210461465142e-04,6.127208326849386e-10 -2.073119653845015e-04,-1.147721737368490e-09 -1.233270431879387e-05,-1.680518436330553e-09 -1.121188310370050e+02,2.003104257002444e-03 1.121170809995766e+02,-2.004262788136176e-03 9.234983755524816e-04,5.229853739750185e-07 -1.544741556571888e-07,-1.276575706019407e-10 -3.299065924054586e-07,-2.733649162633740e-10 1.092786299801614e-01,1.607463328057746e-05 -1.092810373630666e-01,-1.607662655570360e-05 1.243478350533740e-01,3.362914238178752e-06 8.706663113454145e-01,-4.670224221664587e-06 1.089907777102312e-02,7.269294592497783e-07 9.864340252493267e-01,-1.848570279963608e-06 24 2.511886431509581e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956847876e-01,-2.115647364572545e-06 9.908252515270854e-03,8.319545172065883e-07 9.753572713576855e-01,-2.596567899955360e-06 1.979828436251017e-02,1.169858074768818e-06 1.161855058065984e-03,6.559691200245362e-07 7.906432885550577e-04,5.636817782109004e-07 -1.121440554419652e+02,2.505111814544420e-03 -3.508648520335163e-07,-3.668650058294075e-10 1.121423050108068e+02,-2.506570915657604e-03 1.116156169589477e+02,-2.511635820999153e-03 -1.116173591690234e+02,2.510183835520138e-03 -5.335599900237642e-01,-1.381320703764507e-05 4.972548841873118e-01,-8.295823425108027e-07 5.335509604935914e-01,1.380513009332006e-05 -1.754324260197630e-07,-1.834296420406594e-10 2.091210461477982e-04,7.713698265998722e-10 -2.073119653886873e-04,-1.444896060817168e-09 -1.233270431521242e-05,-2.115647364572545e-09 -1.121188310245373e+02,2.521758851493086e-03 1.121170809871009e+02,-2.523217355777620e-03 9.234983763812701e-04,6.583995772920846e-07 -1.544741465162819e-07,-1.607113597691380e-10 -3.299065725307794e-07,-3.441460400012688e-10 1.092786301433971e-01,2.023676432007979e-05 -1.092810375261580e-01,-2.023927370479054e-05 1.243478350678519e-01,4.233658192078728e-06 8.706663113305689e-01,-5.879463951381581e-06 1.089907776679794e-02,9.151499689272471e-07 9.864340252532664e-01,-2.327212101029799e-06 25 3.162277660168380e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956904639e-01,-2.663442229830150e-06 9.908252509183157e-03,1.047368683342288e-06 9.753572713614975e-01,-3.268885312870062e-06 1.979828435823193e-02,1.472764058685815e-06 1.161855059374846e-03,8.258161945476832e-07 7.906432896796316e-04,7.096333147520499e-07 -1.121440554224277e+02,3.153748922479386e-03 -3.508648180177145e-07,-4.618556789119132e-10 1.121423049912569e+02,-3.155585821949005e-03 1.116156169392675e+02,-3.161962159989173e-03 -1.116173591493558e+02,3.160134218572234e-03 -5.335599902483901e-01,-1.738979735407588e-05 4.972548841870078e-01,-1.044382292162874e-06 5.335509607184219e-01,1.737962908361211e-05 -1.754324090136194e-07,-2.309242378292817e-10 2.091210461498332e-04,9.710970765920941e-10 -2.073119653950885e-04,-1.819016368305466e-09 -1.233270430953611e-05,-2.663442229830150e-09 -1.121188310047772e+02,3.174706300321359e-03 1.121170809673283e+02,-3.176542448428219e-03 9.234983776948108e-04,8.288759589640668e-07 -1.544741320312628e-07,-2.023236150376824e-10 -3.299065410365373e-07,-4.332541955736242e-10 1.092786304021082e-01,2.547657685082515e-05 -1.092810377846405e-01,-2.547973597900897e-05 1.243478350907978e-01,5.329859882760841e-06 8.706663113070401e-01,-7.401806576025042e-06 1.089907776010147e-02,1.152105551676516e-06 9.864340252595103e-01,-2.929786452813166e-06 26 3.981071705534974e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672956994602e-01,-3.353075106326891e-06 9.908252499534812e-03,1.318559051324113e-06 9.753572713675391e-01,-4.115282788946536e-06 1.979828435145137e-02,1.854100099389397e-06 1.161855061449251e-03,1.039640992780324e-06 7.906432914619613e-04,8.933754129911460e-07 -1.121440553914629e+02,3.970334660456136e-03 -3.508647641010007e-07,-5.814418515140244e-10 1.121423049602723e+02,-3.972647179877051e-03 1.116156169080765e+02,-3.980674513864743e-03 -1.116173591181847e+02,3.978373271963989e-03 -5.335599906043982e-01,-2.189245778703696e-05 4.972548841865260e-01,-1.314799407232263e-06 5.335509610747543e-01,2.187965669294941e-05 -1.754323820580478e-07,-2.907163915783845e-10 2.091210461530585e-04,1.222538787029353e-09 -2.073119654054344e-04,-2.290005930409174e-09 -1.233270430053975e-05,-3.353075106326891e-09 -1.121188309734598e+02,3.996718435978423e-03 1.121170809359908e+02,-3.999030009489665e-03 9.234983797766328e-04,1.043493007958187e-06 -1.544741090717207e-07,-2.547103408971439e-10 -3.299064911165428e-07,-5.454347174688997e-10 1.092786308121377e-01,3.207310999462512e-05 -1.092810381943075e-01,-3.207708710138183e-05 1.243478351271646e-01,6.709896047515127e-06 8.706663112697496e-01,-9.318322391549603e-06 1.089907774948829e-02,1.450414956456524e-06 9.864340252694063e-01,-3.688382616959581e-06 27 5.011872336272724e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672957137185e-01,-4.221271459703699e-06 9.908252484243212e-03,1.659967497355707e-06 9.753572713771144e-01,-5.180834080389767e-06 1.979828434070491e-02,2.334173731795242e-06 1.161855064736963e-03,1.308830464940278e-06 7.906432942867634e-04,1.124693009674814e-06 -1.121440553423870e+02,4.998355196434353e-03 -3.508646786554072e-07,-7.319919238487995e-10 1.121423049111650e+02,-5.001266485898019e-03 1.116156168586421e+02,-5.011372300633578e-03 -1.116173590687819e+02,5.008475208726632e-03 -5.335599911686331e-01,-2.756097141884936e-05 4.972548841857623e-01,-1.655234385177762e-06 5.335509616395031e-01,2.754485579619038e-05 -1.754323393396654e-07,-3.659902537331345e-10 2.091210461581701e-04,1.539085145872400e-09 -2.073119654215534e-04,-2.882946658717065e-09 -1.233270428628155e-05,-4.221271459703699e-09 -1.121188309238249e+02,5.031570401883384e-03 1.121170808863242e+02,-5.034480500517315e-03 9.234983830760981e-04,1.313679864734255e-06 -1.544740726862219e-07,-3.206613218399468e-10 -3.299064120049262e-07,-6.866616280817101e-10 1.092786314619907e-01,4.037765319073154e-05 -1.092810388435861e-01,-4.038266007150689e-05 1.243478351848022e-01,8.447258644325403e-06 8.706663112106481e-01,-1.173107285362631e-05 1.089907773266753e-02,1.825964247091277e-06 9.864340252850903e-01,-4.643398605674069e-06 28 6.309573444801935e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672957363162e-01,-5.314265912087841e-06 9.908252460007662e-03,2.089775266555330e-06 9.753572713922902e-01,-6.522283679420381e-06 1.979828432367292e-02,2.938550627823989e-06 1.161855069947635e-03,1.647719932016181e-06 7.906432987637731e-04,1.415904610323246e-06 -1.121440552646070e+02,6.292556372087003e-03 -3.508645432303545e-07,-9.215232371493389e-10 1.121423048333351e+02,-6.296221468372721e-03 1.116156167802939e+02,-6.308943935329237e-03 -1.116173589904838e+02,6.305296712708472e-03 -5.335599920628851e-01,-3.469720726123231e-05 4.972548841845520e-01,-2.083816629978089e-06 5.335509625345695e-01,3.467691889431329e-05 -1.754322716341354e-07,-4.607544323904852e-10 2.091210461662715e-04,1.937593401008068e-09 -2.073119654473314e-04,-3.629414809026187e-09 -1.233270426368376e-05,-5.314265912087841e-09 -1.121188308451590e+02,6.334371838254723e-03 1.121170808076080e+02,-6.338035435374607e-03 9.234983883053985e-04,1.653824964648665e-06 -1.544740150178098e-07,-4.036886887148198e-10 -3.299062866187242e-07,-8.644557764590027e-10 1.092786324919382e-01,5.083245363696019e-05 -1.092810398726233e-01,-5.083875692642988e-05 1.243478352761516e-01,1.063446856656377e-05 8.706663111169787e-01,-1.476854572226855e-05 1.089907770600843e-02,2.298752793210862e-06 9.864340253099479e-01,-5.845692503296625e-06 29 7.943282347242818e+02,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672957721313e-01,-6.690264404523133e-06 9.908252421596902e-03,2.630871190762612e-06 9.753572714163422e-01,-8.211068669603278e-06 1.979828429667902e-02,3.699416061854117e-06 1.161855078205993e-03,2.074356493880037e-06 7.906433058593553e-04,1.782518294565283e-06 -1.121440551413339e+02,7.921859118221277e-03 -3.508643285930401e-07,-1.160129026756037e-09 1.121423047099833e+02,-7.926473201069695e-03 1.116156166561204e+02,-7.942489837980138e-03 -1.116173588663895e+02,7.937898256742758e-03 -5.335599934801790e-01,-4.368119587622477e-05 4.972548841826337e-01,-2.623369709003314e-06 5.335509639531543e-01,4.365565433549332e-05 -1.754321643265666e-07,-5.800554665138314e-10 2.091210461791114e-04,2.439285570162697e-09 -2.073119654879534e-04,-4.569162532115598e-09 -1.233270422786872e-05,-6.690264404523133e-09 -1.121188307204818e+02,7.974501671125924e-03 1.121170806828512e+02,-7.979113866636338e-03 9.234983965932809e-04,2.082042274600699e-06 -1.544739236181843e-07,-5.082139528039284e-10 -3.299060878920994e-07,-1.088285351454413e-09 1.092786341242951e-01,6.399426756064944e-05 -1.092810415035374e-01,-6.400220293199607e-05 1.243478354209306e-01,1.338800271782625e-05 8.706663109685225e-01,-1.859249750347092e-05 1.089907766375659e-02,2.893958309838874e-06 9.864340253493444e-01,-7.359290844975446e-06 30 1.000000000000000e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672958288943e-01,-8.422543875991531e-06 9.908252360719948e-03,3.312070602709526e-06 9.753572714544620e-01,-1.033712301143914e-05 1.979828425389659e-02,4.657288894340716e-06 1.161855091294609e-03,2.611460103156309e-06 7.906433171050951e-04,2.244057577922119e-06 -1.121440549459592e+02,9.973029745107130e-03 -3.508639884198315e-07,-1.460515924632791e-09 1.121423045144836e+02,-9.978838531252430e-03 1.116156164593186e+02,-9.999002282387013e-03 -1.116173586697134e+02,9.993221824091709e-03 -5.335599957264385e-01,-5.499136737997819e-05 4.972548841795935e-01,-3.302626791204558e-06 5.335509662014595e-01,5.495921248518856e-05 -1.754319942575361e-07,-7.302465730005394e-10 2.091210461994613e-04,3.070878590718980e-09 -2.073119655521798e-04,-5.752234820451319e-09 -1.233270417110575e-05,-8.422543875991531e-09 -1.121188305228818e+02,1.003930279258096e-02 1.121170804851250e+02,-1.004510920270841e-02 9.234984097286893e-04,2.621135927814619e-06 -1.544737787613056e-07,-6.398034680554928e-10 -3.299057729353949e-07,-1.370070098408352e-09 1.092786367114063e-01,8.056400950803582e-05 -1.092810440883619e-01,-8.057399954878665e-05 1.243478356503899e-01,1.685449683155382e-05 8.706663107332353e-01,-2.340656757277245e-05 1.089907759679194e-02,3.643277662980479e-06 9.864340254117837e-01,-9.264798263590685e-06 31 1.258925411794168e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672959188576e-01,-1.060335452844172e-05 9.908252264236481e-03,4.169649858383972e-06 9.753572715148780e-01,-1.301366685449519e-05 1.979828418609100e-02,5.863179349673438e-06 1.161855112038667e-03,3.287633485531571e-06 7.906433349283915e-04,2.825101110187640e-06 -1.121440546363111e+02,1.255530056377992e-02 -3.508634492790597e-07,-1.838680635558716e-09 1.121423042046376e+02,-1.256261339226056e-02 1.116156161474088e+02,-1.258799805079447e-02 -1.116173583580026e+02,1.258072088496415e-02 -5.335599992865196e-01,-6.923002957224149e-05 4.972548841747751e-01,-4.157760793138012e-06 5.335509697647831e-01,6.918954895786500e-05 -1.754317247150029e-07,-9.193259795028812e-10 2.091210462317136e-04,3.866007094028326e-09 -2.073119656543082e-04,-7.241634586325896e-09 -1.233270408114239e-05,-1.060335452844172e-08 -1.121188302097069e+02,1.263873338712324e-02 1.121170801717500e+02,-1.264604322437448e-02 9.234984305469084e-04,3.299814627073165e-06 -1.544735491774939e-07,-8.054648609282724e-10 -3.299052737602428e-07,-1.724816091103019e-09 1.092786408117014e-01,1.014240785798826e-04 -1.092810481850327e-01,-1.014366552962691e-04 1.243478360140584e-01,2.121855435808796e-05 8.706663103603302e-01,-2.946712271412163e-05 1.089907749066013e-02,4.586614844222369e-06 9.864340255107434e-01,-1.166368998128589e-05 32 1.584893192461114e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672960614399e-01,-1.334883248807518e-05 9.908252111320491e-03,5.249278186904580e-06 9.753572716106308e-01,-1.638323592480191e-05 1.979828407862638e-02,7.381305498203145e-06 1.161855144915784e-03,4.138885339165116e-06 7.906433631764129e-04,3.556591578128452e-06 -1.121440541455522e+02,1.580618690269777e-02 -3.508625948021331e-07,-2.314761823608008e-09 1.121423037135647e+02,-1.581539320828546e-02 1.116156156530651e+02,-1.584735059965127e-02 -1.116173578639746e+02,1.583818919068055e-02 -5.335600049288683e-01,-8.715544298550548e-05 4.972548841671385e-01,-5.234310718679574e-06 5.335509754122706e-01,8.710448091095819e-05 -1.754312975206832e-07,-1.157362861028633e-09 2.091210462828302e-04,4.867014572125582e-09 -2.073119658161128e-04,-9.116677796300208e-09 -1.233270393856013e-05,-1.334883248807518e-08 -1.121188297133583e+02,1.591122260370649e-02 1.121170796750842e+02,-1.592042514355916e-02 9.234984635415626e-04,4.154220487794861e-06 -1.544731853132646e-07,-1.014020214541159e-09 -3.299044826243395e-07,-2.171414864205127e-09 1.092786473102310e-01,1.276853493616607e-04 -1.092810546778185e-01,-1.277011825099567e-04 1.243478365904340e-01,2.671257727064315e-05 8.706663097693155e-01,-3.709690958505599e-05 1.089907732245254e-02,5.774206005595038e-06 9.864340256675839e-01,-1.468371573688269e-05 33 1.995262314968880e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672962874175e-01,-1.680518448083166e-05 9.908251868964983e-03,6.608449746769322e-06 9.753572717623887e-01,-2.062527207516140e-05 1.979828390830644e-02,9.292513105789397e-06 1.161855197022502e-03,5.210547929107329e-06 7.906434079465098e-04,4.477483516331441e-06 -1.121440533677516e+02,1.989881029599852e-02 -3.508612405453723e-07,-2.914112576386662e-09 1.121423029352667e+02,-1.991040034801435e-02 1.116156148695831e+02,-1.995063231943652e-02 -1.116173570809928e+02,1.993909878891312e-02 -5.335600138713881e-01,-1.097222009485079e-04 4.972548841550352e-01,-6.589606777045458e-06 5.335509843629349e-01,1.096580434969774e-04 -1.754306204622657e-07,-1.457033563703796e-09 2.091210463638445e-04,6.127208322978433e-09 -2.073119660723731e-04,-1.147721733418188e-08 -1.233270371258247e-05,-1.680518448083166e-08 -1.121188289266986e+02,2.003104240819441e-02 1.121170788879220e+02,-2.004262771943013e-02 9.234985158345655e-04,5.229853737407703e-06 -1.544726086264032e-07,-1.276575881608944e-09 -3.299032287564622e-07,-2.733649464679647e-09 1.092786576097064e-01,1.607463299669998e-04 -1.092810649681903e-01,-1.607662627206160e-04 1.243478375039279e-01,3.362914231600684e-05 8.706663088326204e-01,-4.670224215129779e-05 1.089907705586148e-02,7.269294721446255e-06 9.864340259161593e-01,-1.848570292891483e-05 34 2.511886431509581e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672966455679e-01,-2.115647388022090e-05 9.908251484857391e-03,8.319545405962268e-06 9.753572720029088e-01,-2.596567922440856e-05 1.979828363836754e-02,1.169858097188108e-05 1.161855279606085e-03,6.559691195588896e-06 7.906434789023312e-04,5.636817778107520e-06 -1.121440521350207e+02,2.505111782763354e-02 -3.508590941937319e-07,-3.668650563612149e-09 1.121423017017474e+02,-2.506570883856593e-02 1.116156136278478e+02,-2.511635788843321e-02 -1.116173558400502e+02,2.510183803384480e-02 -5.335600280443266e-01,-1.381320650125649e-04 4.972548841358528e-01,-8.295823425499511e-06 5.335509985487817e-01,1.380512955647910e-04 -1.754295473973292e-07,-1.834296673548863e-09 2.091210464922434e-04,7.713698258275157e-09 -2.073119664787407e-04,-1.444896052933965e-08 -1.233270335443206e-05,-2.115647388022090e-08 -1.121188276799269e+02,2.521758819203747e-02 1.121170776403539e+02,-2.523217323468010e-02 9.234985987133894e-04,6.583995768246977e-06 -1.544716946396262e-07,-1.607113948042670e-09 -3.299012415104435e-07,-3.441461002682386e-09 1.092786739332747e-01,2.023676375366974e-04 -1.092810812773304e-01,-2.023927313885034e-04 1.243478389517181e-01,4.233658178953756e-05 8.706663073480586e-01,-5.879463938342919e-05 1.089907663334313e-02,9.151499946558495e-06 9.864340263101248e-01,-2.327212126824299e-05 35 3.162277660168381e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672972131981e-01,-2.663442276618140e-05 9.908250876087898e-03,1.047368730010752e-05 9.753572723841075e-01,-3.268885357734520e-05 1.979828321054322e-02,1.472764103418178e-05 1.161855410492243e-03,8.258161936185962e-06 7.906435913597295e-04,7.096333139536490e-06 -1.121440501812741e+02,3.153748859067829e-02 -3.508556924546352e-07,-4.618557797382081e-09 1.121422997467512e+02,-3.155585758497647e-02 1.116156116598300e+02,-3.161962095829855e-02 -1.116173538732890e+02,3.160134154453171e-02 -5.335600505069202e-01,-1.738979628383999e-04 4.972548841054507e-01,-1.044382292240985e-05 5.335510210318335e-01,1.737962801247359e-04 -1.754278467035197e-07,-2.309242883388466e-09 2.091210466957420e-04,9.710970750510410e-09 -2.073119671229320e-04,-1.819016352578860e-08 -1.233270278680186e-05,-2.663442276618140e-08 -1.121188257039273e+02,3.174706235895661e-02 1.121170756630919e+02,-3.176542383962074e-02 9.234987300674732e-04,8.288759580315073e-06 -1.544702460677786e-07,-2.023236849428782e-09 -3.298980919368333e-07,-4.332543158240029e-09 1.092786998043866e-01,2.547657572068853e-04 -1.092811071255752e-01,-2.547973484980984e-04 1.243478412463109e-01,5.329859856573080e-05 8.706663049951868e-01,-7.401806550009489e-05 1.089907596369669e-02,1.152105603011827e-05 9.864340269345179e-01,-2.929786504279954e-05 36 3.981071705534974e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672981128313e-01,-3.353075199681209e-05 9.908249911253304e-03,1.318559144439940e-05 9.753572729882666e-01,-4.115282878462903e-05 1.979828253248740e-02,1.854100188642195e-05 1.161855617932824e-03,1.039640990926551e-05 7.906437695926945e-04,8.933754113981266e-06 -1.121440470847942e+02,3.970334533933439e-02 -3.508503010624602e-07,-5.814420526880204e-09 1.121422966482910e+02,-3.972647053274946e-02 1.116156085407319e+02,-3.980674385850071e-02 -1.116173507561823e+02,3.978373144029633e-02 -5.335600861077311e-01,-2.189245565163562e-04 4.972548840572667e-01,-1.314799407388117e-05 5.335510566650684e-01,2.187965455574707e-04 -1.754251512859596e-07,-2.907164923577605e-09 2.091210470182656e-04,1.222538783954546e-08 -2.073119681437509e-04,-2.290005899022834e-08 -1.233270188716871e-05,-3.353075199681209e-08 -1.121188225721787e+02,3.996718307432251e-02 1.121170725293426e+02,-3.999029880862792e-02 9.234989382496663e-04,1.043493006097486e-05 -1.544679502365685e-07,-2.547104803759297e-09 -3.298931001999902e-07,-5.454349573990763e-09 1.092787408073351e-01,3.207310773970612e-04 -1.092811480922818e-01,-3.207708484833335e-04 1.243478448829955e-01,6.709895995263671e-05 8.706663012661361e-01,-9.318322339641752e-05 1.089907490237863e-02,1.450415058883934e-05 9.864340279241144e-01,-3.688382719649330e-05 37 5.011872336272725e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876672995386536e-01,-4.221271645970057e-05 9.908248382093603e-03,1.659967683146207e-05 9.753572739457942e-01,-5.180834258998407e-05 1.979828145784143e-02,2.334173909877984e-05 1.161855946703988e-03,1.308830461241515e-05 7.906440520729071e-04,1.124693006496322e-05 -1.121440421772045e+02,4.998354943988388e-02 -3.508417562802222e-07,-7.319923252425852e-09 1.121422917375625e+02,-5.001266233293614e-02 1.116156035972949e+02,-5.011372045210730e-02 -1.116173458159014e+02,5.008474953464035e-02 -5.335601425312120e-01,-2.756096715816357e-04 4.972548839809002e-01,-1.655234385488737e-05 5.335511131399380e-01,2.754485153191113e-04 -1.754208793362767e-07,-3.659904548138720e-09 2.091210475294310e-04,1.539085139737352e-08 -2.073119697615644e-04,-2.882946596084209e-08 -1.233270046134639e-05,-4.221271645970056e-08 -1.121188176086919e+02,5.031570145400054e-02 1.121170675626849e+02,-5.034480243872966e-02 9.234992681962066e-04,1.313679861021668e-05 -1.544643115887264e-07,-3.206616001362410e-09 -3.298851888289216e-07,-6.866621068043251e-09 1.092788057926271e-01,4.037764869157668e-04 -1.092812130201343e-01,-4.038265557608420e-04 1.243478506467523e-01,8.447258540070035e-05 8.706662953559891e-01,-1.173107275005654e-04 1.089907322030296e-02,1.825964451460828e-05 9.864340294925190e-01,-4.643398810567062e-05 38 6.309573444801935e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673017984296e-01,-5.314266283738086e-05 9.908245958539008e-03,2.089775637256109e-05 9.753572754633730e-01,-6.522284035791477e-05 1.979827975464257e-02,2.938550983145766e-05 1.161856467771168e-03,1.647719924636179e-05 7.906444997738726e-04,1.415904603981321e-05 -1.121440343991992e+02,6.292555868391085e-02 -3.508282137166117e-07,-9.215240380323545e-09 1.121422839545827e+02,-6.296220964360677e-02 1.116155957624752e+02,-6.308943425693660e-02 -1.116173379860839e+02,6.305296203392636e-02 -5.335602319563981e-01,-3.469719876004663e-04 4.972548838598674e-01,-2.083816630598570e-05 5.335512026465695e-01,3.467691038595775e-04 -1.754141087541008e-07,-4.607548335978637e-09 2.091210483395735e-04,1.937593388767034e-08 -2.073119723258743e-04,-3.629414684105090e-08 -1.233269820157042e-05,-5.314266283738086e-08 -1.121188097420955e+02,6.334371326503203e-02 1.121170596910630e+02,-6.338034923301816e-02 9.234997911262318e-04,1.653824957241080e-05 -1.544585447222789e-07,-4.036892439876416e-09 -3.298726501543134e-07,-8.644567316334702e-09 1.092789087873693e-01,5.083244465996617e-04 -1.092813159238410e-01,-5.083874795688251e-04 1.243478597816912e-01,1.063446835854695e-04 8.706662859890372e-01,-1.476854551561968e-04 1.089907055439291e-02,2.298753200981719e-05 9.864340319782725e-01,-5.845692912111894e-05 39 7.943282347242819e+03,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673053799326e-01,-6.690265146062840e-05 9.908242117464336e-03,2.630871930407894e-05 9.753572778685728e-01,-8.211069380657064e-05 1.979827705525483e-02,3.699416770814254e-05 1.161857293606992e-03,2.074356479154997e-05 7.906452093320835e-04,1.782518281911479e-05 -1.121440220718920e+02,7.921858113215806e-02 -3.508067501941424e-07,-1.160130624737997e-08 1.121422716193914e+02,-7.926472195433456e-02 1.116155833451235e+02,-7.942488821123476e-02 -1.116173255766600e+02,7.937897240524077e-02 -5.335603736857548e-01,-4.368117891412984e-04 4.972548836680434e-01,-2.623369710241329e-05 5.335513445050087e-01,4.365563735909257e-04 -1.754033781017043e-07,-5.800562670329242e-09 2.091210496235630e-04,2.439285545738627e-08 -2.073119763898370e-04,-4.569162282812351e-08 -1.233269462006737e-05,-6.690265146062839e-08 -1.121187972743811e+02,7.974500650047414e-02 1.121170472153836e+02,-7.979112844916795e-02 9.235006199144669e-04,2.082042259820623e-05 -1.544494048528599e-07,-5.082150607233685e-09 -3.298527776894413e-07,-1.088287257287667e-08 1.092790720230233e-01,6.399424964919194e-04 -1.092814790152135e-01,-6.400218503539665e-04 1.243478742595941e-01,1.338800230277808e-04 8.706662711434185e-01,-1.859249709115216e-04 1.089906632921077e-02,2.893959123448684e-05 9.864340359179259e-01,-7.359291660669123e-05 40 1.000000000000001e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673110562311e-01,-8.422545355557726e-05 9.908236029772517e-03,3.312072078495844e-05 9.753572816805561e-01,-1.033712443017791e-04 1.979827277701493e-02,4.657290308902109e-05 1.161858602468564e-03,2.611460073775991e-05 7.906463339060577e-04,2.244057552674461e-05 -1.121440025344278e+02,9.973027739857601e-02 -3.507727328122061e-07,-1.460519113018140e-08 1.121422520694319e+02,-9.978836524744368e-02 1.116155636649484e+02,-9.999000253491264e-02 -1.116173059090497e+02,9.993219796468884e-02 -5.335605983116177e-01,-5.499133353615072e-04 4.972548833640229e-01,-3.302626793674719e-05 5.335515693354533e-01,5.495917861281728e-04 -1.753863711681273e-07,-7.302481702421999e-09 2.091210516585491e-04,3.070878541986556e-08 -2.073119828303795e-04,-5.752234323045154e-08 -1.233268894376886e-05,-8.422545355557726e-08 -1.121187775143865e+02,1.003930075526150e-01 1.121170274427656e+02,-1.004510716410994e-01 9.235019334552941e-04,2.621135898324491e-05 -1.544349191409252e-07,-6.398056786418674e-09 -3.298212819643880e-07,-1.370073901038172e-08 1.092793307340705e-01,8.056397376998092e-04 -1.092817374975898e-01,-8.057396384037748e-04 1.243478972055246e-01,1.685449600342373e-04 8.706662476146977e-01,-2.340656675008824e-04 1.089905963274977e-02,3.643279286345428e-05 9.864340421618542e-01,-9.264799891113498e-05 41 1.258925411794168e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673200525547e-01,-1.060335748056426e-04 9.908226381434404e-03,4.169652802964668e-05 9.753572877221391e-01,-1.301366968525105e-04 1.979826599646502e-02,5.863182172094317e-05 1.161860676874346e-03,3.287633426910130e-05 7.906481162356840e-04,2.825101059811938e-05 -1.121439715696371e+02,1.255529656278121e-01 -3.507188188951021e-07,-1.838686997231603e-08 1.121422210848372e+02,-1.256260938875074e-01 1.116155324739760e+02,-1.258799400261534e-01 -1.116172747379913e+02,1.258071683932486e-01 -5.335609543195435e-01,-6.922996204493236e-04 4.972548828821827e-01,-4.157760798066648e-05 5.335519256676194e-01,6.918948137360344e-04 -1.753594169948554e-07,-9.193291664228515e-09 2.091210548837847e-04,3.866006996794352e-08 -2.073119930385871e-04,-7.241633593893687e-08 -1.233267994744529e-05,-1.060335748056426e-07 -1.121187461969089e+02,1.263872932213662e-01 1.121169961052810e+02,-1.264603915683587e-01 9.235040152771977e-04,3.299814568232624e-05 -1.544119608373131e-07,-8.054692716311679e-09 -3.297713646067486e-07,-1.724823678354082e-08 1.092797407633737e-01,1.014240072730924e-03 -1.092821471644742e-01,-1.014365840486300e-03 1.243479335723759e-01,2.121855270575079e-04 8.706662103241860e-01,-2.946712107265045e-04 1.089904901957784e-02,4.586618083261134e-05 9.864340520578102e-01,-1.166369322862068e-04 42 1.584893192461114e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673343107587e-01,-1.334883837833364e-04 9.908211089857078e-03,5.249284062115074e-05 9.753572972973945e-01,-1.638324157290190e-04 1.979825525002616e-02,7.381311129672657e-05 1.161863964585921e-03,4.138885222199962e-05 7.906509410377505e-04,3.556591477615711e-05 -1.121439224937588e+02,1.580617891965610e-01 -3.506333711070941e-07,-2.314774516802977e-08 1.121421719775718e+02,-1.581538522023345e-01 1.116154830396241e+02,-1.584734252247230e-01 -1.116172253352009e+02,1.583818111856920e-01 -5.335615185538931e-01,-8.715530825082408e-04 4.972548821185176e-01,-5.234310728513493e-05 5.335524904158550e-01,8.710434606264181e-04 -1.753166975152298e-07,-1.157369219764350e-08 2.091210599954386e-04,4.867014378118293e-08 -2.073120092175827e-04,-9.116675816111073e-08 -1.233266568924127e-05,-1.334883837833364e-07 -1.121186965620597e+02,1.591121449299215e-01 1.121169464387228e+02,-1.592041702775295e-01 9.235073147425316e-04,4.154220370392545e-05 -1.543755743902113e-07,-1.014029015044883e-08 -3.296922509445176e-07,-2.171430002750101e-08 1.092803906158382e-01,1.276852070859222e-03 -1.092827964425437e-01,-1.277010403522399e-03 1.243479912099564e-01,2.671257397379582e-04 8.706661512227026e-01,-3.709690630988916e-04 1.089903219884279e-02,5.774212468326581e-05 9.864340677418346e-01,-1.468372221616701e-04 43 1.995262314968881e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673569084690e-01,-1.680519623344111e-04 9.908186854360534e-03,6.608461469354142e-05 9.753573124731301e-01,-2.062528334460083e-04 1.979823821808978e-02,9.292524342046704e-05 1.161869175257543e-03,5.210547695731166e-05 7.906554180472544e-04,4.477483315782158e-05 -1.121438447137526e+02,1.989879436773718e-01 -3.504979455132802e-07,-2.914137902662055e-08 1.121420941478205e+02,-1.991038440975607e-01 1.116154046914761e+02,-1.995061620334659e-01 -1.116171470370744e+02,1.993908268293444e-01 -5.335624128045991e-01,-1.097219321175192e-03 4.972548809081900e-01,-6.589606796666686e-05 5.335533854810151e-01,1.096577744392571e-03 -1.752489917146584e-07,-1.457046251060449e-08 2.091210680968639e-04,6.127207935883011e-08 -2.073120348589381e-04,-1.147721338320233e-07 -1.233264309153103e-05,-1.680519623344111e-07 -1.121186178961449e+02,2.003102622519265e-01 1.121168677225528e+02,-2.004261152626873e-01 9.235125440426062e-04,5.229853503159289e-05 -1.543179057850121e-07,-1.276593440930005e-08 -3.295668642787313e-07,-2.733679670066480e-08 1.092814205621160e-01,1.607460460896201e-03 -1.092838254784672e-01,-1.607659790787209e-03 1.243480825593791e-01,3.362913573792766e-04 8.706660575531503e-01,-4.670223561647683e-04 1.089900553979659e-02,7.269307616289557e-05 9.864340925993159e-01,-1.848571585678522e-04 44 2.511886431509582e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876673927233750e-01,-2.115649732975567e-04 9.908148443737935e-03,8.319568795589971e-05 9.753573365249962e-01,-2.596570170989141e-04 1.979821122434356e-02,1.169860339115681e-04 1.161877433615343e-03,6.559690729942237e-05 7.906625136289837e-04,5.636817377959098e-05 -1.121437214407992e+02,2.505108604657675e-01 -3.502833104818302e-07,-3.668701096146641e-08 1.121419707960264e+02,-2.506567703756265e-01 1.116152805180793e+02,-2.511632573260926e-01 -1.116170229429562e+02,2.510180589819542e-01 -5.335638300952657e-01,-1.381315286243623e-03 4.972548789899499e-01,-8.295823464649067e-05 5.335548040625037e-01,1.380507587241993e-03 -1.751416852874220e-07,-1.834321988139279e-08 2.091210809367575e-04,7.713697485918236e-08 -2.073120754980499e-04,-1.444895264598283e-07 -1.233260727662495e-05,-2.115649732975567e-07 -1.121184932191219e+02,2.521755590270686e-01 1.121167429658807e+02,-2.523214092507836e-01 9.235208319245138e-04,6.583995300859947e-05 -1.542265072780276e-07,-1.607148983475372e-08 -3.293681399135216e-07,-3.441521270319380e-08 1.092830529157815e-01,2.023670711269862e-03 -1.092854563893193e-01,-2.023921654486454e-03 1.243482273384914e-01,4.233656866453152e-04 8.706659090968799e-01,-5.879462634473477e-04 1.089896328811173e-02,9.151525675148968e-05 9.864341319957125e-01,-2.327214706273123e-04 45 3.162277660168381e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876674494860481e-01,-2.663446955414169e-04 9.908087567131498e-03,1.047373396853753e-04 9.753573746445001e-01,-3.268889844176583e-04 1.979816844227407e-02,1.472768576650186e-04 1.161890522229948e-03,8.258161007098749e-05 7.906737593677729e-04,7.096332341135438e-05 -1.121435260664568e+02,3.153742517914209e-01 -3.499431370462443e-07,-4.618658622986403e-08 1.121417752967301e+02,-3.155579413364182e-01 1.116150837166328e+02,-3.161955679900395e-01 -1.116168262671578e+02,3.160127742549064e-01 -5.335660763466069e-01,-1.738968926036693e-03 4.972548759497442e-01,-1.044382300052346e-04 5.335570523596577e-01,1.737952089873710e-03 -1.749716161438089e-07,-2.309293392608022e-08 2.091211012866167e-04,9.710969209455788e-08 -2.073121399070038e-04,-1.819014779647359e-07 -1.233255051395191e-05,-2.663446955414169e-07 -1.121182956194821e+02,3.174699793328122e-01 1.121165452400057e+02,-3.176535937349917e-01 9.235339673316731e-04,8.288758647755364e-05 -1.540816505841736e-07,-2.023306754261913e-08 -3.290531832795777e-07,-4.332663407910843e-08 1.092856400190328e-01,2.547646270713331e-03 -1.092880412058674e-01,-2.547962193000260e-03 1.243484567980071e-01,5.329857237786126e-04 8.706656738094616e-01,-7.401803948443965e-04 1.089889632384465e-02,1.152110736539128e-04 9.864341944346529e-01,-2.929791650955586e-04 46 3.981071705534975e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876675394485010e-01,-3.353084535102582e-04 9.907991084533484e-03,1.318568456011888e-04 9.753574350595026e-01,-4.115291830086645e-04 1.979810063760281e-02,1.854109113908413e-04 1.161911266284992e-03,1.039640805549287e-04 7.906915826616431e-04,8.933752520961785e-05 -1.121432164192993e+02,3.970321881671371e-01 -3.494039989096279e-07,-5.814621700364994e-08 1.121414654515341e+02,-3.972634393072045e-01 1.116147718076731e+02,-3.980661584390701e-01 -1.116165145573369e+02,3.978360350601897e-01 -5.335696364075605e-01,-2.189224211187106e-03 4.972548711313429e-01,-1.314799422973831e-04 5.335606156630007e-01,2.187944083588342e-03 -1.747020749289750e-07,-2.907265702697984e-08 2.091211335389681e-04,1.222538476473735e-07 -2.073122419874850e-04,-2.290002760630476e-07 -1.233246055149900e-05,-3.353084535102582e-07 -1.121179824454728e+02,3.996705452822939e-01 1.121162318659272e+02,-3.999017018183408e-01 9.235547855479145e-04,1.043492820027367e-04 -1.538520686478461e-07,-2.547244282155231e-08 -3.285540113181970e-07,-5.454589503522297e-08 1.092897402939264e-01,3.207288224814462e-03 -1.092921378565863e-01,-3.207685954382359e-03 1.243488204670478e-01,6.709890770084227e-04 8.706653009038175e-01,-9.318317148823579e-04 1.089879019298683e-02,1.450425301613077e-04 9.864342933933511e-01,-3.688392988612841e-04 47 5.011872336272726e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876676820285735e-01,-4.221290272571797e-04 9.907838170727298e-03,1.659986262162096e-04 9.753575308099760e-01,-5.180852119819997e-04 1.979799317529354e-02,2.334191718109407e-04 1.161944143393749e-03,1.308830091365263e-04 7.907198306763009e-04,1.124692688647164e-04 -1.121427256623997e+02,4.998329699415464e-01 -3.485495236062332e-07,-7.320324646024126e-08 1.121409743807654e+02,-5.001240972876668e-01 1.116142774660732e+02,-5.011346502950429e-01 -1.116160205313497e+02,5.008449427228929e-01 -5.335752787050770e-01,-2.756054109075512e-03 4.972548634946914e-01,-1.655234416586326e-04 5.335662630993447e-01,2.754442510515812e-03 -1.742748814227535e-07,-3.660105628782360e-08 2.091211846554957e-04,1.539084526232506e-07 -2.073124037745341e-04,-2.882940334172172e-07 -1.233231797142652e-05,-4.221290272571797e-07 -1.121174860989074e+02,5.031544497091702e-01 1.121157352022742e+02,-5.034454579462728e-01 9.235877801942362e-04,1.313679489762990e-04 -1.534882069298407e-07,-3.206894297026507e-08 -3.277628787322409e-07,-6.867099789935874e-08 1.092962387730104e-01,4.037719877716111e-03 -1.092986305917542e-01,-4.038220603488554e-03 1.243493968441782e-01,8.447248114426805e-04 8.706647098876572e-01,-1.173106239297306e-03 1.089862198780003e-02,1.825984888378306e-04 9.864344502314308e-01,-4.643419299828977e-04 48 6.309573444801936e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876679080007330e-01,-5.314303448654402e-04 9.907595820702912e-03,2.089812707226159e-04 9.753576825621072e-01,-6.522319672765391e-04 1.979782286115284e-02,2.938586515188495e-04 1.161996250092404e-03,1.647719186636085e-04 7.907646007562428e-04,1.415903969788919e-04 -1.121419478670709e+02,6.292505498873861e-01 -3.471952741826169e-07,-9.216041265067811e-08 1.121401960879890e+02,-6.296170563230521e-01 1.116134939894130e+02,-6.308892462213201e-01 -1.116152375549007e+02,6.305245271886595e-01 -5.335842210966426e-01,-3.469634864518338e-03 4.972548513914141e-01,-2.083816692646434e-04 5.335752136353694e-01,3.467605955410895e-03 -1.735978266785523e-07,-4.607949544221125e-08 2.091212656697203e-04,1.937592164664022e-07 -2.073126601889359e-04,-3.629402189960103e-07 -1.233209199926697e-05,-5.314303448654402e-07 -1.121166994445994e+02,6.334320151429170e-01 1.121149480454177e+02,-6.337983716100345e-01 9.236400731773491e-04,1.653824216482685e-04 -1.529115278116674e-07,-4.037447711746676e-08 -3.265090222528937e-07,-8.645522490719389e-08 1.093065381213445e-01,5.083154696395098e-03 -1.093089208366293e-01,-5.083785100553179e-03 1.243503103417334e-01,1.063444755652868e-03 8.706637731888021e-01,-1.476852485039613e-03 1.089835540277320e-02,2.298793977948775e-04 9.864346988008063e-01,-5.845733793519842e-04 49 7.943282347242820e+04,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876682661373799e-01,-6.690339299692695e-04 9.907211726888350e-03,2.630945894595022e-04 9.753579230676458e-01,-8.211140485609033e-04 1.979755293681039e-02,3.699487666400942e-04 1.162078833626297e-03,2.074355006651394e-04 7.908355565356206e-04,1.782517016531428e-04 -1.121407151494237e+02,7.921757612904140e-01 -3.450489401930941e-07,-1.160290422008064e-07 1.121389625819441e+02,-7.926371632045862e-01 1.116122522675526e+02,-7.942387135703063e-01 -1.116139966258177e+02,7.937795618900849e-01 -5.335983937132020e-01,-4.367948271634514e-03 4.972548322090114e-01,-2.623369834043153e-04 5.335893991599415e-01,4.365393973073726e-03 -1.725247705793530e-07,-5.801363184791461e-08 2.091213940685836e-04,2.439283103332291e-07 -2.073130665768037e-04,-4.569137353794981e-07 -1.233173386262011e-05,-6.690339299692695e-07 -1.121154526865269e+02,7.974398542442637e-01 1.121137004908634e+02,-7.979010673209518e-01 9.237229519521378e-04,2.082040781813487e-04 -1.519975601416802e-07,-5.083258517170767e-08 -3.245218041315828e-07,-1.088477839201153e-07 1.093228613705298e-01,6.399245851415698e-03 -1.093252296578912e-01,-6.400039538615898e-03 1.243517581412189e-01,1.338796079689896e-03 8.706622886177329e-01,-1.859245585821451e-03 1.089793289957718e-02,2.894040484054525e-04 9.864350927511179e-01,-7.359373229661965e-04 50 1.000000000000001e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876688337329266e-01,-8.422693311098870e-04 9.906602992000110e-03,3.312219656049054e-04 9.753583042297198e-01,-1.033726630270575e-03 1.979712514907084e-02,4.657431763691275e-04 1.162209719661536e-03,2.611457135745592e-04 7.909480138282682e-04,2.244055027909802e-04 -1.121387614358603e+02,9.972827215650979e-01 -3.416472468907698e-07,-1.460837949722415e-07 1.121370076188642e+02,-9.978635874685234e-01 1.116102842834995e+02,-9.998797364693549e-01 -1.116120298982226e+02,9.993017034962770e-01 -5.336208554978994e-01,-5.498794919043688e-03 4.972548018069503e-01,-3.302627040691965e-04 5.336118814022474e-01,5.495579141275110e-03 -1.708240996968094e-07,-7.304078934926242e-08 2.091215975669933e-04,3.070873668746125e-07 -2.073137106548637e-04,-5.752184583295109e-07 -1.233116626707343e-05,-8.422693311098870e-07 -1.121134767206673e+02,1.003909702409626e+00 1.121117232626748e+02,-1.004490330504391e+00 9.238543059124831e-04,2.621132949313102e-04 -1.505490369301650e-07,-6.400267347595240e-08 -3.213723019666618e-07,-1.370454160589415e-07 1.093487316809515e-01,8.056039999837631e-03 -1.093510771018132e-01,-8.057039303331667e-03 1.243540527573799e-01,1.685441318705507e-03 8.706599357225347e-01,-2.340648447830966e-03 1.089726329120012e-02,3.643441621653959e-04 9.864357171062192e-01,-9.264962642208757e-04 51 1.258925411794168e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876697332791251e-01,-1.060365268940853e-03 9.905638244331127e-03,4.169947257623773e-04 9.753589082969431e-01,-1.301395275656806e-03 1.979644718513848e-02,5.863464409912955e-04 1.162417159933647e-03,3.287627564770527e-04 7.911262465277268e-04,2.825096022245650e-04 -1.121356650392891e+02,1.255489646526727e+00 -3.362559686021143e-07,-1.839323157654693e-07 1.121339092419667e+02,-1.256220904012966e+00 1.116071652702957e+02,-1.258758918715901e+00 -1.116089128763463e+02,1.258031227784700e+00 -5.336564542769912e-01,-6.922320943112298e-03 4.972547536229257e-01,-4.157761290931304e-04 5.336475126039286e-01,6.918272306464823e-03 -1.681287391545925e-07,-9.196478549860836e-08 2.091219200900496e-04,3.865997273404162e-07 -2.073147314406512e-04,-7.241534350688786e-07 -1.233026672087492e-05,-1.060365268940853e-06 -1.121103450572822e+02,1.263832282593931e+00 1.121085895986573e+02,-1.264563240544463e+00 9.240624877954521e-04,3.299808684183072e-04 -1.482533273840759e-07,-8.059103334771151e-08 -3.163807435096690e-07,-1.725582391597870e-07 1.093897326160811e-01,1.014168767012324e-02 -1.093920417965305e-01,-1.014294593917760e-02 1.243576895005453e-01,2.121838746141157e-03 8.706562066133089e-01,-2.946695691491219e-03 1.089620206876424e-02,4.586941983386151e-04 9.864367066070376e-01,-1.166401795834938e-03 52 1.584893192461115e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876711588830906e-01,-1.334942739339540e-03 9.904109302978872e-03,5.249871572379338e-04 9.753598655936872e-01,-1.638380636940089e-03 1.979537276998079e-02,7.381874263123279e-04 1.162745930322078e-03,4.138873525699206e-04 7.914087260733555e-04,3.556581426354249e-04 -1.121307576586975e+02,1.580538062294324e+00 -3.277114745064750e-07,-2.316043816004914e-07 1.121289987228290e+02,-1.581458642250114e+00 1.116022220461866e+02,-1.584653481234413e+00 -1.116039728082181e+02,1.583737391518948e+00 -5.337128726543121e-01,-8.714183515301028e-03 4.972546772563813e-01,-5.234311711909244e-04 5.337039823662470e-01,8.709086160163155e-03 -1.638569337307488e-07,-1.158005083185331e-07 2.091224312541743e-04,4.866994977413100e-07 -2.073163492546382e-04,-9.116477801809279e-07 -1.232884111690934e-05,-1.334942739339540e-06 -1.121053817843119e+02,1.591040342935503e+00 1.121036231549593e+02,-1.591960545494222e+00 9.243924335567394e-04,4.154208630175717e-04 -1.446149860583500e-07,-1.014909039333779e-07 -3.084698224734106e-07,-2.172943821060528e-07 1.094547128508606e-01,1.276709798509239e-02 -1.094569645955017e-01,-1.276868249191147e-02 1.243634534043659e-01,2.671224425547130e-03 8.706502963191204e-01,-3.709657875962150e-03 1.089452023327676e-02,5.774858729617272e-04 9.864382747713997e-01,-1.468437013273494e-03 53 1.995262314968881e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876734181104473e-01,-1.680637146028285e-03 9.901686296850875e-03,6.609633693729299e-04 9.753613825925503e-01,-2.062641024585678e-03 1.979367015088453e-02,9.293647925083295e-04 1.163266995552482e-03,5.210524358161315e-04 7.918564253632605e-04,4.477463260893838e-04 -1.121229801786631e+02,1.989720156517850e+00 -3.141696306637049e-07,-2.916670463143031e-07 1.121212162686845e+02,-1.990879060754842e+00 1.115943877615965e+02,-1.994900461892609e+00 -1.115961435253684e+02,1.993747210959354e+00 -5.338022850207999e-01,-1.096950501897344e-02 4.972545562235351e-01,-6.589608758803860e-04 5.337934761690918e-01,1.096308698392729e-02 -1.570867119104882e-07,-1.458314953186521e-07 2.091232413935307e-04,6.127169226414944e-07 -2.073189132595719e-04,-1.147681829885582e-06 -1.232658188955269e-05,-1.680637146028285e-06 -1.120975157252352e+02,2.002940794967434e+00 1.120957520707707e+02,-2.004099223483209e+00 9.249153616247053e-04,5.229830078364478e-04 -1.388488877681830e-07,-1.278349289276905e-07 -2.959322745118279e-07,-2.736700091600271e-07 1.095576948899593e-01,1.607176594232405e-02 -1.095598556084322e-01,-1.607376159598082e-02 1.243725887127611e-01,3.362847782378408e-03 8.706409289975580e-01,-4.670158202818471e-03 1.089185492653596e-02,7.270597063102229e-04 9.864407599214920e-01,-1.848700860631114e-03 54 2.511886431509582e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876769982354289e-01,-2.115884217537542e-03 9.897846599882628e-03,8.321907650498737e-04 9.753637863355965e-01,-2.596795012317138e-03 1.979097221945196e-02,1.170084518371392e-03 1.164092826480164e-03,6.559644165423384e-04 7.925659793653203e-04,5.636777363243307e-04 -1.121106541909628e+02,2.504790801545097e+00 -2.927079243783085e-07,-3.673754141601194e-07 1.121088823979278e+02,-2.506249701192637e+00 1.115819717537627e+02,-2.511311022791562e+00 -1.115837354443771e+02,2.509859241081866e+00 -5.339439821765552e-01,-1.380778935074078e-02 4.972543643993260e-01,-8.295827379642114e-04 5.339353023842962e-01,1.379970783713929e-02 -1.463569687910895e-07,-1.836853343151759e-07 2.091245253749050e-04,7.713620250463636e-07 -2.073229767910155e-04,-1.444816436862800e-06 -1.232300176457106e-05,-2.115884217537542e-06 -1.120850493602862e+02,2.521432704761981e+00 1.120832777419399e+02,-2.522891004302016e+00 9.257441449437348e-04,6.583948562304647e-04 -1.297109514479489e-07,-1.610652263665589e-07 -2.760626473274843e-07,-3.447547667381009e-07 1.097208986354284e-01,2.023104335445360e-02 -1.097229150958203e-01,-2.023355748484137e-02 1.243870675435797e-01,4.233525582802574e-03 8.706260824504755e-01,-5.879332213946649e-03 1.088763125987089e-02,9.154098415548611e-04 9.864446980589718e-01,-2.327472639291296e-03 55 3.162277660168382e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876826710723636e-01,-2.663914800906903e-03 9.891762368754376e-03,1.047840047041665e-03 9.753675946598619e-01,-3.269338445688080e-03 1.978669763765758e-02,1.473215857152238e-03 1.165401675752060e-03,8.258068098842331e-04 7.936905427674546e-04,7.096252501429931e-04 -1.120911200414471e+02,3.153108426130907e+00 -2.586950946366784e-07,-4.628740530456263e-07 1.120893357555569e+02,-3.154944923639986e+00 1.115622949546073e+02,-3.161314111528338e+00 -1.115640712074603e+02,3.159486576668144e+00 -5.341685271555606e-01,-1.737898808416980e-02 4.972540603782541e-01,-1.044383081200821e-03 5.341600518874476e-01,1.736881069715920e-02 -1.293523142883086e-07,-2.314343987982098e-07 2.091265603407678e-04,9.710815104742875e-07 -2.073294166938001e-04,-1.818857503818930e-06 -1.231732892763635e-05,-2.663914800906903e-06 -1.120652927556366e+02,3.174055561234603e+00 1.120635085163526e+02,-3.175891300839058e+00 9.270576734224332e-04,8.288665392251303e-04 -1.152300907416332e-07,-2.030296407753061e-07 -2.445740408012519e-07,-4.344687220079170e-07 1.099795295329999e-01,2.546516242322580e-02 -1.099813173815262e-01,-2.546833101991481e-02 1.244100158046440e-01,5.329595252873704e-03 8.706025513979685e-01,-7.401543685699079e-03 1.088093860562981e-02,1.152624051745832e-03 9.864509381796000e-01,-2.930306280997593e-03 56 3.981071705534975e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.876916587007223e-01,-3.354017969358052e-03 9.882122723737898e-03,1.319499505318061e-03 9.753736270516218e-01,-4.116186857433638e-03 1.977992627661490e-02,1.855001505490108e-03 1.167476050640351e-03,1.039622267969799e-03 7.954728458381082e-04,8.933593220277182e-04 -1.120601635767552e+02,3.969056730037584e+00 -2.047926179997248e-07,-5.834736979798407e-07 1.120583594934020e+02,-3.971368447493232e+00 1.115311124623797e+02,-3.979381516174403e+00 -1.115329086226289e+02,3.977081085408833e+00 -5.345243319161976e-01,-2.187089183886635e-02 4.972535785368532e-01,-1.314800981584689e-03 5.345161807435245e-01,2.185807255600951e-02 -1.024038687272774e-07,-2.917342579895632e-07 2.091297855255303e-04,1.222507728629348e-06 -2.073396223492910e-04,-2.289688973611227e-06 -1.230834129927773e-05,-3.354017969358052e-06 -1.120339837931741e+02,3.995420069885525e+00 1.120321795534740e+02,-3.997730828379733e+00 9.291394643081511e-04,1.043474213163094e-03 -9.228397482041976e-08,-2.561189495876888e-07 -1.946745689861709e-07,-5.478578800676272e-07 1.103893575134151e-01,3.205033648084767e-02 -1.103907830912663e-01,-3.205433247860083e-02 1.244463885083263e-01,6.709367916273991e-03 8.705652550309933e-01,-9.317797731218545e-03 1.087033499611169e-02,1.451449455849867e-03 9.864608245707945e-01,-3.689419766293857e-03 57 5.011872336272726e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.877058950622860e-01,-4.223152591511043e-03 9.866852983399889e-03,1.661843822493560e-03 9.753831792190361e-01,-5.182637774911478e-03 1.976920291955653e-02,2.335972114142106e-03 1.170763684612368e-03,1.308793104204761e-03 7.982975812006840e-04,1.124660904130842e-03 -1.120111086134565e+02,4.995805478000662e+00 -1.193735624208067e-07,-7.360457468750509e-07 1.120092731592117e+02,-4.998715167495906e+00 1.114816994125063e+02,-5.008792522750913e+00 -1.114835271177988e+02,5.005897049106495e+00 -5.350880559611463e-01,-2.751794606165771e-02 4.972528148685064e-01,-1.655237526470459e-03 5.350804183108022e-01,2.750179415121512e-02 -5.969877409785812e-08,-3.680210423592335e-07 2.091348970517313e-04,1.539023176496362e-06 -2.073557949548582e-04,-2.882314308481806e-06 -1.229410493771397e-05,-4.223152591511043e-06 -1.119843703340177e+02,5.028979912951972e+00 1.119825344018770e+02,-5.031888385578863e+00 9.324388517295165e-04,1.313642364361887e-03 -5.592813723118683e-08,-3.234715562785032e-07 -1.156058269746091e-07,-6.914960423894299e-07 1.110387042941324e-01,4.033221805264804e-02 -1.110395558490666e-01,-4.033726262226452e-02 1.245040407830419e-01,8.446204488111039e-03 8.705061388458414e-01,-1.173002562288042e-02 1.085353828173988e-02,1.828028204742916e-03 9.864764845685146e-01,-4.645467850662148e-03 58 6.309573444801937e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.877284379031054e-01,-5.318018860787417e-03 9.842672342543685e-03,2.093518624662021e-03 9.753982969587095e-01,-6.525882019273980e-03 1.975222896371765e-02,2.942138368445881e-03 1.175974161306943e-03,1.647645388096483e-03 8.027744231531208e-04,1.415840551812322e-03 -1.119333811472454e+02,6.287469293341305e+00 1.597986630846582e-08,-9.296109071309257e-07 1.119314959884867e+02,-6.291131197784557e+00 1.114034047762748e+02,-6.303796891831942e+00 -1.114052824618908e+02,6.300152897547975e+00 -5.359810249325399e-01,-3.461137419667679e-02 4.972516045327511e-01,-2.083822897828466e-03 5.359742008229295e-01,3.459101343743619e-02 7.970896756240977e-09,-4.648060031204732e-07 2.091429981563181e-04,1.937469756729797e-06 -2.073814211118047e-04,-3.628153299568772e-06 -1.227156209689459e-05,-5.318018860787417e-06 -1.119057581522063e+02,6.329203424426464e+00 1.119038720062065e+02,-6.332863777759746e+00 9.376679560983738e-04,1.653750142119102e-03 1.663593616844506e-09,-4.092948654250108e-07 9.668021327254700e-09,-8.741003394516837e-07 1.120673804160363e-01,5.074181125544492e-02 -1.120673225510089e-01,-5.074818973249262e-02 1.245954270908244e-01,1.063236399693010e-02 8.704124323894118e-01,-1.476645497105329e-02 1.082693957679805e-02,2.302870487128223e-03 9.865012816934159e-01,-5.849820746866159e-03 59 7.943282347242821e+05,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.877641149691171e-01,-6.697751246906855e-03 9.804399525716718e-03,2.638338897314116e-03 9.754222031391843e-01,-8.218246707051051e-03 1.972538086463590e-02,3.706572950897821e-03 1.184232029481822e-03,2.074207760938933e-03 8.098695840207721e-04,1.782390482522069e-03 -1.118102401825878e+02,7.911709942797365e+00 2.304336773438646e-07,-1.176263614836212e-06 1.118082762851389e+02,-7.916317658708281e+00 1.112793658091046e+02,-7.932221054254522e+00 -1.112813226700310e+02,7.927635912747622e+00 -5.373950963966333e-01,-4.350998007186328e-02 4.972496862723350e-01,-2.623382215475121e-03 5.373895608153238e-01,4.348429412526084e-02 1.151865952976021e-07,-5.881381950093025e-07 2.091558372442001e-04,2.439038870184120e-06 -2.074220215336417e-04,-4.566646106605185e-06 -1.223588503088290e-05,-6.697751246906855e-06 -1.117812161145533e+02,7.964190251217365e+00 1.117792504232984e+02,-7.968795976178872e+00 9.459553464250718e-04,2.081892985767039e-03 9.286906264544512e-08,-5.193966539527550e-07 2.081090884736726e-07,-1.107524480219161e-06 1.136965438506448e-01,6.381345220352059e-02 -1.136950455184195e-01,-6.382153755730995e-02 1.247402987548599e-01,1.338379959350912e-02 8.702638835200854e-01,-1.858832195144701e-02 1.078483947828839e-02,2.902172787045527e-03 9.865405264660288e-01,-7.367526371597540e-03 60 1.000000000000001e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.878205313459605e-01,-8.437478053105082e-03 9.743869129228196e-03,3.326966598552389e-03 9.754599566710059e-01,-1.035144003125509e-02 1.968296467028193e-02,4.671563717046993e-03 1.197319414238955e-03,2.611163347402832e-03 8.211142656840578e-04,2.243802564079118e-03 -1.116151974388486e+02,9.952782268330864e+00 5.701520846092391e-07,-1.492700964628199e-06 1.116131088434964e+02,-9.958578355902673e+00 1.110829020904525e+02,-9.978516273021347e+00 -1.110849843400029e+02,9.972748658468605e+00 -5.396332629385522e-01,-5.464988507981464e-02 4.972466460155651e-01,-3.302651746370221e-03 5.396297674113848e-01,5.461744217057096e-02 2.850279271627803e-07,-7.463698876058255e-07 2.091761850796105e-04,3.070386368371631e-06 -2.074863329761482e-04,-5.747215840648371e-06 -1.217946865403948e-05,-8.437478053105082e-06 -1.115839555989333e+02,1.001873172309288e+01 1.115818639331943e+02,-1.002452522801215e+01 9.590895188253039e-04,2.620838062932471e-03 2.372411025804697e-07,-6.621061187674012e-07 5.223544334318457e-07,-1.408443604118731e-06 1.162756346276726e-01,8.020336188025288e-02 -1.162718554831783e-01,-8.021365105997500e-02 1.249699903532762e-01,1.684609799477775e-02 8.700283639000633e-01,-2.339822375287427e-02 1.071825604215102e-02,3.659663258407628e-03 9.866025844805566e-01,-9.281225858415590e-03 61 1.258925411794168e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.879096237149740e-01,-1.063313933042619e-02 9.648256398556984e-03,4.199358477871172e-03 9.755194522914729e-01,-1.304221707365745e-02 1.961607913794769e-02,5.891645372958421e-03 1.218060380191482e-03,3.287041397284161e-03 8.389349042990279e-04,2.824592305570593e-03 -1.113063834480811e+02,1.251491038179485e+01 1.108147968637985e-06,-1.902873921162351e-06 1.113040974569729e+02,-1.252219788951850e+01 1.107718416868770e+02,-1.254713230482645e+01 -1.107741224237021e+02,1.253988074917601e+01 -5.431730216696569e-01,-6.854911980257240e-02 4.972418274857915e-01,-4.157810589898420e-03 5.431727540777297e-01,6.850806488122607e-02 5.539972683570800e-07,-9.514840619022375e-07 2.092084323477757e-04,3.865025009225092e-06 -2.075881697044396e-04,-7.231626562799812e-06 -1.209037628502601e-05,-1.063313933042619e-05 -1.112716336542766e+02,1.259769795641509e+01 1.112693425738981e+02,-1.260498206092612e+01 9.799046336377990e-04,3.299220325895201e-03 4.656065903232240e-07,-8.499336303792710e-07 1.019741026854017e-06,-1.801338327720407e-06 1.203557871868638e-01,1.007048920049992e-01 -1.203483986536611e-01,-1.007180652177157e-01 1.253342407807139e-01,2.120175698457732e-02 8.696548765702945e-01,-2.945043512294535e-02 1.061308203841268e-02,4.619294325658290e-03 9.867005860864714e-01,-1.169645326346881e-02 62 1.584893192461115e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.880500173415478e-01,-1.340822034978677e-02 9.497528494692449e-03,5.308514041841809e-03 9.756128929856506e-01,-1.644015039155961e-02 1.951092599754072e-02,7.438051967091230e-03 1.250929730079374e-03,4.137704022574239e-03 8.671762497548611e-04,3.555576426541670e-03 -1.108177202745960e+02,1.572562597213437e+01 1.959756931066767e-06,-2.442767505157471e-06 1.108151220266813e+02,-1.573478180740595e+01 1.102796324416918e+02,-1.576584196781364e+01 -1.102822271572422e+02,1.575673160591533e+01 -5.487643457960278e-01,-8.579823203693336e-02 4.972341905111913e-01,-5.234410091002798e-03 5.487691807676530e-01,8.574612519778916e-02 9.797557274853140e-07,-1.221488278184171e-06 2.092595361077217e-04,4.865055143526880e-06 -2.077493443258752e-04,-9.096728605263683e-06 -1.194998265845217e-05,-1.340822034978677e-05 -1.107774282624701e+02,1.582937550969774e+01 1.107748217365019e+02,-1.583852675818960e+01 1.012891490103688e-03,4.153034756054966e-03 8.264164818921483e-07,-1.102649613299060e-06 1.806394154403235e-06,-2.323961120389921e-06 1.268037376398359e-01,1.262516495777512e-01 -1.267906422871619e-01,-1.262686717422306e-01 1.259120720051031e-01,2.667893743030375e-02 8.690624055641314e-01,-3.706348881844487e-02 1.044728134416169e-02,5.839365446025990e-03 9.868550190757026e-01,-1.474904238476545e-02 63 1.995262314968881e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.882704939045011e-01,-1.692354956857098e-02 9.260672703535684e-03,6.726511532400596e-03 9.757588417028474e-01,-2.073867030103044e-02 1.934641373931742e-02,9.405576115853618e-03 1.303016941639685e-03,5.208191065810439e-03 9.119295793983231e-04,4.475458171508573e-03 -1.100451877201017e+02,1.973815942526690e+01 3.306817831345673e-06,-3.169275338489419e-06 1.100420960668090e+02,-1.974964893737691e+01 1.095015154774261e+02,-1.978809424778119e+01 -1.095046063073294e+02,1.977666240567819e+01 -5.575787921093810e-01,-1.070185851691928e-01 4.972220864209651e-01,-6.589805097414985e-03 5.575916806211094e-01,1.069521471715390e-01 1.653211498710796e-06,-1.584859479879333e-06 2.093405182657672e-04,6.123299027752874e-06 -2.080042237044034e-04,-1.143747478842710e-05 -1.172950609549888e-05,-1.692354956857098e-05 -1.099961558239441e+02,1.986782934554025e+01 1.099930508660856e+02,-1.987931248172983e+01 1.065164908295760e-03,5.227488065450948e-03 1.395444668904404e-06,-1.453107358046591e-06 3.049019333098873e-06,-3.037591278528386e-06 1.369762296731147e-01,1.578897316587383e-01 -1.369541238686660e-01,-1.579120331825741e-01 1.268291970751954e-01,3.356162879971922e-02 8.681220773031781e-01,-4.663516583673021e-02 1.018673997388925e-02,7.399162685640656e-03 9.870975432949512e-01,-1.861590452542808e-02 64 2.511886431509582e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.886148127439991e-01,-2.139223055935343e-02 8.890393279029943e-03,8.554696889484866e-03 9.759847641183510e-01,-2.619142558742938e-02 1.909106867937955e-02,1.192365844014780e-02 1.385551535323163e-03,6.554989182515753e-03 9.828432918044885e-04,5.632777154546725e-03 -1.088257035732075e+02,2.473086229288086e+01 5.435140242249063e-06,-4.177004415479448e-06 1.088218336448832e+02,-2.474525320935743e+01 1.082732701358435e+02,-2.479234863205738e+01 -1.082771434840324e+02,2.477803115637728e+01 -5.714304032435862e-01,-1.327514991300781e-01 4.972029019709253e-01,-8.296219273547647e-03 5.714559720721357e-01,1.326661906061323e-01 2.717249984312947e-06,-2.088961395446555e-06 2.094688365977796e-04,7.705899070056446e-06 -2.084067677110557e-04,-1.436985687272140e-05 -1.138518725600084e-05,-2.139223055935343e-05 -1.087629300535868e+02,2.489223320875061e+01 1.087590389226034e+02,-2.490661490403878e+01 1.147994547424103e-03,6.579276181864624e-03 2.290253159978886e-06,-1.958372264727077e-06 5.008107302703779e-06,-4.046556594500905e-06 1.529810965489256e-01,1.966806770229040e-01 -1.529447957498633e-01,-1.967104857623822e-01 1.282860089923545e-01,4.220063642600554e-02 8.666284890407062e-01,-5.865956664302052e-02 9.779432606932937e-03,9.410166578433352e-03 9.874762940183991e-01,-2.353145361528877e-02 65 3.162277660168382e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.891476484074666e-01,-2.710349464737183e-02 8.316409719214635e-03,1.094155156384795e-02 9.763292752912427e-01,-3.313763768040874e-02 1.869992221950818e-02,1.517509035089035e-02 1.516314674752846e-03,8.248781916892133e-03 1.095194948320492e-03,7.088272523068524e-03 -1.069052854905893e+02,3.089940952361214e+01 8.791769059769812e-06,-5.630459617902830e-06 1.069001913494924e+02,-3.091738087653710e+01 1.063391902427342e+02,-3.097408936180102e+01 -1.063442944037905e+02,3.095621212506871e+01 -5.930873897661745e-01,-1.632062311629132e-01 4.971724947448203e-01,-1.044461320653939e-02 5.931328469524345e-01,1.630955270335408e-01 4.395358962469076e-06,-2.816166713292914e-06 2.096721327865947e-04,9.695412108487901e-06 -2.090412366849061e-04,-1.803293791659581e-05 -1.085235159253335e-05,-2.710349464737183e-05 -1.068210088083537e+02,3.109884909823807e+01 1.068158811173523e+02,-3.111680647741897e+01 1.279225121158430e-03,8.279344504858728e-03 3.690884264343870e-06,-2.721046592401807e-06 8.087272260416542e-06,-5.535631238252378e-06 1.780527522963773e-01,2.434590724790218e-01 -1.779941673420915e-01,-2.435000352885118e-01 1.306028678236700e-01,5.302346291927014e-02 8.642533391670189e-01,-7.374467188368772e-02 9.148050691136098e-03,1.203570672023275e-02 9.880624132482133e-01,-2.981384411210902e-02 66 3.981071705534976e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.899596944781369e-01,-3.446238950549396e-02 7.439140803159196e-03,1.411481912504717e-02 9.768412170323264e-01,-4.204300247487223e-02 1.811405970146039e-02,1.942851178516140e-02 1.723446391390670e-03,1.037769977673306e-02 1.273162426336849e-03,8.917675769247115e-03 -1.038927315775561e+02,3.843316839500917e+01 1.407055342840660e-05,-7.825921398850815e-06 1.038857201859992e+02,-3.845550519762487e+01 1.033055415534482e+02,-3.852181459828336e+01 -1.033125731154854e+02,3.849959955052229e+01 -6.266708526890020e-01,-1.977310264665970e-01 4.971242976595069e-01,-1.314957235824837e-02 6.267473131828449e-01,1.975851257303151e-01 7.034398190706506e-06,-3.914855470716185e-06 2.099941481439276e-04,1.219435306050959e-05 -2.100380695066306e-04,-2.258825290248631e-05 -1.004030552186313e-05,-3.446238950549396e-05 -1.037750640237556e+02,3.867691433791606e+01 1.037679999357200e+02,-3.869922888659256e+01 1.487097216420427e-03,1.041615000494729e-02 5.867213808640140e-06,-3.929891585520433e-06 1.290342141412717e-05,-7.841560905963035e-06 2.170520377794377e-01,2.982992984521249e-01 -2.169586643847661e-01,-2.983576557087130e-01 1.342939107571583e-01,6.653782841948561e-02 8.604698998404258e-01,-9.262557056217294e-02 8.183054883475115e-03,1.552630103755188e-02 9.889556639259506e-01,-3.790862845604335e-02 67 5.011872336272727e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.911648640739914e-01,-4.405756738900306e-02 6.130580567621367e-03,1.843971843460896e-02 9.775669557405967e-01,-5.356740239896425e-02 1.727114250760130e-02,2.509548214041825e-02 2.051442298832634e-03,1.305099025223606e-02 1.554976260419283e-03,1.121486438994178e-02 -9.919672904062277e+01,4.745889154334865e+01 2.233522522874523e-05,-1.131000809650060e-05 9.918673564888610e+01,-4.748644698012502e+01 9.857748952629777e+01,-4.755999916027969e+01 -9.858751841342148e+01,4.753260339736336e+01 -6.780527811657921e-01,-2.337654334651654e-01 4.970478979641775e-01,-1.655549753772931e-02 6.781771030894642e-01,2.335689258404875e-01 1.116610629215639e-05,-5.658814579083833e-06 2.105040380036661e-04,1.532895662026277e-05 -2.115964350854881e-04,-2.821324647349528e-05 -8.835135926008600e-06,-4.405756738900306e-05 -9.902785736324115e+01,4.775136348962824e+01 9.901778196955348e+01,-4.777888178407242e+01 1.816265403875147e-03,1.309934480614533e-02 9.209282908937058e-06,-5.935980598555979e-06 2.037870097625743e-05,-1.158843286711017e-05 2.770231802929358e-01,3.594269159597794e-01 -2.768759759905559e-01,-3.595137189442258e-01 1.401879786152890e-01,8.331519958827252e-02 8.544293647228542e-01,-1.161602916957264e-01 6.743638624383504e-03,2.028369027806986e-02 9.902813504813905e-01,-4.846332412790336e-02 68 6.309573444801938e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.928684493019594e-01,-5.677711654556464e-02 4.263084463966215e-03,2.452261032676357e-02 9.785023276466426e-01,-6.867671398931377e-02 1.615000092109055e-02,3.282876898150537e-02 2.570564403103288e-03,1.640280177626820e-02 2.001005320477891e-03,1.409511343182969e-02 -9.195294777502264e+01,5.792039145686546e+01 3.518483579072830e-05,-1.710428782669830e-05 9.193836616526923e+01,-5.795398298430897e+01 9.128631639690595e+01,-5.802745118826779e+01 -9.130095593604698e+01,5.799407303631094e+01 -7.549225702775750e-01,-2.648893253662296e-01 4.969267804955469e-01,-2.084447312232445e-02 7.551196384942238e-01,2.646169661548660e-01 1.758974608080665e-05,-8.559778694932737e-06 2.113109805708633e-04,1.925252503122205e-05 -2.140138972563602e-04,-3.508287840736125e-05 -7.131550698040646e-06,-5.677711654556464e-05 -9.170717321275608e+01,5.826067253512904e+01 9.169246568439910e+01,-5.829419963251157e+01 2.337242586310694e-03,1.646357410178422e-02 1.424510768719027e-05,-9.391180960125524e-06 3.184120118387831e-05,-1.793835765058013e-05 3.675039877464835e-01,4.211377916639106e-01 -3.672746486132025e-01,-4.212730383798879e-01 1.496256276066950e-01,1.039194265267836e-01 8.447595066759762e-01,-1.452740936664670e-01 4.689392910362836e-03,2.697487135943993e-02 9.921552942321553e-01,-6.245482820012111e-02 69 7.943282347242822e+06,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.950489798728501e-01,-7.399717433368567e-02 1.822656179695593e-03,3.338407372638330e-02 9.794488876879036e-01,-8.881658166415294e-02 1.490888236610837e-02,4.367885545059338e-02 3.391523453357769e-03,2.059529396060396e-02 2.706371661936041e-03,1.769776805263311e-02 -8.097628234250376e+01,6.934131983363325e+01 5.494833655329365e-05,-2.712195305463301e-05 8.095475903181788e+01,-6.938150266864502e+01 8.024278813952166e+01,-6.943796192171729e+01 -8.026440050795110e+01,6.939807116637019e+01 -8.655799294906938e-01,-2.775184290549823e-01 4.967347384518888e-01,-2.624632574835364e-02 8.658848416007346e-01,2.771276174927073e-01 2.746922578493266e-05,-1.357623306366659e-05 2.125869477907356e-04,2.414689758541398e-05 -2.177199456239844e-04,-4.333036481524947e-05 -4.951020127149893e-06,-7.399717433368567e-05 -8.061903047377133e+01,6.971650134131989e+01 8.059731768377069e+01,-6.975656942921044e+01 3.161134574670039e-03,2.067159779734330e-02 2.160179083551275e-05,-1.548685617396236e-05 4.908377231744391e-05,-2.903836251186535e-05 4.996655966757358e-01,4.701557728309784e-01 -4.993137090501988e-01,-4.703759230807926e-01 1.647674081631350e-01,1.286923688089649e-01 8.292495071002249e-01,-1.807651307734368e-01 2.004921797665153e-03,3.672248109902163e-02 9.945538778601351e-01,-8.139689176705424e-02 70 1.000000000000001e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.972132999144931e-01,-9.784082003635265e-02 -7.538548959011557e-04,4.669778574261445e-02 9.796337163761070e-01,-1.161289161376903e-01 1.425688453986717e-02,5.928819796039816e-02 4.688170781447043e-03,2.581930133780589e-02 3.820446791843217e-03,2.218681371263590e-02 -6.485254780178106e+01,8.040316963491740e+01 8.484670954693247e-05,-4.491565981362318e-05 6.482079207762800e+01,-8.044980598486717e+01 6.403253575246112e+01,-8.045565656993499e+01 -6.406441959362700e+01,8.040943120229072e+01 -1.014205006965254e+00,-2.463334484815557e-01 4.964301498334351e-01,-3.305160443240832e-02 1.014663434750088e+00,2.457513654204220e-01 4.241376604891968e-05,-2.248825548344577e-05 2.146018448764250e-04,3.021889832493121e-05 -2.233014310270729e-04,-5.297652740592074e-05 -2.786700085506937e-06,-9.784082003635265e-05 -6.434355229342370e+01,8.077726521018962e+01 6.431152039248147e+01,-8.082369475439663e+01 4.462412393035260e-03,2.591495651362395e-02 3.180614792020255e-05,-2.632807143691209e-05 7.424666481047993e-05,-4.876841522855542e-05 6.819683402543204e-01,4.802610659531359e-01 -6.814400471643746e-01,-4.806320866787494e-01 1.890091109364265e-01,1.571854251391668e-01 8.044237087108164e-01,-2.227619036254296e-01 -8.292403854912713e-04,5.136756431687589e-02 9.969346299059424e-01,-1.076249020399879e-01 71 1.258925411794168e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.975411193750571e-01,-1.313341727730463e-01 -1.735624045506859e-03,6.692048588803416e-02 9.768279986490687e-01,-1.535034834638180e-01 1.632139929627888e-02,8.191376999712586e-02 6.732035880339979e-03,3.228882700180036e-02 5.576524962109990e-03,2.774614425454789e-02 -4.246367162584061e+01,8.834014634900464e+01 1.289580816705185e-04,-7.695852257730858e-05 4.241742195887668e+01,-8.839168615152421e+01 4.155006100224809e+01,-8.828920500462605e+01 -4.159647783492661e+01,8.823825901080492e+01 -1.188459074261379e+00,-1.313883341313264e-01 4.959468052131904e-01,-4.162858708836123e-02 1.189121677959750e+00,1.304914918007636e-01 6.445950746044963e-05,-3.853984760148869e-05 2.177768591174587e-04,3.768531474936466e-05 -2.314930109604436e-04,-6.382436124627126e-05 -2.458880624942944e-06,-1.313341727730463e-04 -4.177141564589328e+01,8.863986417971126e+01 4.172478367667647e+01,-8.869103265425138e+01 6.513571699027427e-03,3.240844454234704e-02 4.472146395343414e-05,-4.542169668350760e-05 1.092389350652612e-04,-8.387034828177679e-05 9.077692442971498e-01,4.076909608906912e-01 -9.070014541883866e-01,-4.083293376805254e-01 2.272516854528393e-01,1.868091065610517e-01 7.652540379011260e-01,-2.694069084243060e-01 -1.909186450057544e-03,7.361253447683758e-02 9.972952313125628e-01,-1.444675900503509e-01 72 1.584893192461115e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.912346160112363e-01,-1.776927046863662e-01 3.532831992048154e-03,9.654337609228826e-02 9.657687097075208e-01,-2.036590908096867e-01 2.620402838523918e-02,1.134694418907699e-01 9.943579613529135e-03,4.022190299451408e-02 8.335856500307834e-03,3.456311482603131e-02 -1.447773338749134e+01,8.857752948848510e+01 1.916429833253214e-04,-1.347176349427407e-04 1.441215464848620e+01,-8.862999936694214e+01 1.350338509390532e+01,-8.833994465409398e+01 -1.356914515918013e+01,8.828834838953469e+01 -1.336490575614982e+00,1.115000390387630e-01 4.951790706043673e-01,-5.244611155725085e-02 1.337393536372712e+00,-1.129145376174302e-01 9.577983881345392e-05,-6.747938451122486e-05 2.227632829444579e-04,4.673363391693458e-05 -2.430924878204538e-04,-7.534414607473193e-05 -8.765383988763653e-06,-1.776927046863662e-04 -1.361520180172045e+01,8.868668728394375e+01 1.354913807867495e+01,-8.873850397521603e+01 9.736565218747781e-03,4.037089909768657e-02 5.831272784010076e-05,-7.806885427904818e-05 1.542206591014651e-04,-1.453790883168621e-04 1.130497956108412e+00,1.986712997165953e-01 -1.129435946699245e+00,-1.997740291509314e-01 2.848970515224126e-01,2.102472898385029e-01 7.061355521419404e-01,-3.143168515328628e-01 3.886115191252970e-03,1.061977137015171e-01 9.903580776123600e-01,-1.954619751550029e-01 73 1.995262314968881e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.690267436767586e-01,-2.369378355491542e-01 2.409151271188656e-02,1.346602453382694e-01 9.370553802117802e-01,-2.655538487834007e-01 5.304756550940498e-02,1.518823793511258e-01 1.496504094188369e-02,4.979347390421479e-02 1.265022939892945e-02,4.278805474187178e-02 1.411076563505125e+01,7.622229592781490e+01 2.758237759813688e-04,-2.378547557045646e-04 -1.419988204940283e+01,-7.626824142817490e+01 -1.503980457766562e+01,-7.572672702871867e+01 1.495057536549431e+01,7.568206816243485e+01 -1.350056197263929e+00,4.838833763203549e-01 4.939574570019601e-01,-6.610540549202009e-02 1.351175999688638e+00,-4.861304266748244e-01 1.378193566799070e-04,-1.191675566320405e-04 2.305536240533339e-04,5.743406648119869e-05 -2.587808920903748e-04,-8.663166971500501e-05 -3.097325632324143e-05,-2.369378355491542e-04 1.503355696584958e+01,7.601812414343540e+01 -1.512319553330374e+01,-7.606296434188463e+01 1.477590018137291e-02,4.997790995588755e-02 6.647593794182828e-05,-1.310724207591973e-04 2.045802202603737e-04,-2.499379189090455e-04 1.240249554193022e+00,-1.654892769228439e-01 -1.238889799089583e+00,1.636096509264634e-01 3.628670508863316e-01,2.129522396420505e-01 6.258201329175055e-01,-3.441421284559175e-01 2.650066398307521e-02,1.481262698720963e-01 9.659294180444344e-01,-2.606316191040696e-01 74 2.511886431509582e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.207120762465312e-01,-2.996508192053984e-01 6.978142890931023e-02,1.706497132661265e-01 8.814444184906450e-01,-3.284980279556970e-01 1.056815032043692e-01,1.851263841500565e-01 2.275619169143287e-02,6.103402859207306e-02 1.934422199952387e-02,5.244716433911348e-02 3.347539998399774e+01,5.142702554033648e+01 3.790343890715556e-04,-4.191801640572218e-04 -3.358941326019095e+01,-5.145505364285966e+01 -3.419393622691940e+01,-5.069439935082367e+01 3.408007109326060e+01,5.066822178298117e+01 -1.119268839228961e+00,8.692699735659455e-01 4.920070474820903e-01,-8.338695833272234e-02 1.120438937031511e+00,-8.727997998579396e-01 1.893035040486003e-04,-2.100704246761878e-04 2.426250442588463e-04,6.955784948723739e-05 -2.789318398289959e-04,-9.656692675611214e-05 -7.928792375346875e-05,-2.996508192053984e-04 3.424604879579534e+01,5.088596202108110e+01 -3.436043051282314e+01,-5.091222654746206e+01 2.259471226470182e-02,6.126008000585223e-02 5.611250416456536e-05,-2.107455800756462e-04 2.460470660843632e-04,-4.203067463429435e-04 1.108398179689392e+00,-5.851912917934470e-01 -1.106868820026079e+00,5.820788396605976e-01 4.481033361669539e-01,1.778145447709879e-01 5.368355213282168e-01,-3.433322890747482e-01 7.675957180024125e-02,1.877146845927391e-01 9.127832838711844e-01,-3.296159011259382e-01 75 3.162277660168382e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 8.473996842866765e-01,-3.475797848101411e-01 1.388992872563901e-01,1.846664766607121e-01 8.021427730694826e-01,-3.741865161270539e-01 1.802224396360594e-01,1.931262699717944e-01 3.470141827158328e-02,7.362882133693222e-02 2.960716182251903e-02,6.326999903879332e-02 3.644549291558457e+01,2.389444162051347e+01 4.846131973257585e-04,-7.328604247404665e-04 -3.658003426522163e+01,-2.389024968428369e+01 -3.684247085307113e+01,-2.307629298513475e+01 3.670870261444547e+01,2.308300381280477e+01 -6.837987981248055e-01,1.064130914105325e+00 4.888725228984620e-01,-1.053245394325234e-01 6.845801441997024e-01,-1.069523653007634e+00 2.417914927409452e-04,-3.673978878231992e-04 2.610917045889298e-04,8.222349282220233e-05 -3.036748747612173e-04,-1.042090630660950e-04 -1.526003157133235e-04,-3.475797848101411e-04 3.688033281021427e+01,2.317386052040970e+01 -3.701469621521808e+01,-2.316707515273951e+01 3.458217665051340e-02,7.390152073857932e-02 4.446317599956819e-06,-3.182204654419657e-04 2.476196210007633e-04,-6.848389833708641e-04 7.427406611454073e-01,-8.526259082896518e-01 -7.414280504009549e-01,8.476785239914697e-01 5.134272486189290e-01,1.028460140282010e-01 4.654780511848870e-01,-3.119706141764917e-01 1.527892159820291e-01,2.031331243267833e-01 8.321396527153442e-01,-3.823377632911553e-01 76 3.981071705534976e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 7.663916811663523e-01,-3.702632656301324e-01 2.131367234660074e-01,1.640586370351084e-01 7.178379055089879e-01,-3.940301244337530e-01 2.568354103209707e-01,1.648624890706193e-01 5.268306205209718e-02,8.654661542665636e-02 4.505603900355711e-02,7.437049916718494e-02 2.733101199845797e+01,5.125409403733943e+00 5.400702548896301e-04,-1.268313961611276e-03 -2.747353168175702e+01,-5.074777337687777e+00 -2.744501005211996e+01,-4.394518945822998e+00 2.730446669358813e+01,4.448262249782955e+00 -2.520359288153760e-01,9.891041110089722e-01 4.837698545866743e-01,-1.333304640906430e-01 2.515296881630861e-01,-9.970181658685780e-01 2.687262531660136e-04,-6.361207095861123e-04 2.887807114655913e-04,9.324478737486673e-05 -3.335473559322351e-04,-1.091477546519565e-04 -2.336083188336477e-04,-3.702632656301324e-04 2.742784188282863e+01,4.456648817282215e+00 -2.756898825989342e+01,-4.402607602412630e+00 5.262699306788417e-02,8.686728417954209e-02 -1.220562403332173e-04,-4.416010542576168e-04 1.496488592195874e-04,-1.076755968178141e-03 3.355536265966530e-01,-8.588059289146884e-01 -3.352884086792603e-01,8.513120120456380e-01 5.406037073623357e-01,9.079199026638505e-03 4.284546414419543e-01,-2.739311454721453e-01 2.344503958126081e-01,1.804645007386192e-01 7.430308492829875e-01,-4.072895921931457e-01 77 5.011872336272728e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 6.948835026287044e-01,-3.754161416399641e-01 2.734574004540478e-01,1.133646661365098e-01 6.451179592851378e-01,-3.978198850826312e-01 3.168327001059388e-01,1.066116359114045e-01 7.900204840907778e-02,9.739779692748962e-02 6.766710857458060e-02,8.369558460632037e-02 1.607013778322023e+01,-2.667046689442997e+00 3.998149980750478e-04,-2.168399515265807e-03 -1.619898598639526e+01,2.773720445395902e+00 -1.602132393817054e+01,3.241553533643759e+00 1.589641724909447e+01,-3.131653635442314e+00 1.918857223319294e-02,7.610195790839106e-01 4.752549492684088e-01,-1.694132983195868e-01 -2.264074181590419e-02,-7.720656396442253e-01 1.963689064994408e-04,-1.088160562337024e-03 3.290025166904676e-04,9.799693574469149e-05 -3.708265885345777e-04,-1.111725360910761e-04 -3.051164973712956e-04,-3.754161416399641e-04 1.596513769733118e+01,-3.153827857658366e+00 -1.609053975407945e+01,3.264279500245761e+00 7.903749492042729e-02,9.775930259962699e-02 -3.663763988095422e-04,-5.437735603363945e-04 -1.637240115201034e-04,-1.631492305597430e-03 5.560803566926245e-02,-6.947430126594640e-01 -5.797120979745991e-02,6.839809868514546e-01 5.349914171165681e-01,-8.188829920674967e-02 4.175706265988997e-01,-2.548711301115801e-01 3.008031404994526e-01,1.247011327501608e-01 6.643718528915749e-01,-4.129577558039605e-01 78 6.309573444801939e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 6.370685071727152e-01,-3.785042242996822e-01 3.118544309539311e-01,4.319648075247901e-02 5.866485072341314e-01,-4.019051899138504e-01 3.532145402280474e-01,2.938225475842458e-02 1.158687284476388e-01,1.013926524345500e-01 9.933808568141292e-02,8.713051263931510e-02 8.054531638480601e+00,-3.990929358598414e+00 -3.251045811561368e-04,-3.622925587256759e-03 -8.139891369937007e+00,4.153211107699860e+00 -7.930811503149707e+00,4.431913976302600e+00 7.852104385000289e+00,-4.267483566706453e+00 1.287293069551101e-01,5.231260484166822e-01 4.603900627424636e-01,-2.165114619645129e-01 -1.381194981594472e-01,-5.375234778825700e-01 -1.727135996477535e-04,-1.818980894476627e-03 3.844541496422645e-04,8.756513140513928e-05 -4.212502634048652e-04,-1.084011783352136e-04 -3.629314928272848e-04,-3.785042242996822e-04 7.883775801559710e+00,-4.291330949434418e+00 -7.962721032756514e+00,4.456534216719788e+00 1.160302783411535e-01,1.017714159096058e-01 -7.745167931488973e-04,-5.394694671805949e-04 -9.345171861369888e-04,-2.361437140486678e-03 -7.734304214194358e-02,-4.981748197699521e-01 6.941636956493769e-02,4.837141224144097e-01 5.098326592727447e-01,-1.655928457366971e-01 4.137673237425325e-01,-2.652219125477488e-01 3.430398740493242e-01,4.751612882772691e-02 6.007753578899867e-01,-4.163546467296504e-01 79 7.943282347242823e+07,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 5.861774109944325e-01,-3.925671784301794e-01 3.260100701907319e-01,-4.068685425243518e-02 5.341974029483855e-01,-4.194132482722563e-01 3.639613310618855e-01,-6.162359222185865e-02 1.637633121255191e-01,8.974884971685596e-02 1.404791614295801e-01,7.713185265868662e-02 3.642515661921482e+00,-3.075966992911900e+00 -2.630909508318460e-03,-5.678014902351943e-03 -3.649272458921066e+00,3.276515884575447e+00 -3.467051193634863e+00,3.423913822277726e+00 3.469808573520013e+00,-3.224563795101614e+00 1.419060472337523e-01,3.405127997701268e-01 4.325023208391044e-01,-2.786365933890024e-01 -1.626880338516621e-01,-3.568890301418836e-01 -1.345685527232857e-03,-2.849709998705136e-03 4.537809788430315e-04,4.599305040998873e-05 -4.953231642827814e-04,-9.229509424293637e-05 -4.138225890055675e-04,-3.925671784301793e-04 3.482220279115419e+00,-3.241331245977997e+00 -3.479289637715779e+00,3.441542050444671e+00 1.640844605570638e-01,9.009263940980908e-02 -1.364127225843189e-03,-2.446703129672343e-04 -2.686724453173682e-03,-3.110582121296150e-03 -1.194622557951836e-01,-3.386788170965504e-01 1.004640934857558e-01,3.215260065173817e-01 4.694137876649786e-01,-2.494980557187050e-01 3.994533214645728e-01,-3.057231618780395e-01 3.586110772098051e-01,-4.475553967767870e-02 5.447951520938758e-01,-4.318238962731973e-01 80 1.000000000000001e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 5.261656402492228e-01,-4.257236522879864e-01 3.084654192549062e-01,-1.374661479714330e-01 4.699738462827589e-01,-4.582193067163378e-01 3.405982984731381e-01,-1.661726847071334e-01 2.164492211445144e-01,4.782894744326118e-02 1.857297808766319e-01,4.113046820010923e-02 1.562352476925503e+00,-1.918020464200771e+00 -8.751998579123694e-03,-7.132914075619846e-03 -1.458035019884728e+00,2.111340177739285e+00 -1.319627264172446e+00,2.178216124204485e+00 1.434428450394722e+00,-1.992851334633248e+00 1.126084734523630e-01,2.211802749124472e-01 3.754653430103650e-01,-3.583948848409625e-01 -1.540372414561762e-01,-2.321163685502719e-01 -4.462419128411591e-03,-3.558546601599225e-03 5.213507222632655e-04,-5.215225778609009e-05 -6.051915587618369e-04,-3.568317294978045e-05 -4.738343597507772e-04,-4.257236522879864e-04 1.438524619529920e+00,-2.002728005388791e+00 -1.323052161723484e+00,2.188764265526064e+00 2.169387302315340e-01,4.804179223733114e-02 -1.972344963076031e-03,7.129745602861327e-04 -6.406481737870796e-03,-2.902733544356121e-03 -1.247622734143982e-01,-2.251837971345018e-01 8.502987468385025e-02,2.122301219583510e-01 4.019591425869853e-01,-3.417842084167901e-01 3.540772131553026e-01,-3.737428659623817e-01 3.393119611803968e-01,-1.512127627685763e-01 4.787822042741451e-01,-4.682960175167850e-01 81 1.258925411794169e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 4.260015062322342e-01,-4.710755365503211e-01 2.355993517512960e-01,-2.372514251360172e-01 3.600118629375081e-01,-5.096287479666463e-01 2.567388194923520e-01,-2.732163669477922e-01 2.463699461566853e-01,-4.088580395703133e-02 2.114213566988249e-01,-3.505005326976555e-02 6.827259960084468e-01,-1.105695116765150e+00 -2.091897671499157e-02,-1.169307526211492e-03 -4.683245640054523e-01,1.202398570117613e+00 -3.736886612094143e-01,1.222995055488218e+00 5.927409106231526e-01,-1.143321241359510e+00 7.143325161164009e-02,1.597616872793220e-01 2.550947416340316e-01,-4.396469902916444e-01 -1.404094904436717e-01,-1.381913040321227e-01 -1.064150964297317e-02,-4.220069701601283e-04 5.297043058120129e-04,-2.296588921541381e-04 -7.359699227239855e-04,1.280467634106522e-04 -5.739984937677658e-04,-4.710755365503211e-04 5.937897805582277e-01,-1.148731865455912e+00 -3.737419244081159e-01,1.228467521813295e+00 2.469473686427098e-01,-4.093965983808065e-02 -1.663536845465649e-03,2.764034778560119e-03 -1.233834351659579e-02,2.197939923673616e-03 -1.216784245520963e-01,-1.372331502134774e-01 5.304493561844821e-02,1.552565123439715e-01 2.739082296905654e-01,-4.306300526215470e-01 2.422957001830683e-01,-4.493025904650043e-01 2.591592869264256e-01,-2.609765676496189e-01 3.686016568554576e-01,-5.181830902053532e-01 82 1.584893192461115e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 2.618758972876468e-01,-4.648109775476354e-01 8.890719986677555e-02,-2.760037285118894e-01 1.794982513544903e-01,-5.021608616450192e-01 9.283368148008453e-02,-3.114398938647532e-01 1.910778234567626e-01,-1.484264767548355e-01 1.639426352592552e-01,-1.273765073283913e-01 2.952046427542206e-01,-6.661315290661000e-01 -2.382848121928809e-02,2.653048007906724e-02 -9.329635335139710e-02,5.783865377864128e-01 -3.828425424722553e-02,5.779796618397320e-01 2.289106087990409e-01,-6.830472107262860e-01 5.639171315607652e-02,1.509269935961274e-01 5.599578966137246e-02,-4.346322833452324e-01 -1.067099654057146e-01,-4.865590712340491e-02 -1.185156400899696e-02,1.389405895772674e-02 3.678930946486164e-04,-4.112156261548334e-04 -7.420875223616778e-04,4.603767155442833e-04 -7.381241027123532e-04,-4.648109775476354e-04 2.288182925506554e-01,-6.860484688500083e-01 -3.759853769108356e-02,5.802946301098692e-01 1.914905997093605e-01,-1.487801128646333e-01 1.720738383234677e-03,4.182075799172287e-03 -1.042206247648072e-02,1.796153725004216e-02 -9.623358931548011e-02,-4.997982634639683e-02 4.309441482573757e-02,1.489871907492689e-01 6.872475190750015e-02,-4.305767903493921e-01 4.832620325344658e-02,-4.419701324573623e-01 9.779791985345310e-02,-3.036041013630783e-01 1.880634870164115e-01,-5.112920753023989e-01 83 1.995262314968882e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.421358194112044e-01,-3.468687139339583e-01 -1.970749433414033e-02,-1.945271037441310e-01 5.020661728627504e-02,-3.714139973859474e-01 -2.587596081308885e-02,-2.175279057133389e-01 8.055441877397538e-02,-1.596927758357288e-01 6.906352149709935e-02,-1.370365680203345e-01 6.853435709581640e-02,-3.893215045692465e-01 1.507098585459205e-02,3.977918266673097e-02 -3.096244860279516e-02,2.527738371594158e-01 -1.169148835408269e-03,2.508983687265999e-01 2.219790917682182e-02,-3.888349612021589e-01 9.612907030921109e-02,1.228360179993536e-01 -6.519348125718706e-02,-2.873219448427504e-01 -2.975507071990097e-02,-1.247811628939922e-02 8.628461516238974e-03,2.021708610060283e-02 1.362226678250266e-04,-3.827552002067684e-04 -4.551584819868672e-04,7.191473503087907e-04 -8.578641805887956e-04,-3.468687139339583e-04 2.162470944876553e-02,-3.902870255141817e-01 -7.514278376568387e-04,2.518131995049281e-01 8.066855292771231e-02,-1.600633938257071e-01 4.424405369518089e-03,2.840605284852213e-04 1.273624429169494e-02,2.083519326727862e-02 -2.412081343044125e-02,-1.310400208143299e-02 8.681808020916013e-02,1.236693805631554e-01 -5.748372954280742e-02,-2.855913978917260e-01 -7.043108756513317e-02,-2.929379587700672e-01 -2.167824376755436e-02,-2.139798141185441e-01 5.634940135232486e-02,-3.815555853273541e-01 84 2.511886431509583e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.181566617698822e-01,-2.446977396424008e-01 -3.653992824108775e-02,-1.214600514408743e-01 2.646708249645442e-02,-2.600746502186973e-01 -4.281149395257064e-02,-1.354753165623128e-01 3.081898421781170e-02,-1.211101669845118e-01 2.637572595514602e-02,-1.039090608574963e-01 -8.292558370385889e-03,-1.904068798255512e-01 3.287231615764093e-02,8.946809708054357e-03 -1.075306927063767e-02,1.266690316500963e-01 7.651275292864627e-03,1.243630481079001e-01 -3.521614660400836e-02,-1.834501246457638e-01 9.841251981327459e-02,5.470834896698023e-02 -6.707147063575151e-02,-1.783233776521905e-01 -3.719051804260701e-04,-3.613561130129656e-02 1.740213749203008e-02,3.513558665818907e-03 4.675084028716656e-05,-2.796249641848110e-04 -1.592376454608585e-04,7.263483166245260e-04 -8.818433382301178e-04,-2.446977396424008e-04 -3.567860025326164e-02,-1.839859466977579e-01 7.911509147346492e-03,1.247569564639673e-01 3.080774914306816e-02,-1.213693335316513e-01 1.838325066341645e-03,-2.267273597296255e-03 1.937285425077164e-02,1.674056190244361e-03 3.344927026343196e-03,-3.646968493043819e-02 9.298089913450934e-02,5.653917780661551e-02 -6.243502765009365e-02,-1.773569029548002e-01 -7.054613753970315e-02,-1.824014388946244e-01 -4.019392106519653e-02,-1.336060565849617e-01 2.997232794687038e-02,-2.691675136066409e-01 85 3.162277660168383e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.134846808695050e-01,-1.795347024982678e-01 -3.652344261096982e-02,-7.922818831353405e-02 2.290976789137535e-02,-1.898908477438837e-01 -4.188130375784092e-02,-8.828193036244495e-02 8.537758147307530e-03,-9.120955927778274e-02 7.259976870824192e-03,-7.823362496181245e-02 -1.828566730213016e-02,-8.859912046604422e-02 2.164054986685165e-02,-9.240979180861598e-03 2.413058475237867e-03,5.920313626524390e-02 1.271238999540501e-02,5.622046966773389e-02 -3.306470298482347e-02,-8.155677210772334e-02 7.072236662769386e-02,1.648597804928165e-02 -5.644917060809279e-02,-1.179993516502707e-01 -7.563702445594387e-03,-4.160135233972041e-02 1.074321376094725e-02,-5.978773450635187e-03 9.920653466802339e-06,-2.064705716538145e-04 3.533420350594418e-05,6.539143385323954e-04 -8.865153191304950e-04,-1.795347024982678e-04 -3.332502471015983e-02,-8.172231762910187e-02 1.286306408879628e-02,5.635509649918237e-02 8.479901049972462e-03,-9.137954710612060e-02 1.637158368823355e-05,-1.656597793958585e-03 1.108794055814282e-02,-7.472262025042643e-03 -5.221218007796553e-03,-4.207622104794785e-02 6.771099433021716e-02,1.818537328532171e-02 -5.367696548077552e-02,-1.173889860380890e-01 -5.871571218130367e-02,-1.210854230798314e-01 -4.017578687206681e-02,-8.715100714488745e-02 2.483314895645548e-02,-1.974881727480946e-01 86 3.981071705534977e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.155810015939383e-01,-1.337203855918022e-01 -3.119762035032493e-02,-5.124227901769976e-02 2.621899291554810e-02,-1.408916013291355e-01 -3.543976930578965e-02,-5.708037237082139e-02 -1.804883753298346e-03,-6.684156524854083e-02 -1.602316854589183e-03,-5.731255359207018e-02 -1.446338275215551e-02,-3.986191294510648e-02 1.022122893526299e-02,-1.237802994868720e-02 3.711284102913752e-03,2.371379176822687e-02 8.575113398470944e-03,2.144845906274727e-02 -2.213006292451737e-02,-3.428732188491035e-02 4.750132777189663e-02,8.475159583348992e-04 -4.377544511559813e-02,-7.868630439484507e-02 -1.345400628943360e-02,-3.255636755720235e-02 4.237687319477389e-03,-7.125275219809748e-03 -4.884893956631590e-06,-1.500741756502084e-04 1.608240981453025e-04,5.675338040275155e-04 -8.844189984060616e-04,-1.337203855918022e-04 -2.225417709239973e-02,-3.432291467327106e-02 8.640203396369907e-03,2.148169476290553e-02 -1.871560835437877e-03,-6.694302089791990e-02 -4.111057155682738e-04,-8.285300514824134e-04 4.107760306125054e-03,-8.004026293057109e-03 -1.212671511555649e-02,-3.301111132861525e-02 4.591105387832592e-02,2.209941583597758e-03 -4.214031001678655e-02,-7.820559623065051e-02 -4.528446799707415e-02,-8.107291830218820e-02 -3.431738238535742e-02,-5.636650691946974e-02 2.713910175333218e-02,-1.470924241509824e-01 87 5.011872336272728e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.199180106521734e-01,-1.023683749932121e-01 -2.442917430297429e-02,-3.353215006528476e-02 3.162539707682895e-02,-1.076324346513975e-01 -2.761790790399337e-02,-3.736104243082163e-02 -5.188164044473155e-03,-4.877994901583471e-02 -4.491024546664214e-03,-4.181076297213855e-02 -8.509081290274370e-03,-1.722964095218103e-02 3.589821260668802e-03,-1.057202412553913e-02 1.350441551199466e-03,7.680636601631616e-03 3.228460892320197e-03,6.647692338073336e-03 -1.223562875389402e-02,-1.348711347997480e-02 3.136943771439636e-02,-5.934009367792964e-03 -3.188218615847637e-02,-5.379947815370097e-02 -1.367663700571426e-02,-2.192231024207360e-02 6.693709566752289e-04,-5.531460507194331e-03 -7.631945952434066e-06,-1.096225097071043e-04 2.412785707354221e-04,4.902768407332244e-04 -8.800819893478266e-04,-1.023683749932121e-04 -1.228630115111845e-02,-1.348816359953573e-02 3.248077678533844e-03,6.653876814283062e-03 -5.245670123517424e-03,-4.883639977593165e-02 -3.757943498794287e-04,-3.633037430694934e-04 4.577674138198425e-04,-6.035324375249987e-03 -1.298621499372521e-02,-2.223886518325291e-02 3.060959854091691e-02,-4.941139908371981e-03 -3.089970208051208e-02,-5.336607271680563e-02 -3.292118012949620e-02,-5.566768407032144e-02 -2.687209173327172e-02,-3.688536507181324e-02 3.190981171739074e-02,-1.126052124925333e-01 88 6.309573444801940e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.236227867370522e-01,-8.107838421290696e-02 -1.864172588384399e-02,-2.244899450239947e-02 3.609230354898849e-02,-8.525219470799648e-02 -2.101422270742730e-02,-2.502380920783995e-02 -5.764698329439642e-03,-3.616993381843623e-02 -4.973053751675768e-03,-3.099189489484002e-02 -3.980215306870296e-03,-7.566123431007939e-03 2.309264802372602e-04,-7.907028668682771e-03 -5.904694588614149e-04,1.565433693993643e-03 -2.868500609817403e-05,1.550473975958488e-03 -5.828424902291975e-03,-5.368316213705162e-03 1.999496339040654e-02,-8.512484740187642e-03 -2.275666381729070e-02,-3.806583489474718e-02 -1.103621945429482e-02,-1.399500193052242e-02 -8.162257968525972e-04,-3.635446759581202e-03 -6.258599038722611e-06,-8.185532526441680e-05 2.953732128924492e-04,4.297368116188924e-04 -8.763772132629478e-04,-8.107838421290696e-05 -5.847145881402312e-03,-5.365428564987972e-03 -2.583049761429745e-05,1.552839163670614e-03 -5.808696705340518e-03,-3.619959219368073e-02 -2.608160863914697e-04,-1.481732249415406e-04 -1.014071042347203e-03,-3.929092820050624e-03 -1.069049847648212e-02,-1.416075680486068e-02 1.968045574115783e-02,-7.848023095872607e-03 -2.213514789311369e-02,-3.767517030507704e-02 -2.350994052025709e-02,-3.953161808193642e-02 -2.050589847222839e-02,-2.469389395263942e-02 3.598506541075740e-02,-8.918622263419766e-02 89 7.943282347242824e+08,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.258566274815207e-01,-6.648628775013495e-02 -1.432630073896042e-02,-1.523428747781515e-02 3.878282006550945e-02,-7.006113305683866e-02 -1.611752439202392e-02,-1.698920925250798e-02 -5.566708470947874e-03,-2.730979294951678e-02 -4.792939483445518e-03,-2.339331607444728e-02 -1.486684079237573e-03,-3.744522140456820e-03 -1.315791280826240e-03,-5.501784979897226e-03 -1.332922178203817e-03,-3.325807524175941e-04 -1.214535723441166e-03,2.139001230477187e-04 -2.586321491894379e-03,-2.528049504054320e-03 1.211603981401469e-02,-8.724561738826400e-03 -1.641193599658883e-02,-2.771525016854245e-02 -7.940842386464551e-03,-9.049125997568436e-03 -1.202618285658084e-03,-2.168126202396969e-03 -4.350796786795425e-06,-6.259003862225679e-05 3.354746769868190e-04,3.864478958888843e-04 -8.741433725184793e-04,-6.648628775013495e-05 -2.593468884595568e-03,-2.526666501169355e-03 -1.215573545896179e-03,2.161551408978337e-04 -5.598317085755403e-03,-2.732419249698282e-02 -1.660235644623525e-04,-5.691658020202809e-05 -1.366657769480763e-03,-2.337963159085682e-03 -7.759385067200212e-03,-9.108740690372142e-03 1.201409955940224e-02,-8.304920013282235e-03 -1.599205469207018e-02,-2.738154526024504e-02 -1.698894271408930e-02,-2.885596796462485e-02 -1.575893081285646e-02,-1.675771622559667e-02 3.844229022967275e-02,-7.313491652514845e-02 90 1.000000000000001e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.265774445922945e-01,-5.642551559091995e-02 -1.120586316508302e-02,-1.024623317529632e-02 3.970538440792027e-02,-5.970026241639926e-02 -1.258828495030661e-02,-1.143005380892219e-02 -5.286243532638915e-03,-2.082959216394470e-02 -4.544361467230607e-03,-1.783817462725194e-02 -4.047889497393722e-04,-2.237853085655770e-03 -1.877440266437552e-03,-3.573560556209034e-03 -1.322639687217330e-03,-7.609736233351070e-04 -1.308288163899328e-03,-1.780200247676302e-05 -1.237378392181950e-03,-1.507100126454965e-03 6.899119427819522e-03,-7.788661494748008e-03 -1.217961549303639e-02,-2.052575385997179e-02 -5.461616401463126e-03,-6.145107065937184e-03 -1.125511809158770e-03,-1.200125260971692e-03 -2.962959519397705e-06,-4.872301029148825e-05 3.695918930566072e-04,3.586798492791298e-04 -8.734225554077055e-04,-5.642551559091995e-05 -1.240608606591290e-03,-1.506679215605118e-03 -1.309470358259085e-03,-1.596355622503199e-05 -5.307969469198659e-03,-2.083559747402519e-02 -1.032890885639028e-04,-1.942488375118107e-05 -1.253791694692478e-03,-1.294130636408692e-03 -5.353892880736212e-03,-6.149508161747810e-03 6.888369489703396e-03,-7.531414035187323e-03 -1.187866248933653e-02,-2.025698200468423e-02 -1.264150354667074e-02,-2.140067127665459e-02 -1.232644948159133e-02,-1.127085649282595e-02 3.923518905152394e-02,-6.206806715001194e-02 91 1.258925411794169e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.259015976315787e-01,-4.949397812981013e-02 -8.862671246894294e-03,-6.607065174122695e-03 3.902099398185279e-02,-5.265267470849062e-02 -9.944833525812194e-03,-7.371109432559508e-03 -5.050153097271308e-03,-1.586071682038868e-02 -4.335916545088650e-03,-1.358039093938103e-02 -4.677261302848285e-05,-1.575132891184201e-03 -1.892110252548869e-03,-2.118558996537357e-03 -1.055292215183919e-03,-7.685709069550228e-04 -1.049472793288589e-03,-2.043860918468114e-05 -7.563354692351131e-04,-1.016512421188296e-03 3.570508333847224e-03,-6.457964091326880e-03 -9.370549345464703e-03,-1.526451971385787e-02 -3.767290314013462e-03,-4.389671109129186e-03 -9.019252863121236e-04,-6.069583450039570e-04 -2.167653965696196e-06,-3.832018714998609e-05 4.033266715303592e-04,3.438916497844776e-04 -8.740984023684213e-04,-4.949397812981014e-05 -7.580664634275204e-04,-1.016325425520830e-03 -1.050228613644862e-03,-1.921009542352203e-05 -5.064498677819631e-03,-1.586236064314350e-02 -6.412614099860774e-05,-3.867913738207271e-06 -9.976677971326978e-04,-6.542475731486839e-04 -3.694597758558710e-03,-4.373451009175215e-03 3.594183277167775e-03,-6.302775051555352e-03 -9.145442955991486e-03,-1.505949847312468e-02 -9.751173396132844e-03,-1.592267128695943e-02 -9.748938371583724e-03,-7.267771691534965e-03 3.849175739473654e-02,-5.444337594279115e-02 92 1.584893192461115e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.239339715667235e-01,-4.467859507973848e-02 -6.953203618632810e-03,-3.889129447363992e-03 3.686463970438850e-02,-4.782520078622867e-02 -7.795699496448457e-03,-4.337906028411440e-03 -4.805434819521066e-03,-1.190729876593414e-02 -4.121899281802651e-03,-1.019397794990416e-02 4.869733443086962e-07,-1.211225274863178e-03 -1.614036386773031e-03,-1.093381861441429e-03 -7.827082615987344e-04,-6.779172194465717e-04 -7.630987523305591e-04,4.927375461067534e-06 -5.884798813140611e-04,-6.711903738260096e-04 1.506719976852151e-03,-5.093331210925718e-03 -7.448213980670831e-03,-1.125255723888124e-02 -2.689850287800518e-03,-3.231762845263625e-03 -6.607635425203264e-04,-2.608254053333788e-04 -1.768783915926714e-06,-3.024724223229054e-05 4.408681631835854e-04,3.388857099069194e-04 -8.760660284332765e-04,-4.467859507973848e-05 -5.894672407371261e-04,-6.709997921987321e-04 -7.635279172537094e-04,5.672259137988589e-06 -4.814519201584034e-03,-1.190691456169540e-02 -3.959874515294306e-05,2.565491788813427e-06 -7.287630742662769e-04,-2.801766119655457e-04 -2.637098779209886e-03,-3.212622818321565e-03 1.539529709187058e-03,-5.001262210579338e-03 -7.275975987995612e-03,-1.110441757921545e-02 -7.765979330795215e-03,-1.173508362161579e-02 -7.648523980496091e-03,-4.278042392100391e-03 3.632736872339585e-02,-4.914645458771233e-02 93 1.995262314968882e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.207944574893070e-01,-4.113970979896826e-02 -5.271604175957440e-03,-1.912888807157585e-03 3.338084854861688e-02,-4.430974905817717e-02 -5.906817460052194e-03,-2.131729217977669e-03 -4.474841708005821e-03,-8.706152142015072e-03 -3.835791410884969e-03,-7.452723108569202e-03 -6.142216001549161e-05,-9.513759977372236e-04 -1.216074375418626e-03,-4.411009170016815e-04 -5.807263019482987e-04,-5.679638264709562e-04 -5.338932153154976e-04,3.201923146763712e-05 -4.911971579982344e-04,-3.908627556170336e-04 2.815579477400113e-04,-3.839526282314146e-03 -6.037001977403926e-03,-8.117374401700670e-03 -2.013393751487653e-03,-2.385827839936926e-03 -4.489381511177682e-04,-7.316284318507012e-05 -1.561573314961865e-06,-2.384482537561058e-05 4.852261717241004e-04,3.395922722709121e-04 -8.792055425106930e-04,-4.113970979896826e-05 -4.917429447192041e-04,-3.906638608583696e-04 -5.341258439463069e-04,3.245610309391303e-05 -4.480335432383567e-03,-8.705035241570321e-03 -2.395389862700006e-05,4.821045737013150e-06 -4.944688878714324e-04,-7.713665191505199e-05 -1.974554824140484e-03,-2.370540710906027e-03 3.126517091227597e-04,-3.786205567596283e-03 -5.905021862098079e-03,-8.016468765806432e-03 -6.301243269771639e-03,-8.459372245157653e-03 -5.798764593553184e-03,-2.104177687873344e-03 3.287390323823766e-02,-4.525368077886509e-02 94 2.511886431509583e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.167069677514458e-01,-3.814260926985069e-02 -3.759264004262094e-03,-6.043881308078416e-04 2.882636148522254e-02,-4.130879610008448e-02 -4.210511154652562e-03,-6.709507310955614e-04 -4.013238053211014e-03,-6.128777636839566e-03 -3.438592398139072e-03,-5.246069742708866e-03 -1.386942858880439e-04,-7.290590369588482e-04 -8.206345921642237e-04,-8.476864950560696e-05 -4.462115392947509e-04,-4.533961295779910e-04 -3.604151789208327e-04,5.542394718454757e-05 -3.854623732546381e-04,-1.799814735155612e-04 -3.786655226318522e-04,-2.755797342327757e-03 -4.897212633723546e-03,-5.660001440227169e-03 -1.564842703121809e-03,-1.721363412270625e-03 -2.826438068200251e-04,1.463529510625885e-05 -1.404808253883988e-06,-1.872038668759705e-05 5.377915437294777e-04,3.409365957969912e-04 -8.832930322485542e-04,-3.814260926985069e-05 -3.857414170142937e-04,-1.798132956801009e-04 -3.605338736896988e-04,5.567674075770907e-05 -4.016393413674411e-03,-6.127588711501690e-03 -1.394380710722848e-05,4.984563205349249e-06 -3.110988665440267e-04,1.774568148847653e-05 -1.536792811647690e-03,-1.711137909731055e-03 -3.533159715682705e-04,-2.725856871320219e-03 -4.797901083014658e-03,-5.595602192637998e-03 -5.112522908887614e-03,-5.892353085962684e-03 -4.135190404688304e-03,-6.648269438886258e-04 2.837766452659040e-02,-4.195687019683576e-02 95 3.162277660168383e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.120581936291807e-01,-3.511020342870458e-02 -2.467282843547072e-03,1.160213212373253e-04 2.363756153563656e-02,-3.819589339176832e-02 -2.762684460148956e-03,1.329609444892270e-04 -3.426149239942821e-03,-4.114584365684571e-03 -2.934727214418732e-03,-3.521819582543203e-03 -1.893351572600841e-04,-5.297585220542347e-04 -4.997892248212178e-04,6.751618422644435e-05 -3.534145297554412e-04,-3.401718611286368e-04 -2.294843015304271e-04,6.696185403982078e-05 -2.698663661953970e-04,-4.836271789806819e-05 -6.593213402226275e-04,-1.872288361488706e-03 -3.901279796222671e-03,-3.775051958974131e-03 -1.231144483544261e-03,-1.189901981386001e-03 -1.644330181709014e-04,4.385140569008960e-05 -1.228074453498376e-06,-1.462620616744037e-05 5.974532675113975e-04,3.373975082887519e-04 -8.879418063708193e-04,-3.511020342870458e-05 -2.699965121514315e-04,-4.824414070275496e-05 -2.295399068310788e-04,6.710494576099079e-05 -3.427861662609809e-03,-4.113605608833199e-03 -7.699622906110447e-06,4.157845157613311e-06 -1.809220191256803e-04,4.904198839656143e-05 -1.211515730521037e-03,-1.183778927212751e-03 -6.404094543410970e-04,-1.856023323650751e-03 -3.828922337722884e-03,-3.736645450441610e-03 -4.070963830187677e-03,-3.925383223268058e-03 -2.714011127901779e-03,1.276234533610579e-04 2.326401299209876e-02,-3.862122377157503e-02 96 3.981071705534977e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.073529475581816e-01,-3.172495860185652e-02 -1.473127019284669e-03,3.904313313236130e-04 1.838149686107104e-02,-3.463086935557884e-02 -1.649202941039745e-03,4.386417803780401e-04 -2.766993078869019e-03,-2.619524286860938e-03 -2.369681480078884e-03,-2.242079725694683e-03 -2.015791637016211e-04,-3.598398219428341e-04 -2.769639381474534e-04,1.034724085695437e-04 -2.801350702011550e-04,-2.372905952005979e-04 -1.348986806008049e-04,6.358696496489982e-05 -1.669686299471906e-04,1.390748966001130e-05 -7.010919694980973e-04,-1.200078815170642e-03 -3.008506873885804e-03,-2.392845129439087e-03 -9.542744308641766e-04,-7.786823666242264e-04 -8.844721603154406e-05,4.378843821648520e-05 -1.017953252478083e-06,-1.138659016372616e-05 6.601982023808040e-04,3.246223973715086e-04 -8.926470524418184e-04,-3.172495860185652e-05 -1.670243870592300e-04,1.398055439949896e-05 -1.349224238521778e-04,6.366525244600503e-05 -2.767868937954340e-03,-2.618825728832095e-03 -4.002157618104974e-06,3.026692734940066e-06 -9.729680225473897e-05,4.855893647777442e-05 -9.409628025354282e-04,-7.752815913886151e-04 -6.877999267566315e-04,-1.191502989589724e-03 -2.957746894581946e-03,-2.371346121857787e-03 -3.136901610542755e-03,-2.485242442933058e-03 -1.620439721213136e-03,4.294744644559744e-04 1.808824231399973e-02,-3.489745446204217e-02 97 5.011872336272729e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 1.030706761625573e-01,-2.796857080102375e-02 -8.004156194215358e-04,4.011600961563645e-04 1.359595622452371e-02,-3.060510408444536e-02 -8.959808854553276e-04,4.498354914111822e-04 -2.113749732105458e-03,-1.580953277134379e-03 -1.810026406031017e-03,-1.353130087092894e-03 -1.827339132708197e-04,-2.279997303273428e-04 -1.412117077931536e-04,8.877711804293525e-05 -2.159563893775467e-04,-1.536172328063272e-04 -7.268774062099950e-05,5.027923776533090e-05 -9.224073010370421e-05,3.141700203250803e-05 -6.153960535672260e-04,-7.268015694892771e-04 -2.229915999939562e-03,-1.439990256157145e-03 -7.157731813617761e-04,-4.808051880126388e-04 -4.423809902371015e-05,3.316619856228299e-05 -7.946352101577716e-07,-8.855297393710186e-06 7.202584438672156e-04,3.012572841790736e-04 -8.969293238374427e-04,-2.796857080102375e-05 -9.226310903328360e-05,3.145801960344429e-05 -7.269709609839231e-05,5.032057253167352e-05 -2.114172688712411e-03,-1.580502176584170e-03 -1.957774874256882e-06,1.988826946037303e-06 -4.865858079986651e-05,3.667283230476350e-05 -7.069725993021859e-04,-4.790082339497516e-04 -6.064256062764072e-04,-7.223823371374919e-04 -2.195536166387858e-03,-1.428558034125611e-03 -2.323104782350781e-03,-1.494068748571135e-03 -8.804571813636894e-04,4.412761057720010e-04 1.337774377881301e-02,-3.076542788112612e-02 98 6.309573444801941e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.952180856802659e-02,-2.404057691963921e-02 -3.998949442799919e-04,3.063585643941390e-04 9.629125718861305e-03,-2.635117946017613e-02 -4.476067281947228e-04,3.433025795035730e-04 -1.535618417188839e-03,-9.089662299232949e-04 -1.314869481277596e-03,-7.779703717875950e-04 -1.478720676971123e-04,-1.356776868955358e-04 -6.716893835992469e-05,6.150413432252925e-05 -1.596845134009271e-04,-9.293113725407621e-05 -3.613827668008259e-05,3.460080453048414e-05 -4.637866176883006e-05,2.832683275117820e-05 -4.829934149223000e-04,-4.185378108515421e-04 -1.588784230345077e-03,-8.263740311583936e-04 -5.163330897710454e-04,-2.812841010409684e-04 -2.078564924959988e-05,2.170675835492105e-05 -5.866017475784158e-07,-6.897616206519635e-06 7.724670454170757e-04,2.693718531120484e-04 -9.004781914319734e-04,-2.404057691963921e-05 -4.638728900525060e-05,2.834854871790631e-05 -3.614176327194727e-05,3.462203245713941e-05 -1.535812481672111e-03,-9.086959765782496e-04 -9.068403654512451e-07,1.207294487795262e-06 -2.286102556381414e-05,2.396978432645308e-05 -5.106192209040559e-04,-2.803628082051085e-04 -4.770982960825059e-04,-4.162942649353157e-04 -1.566124713629475e-03,-8.205052525295248e-04 -1.653930584303576e-03,-8.567088020490066e-04 -4.398844387079911e-04,3.369944208335530e-04 9.473989424829252e-03,-2.644463461160313e-02 99 7.943282347242825e+09,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.680030816285247e-02,-2.020932680058083e-02 -1.866526508128308e-04,2.002501621953458e-04 6.586716588556857e-03,-2.217671039263917e-02 -2.089123669522361e-04,2.243285479006351e-04 -1.070377423411068e-03,-5.020412969814631e-04 -9.164653271846095e-04,-4.296862222381257e-04 -1.103551665198062e-04,-7.670981388108067e-05 -3.025960959944418e-05,3.784394549971402e-05 -1.132197752819801e-04,-5.317315093178886e-05 -1.681582044329705e-05,2.150137092752178e-05 -2.168372412806935e-05,1.974779443700904e-05 -3.521924316847562e-04,-2.313136203817922e-04 -1.093734203175817e-03,-4.558762164733598e-04 -3.591180655705133e-04,-1.573065963947592e-04 -9.291064268947577e-06,1.295704669279796e-05 -4.134492358856295e-07,-5.390464791952851e-06 8.140903564655448e-04,2.330444595121191e-04 -9.031996918371475e-04,-2.020932680058083e-05 -2.168699275876352e-05,1.975892091089840e-05 -1.681708422037516e-05,2.151208975131540e-05 -1.070462816691296e-03,-5.018881894457235e-04 -4.016732027040033e-07,6.903347346887938e-07 -1.021830150768853e-05,1.429784673124460e-05 -3.554513243440943e-04,-1.568417233636421e-04 -3.483818894816815e-04,-2.301839801170124e-04 -1.079071017186237e-03,-4.529228211337617e-04 -1.137905170643194e-03,-4.723237088207335e-04 -2.053179158941139e-04,2.202751784148804e-04 6.480338979137720e-03,-2.223025948063891e-02 100 1.000000000000001e+10,0.000000000000000e+00 1.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 9.483529711610767e-02,-1.669235402189026e-02 -8.277309761351612e-05,1.189665995500220e-04 4.389833655246514e-03,-1.833093819892441e-02 -9.264160090633628e-05,1.332491573931315e-04 -7.228783234154670e-04,-2.688907046273443e-04 -6.189157308626085e-04,-2.301365836562282e-04 -7.782182031642701e-05,-4.172530281850990e-05 -1.309516561566889e-05,2.163122416602797e-05 -7.749931349225734e-05,-2.916405510739533e-05 -7.442257062422301e-06,1.242994671147808e-05 -9.614717647180290e-06,1.209294331799067e-05 -2.443793738411868e-04,-1.239155434404362e-04 -7.328237475369514e-04,-2.439778460647071e-04 -2.424580650495867e-04,-8.497670848561286e-05 -4.000923523152545e-06,7.278196713592443e-06 -2.813082302866379e-07,-4.228793448495135e-06 8.450250612461927e-04,1.963818970458497e-04 -9.051647028838923e-04,-1.669235402189026e-05 -9.615954698740845e-06,1.209855402178773e-05 -7.442713248294422e-06,1.243531516398349e-05 -7.229147212683183e-04,-2.688073932061957e-04 -1.719685281178826e-07,3.779899446729396e-07 -4.400092766521219e-06,8.028165758940774e-06 -2.401215285918440e-04,-8.474378311094858e-05 -2.419405226733400e-04,-1.233489335417720e-04 -7.234399939663438e-04,-2.425045339513250e-04 -7.620892634125618e-04,-2.526720251155722e-04 -9.105040737486774e-05,1.308632595050243e-04 4.318826827718433e-03,-1.836158942407928e-02 Title: rca3040 ckt - rca 3040 wideband amplifier Date: Mon May 1 17:03:02 PDT 1989 Plotname: transient Flags: real No. Variables: 33 No. Points: 113 Command: version SPICE 3c1 Alpha test Variables: 0 time time 1 V(1) voltage 2 V(2) voltage 3 V(3) voltage 4 V(30) voltage 5 V(31) voltage 6 V(5) voltage 7 V(6) voltage 8 V(9) voltage 9 V(8) voltage 10 V(14) voltage 11 V(12) voltage 12 V(15) voltage 13 V(16) voltage 14 V(17) voltage 15 V(10) voltage 16 V(7) voltage 17 V(11) voltage 18 V(13) voltage 19 vee#branch current 20 vcc#branch current 21 vin#branch current 22 q11#base voltage 23 q10#base voltage 24 q9#base voltage 25 q8#base voltage 26 q7#base voltage 27 q6#base voltage 28 q5#base voltage 29 q4#base voltage 30 q3#base voltage 31 q2#base voltage 32 q1#base voltage Values: 0 0.000000000000000e+00 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.879678990979995e-02 -2.879678990979995e-02 -8.274694284432794e-01 -8.274694284432794e-01 -5.051369608748544e+00 -4.199502956171693e+00 7.165327568137040e+00 1.608830063933703e+00 7.165327568137041e+00 6.388784174993997e+00 6.388784174993997e+00 7.846830865025989e-01 -1.654399526167893e+00 7.846830865025988e-01 8.044150319771842e-01 2.314952380495684e-02 -2.324698863853364e-02 -2.879678990979995e-05 7.164026582134915e+00 7.164026582134915e+00 -4.213918705241793e+00 8.009059160038063e-01 1.605320947962794e+00 1.602168334718480e+00 1.602168334718481e+00 -8.347207776861731e-01 -8.347207776861731e-01 -3.167646890077994e-02 -3.167646890077994e-02 1 2.000000000000000e-11 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.880875500819951e-02 -2.880875500819951e-02 -8.274828501854354e-01 -8.274828501854354e-01 -5.050143341515571e+00 -4.198452332050735e+00 7.165306931290368e+00 1.608836877312176e+00 7.165306931290362e+00 6.388780416619715e+00 6.388780416619731e+00 7.847238933549347e-01 -1.654465340799849e+00 7.847238933549376e-01 8.044178349627839e-01 2.315151441458922e-02 -2.324837955253378e-02 -2.880875500819951e-05 7.164022839839366e+00 7.164022839839350e+00 -4.212691540369927e+00 8.009061220381328e-01 1.605324022861372e+00 1.602209816874224e+00 1.602209816874221e+00 -8.347869102014971e-01 -8.347869102014971e-01 -3.168963050901946e-02 -3.168963050901946e-02 2 4.000000000000000e-11 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.881066989872446e-02 -2.881066989872445e-02 -8.274849953863899e-01 -8.274849953863899e-01 -5.050201939235911e+00 -4.198502374655648e+00 7.165305594792724e+00 1.608833893005714e+00 7.165305594792716e+00 6.388777121097202e+00 6.388777121097225e+00 7.847192802812964e-01 -1.654476158927176e+00 7.847192802812980e-01 8.044163475717510e-01 2.315141820598467e-02 -2.324850507912331e-02 -2.881066989872446e-05 7.164019541039540e+00 7.164019541039517e+00 -4.212749991842362e+00 8.009060408829861e-01 1.605322453795521e+00 1.602205150903266e+00 1.602205150903265e+00 -8.347974585779275e-01 -8.347974585779276e-01 -3.169173688859690e-02 -3.169173688859691e-02 3 8.000000000000000e-11 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.880800785397349e-02 -2.880800785397349e-02 -8.274820142643386e-01 -8.274820142643386e-01 -5.050274979982046e+00 -4.198564660161567e+00 7.165302105749604e+00 1.608840224784942e+00 7.165302105749595e+00 6.388771219004645e+00 6.388771219004662e+00 7.847079923375920e-01 -1.654453611971966e+00 7.847079923375956e-01 8.044201016389056e-01 2.315130068254844e-02 -2.324808097170574e-02 -2.880800785397349e-05 7.164013631491971e+00 7.164013631491954e+00 -4.212822743441498e+00 8.009062504062670e-01 1.605326353221758e+00 1.602193842254809e+00 1.602193842254805e+00 -8.347752827307326e-01 -8.347752827307327e-01 -3.168880863937083e-02 -3.168880863937083e-02 4 1.600000000000000e-10 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.881990287720959e-02 -2.881990287720956e-02 -8.274953546566533e-01 -8.274953546566532e-01 -5.050442993823092e+00 -4.198708189102916e+00 7.165297683702862e+00 1.608842941297051e+00 7.165297683702852e+00 6.388762387714753e+00 6.388762387714768e+00 7.846955093681216e-01 -1.654473199234760e+00 7.846955093681247e-01 8.044215825565490e-01 2.315102181295110e-02 -2.324807836836363e-02 -2.881990287720959e-05 7.164004782732479e+00 7.164004782732465e+00 -4.212990390149208e+00 8.009064191240852e-01 1.605327988209040e+00 1.602181364055830e+00 1.602181364055827e+00 -8.347942504908082e-01 -8.347942504908083e-01 -3.170189316493052e-02 -3.170189316493055e-02 5 3.200000000000000e-10 0.000000000000000e+00 1.500000000000000e+01 -1.500000000000000e+01 -2.883540229439737e-02 -2.883540229439737e-02 -8.275127740504937e-01 -8.275127740504937e-01 -5.050667826179458e+00 -4.198900408242626e+00 7.165293683292189e+00 1.608840656107524e+00 7.165293683292179e+00 6.388752977955844e+00 6.388752977955855e+00 7.846910740521840e-01 -1.654491736773681e+00 7.846910740521854e-01 8.044209543600880e-01 2.315064874606877e-02 -2.324793205594145e-02 -2.883540229439737e-05 7.163995336529937e+00 7.163995336529925e+00 -4.213214908672291e+00 8.009065883959680e-01 1.605327448395655e+00 1.602176880008420e+00 1.602176880008419e+00 -8.348115636822696e-01 -8.348115636822696e-01 -3.171894252383710e-02 -3.171894252383710e-02 6 6.400000000000000e-10 4.396811831786490e-03 1.500000000000000e+01 -1.500000000000000e+01 -2.806646450412676e-02 -2.879781912353988e-02 -8.271169627746019e-01 -8.274707654183898e-01 -5.050817991379465e+00 -4.199028970058710e+00 7.165274109284932e+00 1.608839260055771e+00 7.165303563247253e+00 6.388755678187986e+00 6.388735800728745e+00 7.846687561934744e-01 -1.654374605373307e+00 7.847174040397090e-01 8.044200765614719e-01 2.315049555293051e-02 -2.324637578660630e-02 -3.246327633591325e-05 7.163978083118063e+00 7.163997993707584e+00 -4.213365073266283e+00 8.009068767962273e-01 1.605326859790272e+00 1.602202322670775e+00 1.602155120955830e+00 -8.346959132557114e-01 -8.346880876193511e-01 -3.167760103589386e-02 -3.131279213771808e-02 7 1.280000000000000e-09 2.425992307954074e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.251078592286289e-02 -2.779762387070477e-02 -8.231032827636739e-01 -8.263416941233301e-01 -5.049939815526862e+00 -4.198276565115644e+00 7.164599137202639e+00 1.608885884755761e+00 7.166154136269138e+00 6.389442406374407e+00 6.388187162015076e+00 7.841874587662546e-01 -1.652509457358374e+00 7.854138560850614e-01 8.044408277874189e-01 2.315299652073211e-02 -2.324748029196762e-02 -4.677070900240364e-05 7.163428082269066e+00 7.164686302832753e+00 -4.212486238583991e+00 8.009102073411500e-01 1.605351518924622e+00 1.602867610589808e+00 1.601698372947575e+00 -8.328861308337981e-01 -8.327381539542386e-01 -3.057738625777525e-02 -2.718785682310326e-02 8 2.560000000000000e-09 6.029295416890247e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.011429981090022e-03 -2.223867115738311e-02 -8.057303714220453e-01 -8.199878961815599e-01 -5.045927569794173e+00 -4.194837157457516e+00 7.146582632185035e+00 1.608876696647864e+00 7.184691523987325e+00 6.406095928792324e+00 6.372038747863921e+00 7.789247423751349e-01 -1.641886634586603e+00 7.906444435418366e-01 8.044394402396600e-01 2.316447184769160e-02 -2.326491895511889e-02 -6.330438414999249e-05 7.147229203651733e+00 7.181391987878827e+00 -4.208468892918794e+00 8.009147528639142e-01 1.605354193024990e+00 1.607688818887354e+00 1.596831795478127e+00 -8.228212823306911e-01 -8.214670370815719e-01 -2.446253827312142e-02 -9.341868396089271e-03 9 4.495180709603402e-09 9.505875670628812e-02 1.500000000000000e+01 -1.500000000000000e+01 3.135835496540234e-02 -1.316502947530064e-02 -7.722180686665521e-01 -8.092991346209221e-01 -5.041835439563235e+00 -4.191331189352998e+00 6.999770372459092e+00 1.608576515862593e+00 7.329182407674583e+00 6.541975695407319e+00 6.234031040293193e+00 7.604071590388159e-01 -1.619597778490828e+00 8.081707840143115e-01 8.042916819379220e-01 2.318034183953058e-02 -2.328458882120119e-02 -6.370040174088579e-05 7.008717812818499e+00 7.317760828879429e+00 -4.204373802377920e+00 8.008811157052838e-01 1.605171010136900e+00 1.623087385706007e+00 1.580276658315635e+00 -8.030491534900290e-01 -7.968956437960239e-01 -1.448153242283070e-02 2.498831479131376e-02 10 8.365542128810205e-09 6.214246078590320e-02 1.500000000000000e+01 -1.500000000000000e+01 4.221506185614337e-02 -1.930232945702962e-02 -7.572398655596834e-01 -8.152835226354562e-01 -5.049324421346297e+00 -4.197762345522082e+00 6.147817201038456e+00 1.608130063400344e+00 8.171341877995086e+00 7.360551242149231e+00 5.405108587587548e+00 7.266790396790437e-01 -1.610028544637553e+00 8.423274307908945e-01 8.040644351026534e-01 2.317001762836479e-02 -2.325361003914724e-02 -1.992739892975982e-05 6.176166673937169e+00 8.139483382370277e+00 -4.211885612528434e+00 8.007481527381537e-01 1.604811422795335e+00 1.648790825798082e+00 1.552201386182384e+00 -8.022348776023520e-01 -7.821473849498739e-01 -2.123256240273258e-02 4.022232196316739e-02 11 1.191207409142421e-08 -4.292083990624548e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.339144100920532e-02 -4.337119511328150e-02 -8.173082796660618e-01 -8.429404985639976e-01 -5.061923319151703e+00 -4.208564584536011e+00 5.247475238512203e+00 1.607608139784369e+00 9.081943329583320e+00 8.268829588601602e+00 4.505892994792262e+00 7.379729518206662e-01 -1.651258074747976e+00 8.302237097604414e-01 8.038049994436452e-01 2.313122849932220e-02 -2.318435697716981e-02 1.952939889704016e-05 5.271996109814360e+00 9.051234081897810e+00 -4.224502996796473e+00 8.005638425580194e-01 1.604367427930631e+00 1.632220968779957e+00 1.565634170319034e+00 -8.463637665666970e-01 -8.223797643933932e-01 -4.770831462460965e-02 -2.143850111950130e-02 12 1.550552653955059e-08 -9.999984927815372e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.123171651872130e-02 -5.418913851574707e-02 -8.843459984124800e-01 -8.566869269358421e-01 -5.063276906433464e+00 -4.209712091330695e+00 5.014491149410617e+00 1.609226885704758e+00 9.335639720932624e+00 8.550613932827370e+00 4.248252228495501e+00 7.923304904477742e-01 -1.695404669702435e+00 7.789121224023782e-01 8.046050112351049e-01 2.311220062882535e-02 -2.319580473053295e-02 8.768132759432425e-06 5.012095012182041e+00 9.334339714330045e+00 -4.225843323941619e+00 8.007609409256837e-01 1.605371702451626e+00 1.587320736509174e+00 1.616862990475728e+00 -8.825843406137743e-01 -8.705820125310323e-01 -5.960805236732178e-02 -9.035490324277805e-02 13 1.928623379751489e-08 -3.721421763114142e-02 1.500000000000000e+01 -1.500000000000000e+01 -8.220802083902339e-02 -3.568569778253408e-02 -8.806752826769222e-01 -8.368342138385031e-01 -5.049558538496011e+00 -4.197937570134237e+00 5.750572841225939e+00 1.611001000943196e+00 8.592146653048794e+00 7.842528990538542e+00 4.952912976072352e+00 8.409820830776602e-01 -1.687304501775497e+00 7.377607295267781e-01 8.054995476484850e-01 2.313944276333555e-02 -2.328079482814240e-02 -4.499380320788197e-05 5.720267479262912e+00 8.624100769162858e+00 -4.212090280862649e+00 8.012763679814921e-01 1.606780771819638e+00 1.555498771893440e+00 1.658149381332615e+00 -8.657261105535882e-01 -8.696498832819832e-01 -3.925426756078749e-02 -8.670740115981158e-02 14 2.279450833656170e-08 6.600167474275117e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.276415012638840e-02 -1.054818316784317e-02 -8.164509858948241e-01 -8.078905783439918e-01 -5.039063753774513e+00 -4.188942293680142e+00 6.739734485176426e+00 1.608949955540530e+00 7.589559738089871e+00 6.843637954334836e+00 5.934853142266899e+00 8.282100759119539e-01 -1.641743330819065e+00 7.447536121514917e-01 8.044890150110904e-01 2.317593858627693e-02 -2.330011031409932e-02 -7.876582486913957e-05 6.707346469001984e+00 7.621372353299431e+00 -4.201583490606275e+00 8.012085066288458e-01 1.605689620023473e+00 1.566019146219601e+00 1.641218165869038e+00 -8.179338269735875e-01 -8.266126193547965e-01 -1.160300148462749e-02 -2.064073261330235e-02 15 2.529982067359842e-08 9.980231894117985e-02 1.500000000000000e+01 -1.500000000000000e+01 3.323828553663271e-02 -3.189429602923519e-03 -7.705767331256712e-01 -7.983725370833159e-01 -5.040281805611332e+00 -4.189997261327685e+00 7.175460286542369e+00 1.607678307069662e+00 7.148427166068687e+00 6.385419210660380e+00 6.385260607532099e+00 7.899995035690040e-01 -1.613095194176925e+00 7.765434053704878e-01 8.038384866540687e-01 2.318549057384130e-02 -2.328743253628101e-02 -6.656403340454714e-05 7.160185391056097e+00 7.160945114826435e+00 -4.202815728865606e+00 8.009133245696181e-01 1.604746291895158e+00 1.596367106777070e+00 1.604971202078603e+00 -7.916679076358386e-01 -7.950008755789394e-01 -3.508372563215871e-03 2.658188219617799e-02 16 2.817679516630727e-08 6.667625643179112e-02 1.500000000000000e+01 -1.500000000000000e+01 4.073246782062377e-02 -1.390929266859219e-02 -7.594528979744501e-01 -8.092216653607087e-01 -5.049738489511059e+00 -4.198117643514819e+00 7.064487385617472e+00 1.608543271753051e+00 7.252336903123591e+00 6.462340892460871e+00 6.301513786707795e+00 7.491137433603340e-01 -1.609787854387646e+00 8.190368897952575e-01 8.042594693784987e-01 2.317014517014534e-02 -2.326666229640430e-02 -2.594378861116735e-05 7.076528440492737e+00 7.237758211723839e+00 -4.212300612724065e+00 8.008077186062124e-01 1.605072086730336e+00 1.633580862822368e+00 1.569344024769667e+00 -7.942054004116141e-01 -7.865107164184985e-01 -1.530022193545141e-02 3.813808895950704e-02 17 3.040689993581881e-08 2.924407782874234e-03 1.500000000000000e+01 -1.500000000000000e+01 8.296035241678881e-03 -3.236818296964275e-02 -7.880951077275405e-01 -8.298522617735529e-01 -5.058789015596565e+00 -4.205880887498602e+00 6.601094437428922e+00 1.609039328855219e+00 7.713864222240824e+00 6.908323949125371e+00 5.853211224270456e+00 7.361888961774549e-01 -1.631951575973376e+00 8.349823254211386e-01 8.045215547568881e-01 2.314514275883159e-02 -2.323291199364948e-02 5.371627458804647e-06 6.626416930597704e+00 7.685428661115791e+00 -4.221368346958016e+00 8.008552268866136e-01 1.605379685373287e+00 1.644542257286841e+00 1.559896144140649e+00 -8.209716218106061e-01 -8.058724355777448e-01 -3.560500126660702e-02 8.833197987559346e-03 18 3.301208024762159e-08 -7.097852388417417e-02 1.500000000000000e+01 -1.500000000000000e+01 -5.103353957274805e-02 -5.169179285287261e-02 -8.444772141763813e-01 -8.524845712218792e-01 -5.064882970045456e+00 -4.211099631179551e+00 6.019639185728274e+00 1.608471050186203e+00 8.307927560370567e+00 7.502093146871235e+00 5.270720326945891e+00 7.507583822752040e-01 -1.671522837758091e+00 8.193667656280088e-01 8.042433174195984e-01 2.311876234732323e-02 -2.319233939217617e-02 1.994498431142612e-05 6.041021190573894e+00 8.281627804543709e+00 -4.227464017895683e+00 8.008225138396936e-01 1.605062746262519e+00 1.626764368203773e+00 1.575678180095579e+00 -8.612657351517079e-01 -8.451890248570679e-01 -5.686097213815987e-02 -4.903904114160544e-02 19 3.539973686056256e-08 -9.995039602954789e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.417165178347579e-02 -5.611977579146316e-02 -8.877075451768767e-01 -8.587493103602303e-01 -5.062405624232253e+00 -4.208963421961332e+00 5.808893901330131e+00 1.608678871275887e+00 8.535756556578110e+00 7.748458780900973e+00 5.042687520962858e+00 7.874035182444543e-01 -1.698888158791889e+00 7.820888962212763e-01 8.043340006589766e-01 2.311248998299966e-02 -2.319722564474073e-02 5.778744246072099e-06 5.811400794068371e+00 8.529189831707477e+00 -4.224968852537054e+00 8.008260402157309e-01 1.605160781058258e+00 1.593088917650146e+00 1.610162105972596e+00 -8.839929127476722e-01 -8.754278355158737e-01 -6.173175337060948e-02 -9.359377735886858e-02 20 3.809401110239842e-08 -6.859174244041997e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.952073645079530e-02 -4.287963779118740e-02 -8.962418349829916e-01 -8.449252099079736e-01 -5.052033446584530e+00 -4.200058118433966e+00 6.164034993597522e+00 1.609854777735304e+00 8.183408428666383e+00 7.425905142544014e+00 5.371087300869704e+00 8.315024665340497e-01 -1.698591827168488e+00 7.418955993402536e-01 8.049207573481062e-01 2.313048522164084e-02 -2.324627717458629e-02 -3.092899401037534e-05 6.140992505091242e+00 8.205769709066942e+00 -4.214567153733368e+00 8.010208848296381e-01 1.605946756942465e+00 1.559709444455289e+00 1.648570147747206e+00 -8.769874177697894e-01 -8.810329688289274e-01 -4.716760157030614e-02 -1.026136358518328e-01 21 4.053317743742339e-08 1.042281064455826e-03 1.500000000000000e+01 -1.500000000000000e+01 -6.347023384092264e-02 -2.235408784449443e-02 -8.643675449509841e-01 -8.219306423756434e-01 -5.042258388564630e+00 -4.191674179228572e+00 6.905051659850556e+00 1.609433832427778e+00 7.431685783764113e+00 6.691572644125259e+00 6.094303084677041e+00 8.473434459246699e-01 -1.671658694330932e+00 7.265747580702837e-01 8.047265444538716e-01 2.315783289259047e-02 -2.327531664361789e-02 -6.451251490537847e-05 6.867532378063129e+00 7.468713297678892e+00 -4.204774426272150e+00 8.010979959144546e-01 1.605822341199247e+00 1.549197836824996e+00 1.658389262600439e+00 -8.460596014109404e-01 -8.593604638053368e-01 -2.458949662894387e-02 -6.992148533146049e-02 22 4.314093244462784e-08 7.377109150837919e-02 1.500000000000000e+01 -1.500000000000000e+01 -5.174972874991858e-03 -5.038222458225757e-03 -8.091619201019918e-01 -8.015348330028319e-01 -5.038124433530955e+00 -4.188137378416643e+00 7.724644545405215e+00 1.607716559519545e+00 6.604366173504801e+00 5.861360363959774e+00 6.913958853188971e+00 8.265536822333374e-01 -1.633853635063799e+00 7.415127155144737e-01 8.038668371436340e-01 2.318031040867066e-02 -2.327340197845469e-02 -7.894606438337105e-05 7.690941696604228e+00 6.634771729142381e+00 -4.200643322075504e+00 8.008685682415387e-01 1.604727621659433e+00 1.565853175418000e+00 1.634977491276586e+00 -8.076115983795646e-01 -8.225353867789917e-01 -5.542044704048333e-03 -1.306957931332896e-02 23 4.528143272165937e-08 9.976434894155987e-02 1.500000000000000e+01 -1.500000000000000e+01 3.400514991061252e-02 -1.400472335588870e-03 -7.698731552119255e-01 -7.962064652939757e-01 -5.040997874023242e+00 -4.190612411010897e+00 8.104138317398403e+00 1.607704515489015e+00 6.222553565724246e+00 5.462566784640628e+00 7.310356060891259e+00 7.901616415938022e-01 -1.611047788156528e+00 7.754457386806691e-01 8.038419911508539e-01 2.318492199339191e-02 -2.327363893033353e-02 -6.575919903094734e-05 8.089250695864636e+00 6.233707221115089e+00 -4.203534244714538e+00 8.006950190661807e-01 1.604537210500135e+00 1.598196430447109e+00 1.601346017650823e+00 -7.872004108161494e-01 -7.960475329182739e-01 -1.540519569147757e-03 2.742923000751779e-02 24 4.768888314187439e-08 7.727347194879748e-02 1.500000000000000e+01 -1.500000000000000e+01 4.514111814025454e-02 -1.109563546487876e-02 -7.558919112046411e-01 -8.059226037343744e-01 -5.049022541965845e+00 -4.197504205818485e+00 7.991182292547097e+00 1.609465772019029e+00 6.328591724565070e+00 5.542678251391601e+00 7.225584866201159e+00 7.506174317655206e-01 -1.606909880014647e+00 8.198930170015924e-01 8.047199606523827e-01 2.317273983306388e-02 -2.327871695330857e-02 -3.213235380854294e-05 8.004532888137428e+00 6.313683666056942e+00 -4.211584096534303e+00 8.008283332454911e-01 1.605557331405579e+00 1.637895558661358e+00 1.567694148931412e+00 -7.883351071580644e-01 -7.861008205048405e-01 -1.220519901136664e-02 4.192788275940024e-02 25 4.950030760058518e-08 3.089250870399943e-02 1.500000000000000e+01 -1.500000000000000e+01 2.620705686498387e-02 -2.598633949166838e-02 -7.717491807979811e-01 -8.223332837475806e-01 -5.056376840682596e+00 -4.203813979380043e+00 7.549770297560670e+00 1.610181483612997e+00 6.763657275551416e+00 5.959842575554568e+00 6.802391562501477e+00 7.319838307163492e-01 -1.620988237236440e+00 8.427805464839761e-01 8.050958008366560e-01 2.315404142797002e-02 -2.326460566099196e-02 -4.685451839015559e-06 7.579872815201950e+00 6.732578394640963e+00 -4.218954127651725e+00 8.010367468596068e-01 1.606136887012954e+00 1.655862563366100e+00 1.553261601337256e+00 -8.072153884642887e-01 -7.965628402761617e-01 -2.858497344083522e-02 2.573851168108231e-02 26 5.180202162081223e-08 -3.977306864723920e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.214021038265851e-02 -4.610073274574862e-02 -8.167054559642841e-01 -8.454682681357644e-01 -5.063498575083830e+00 -4.209917423605673e+00 6.797156923556156e+00 1.608988756030509e+00 7.519615510984617e+00 6.705284321709265e+00 6.057829509655174e+00 7.309607603961171e-01 -1.653793263845493e+00 8.424222466692985e-01 8.045106107632282e-01 2.312826167835819e-02 -2.321997288928764e-02 1.763285826458069e-05 6.832198670040897e+00 7.481307802886557e+00 -4.226083159054755e+00 8.010631687928791e-01 1.605566685829626e+00 1.650553217740318e+00 1.555353007647360e+00 -8.438766303250135e-01 -8.272274928387486e-01 -5.071080602032348e-02 -2.037692455620044e-02 27 5.354057656797919e-08 -8.164438554785834e-02 1.500000000000000e+01 -1.500000000000000e+01 -6.319399534488360e-02 -5.604685950545786e-02 -8.565330366114201e-01 -8.575754381803758e-01 -5.064915254693028e+00 -4.211124557698053e+00 6.290991499279523e+00 1.607784240126170e+00 8.039511822897672e+00 7.230035777913650e+00 5.545126558626176e+00 7.482114180728267e-01 -1.680801015757007e+00 8.207685908587226e-01 8.038957874382885e-01 2.311513882504799e-02 -2.319130463342230e-02 1.845039020297474e-05 6.316942076491197e+00 8.008389659026430e+00 -4.227493132921004e+00 8.008916604155132e-01 1.604779668921575e+00 1.628360859729154e+00 1.572915514870397e+00 -8.701942087192568e-01 -8.546622544544098e-01 -6.165154545600364e-02 -6.134895632458613e-02 28 5.570430481989951e-08 -9.979408979278233e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.829707559193093e-02 -5.617307662777499e-02 -8.921229902226170e-01 -8.590026347295617e-01 -5.060615719024297e+00 -4.207425779737775e+00 6.003824010058137e+00 1.608094705878157e+00 8.344180095956512e+00 7.555297257279396e+00 5.238567140698839e+00 7.862216076779314e-01 -1.701792541054431e+00 7.811980121286373e-01 8.040323815245861e-01 2.311443294837298e-02 -2.319691698622442e-02 1.497014200851403e-06 6.008408227355558e+00 8.335242750543941e+00 -4.223172833880517e+00 8.007595719253614e-01 1.604794632294834e+00 1.592607633157944e+00 1.608666450859265e+00 -8.864489682124198e-01 -8.786230582528383e-01 -6.179038429055249e-02 -9.814737417184579e-02 29 5.789213963978714e-08 -7.306568271326079e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.018007770269483e-01 -4.356223296818209e-02 -8.982074132418006e-01 -8.457448226459237e-01 -5.051831419621285e+00 -4.199883930659663e+00 6.213195738868756e+00 1.609675818320568e+00 8.137114076082172e+00 7.375734317728621e+00 5.423512672686400e+00 8.269663014828830e-01 -1.699918748711985e+00 7.449468081900011e-01 8.048279099727524e-01 2.313023435284295e-02 -2.323862799673672e-02 -2.873509431368747e-05 6.193794304133861e+00 8.155341771929598e+00 -4.214363696461191e+00 8.009044627175603e-01 1.605741145200919e+00 1.562285268616244e+00 1.644544951136042e+00 -8.787420555623430e-01 -8.818682597232393e-01 -4.791845626500030e-02 -1.046742864583170e-01 30 5.981956488846206e-08 -2.121406949436189e-02 1.500000000000000e+01 -1.500000000000000e+01 -7.783597120393397e-02 -2.690891372213501e-02 -8.775101024551931e-01 -8.272314374167602e-01 -5.043968100328568e+00 -4.193138684825014e+00 6.755484272895443e+00 1.609885790067729e+00 7.585138343162078e+00 6.842502191953378e+00 5.947528364557697e+00 8.479183792271401e-01 -1.680646948881793e+00 7.264985303673218e-01 8.049535541851191e-01 2.315120748749865e-02 -2.326736579183145e-02 -5.662190170957208e-05 6.720106904531186e+00 7.620227437061660e+00 -4.206485018849224e+00 8.010599716504143e-01 1.606014629233989e+00 1.548368714678665e+00 1.660083535437354e+00 -8.555510658172766e-01 -8.675896663106324e-01 -2.959980509434851e-02 -8.349816137489118e-02 31 6.192475964904875e-08 4.328045127823370e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.297432354594993e-02 -1.021093516861742e-02 -8.358621042133440e-01 -8.079428127057278e-01 -5.038922567476809e+00 -4.188816796908222e+00 7.506030726506239e+00 1.608321421060932e+00 6.824750537801882e+00 6.087905947294036e+00 6.689931988213727e+00 8.433490965085669e-01 -1.650043954064343e+00 7.274847788420235e-01 8.041766118240014e-01 2.317211564289536e-02 -2.327063739680298e-02 -7.625477482418363e-05 7.465850445339829e+00 6.862463556745042e+00 -4.201436906088596e+00 8.009694781041514e-01 1.605137082981062e+00 1.552150539025778e+00 1.651090428331295e+00 -8.230458869211253e-01 -8.401402666811976e-01 -1.123202868547917e-02 -4.059980102836829e-02 32 6.352003823907948e-08 8.127011643290659e-02 1.500000000000000e+01 -1.500000000000000e+01 3.971451563323088e-03 -2.372201229688001e-03 -8.001434027392849e-01 -7.982994326185481e-01 -5.038627408999785e+00 -4.188571258283863e+00 8.014979498197302e+00 1.607209537044591e+00 6.313484064663443e+00 5.570061090383256e+00 7.203950883518499e+00 8.220603494806637e-01 -1.627308192942106e+00 7.441217339480308e-01 8.036053710789680e-01 2.318204317186184e-02 -2.326609232525627e-02 -7.729866486958350e-05 7.982168153878824e+00 6.342054860582297e+00 -4.201150108585580e+00 8.007509733225583e-01 1.604348707322751e+00 1.569119678778318e+00 1.629363495484649e+00 -8.006858967608152e-01 -8.167050100292427e-01 -2.609421352656801e-03 -3.758414923635262e-03 33 6.581040887054201e-08 9.952489040508656e-02 1.500000000000000e+01 -1.500000000000000e+01 4.100634726403993e-02 -2.158894175762704e-03 -7.624326616319518e-01 -7.966515715251665e-01 -5.043108600316177e+00 -4.192426241356925e+00 8.356690708929211e+00 1.608019125504632e+00 5.970351202463035e+00 5.205700599881524e+00 7.568057818716923e+00 7.800517599751572e-01 -1.607046099770930e+00 7.858259577267374e-01 8.039905706033037e-01 2.318294087742114e-02 -2.327162223212514e-02 -5.851854314104664e-05 8.348056179015639e+00 5.975383695279467e+00 -4.205652860535143e+00 8.006285531153535e-01 1.604624883014074e+00 1.608452473336228e+00 1.591488366681215e+00 -7.836314177381807e-01 -7.915111720888037e-01 -2.374783593338974e-03 3.515449294993526e-02 34 6.800574486960164e-08 7.058294410872750e-02 1.500000000000000e+01 -1.500000000000000e+01 4.428660825435549e-02 -1.382081091080722e-02 -7.562257673765176e-01 -8.087705184084493e-01 -5.050822752536570e+00 -4.199049737034179e+00 8.143038336213192e+00 1.610114506109454e+00 6.176312470262839e+00 5.386634498376144e+00 7.382140551044699e+00 7.448487743719795e-01 -1.608090070714166e+00 8.278702031102384e-01 8.050470596870321e-01 2.316914499600681e-02 -2.328114346898586e-02 -2.629633585437201e-05 8.161780810829746e+00 6.156719675236908e+00 -4.213389329803213e+00 8.008824821412353e-01 1.605940786366046e+00 1.645548863866518e+00 1.562253162992060e+00 -7.900036749742449e-01 -7.868773390545742e-01 -1.520289200188794e-02 4.165697466891829e-02 35 6.994844743475793e-08 1.724095695978202e-02 1.500000000000000e+01 -1.500000000000000e+01 1.885974208229462e-02 -3.070657089374212e-02 -7.783550326290360e-01 -8.275757086286298e-01 -5.058345687709940e+00 -4.205502690613531e+00 7.585738309803388e+00 1.610476144926890e+00 6.726746133917807e+00 5.918590849953729e+00 6.843128343593892e+00 7.276926614280773e-01 -1.626522246893474e+00 8.489488282348407e-01 8.052508951524629e-01 2.314836715083782e-02 -2.326359323237077e-02 1.618785122512595e-06 7.620858913785665e+00 6.691018361738586e+00 -4.220926600073711e+00 8.011385382970744e-01 1.606391036713671e+00 1.661155393805274e+00 1.549561697319136e+00 -8.136193996981319e-01 -8.015700136620421e-01 -3.377722798311634e-02 1.902162059454588e-02 36 7.197942260456357e-08 -4.482210711301268e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.633125277840821e-02 -4.811509642228394e-02 -8.207365550020114e-01 -8.477629989155670e-01 -5.063907197948080e+00 -4.210267246671034e+00 6.860705254107706e+00 1.608845077042804e+00 7.456544328791586e+00 6.640516750284477e+00 6.123042334601563e+00 7.295077347452093e-01 -1.657043450349708e+00 8.440426647424689e-01 8.044406266674334e-01 2.312627873772623e-02 -2.321954144057830e-02 1.849085433460447e-05 6.897749169092062e+00 7.416211639572674e+00 -4.226491764348138e+00 8.011151096191127e-01 1.605545895546114e+00 1.651983300506306e+00 1.553968729638275e+00 -8.472689996868224e-01 -8.304125196436852e-01 -5.292660606451233e-02 -2.448216734494777e-02 37 7.347218711246359e-08 -8.038502996396832e-02 1.500000000000000e+01 -1.500000000000000e+01 -6.194132017638671e-02 -5.638685405795083e-02 -8.553405647790119e-01 -8.579032945331337e-01 -5.064847531066884e+00 -4.211066642479995e+00 6.385198601392250e+00 1.607595087650116e+00 7.944641791430970e+00 7.133037529051881e+00 5.641410804480945e+00 7.448121084880441e-01 -1.680375339389106e+00 8.240553437740475e-01 8.037996362931950e-01 2.311542914863427e-02 -2.319313032133858e-02 1.844370978758161e-05 6.413757601101165e+00 7.910947218638909e+00 -4.227425485967417e+00 8.009202661065469e-01 1.604710794891773e+00 1.631470792979189e+00 1.569581621050497e+00 -8.700141031617061e-01 -8.541001291699757e-01 -6.202553946374591e-02 -6.009694919762855e-02 38 7.568070925082543e-08 -9.983889319939979e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.821595107127428e-02 -5.636531728357328e-02 -8.920327713343131e-01 -8.592196064189675e-01 -5.060466156135401e+00 -4.207297317404008e+00 6.037264822958601e+00 1.607884959473198e+00 8.311387026485399e+00 7.520883058925403e+00 5.273364721636709e+00 7.839820005949414e-01 -1.701870941544080e+00 7.827721829274184e-01 8.039249681736031e-01 2.311465015863703e-02 -2.319528015067207e-02 1.622942128125511e-06 6.043429072414309e+00 8.300668372445412e+00 -4.223022785485270e+00 8.007333383390302e-01 1.604661617429911e+00 1.593965505024204e+00 1.606564270302626e+00 -8.867388919995432e-01 -8.785438600522147e-01 -6.200184901193060e-02 -9.805365685846173e-02 39 7.777906761339587e-08 -7.544436740901961e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.025317366859465e-01 -4.425539670284334e-02 -8.987527589947244e-01 -8.465143387394119e-01 -5.052120493410906e+00 -4.200131870829021e+00 6.199758603355244e+00 1.609591599819332e+00 8.151713381556497e+00 7.388303932278418e+00 5.411880618553083e+00 8.244162045827156e-01 -1.700526727637088e+00 7.469404493667537e-01 8.047845534827539e-01 2.312948972397812e-02 -2.323513257294238e-02 -2.708736927692694e-05 6.182145252992860e+00 8.167931927590389e+00 -4.214653299050825e+00 8.008644929761131e-01 1.605658982632159e+00 1.563895344373676e+00 1.642379881485565e+00 -8.796982152114890e-01 -8.820987351699693e-01 -4.868093637312767e-02 -1.052404736136392e-01 40 7.963937125751424e-08 -2.670923438992991e-02 1.500000000000000e+01 -1.500000000000000e+01 -8.103918568908008e-02 -2.824380795507819e-02 -8.803867818273678e-01 -8.287606353888337e-01 -5.044508247167824e+00 -4.193601657415668e+00 6.697738118311498e+00 1.610019643686691e+00 7.644316875865199e+00 6.900300818648794e+00 5.891253315856551e+00 8.469990473578859e-01 -1.682824021237596e+00 7.274924673875675e-01 8.050200592663413e-01 2.314941021926524e-02 -2.326523451488816e-02 -5.432995129915017e-05 6.663583939364951e+00 7.678242723137213e+00 -4.207025786654336e+00 8.010437489790192e-01 1.606066233871511e+00 1.549002009863180e+00 1.659676236362707e+00 -8.580140145877937e-01 -8.693380753789985e-01 -3.106818875058601e-02 -8.647218081899510e-02 41 8.166122181425186e-08 3.567704892569912e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.915872527479987e-02 -1.176265701444088e-02 -8.417142640388883e-01 -8.098021266541634e-01 -5.039294155741591e+00 -4.189134485858686e+00 7.419838188496149e+00 1.608566850512335e+00 6.911742151733971e+00 6.175307405377629e+00 6.603641749094114e+00 8.458804132755463e-01 -1.653867091646242e+00 7.257304323104421e-01 8.043011702197572e-01 2.316990450013778e-02 -2.327073554396250e-02 -7.483577420049899e-05 7.379171569164540e+00 6.950265267425487e+00 -4.201807977637795e+00 8.009975943056726e-01 1.605289958364307e+00 1.550237199551840e+00 1.653889351006727e+00 -8.269133402436699e-01 -8.438890950582670e-01 -1.293892271588497e-02 -4.664230269484977e-02 42 8.317532697363993e-08 7.449625868752809e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.572579007041865e-03 -3.403240584120797e-03 -8.075311502576962e-01 -7.996597944428957e-01 -5.038509009725080e+00 -4.188468041464746e+00 7.934747555717739e+00 1.607285293743710e+00 6.393902572991009e+00 5.652855319933393e+00 7.121424776294020e+00 8.278287993365481e-01 -1.631644957712032e+00 7.390348784259941e-01 8.036466356999653e-01 2.318041420614394e-02 -2.326558598405090e-02 -7.806883769456995e-05 7.899264373128389e+00 6.425299335319017e+00 -4.201029547814055e+00 8.007920052083896e-01 1.604429442587158e+00 1.564175803687130e+00 1.634816569631809e+00 -8.047405545602389e-01 -8.215667829763206e-01 -3.743564642532877e-03 -1.137946277649886e-02 43 8.509086993186908e-08 9.917511279379070e-02 1.500000000000000e+01 -1.500000000000000e+01 3.293742822125841e-02 -7.233006173966672e-04 -7.709982851621428e-01 -7.954478914994472e-01 -5.041288109390837e+00 -4.190861707722126e+00 8.335484713052367e+00 1.607495613536394e+00 5.992609279366613e+00 5.235660332066806e+00 7.538477481741873e+00 7.932352186433408e-01 -1.610999253551859e+00 7.716821933753290e-01 8.037300105309325e-01 2.318437287079951e-02 -2.326835419326769e-02 -6.623768457253229e-05 8.318246439525387e+00 6.005670281815399e+00 -4.203825431791428e+00 8.006093480845569e-01 1.604341711924698e+00 1.595455569480815e+00 1.602858164220627e+00 -7.862337006248221e-01 -7.973618343456209e-01 -7.956306791363339e-04 2.631365976400518e-02 44 8.705032238442271e-08 8.837182335995189e-02 1.500000000000000e+01 -1.500000000000000e+01 4.801505719305674e-02 -7.686539003881026e-03 -7.539204681584047e-01 -8.021717266969051e-01 -5.047397790294224e+00 -4.196110186454270e+00 8.320445445370900e+00 1.609457055008774e+00 6.002774637609793e+00 5.223260565113982e+00 7.548624172649369e+00 7.573890527745144e-01 -1.604539015180431e+00 8.126169481647354e-01 8.047119415767154e-01 2.317657778125493e-02 -2.328045875484592e-02 -4.035676616689515e-05 8.328768199645748e+00 5.992696384198942e+00 -4.209955834284902e+00 8.007504774480184e-01 1.605474344070400e+00 1.632631411253692e+00 1.572297421710861e+00 -7.840593888409026e-01 -7.855806403416449e-01 -8.455192904269128e-03 4.397938057636722e-02 45 8.867208427404479e-08 5.432108366327665e-02 1.500000000000000e+01 -1.500000000000000e+01 3.910629066226180e-02 -1.984918964632434e-02 -7.602333607130110e-01 -8.153300880088842e-01 -5.053776946669636e+00 -4.201584856352855e+00 7.977590277676768e+00 1.610682057767729e+00 6.337945270320989e+00 5.539424888311011e+00 7.226044020089864e+00 7.348380945975603e-01 -1.612513779442567e+00 8.407297100923199e-01 8.053441056279120e-01 2.316213258983340e-02 -2.327975814926308e-02 -1.521479300101484e-05 8.005195682974447e+00 6.310118556170522e+00 -4.216350435789464e+00 8.010277953898906e-01 1.606379966183596e+00 1.656183557973641e+00 1.554257346595320e+00 -7.966773256877159e-01 -7.895046922057661e-01 -2.183410861095678e-02 3.758481136216032e-02 46 9.067266660699423e-08 -5.421821575889439e-03 1.500000000000000e+01 -1.500000000000000e+01 4.584281736341568e-03 -3.825173602514561e-02 -7.914643045155956e-01 -8.361442742685202e-01 -5.060993871940038e+00 -4.207773019946143e+00 7.284875642795538e+00 1.609954286364059e+00 7.026909646223439e+00 6.212062682102277e+00 6.547931309195748e+00 7.231129586187991e-01 -1.636703327251122e+00 8.534457197628927e-01 8.049974840629663e-01 2.313953936799799e-02 -2.324801866427297e-02 1.000610331223101e-05 7.324510594447014e+00 6.985791890654122e+00 -4.223578422308679e+00 8.011983610787252e-01 1.606190319681833e+00 1.663101560858972e+00 1.546595110088571e+00 -8.260440701643475e-01 -8.104770638156548e-01 -4.207690962766017e-02 5.584892067564668e-03 47 9.256950836503640e-08 -6.053099726330452e-02 1.500000000000000e+01 -1.500000000000000e+01 -4.034790063669589e-02 -5.273422178587083e-02 -8.341964151683292e-01 -8.532425793967071e-01 -5.064717005870124e+00 -4.210959365912275e+00 6.581581218661345e+00 1.607992768257145e+00 7.739986766346934e+00 6.922505151225802e+00 5.844220621329014e+00 7.315150833241415e-01 -1.666588487562787e+00 8.396949161871131e-01 8.040086097883686e-01 2.312101554185209e-02 -2.320418166341231e-02 2.018309662660863e-05 6.617647553567630e+00 7.699423904060935e+00 -4.227300183270806e+00 8.010322324857508e-01 1.605028910970156e+00 1.646257254948268e+00 1.556711085968312e+00 -8.577009662951068e-01 -8.395269227180626e-01 -5.800764396445791e-02 -3.832959097403503e-02 48 9.432198014394468e-08 -9.322962965607866e-02 1.500000000000000e+01 -1.500000000000000e+01 -7.860112504168664e-02 -5.849023925602923e-02 -8.718319690352541e-01 -8.607946573108944e-01 -5.063891546403619e+00 -4.210242254301804e+00 6.097133618805778e+00 1.607220633828049e+00 8.241583479773672e+00 7.434730857776332e+00 5.348287050688285e+00 7.561789702899452e-01 -1.690844128017047e+00 8.104861178008726e-01 8.036003624358655e-01 2.311294974725951e-02 -2.318461305272945e-02 1.462850461439202e-05 6.119058887705868e+00 8.213949584458788e+00 -4.226462572406917e+00 8.007772696594911e-01 1.604373139665220e+00 1.618052395315265e+00 1.580912557581690e+00 -8.797334456090897e-01 -8.649814734250552e-01 -6.433926318163215e-02 -7.713827458024743e-02 49 9.622879085068587e-08 -9.739037824920649e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.023999696523956e-01 -5.418193824633825e-02 -8.966414434997420e-01 -8.570791259310024e-01 -5.058450334188497e+00 -4.205565828975739e+00 5.922706664165594e+00 1.608420884904242e+00 8.429621336257072e+00 7.645427671054860e+00 5.153518176959054e+00 7.947771395387680e-01 -1.703605043647691e+00 7.730129552045648e-01 8.041905922202698e-01 2.311741947340000e-02 -2.320352122576623e-02 -5.009591403189118e-06 5.922811792010211e+00 8.425784948730295e+00 -4.221000347838134e+00 8.007161063973258e-01 1.604914842448053e+00 1.585125768548542e+00 1.616764574949848e+00 -8.873910599600682e-01 -8.810581012270046e-01 -5.960013207097207e-02 -1.029009287927145e-01 50 9.768050803067213e-08 -7.744020905284159e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.034754847413788e-01 -4.460455921934082e-02 -8.995355852404487e-01 -8.469336104410982e-01 -5.052227234764813e+00 -4.200223311147731e+00 6.076590080427444e+00 1.609874848958597e+00 8.275738061231045e+00 7.511923896329980e+00 5.289570398252184e+00 8.247183554000224e-01 -1.701071870977183e+00 7.474408655301073e-01 8.049287986447358e-01 2.312906553155083e-02 -2.323659468182717e-02 -2.603527568853719e-05 6.059188017046429e+00 8.292030692508783e+00 -4.214760104467486e+00 8.008730440828165e-01 1.605812728252458e+00 1.563924268273213e+00 1.643155571654108e+00 -8.806136827542738e-01 -8.822471621228135e-01 -4.906501514127490e-02 -1.060790123102325e-01 51 9.938278456036552e-08 -3.438215913104228e-02 1.500000000000000e+01 -1.500000000000000e+01 -8.577652318215596e-02 -2.983247357940074e-02 -8.846749784160984e-01 -8.306108183056546e-01 -5.045188047702707e+00 -4.194184151869263e+00 6.538698896636758e+00 1.610316578541146e+00 7.804333434059576e+00 7.060084856076013e+00 5.732935380968739e+00 8.484023864363620e-01 -1.685845573422931e+00 7.270697424591747e-01 8.051717986546266e-01 2.314702473450397e-02 -2.326578928003006e-02 -5.139436405111367e-05 6.504473417691046e+00 7.838677293208250e+00 -4.207706160079282e+00 8.010871813014236e-01 1.606261066091452e+00 1.548100184843843e+00 1.661718385579458e+00 -8.613637728573070e-01 -8.718813654308187e-01 -3.281572093734081e-02 -9.091595958726732e-02 52 1.012164561735267e-07 2.231856561537443e-02 1.500000000000000e+01 -1.500000000000000e+01 -4.977799302678763e-02 -1.428827918552623e-02 -8.517335822485252e-01 -8.128377383849815e-01 -5.039971452186876e+00 -4.189713677490557e+00 7.228787778011269e+00 1.608853015607950e+00 7.103183249426728e+00 6.368598927107728e+00 6.411391062243439e+00 8.516482275952916e-01 -1.660306716572597e+00 7.212939651310573e-01 8.044465468108258e-01 2.316608267706362e-02 -2.327273602650023e-02 -7.209655864216207e-05 7.186013506866684e+00 7.144445890181385e+00 -4.202484493254116e+00 8.010763358865631e-01 1.605513145964931e+00 1.545573762868564e+00 1.660001435409210e+00 -8.333642187049391e-01 -8.503280712232467e-01 -1.571710710407885e-02 -5.698764889100384e-02 53 1.026212371406389e-07 6.181651646454436e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.657362016211059e-02 -5.292167007831873e-03 -8.201676488759236e-01 -8.021054088736704e-01 -5.038516758984277e+00 -4.188472012309231e+00 7.770774590213806e+00 1.607334646532997e+00 6.557237101288153e+00 5.820782207844035e+00 6.953109848131550e+00 8.381746968196818e-01 -1.639044753350561e+00 7.297986134450686e-01 8.036747625085374e-01 2.317726071418635e-02 -2.326590328222420e-02 -7.839013662665494e-05 7.730158909052664e+00 6.594118858888897e+00 -4.201034185896091e+00 8.008712910017696e-01 1.604534475210304e+00 1.555184043945110e+00 1.644597651472120e+00 -8.116563299344836e-01 -8.299077085080488e-01 -5.821383708615060e-03 -2.441263382477608e-02 54 1.043219382415032e-07 9.322915351062471e-02 1.500000000000000e+01 -1.500000000000000e+01 2.032950820914043e-02 -2.864784810664960e-04 -7.838769815829261e-01 -7.954384100273209e-01 -5.039860623341880e+00 -4.189633640526882e+00 8.266685747488463e+00 1.606934809590564e+00 6.061456404018487e+00 5.313467344771496e+00 7.459982935129727e+00 8.094221509704971e-01 -1.617480125608043e+00 7.549053996659716e-01 8.034520976759123e-01 2.318401786935905e-02 -2.326331408244798e-02 -7.289964530148429e-05 8.239305413452857e+00 6.084076868916814e+00 -4.202391007345775e+00 8.006129279612085e-01 1.604063395850975e+00 1.579848427488096e+00 1.616934365824647e+00 -7.912876213198215e-01 -8.061506200702214e-01 -3.151263291731456e-04 1.303954367899200e-02 55 1.061250290714387e-07 9.807834985903523e-02 1.500000000000000e+01 -1.500000000000000e+01 4.457575151132330e-02 -3.132816482020495e-03 -7.585149795900794e-01 -7.974922764680408e-01 -5.044409797859166e+00 -4.193544304089959e+00 8.454600002840361e+00 1.608522352137874e+00 5.872165126134640e+00 5.104547243174625e+00 7.669600424652380e+00 7.741655987141274e-01 -1.605166499434932e+00 7.928310594791484e-01 8.042399881897742e-01 2.318146224209962e-02 -2.327344532844556e-02 -5.350259834771194e-05 8.450041029593949e+00 5.873608469757805e+00 -4.206958796010212e+00 8.006112063271102e-01 1.604862056871058e+00 1.615197664702337e+00 1.586023730754758e+00 -7.821777439075054e-01 -7.890982652184671e-01 -3.446098130222544e-03 3.922549167655210e-02 56 1.075128666529382e-07 8.066344587533877e-02 1.500000000000000e+01 -1.500000000000000e+01 4.804516418084922e-02 -1.087502751023899e-02 -7.531844734346827e-01 -8.054986303020482e-01 -5.049390742845402e+00 -4.197821297200645e+00 8.322839100349127e+00 1.610227731031519e+00 5.998406372616085e+00 5.213291512526582e+00 7.557544814060606e+00 7.495866351588048e-01 -1.605300282040025e+00 8.230087089655091e-01 8.051049202962646e-01 2.317279207685398e-02 -2.328366150640551e-02 -3.261828169448955e-05 8.337809260686897e+00 5.982535328484548e+00 -4.211954470103305e+00 8.008339252603762e-01 1.605951908426512e+00 1.642000759099862e+00 1.565659366083521e+00 -7.859691136816278e-01 -7.852139660705126e-01 -1.196253026126289e-02 4.478333601140027e-02 57 1.091678480665145e-07 4.063975547664443e-02 1.500000000000000e+01 -1.500000000000000e+01 3.304233881715435e-02 -2.483189772245946e-02 -7.654423934706931e-01 -8.208197564675108e-01 -5.056006464419882e+00 -4.203497575288071e+00 7.882239663510097e+00 1.610948490304621e+00 6.431012431259441e+00 5.626632518651306e+00 7.136712822991452e+00 7.287914925851529e-01 -1.617279595053167e+00 8.486793270926120e-01 8.054880703918893e-01 2.315627315934668e-02 -2.327644657057982e-02 -7.597416659490074e-06 7.915595528007806e+00 6.397648730556844e+00 -4.218584556861148e+00 8.011437283246537e-01 1.606635430946164e+00 1.662611965337510e+00 1.549409740863903e+00 -8.029510569274698e-01 -7.932178351809760e-01 -2.731508749470540e-02 3.228259715120535e-02 58 1.109517719099830e-07 -1.414523185669047e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.533684830810808e-03 -4.145489527986916e-02 -7.971907560051719e-01 -8.397883671340909e-01 -5.061946868896262e+00 -4.208589812052986e+00 7.202773095761429e+00 1.609581916308901e+00 7.109044963510187e+00 6.291511133278505e+00 6.468085910686517e+00 7.210615574645010e-01 -1.641229791107255e+00 8.551000158337663e-01 8.048131789469308e-01 2.313603568063948e-02 -2.324214464955563e-02 1.261154702587966e-05 7.244363037682675e+00 7.065565907176908e+00 -4.224532463398295e+00 8.012266428544162e-01 1.606030215865595e+00 1.663815260781276e+00 1.545072539927291e+00 -8.313810567428150e-01 -8.145862904493319e-01 -4.560038480785608e-02 -2.725301282228420e-04 59 1.123061501772295e-07 -5.374571494760309e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.444432953020241e-02 -5.196802851552871e-02 -8.285577872529790e-01 -8.522335844458520e-01 -5.064481767041621e+00 -4.210758722792869e+00 6.658945604398009e+00 1.607906993505388e+00 7.660711597427751e+00 6.841071145707194e+00 5.923824962734874e+00 7.270438535467862e-01 -1.663156805341020e+00 8.443829898265016e-01 8.039645763216036e-01 2.312278298575732e-02 -2.320781833335920e-02 1.930138541740069e-05 6.697675243616754e+00 7.617599950436025e+00 -4.227065825251602e+00 8.010627410256296e-01 1.605014194965519e+00 1.650661729046124e+00 1.552362410506187e+00 -8.547292048559673e-01 -8.358614566674971e-01 -5.716483136708158e-02 -3.251419098846234e-02 60 1.138919324042654e-07 -8.750828572890989e-02 1.500000000000000e+01 -1.500000000000000e+01 -7.092070346353869e-02 -5.835259704479890e-02 -8.642034973541900e-01 -8.604008770200001e-01 -5.064247780170281e+00 -4.210549769921638e+00 6.143019236274988e+00 1.606981376618876e+00 8.192774096360211e+00 7.381038391608589e+00 5.398776666646098e+00 7.475442767227471e-01 -1.686365083822615e+00 8.190737946675640e-01 8.034795958681703e-01 2.311404008499983e-02 -2.318429166280383e-02 1.658758226537120e-05 6.169902039336588e+00 8.159970660436421e+00 -4.226821761158330e+00 8.007821811488886e-01 1.604256269883616e+00 1.625552081554405e+00 1.572831937975051e+00 -8.765139246473648e-01 -8.598160000577973e-01 -6.418785674927879e-02 -6.926194523700157e-02 61 1.156394278514369e-07 -9.990408216228153e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.815379693841774e-02 -5.644959614479399e-02 -8.919084846245979e-01 -8.593649253174702e-01 -5.060088037173382e+00 -4.206972684891455e+00 5.865845566554996e+00 1.607931182547551e+00 8.485337916337139e+00 7.693053196260547e+00 5.103840354914370e+00 7.824422567561618e-01 -1.701783226291604e+00 7.841391827703352e-01 8.039445235667328e-01 2.311526161509821e-02 -2.319324460720901e-02 1.750285223863796e-06 5.873026331574322e+00 8.473489469219112e+00 -4.222643603618299e+00 8.006540792344322e-01 1.604605991012176e+00 1.594307939322378e+00 1.605727635536062e+00 -8.875040351874967e-01 -8.778480259297564e-01 -6.209455575927339e-02 -9.797876841603136e-02 62 1.170597725216232e-07 -8.823248627747214e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.053975006115411e-01 -4.867361126337374e-02 -9.005786579303986e-01 -8.513416990997185e-01 -5.054523229468580e+00 -4.202193867574331e+00 5.915274126110350e+00 1.609571192846257e+00 8.439218934046485e+00 7.667393587411528e+00 5.135645635703997e+00 8.140580996754626e-01 -1.703419529831911e+00 7.567505262991609e-01 8.047723424653595e-01 2.312419071619818e-02 -2.322417346437921e-02 -1.716501433406892e-05 5.904589659089762e+00 8.447995358170654e+00 -4.217061781705344e+00 8.007810771417444e-01 1.605565996392543e+00 1.571256253412078e+00 1.634256390894334e+00 -8.847746963878854e-01 -8.828550776698846e-01 -5.354097238971111e-02 -1.071140020449479e-01 63 1.185922427470190e-07 -5.640973127692379e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.672437589132670e-02 -3.632087914246351e-02 -8.942402923874080e-01 -8.378907584685598e-01 -5.048081010593422e+00 -4.196665238892517e+00 6.240676763108275e+00 1.610592963199462e+00 8.107332282181946e+00 7.356141830898773e+00 5.442192506820027e+00 8.417597890368609e-01 -1.694162563612610e+00 7.335701473567194e-01 8.053043206324451e-01 2.313880479325512e-02 -2.325704480787432e-02 -4.031464461440291e-05 6.212364350933838e+00 8.135813346483995e+00 -4.210604154498262e+00 8.010292638914872e-01 1.606340280518709e+00 1.552660318723559e+00 1.657485969043880e+00 -8.713032193096838e-01 -8.780362101284783e-01 -3.995296705670986e-02 -1.007558403527670e-01 64 1.203669094368143e-07 -4.179945201666986e-03 1.500000000000000e+01 -1.500000000000000e+01 -6.843598725182194e-02 -2.070736940970397e-02 -8.690541687746070e-01 -8.203020117947342e-01 -5.041954008422358e+00 -4.191411614653466e+00 6.867883033975803e+00 1.609753365202727e+00 7.467830849849290e+00 6.731776154436987e+00 6.053315485492164e+00 8.553134133330067e-01 -1.672742732338041e+00 7.200421085583329e-01 8.048982091487988e-01 2.315769212276702e-02 -2.327438061757253e-02 -6.425604205015495e-05 6.826275897748961e+00 7.509148173928061e+00 -4.204467741876904e+00 8.011558317526511e-01 1.606047574372843e+00 1.543169548404692e+00 1.665558248353026e+00 -8.465500188848375e-01 -8.614503636547800e-01 -2.277810635067437e-02 -7.486159145683743e-02 65 1.218715810834434e-07 4.176840738924726e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.473919930479690e-02 -9.297419893588578e-03 -8.375852462662698e-01 -8.069929431365817e-01 -5.039045089611302e+00 -4.188921738415705e+00 7.484480449863646e+00 1.607948723108672e+00 6.844217302035195e+00 6.110960990473284e+00 6.664592473767766e+00 8.485907463129862e-01 -1.650160576842375e+00 7.220265627398600e-01 8.039895565631396e-01 2.317175510893793e-02 -2.326962699429388e-02 -7.650760669404416e-05 7.440330541657146e+00 6.885693058521333e+00 -4.201559481355065e+00 8.010096612203824e-01 1.604986164757643e+00 1.547144034934209e+00 1.655424701304786e+00 -8.226839215634623e-01 -8.412087849842465e-01 -1.022716188294744e-02 -4.238995997420131e-02 66 1.233742560665061e-07 7.851722187586663e-02 1.500000000000000e+01 -1.500000000000000e+01 6.272871992851089e-04 -1.947590626062766e-03 -8.034590456696665e-01 -7.979161882094304e-01 -5.038756808175368e+00 -4.188681901703106e+00 8.036399645811729e+00 1.606752368456482e+00 6.290983021821121e+00 5.551567323696500e+00 7.220977450123974e+00 8.278829552626107e-01 -1.628486844254521e+00 7.376028922554768e-01 8.033705374218017e-01 2.318122171266541e-02 -2.326226664961760e-02 -7.788993467658152e-05 7.999196997327433e+00 6.323555484922754e+00 -4.201279343879811e+00 8.007312278484564e-01 1.604093514932730e+00 1.563217285011658e+00 1.633953886301837e+00 -8.012238290762593e-01 -8.191202045745719e-01 -2.142349688669043e-03 -7.161706268373043e-03 67 1.251688817168306e-07 9.945943936789190e-02 1.500000000000000e+01 -1.500000000000000e+01 3.408056177742014e-02 -4.484088765555786e-04 -7.698348226703051e-01 -7.950626071167307e-01 -5.041678853725524e+00 -4.191197619135337e+00 8.435393602639657e+00 1.607408571595096e+00 5.892881507419937e+00 5.137119843929467e+00 7.637040556780281e+00 7.936363946163473e-01 -1.610030609364210e+00 7.708372953001325e-01 8.036823782903451e-01 2.318405892292063e-02 -2.326495364172071e-02 -6.537887759047176e-05 8.417178994865109e+00 5.906630101847263e+00 -4.204217787799755e+00 8.005458845925803e-01 1.604233861251764e+00 1.595025608803264e+00 1.602590606989129e+00 -7.849322738896880e-01 -7.969289224296856e-01 -4.932497642111365e-04 2.754267401837297e-02 68 1.268802407789288e-07 9.074526454289738e-02 1.500000000000000e+01 -1.500000000000000e+01 4.817108497146367e-02 -6.703569456519305e-03 -7.540069506457912e-01 -8.010889548087717e-01 -5.046961166067734e+00 -4.195735544233301e+00 8.454196098399441e+00 1.609489529378228e+00 5.870325111100348e+00 5.093929887679686e+00 7.679256609445465e+00 7.608403032436884e-01 -1.604124692123188e+00 8.089517745630493e-01 8.047281214277502e-01 2.317749636532277e-02 -2.327930034014212e-02 -4.257417957143371e-05 8.459864886558391e+00 5.862721866597201e+00 -4.209518239369728e+00 8.006961781957675e-01 1.605438232390105e+00 1.629836020514386e+00 1.574713170049902e+00 -7.828181133938840e-01 -7.860659269093453e-01 -7.373926402171235e-03 4.391366701432030e-02 69 1.284612306259952e-07 5.975950425181240e-02 1.500000000000000e+01 -1.500000000000000e+01 4.173012279589526e-02 -1.828145353714373e-02 -7.579740926107764e-01 -8.135402712248581e-01 -5.053145869019035e+00 -4.201043665640894e+00 8.151200140377396e+00 1.610944393814462e+00 6.165494439485478e+00 5.369525819036284e+00 7.397520211811242e+00 7.369487232377261e-01 -1.610715358314525e+00 8.390667477494498e-01 8.054758886453923e-01 2.316400369336081e-02 -2.328329458118805e-02 -1.802938145591713e-05 8.177320278545724e+00 6.139363843579363e+00 -4.215718306546047e+00 8.010149791523503e-01 1.606500405012314e+00 1.655513031759517e+00 1.555509292809026e+00 -7.939786428578241e-01 -7.884010062330341e-01 -2.010959889085810e-02 3.992718465030355e-02 70 1.303181124888798e-07 5.711055577017071e-03 1.500000000000000e+01 -1.500000000000000e+01 1.230784694242924e-02 -3.548112368259264e-02 -7.842997202441990e-01 -8.328919431620041e-01 -5.060060633446231e+00 -4.206973503325635e+00 7.515558003165028e+00 1.610427138026610e+00 6.795562633516525e+00 5.982210863470018e+00 6.778009402636592e+00 7.226407479701332e-01 -1.631764645579935e+00 8.552077397658635e-01 8.052352242641764e-01 2.314322872518038e-02 -2.325898188082422e-02 6.596791365412169e-06 7.555551886995770e+00 6.754842069027020e+00 -4.222644559577385e+00 8.012479938743544e-01 1.606478582341254e+00 1.665975004073908e+00 1.545426001459558e+00 -8.202384003430823e-01 -8.060087129136725e-01 -3.902923605085191e-02 1.296752607897046e-02 71 1.321799595926138e-07 -5.036122346448492e-02 1.500000000000000e+01 -1.500000000000000e+01 -3.086588852314219e-02 -5.077494007542982e-02 -8.250707672347123e-01 -8.507993759742400e-01 -5.064332680262703e+00 -4.210631503074611e+00 6.786336954987413e+00 1.608314193488825e+00 7.531623689497115e+00 6.712533908813789e+00 6.051261250176354e+00 7.266285764297655e-01 -1.660676677126357e+00 8.461108307050226e-01 8.041727067782265e-01 2.312405069909114e-02 -2.321467120462999e-02 1.949533494134272e-05 6.825692566161739e+00 7.488496468649138e+00 -4.226917228273728e+00 8.011251845632058e-01 1.605284669914658e+00 1.652990156478250e+00 1.551632544113866e+00 -8.518186116266533e-01 -8.335859733277032e-01 -5.585243408297280e-02 -2.891635502900792e-02 72 1.338188645864167e-07 -8.637437194886793e-02 1.500000000000000e+01 -1.500000000000000e+01 -6.882209606991764e-02 -5.808879874115624e-02 -8.620938972585755e-01 -8.600134984433636e-01 -5.064490025429661e+00 -4.210758164603052e+00 6.251457935266702e+00 1.607105023548389e+00 8.082115127947589e+00 7.269999103566298e+00 5.507767089085852e+00 7.461746193885852e-01 -1.685031245414937e+00 8.211546923209356e-01 8.035464016018841e-01 2.311416555501779e-02 -2.318751030240098e-02 1.755227587895029e-05 6.279458088979963e+00 8.048468097895877e+00 -4.227065173266822e+00 8.008488864511626e-01 1.604387466399515e+00 1.627948995757809e+00 1.571280150005387e+00 -8.750037530832697e-01 -8.585760022970519e-01 -6.389767861527187e-02 -6.706686848202261e-02 73 1.356711405198122e-07 -9.985549901010434e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.800188912630109e-02 -5.657719707444875e-02 -8.917746111280053e-01 -8.594769658982293e-01 -5.060239105564461e+00 -4.207102404884621e+00 5.950064834869855e+00 1.607811796133552e+00 8.399834527848581e+00 7.607452447291796e+00 5.188003092541028e+00 7.818771799518869e-01 -1.701797755947871e+00 7.845482221442395e-01 8.038852478720144e-01 2.311502011060530e-02 -2.319350193729467e-02 1.853609883803244e-06 5.957650236362722e+00 8.387552199879091e+00 -4.222795121002695e+00 8.006840812417697e-01 1.604574955465321e+00 1.595011721105893e+00 1.604955860039126e+00 -8.872964400671805e-01 -8.780181941247546e-01 -6.223491678189363e-02 -9.781652813792077e-02 74 1.373286225049715e-07 -8.394756879463477e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.046331935139175e-01 -4.724148283177263e-02 -9.001757408238534e-01 -8.497847046574635e-01 -5.053645038284462e+00 -4.201440146086231e+00 6.023826566955536e+00 1.609542662717500e+00 8.329520833685036e+00 7.560276720937202e+00 5.241617716992554e+00 8.172359008093835e-01 -1.702623936992621e+00 7.535993885936446e-01 8.047582526412714e-01 2.312602921799093e-02 -2.322774809328155e-02 -2.068562471928277e-05 6.011090070845497e+00 8.340498173508072e+00 -4.216181409253469e+00 8.008054382976862e-01 1.605575562768945e+00 1.568950659075404e+00 1.636702840624766e+00 -8.832263413611780e-01 -8.827544931750254e-01 -5.196563111494990e-02 -1.067017559858458e-01 75 1.389550694140232e-07 -4.665217332961762e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.189669614876389e-02 -3.364541960773092e-02 -8.900328805152735e-01 -8.348818090949684e-01 -5.046796190488972e+00 -4.195563331511063e+00 6.397850968912510e+00 1.610416291625979e+00 7.948036760083164e+00 7.199229628561887e+00 5.596700880154362e+00 8.436433709584510e-01 -1.690640944722980e+00 7.313906775210514e-01 8.052167082472038e-01 2.314240023507374e-02 -2.326001919859020e-02 -4.524452281914627e-05 6.367635410063940e+00 7.978313230249278e+00 -4.209317089025848e+00 8.010332764992997e-01 1.606255514293725e+00 1.551322486814327e+00 1.658372245126935e+00 -8.670956116523081e-01 -8.753888928337377e-01 -3.700996156850401e-02 -9.642114843067851e-02 76 1.407944945433841e-07 9.238625919201212e-03 1.500000000000000e+01 -1.500000000000000e+01 -5.910703737970020e-02 -1.760604699779222e-02 -8.604098245732569e-01 -8.166936302481938e-01 -5.040902349220119e+00 -4.190510788521535e+00 7.053987607740297e+00 1.609358213449282e+00 7.279895202782871e+00 6.544019800352904e+00 6.238549222074681e+00 8.527912842769876e-01 -1.666640652112593e+00 7.213347436223216e-01 8.047001660380546e-01 2.316195664499011e-02 -2.327362931654263e-02 -6.834566329890141e-05 7.012392966423229e+00 7.320601383201491e+00 -4.203415546174642e+00 8.011053059448747e-01 1.605798027110517e+00 1.544981223420628e+00 1.662220549371340e+00 -8.401326647375822e-01 -8.558826264981758e-01 -1.936665169757144e-02 -6.594160370959034e-02 77 1.422625933028980e-07 5.258677694192959e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.511135391032680e-02 -7.244414627322915e-03 -8.283688470364689e-01 -8.044880733504267e-01 -5.038700924215837e+00 -4.188628272882483e+00 7.628702067127634e+00 1.607699748050764e+00 6.699597125192094e+00 5.964174214831101e+00 6.810482472341785e+00 8.426022453248620e-01 -1.644374641457700e+00 7.267287308879602e-01 8.038620950242437e-01 2.317475664919019e-02 -2.326807847088088e-02 -7.769813085225639e-05 7.586900169200468e+00 6.738197771275219e+00 -4.201216703584890e+00 8.009375280193813e-01 1.604787419432236e+00 1.551908189466459e+00 1.649379872020030e+00 -8.170168166978263e-01 -8.351777821823924e-01 -7.968856090055206e-03 -3.288116699555244e-02 78 1.438350455324618e-07 8.662942300938040e-02 1.500000000000000e+01 -1.500000000000000e+01 1.075546777592713e-02 -9.822578462844874e-04 -7.934393229189008e-01 -7.965384342647310e-01 -5.039167855495866e+00 -4.189036862162385e+00 8.140760449135406e+00 1.606858565494956e+00 6.186925286713207e+00 5.443010757304231e+00 7.329888989502250e+00 8.184820622230409e-01 -1.622865978610933e+00 7.464305608410661e-01 8.034193542619313e-01 2.318292577062920e-02 -2.326323674476919e-02 -7.587395523345327e-05 8.108624722857822e+00 6.214366673968181e+00 -4.201693949824829e+00 8.006765692692878e-01 1.604090592084597e+00 1.571660566107634e+00 1.625380461902335e+00 -7.961760587081426e-01 -8.124146410061766e-01 -1.080483630912936e-03 3.168072252581808e-03 79 1.456226925741701e-07 9.992572331105534e-02 1.500000000000000e+01 -1.500000000000000e+01 3.993348791689969e-02 -1.513301468584287e-03 -7.636319588119383e-01 -7.959748904022696e-01 -5.042856278480615e+00 -4.192209642923913e+00 8.431346467427139e+00 1.607937501218560e+00 5.896098091021754e+00 5.134338260456165e+00 7.639706586956753e+00 7.837770767999651e-01 -1.607254714186742e+00 7.818101119243647e-01 8.039469009667663e-01 2.318324293835685e-02 -2.326976410317141e-02 -5.999223539415564e-05 8.419943785115563e+00 5.903698056873923e+00 -4.205399866164472e+00 8.005790129789755e-01 1.604533900239673e+00 1.605063157512085e+00 1.594283588933367e+00 -7.832247001314901e-01 -7.925723039135236e-01 -1.664631615442716e-03 3.393426437748413e-02 80 1.470447503551564e-07 8.845361491891664e-02 1.500000000000000e+01 -1.500000000000000e+01 4.867403029830332e-02 -7.799042822714062e-03 -7.532408633404940e-01 -8.022388878447475e-01 -5.047582139589616e+00 -4.196268742814347e+00 8.382917294529707e+00 1.609728446831026e+00 5.940178815574989e+00 5.160830345726562e+00 7.611250292836898e+00 7.571123975432644e-01 -1.604147298209903e+00 8.135983944211227e-01 8.048496848922942e-01 2.317640499514743e-02 -2.328171717967844e-02 -3.977958462061332e-05 8.391637826403454e+00 5.929922984985875e+00 -4.210141033531155e+00 8.007474504278924e-01 1.605610694379730e+00 1.633786037764119e+00 1.571834716330744e+00 -7.835507917060686e-01 -7.853161164541831e-01 -8.578947104985469e-03 4.469607183624199e-02 81 1.485487445739773e-07 5.753278886022605e-02 1.500000000000000e+01 -1.500000000000000e+01 4.106293247094838e-02 -1.927910180424417e-02 -7.584646780618665e-01 -8.146392008569364e-01 -5.053586205131604e+00 -4.201421527103444e+00 8.063221949320988e+00 1.610916732791860e+00 6.252249011674531e+00 5.454282776126364e+00 7.311403722135155e+00 7.349002469819728e-01 -1.611352875821057e+00 8.413406920675477e-01 8.054652378183104e-01 2.316295546016279e-02 -2.328205165195903e-02 -1.646985638927767e-05 8.090890286987412e+00 6.224534063453946e+00 -4.216159661645385e+00 8.010452012573632e-01 1.606518352035807e+00 1.657143183562222e+00 1.554024140790912e+00 -7.952369482045188e-01 -7.885535858509430e-01 -2.120701198466858e-02 3.941594683202062e-02 82 1.503257980907156e-07 5.469982941991018e-03 1.500000000000000e+01 -1.500000000000000e+01 1.224839713483471e-02 -3.587816032915909e-02 -7.843289304732262e-01 -8.333394820659926e-01 -5.060158700567531e+00 -4.207057705539490e+00 7.436355848972402e+00 1.610223448437573e+00 6.874303948463198e+00 6.059902269285422e+00 6.699530040795396e+00 7.215470717677165e-01 -1.631903699474816e+00 8.558284667979893e-01 8.051336873260276e-01 2.314296967834616e-02 -2.325617060239834e-02 6.778414192843687e-06 7.476754118683925e+00 6.832900980523512e+00 -4.222742910640259e+00 8.012373095774190e-01 1.606365240924532e+00 1.666090645646694e+00 1.544652253521848e+00 -8.208493819391700e-01 -8.058784140197404e-01 -3.946597636207500e-02 1.292623855411907e-02 83 1.518958654903311e-07 -4.246036578235558e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.419774541492037e-02 -4.922975938602013e-02 -8.186955527497175e-01 -8.489336734989389e-01 -5.063961239933960e+00 -4.210314131242290e+00 6.800917169616610e+00 1.608362790718059e+00 7.515480396574346e+00 6.695403516509522e+00 6.066866557269359e+00 7.238138794390538e-01 -1.656419682736339e+00 8.491533081298654e-01 8.041972715892608e-01 2.312637181396325e-02 -2.321697108552375e-02 1.826262036743521e-05 6.841382982450044e+00 7.471278507271569e+00 -4.226546527129356e+00 8.011252640520461e-01 1.605309423290671e+00 1.655816658127492e+00 1.548930818817312e+00 -8.479300018737840e-01 -8.291369027820934e-01 -5.415273532462215e-02 -2.237148337817685e-02 84 1.534274429000711e-07 -7.954097234829898e-02 1.500000000000000e+01 -1.500000000000000e+01 -6.081632283135418e-02 -5.727774918779121e-02 -8.542052162344674e-01 -8.588845517440246e-01 -5.064697164792337e+00 -4.210937805250618e+00 6.256790954784348e+00 1.607060627599334e+00 8.073908066355598e+00 7.258560067110733e+00 5.516218395538825e+00 7.399254655428146e-01 -1.680074097048426e+00 8.277371056533917e-01 8.035258247013270e-01 2.311570603146718e-02 -2.318791010008985e-02 1.872464951694480e-05 6.288006527088232e+00 8.036938145994405e+00 -4.227274999681288e+00 8.008562058839154e-01 1.604373178519288e+00 1.633679062647811e+00 1.565460475125334e+00 -8.710756599461410e-01 -8.530859017411865e-01 -6.300552410657033e-02 -5.894385787965970e-02 85 1.552372464989982e-07 -9.965949761776742e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.332273693888680e-02 -5.775226041139265e-02 -8.868223172025567e-01 -8.605818014859282e-01 -5.061432679641700e+00 -4.208128084294203e+00 5.883117080865422e+00 1.607527188134691e+00 8.465299231633678e+00 7.667528481311447e+00 5.125922891083236e+00 7.733284513968839e-01 -1.699351211066594e+00 7.926120810869813e-01 8.037431259571131e-01 2.311387726981198e-02 -2.318729946251935e-02 6.336760678880616e-06 5.895338342424273e+00 8.447794382678971e+00 -4.223993149599344e+00 8.006539373713005e-01 1.604401449556009e+00 1.601591929745680e+00 1.597321767983306e+00 -8.863497820455756e-01 -8.745923408287871e-01 -6.352748645253192e-02 -9.268906087099874e-02 86 1.570184881418122e-07 -8.883546326348402e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.050666016845210e-01 -4.923847176927207e-02 -9.001792425730714e-01 -8.519382916200415e-01 -5.054892027488657e+00 -4.202510536492534e+00 5.892799593561068e+00 1.609408259414983e+00 8.461829717803068e+00 7.688669725797076e+00 5.114270336525917e+00 8.120419874011103e-01 -1.703488783001527e+00 7.582512457483417e-01 8.046891963387086e-01 2.312354896246119e-02 -2.322156894289566e-02 -1.623113842103696e-05 5.883122849128419e+00 8.469337466093865e+00 -4.217431661822009e+00 8.007632655857732e-01 1.605464840321259e+00 1.572437732605612e+00 1.632497727989552e+00 -8.851463244879543e-01 -8.826569242419815e-01 -5.416231894619928e-02 -1.066897155266247e-01 87 1.586575936863630e-07 -5.470273330376252e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.564379434262906e-02 -3.614726030483414e-02 -8.932539742142546e-01 -8.376819475552690e-01 -5.047985792329398e+00 -4.196583760634032e+00 6.230431888896905e+00 1.610564610646964e+00 8.117651995087819e+00 7.366207847960184e+00 5.432219500192281e+00 8.411602506804525e-01 -1.693620677706496e+00 7.340331167158713e-01 8.052877409701523e-01 2.313920873452967e-02 -2.325774265170689e-02 -4.094106103886654e-05 6.202342379788478e+00 8.145916193515572e+00 -4.210508985108336e+00 8.010190988116961e-01 1.606314264371107e+00 1.553049559676232e+00 1.656971123400280e+00 -8.708376656710665e-01 -8.773940310222790e-01 -3.976198633531755e-02 -9.973790044651572e-02 88 1.605372462426482e-07 1.170098520834592e-03 1.500000000000000e+01 -1.500000000000000e+01 -6.467234486468729e-02 -1.967439074987507e-02 -8.655540462651768e-01 -8.190937437220183e-01 -5.041576684821340e+00 -4.191088490842124e+00 6.886276358047455e+00 1.609738116098337e+00 7.449064518482052e+00 6.712768471811239e+00 6.071904842808977e+00 8.541288626076085e-01 -1.670475430704851e+00 7.211413097177053e-01 8.048902101286831e-01 2.315928719966839e-02 -2.327600894705955e-02 -6.584244338552188e-05 6.844957215836835e+00 7.490058899967546e+00 -4.204090322224498e+00 8.011498160909027e-01 1.606033919316109e+00 1.544278649708939e+00 1.664364265584577e+00 -8.443184983973057e-01 -8.591078969866986e-01 -2.164182982486257e-02 -7.125658920323948e-02 89 1.622580262019606e-07 5.246468384623442e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.553462217526088e-02 -7.304097246132435e-03 -8.287992538466542e-01 -8.045765789827890e-01 -5.038687195692496e+00 -4.188616419415889e+00 7.562952111463947e+00 1.607787896550540e+00 6.765137251600753e+00 6.030246097467225e+00 6.744446527653180e+00 8.437197387823660e-01 -1.644680903287116e+00 7.261047542184212e-01 8.039076225235759e-01 2.317467093275394e-02 -2.327072209859787e-02 -7.799930602149530e-05 7.520561794409576e+00 6.804585900026136e+00 -4.201202858330889e+00 8.009748475671311e-01 1.604869743961241e+00 1.551188699015229e+00 1.650656874126357e+00 -8.173764389111433e-01 -8.353741265904915e-01 -8.034506970745678e-03 -3.333455277741041e-02 90 1.638743568652366e-07 8.723972649332833e-02 1.500000000000000e+01 -1.500000000000000e+01 1.115404272333532e-02 -9.072081431184041e-04 -7.930671497195104e-01 -7.964546417908743e-01 -5.039130440316558e+00 -4.189004824208366e+00 8.092471864256380e+00 1.606838016179667e+00 6.234858752235707e+00 5.491137238986534e+00 7.281449965090861e+00 8.187857012202264e-01 -1.622691788373324e+00 7.462016420748139e-01 8.034102299312091e-01 2.318308166213497e-02 -2.326476770959015e-02 -7.608568376999301e-05 8.059981751856102e+00 6.262744429106853e+00 -4.201656528399835e+00 8.006994113149215e-01 1.604103545338503e+00 1.571342884738153e+00 1.625834011000918e+00 -7.960684268276958e-01 -8.121122623623088e-01 -9.979289574302445e-04 3.545474346336017e-03 91 1.657056299194547e-07 9.979141103891040e-02 1.500000000000000e+01 -1.500000000000000e+01 4.048831649690565e-02 -1.612936018203925e-03 -7.630222290153291e-01 -7.960636228062304e-01 -5.043015994933575e+00 -4.192346822149197e+00 8.388851215307004e+00 1.607905035346648e+00 5.938308045972429e+00 5.176130112921668e+00 7.597584298631773e+00 7.831308253039113e-01 -1.606980034855515e+00 7.823873966232285e-01 8.039303893987794e-01 2.318309132557427e-02 -2.326986415433294e-02 -5.930309454200475e-05 8.377660276131466e+00 5.945711085213242e+00 -4.205560096186856e+00 8.005886463786865e-01 1.604526809037442e+00 1.605475287337583e+00 1.593880099595238e+00 -7.831071745477448e-01 -7.920781750841148e-01 -1.774229620024317e-03 3.455800704270517e-02 92 1.671809320416398e-07 8.637759144933154e-02 1.500000000000000e+01 -1.500000000000000e+01 4.840625413050302e-02 -8.457896918848722e-03 -7.533269098099728e-01 -8.029442732557376e-01 -5.048003651403487e+00 -4.196630551629205e+00 8.330375931564323e+00 1.609735016259397e+00 5.992242950568468e+00 5.211821046707249e+00 7.559749629261246e+00 7.557858497178001e-01 -1.604439824056325e+00 8.149857614827879e-01 8.048531938912965e-01 2.317555363803591e-02 -2.328119658987859e-02 -3.797133731882851e-05 8.339950464800560e+00 5.981172349768529e+00 -4.210563638589491e+00 8.007575477903310e-01 1.605624215708029e+00 1.634852899459747e+00 1.570878091412870e+00 -7.841569513516897e-01 -7.852853533272903e-01 -9.303686610733594e-03 4.460912039862017e-02 93 1.687121009441046e-07 5.326131136783010e-02 1.500000000000000e+01 -1.500000000000000e+01 3.901835955276689e-02 -2.048871803167219e-02 -7.602417424494471e-01 -8.159942175197238e-01 -5.054160936050053e+00 -4.201914497237064e+00 7.994361145236901e+00 1.610870432720146e+00 6.320713525525515e+00 5.521649272579840e+00 7.243476900915779e+00 7.340410518438783e-01 -1.612757891297677e+00 8.421755110823533e-01 8.054428171186379e-01 2.316136709865729e-02 -2.327955973726723e-02 -1.424295181506322e-05 8.022707053600192e+00 6.292236551705929e+00 -4.216735467605661e+00 8.010502391879661e-01 1.606500491534751e+00 1.657561324152412e+00 1.553516922066418e+00 -7.970222705772024e-01 -7.896787527902965e-01 -2.253758983483941e-02 3.759406437126056e-02 94 1.704972939928246e-07 8.501171238882635e-05 1.500000000000000e+01 -1.500000000000000e+01 8.492224660761989e-03 -3.724523085627277e-02 -7.878283889450164e-01 -8.349283272018310e-01 -5.060657619363761e+00 -4.207485208730389e+00 7.362997281096596e+00 1.610083698239384e+00 6.948134196806496e+00 6.133392838169442e+00 6.626193171821579e+00 7.220893451141244e-01 -1.634357239411427e+00 8.548868697824990e-01 8.050639102263260e-01 2.314109741937805e-02 -2.325161742933336e-02 8.407212948373162e-06 7.403108388267122e+00 6.906745134022430e+00 -4.223242248974509e+00 8.012220973531578e-01 1.606279754623402e+00 1.664829770013455e+00 1.545391947980718e+00 -8.235265570790232e-01 -8.082170162601603e-01 -4.096975394190004e-02 9.332945955599305e-03 95 1.720135105765592e-07 -4.577682519084610e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.722627059680016e-02 -4.991299342658710e-02 -8.216129071492620e-01 -8.497669024335475e-01 -5.064138507357547e+00 -4.210465649693956e+00 6.759426785806818e+00 1.608292894276623e+00 7.558048900109916e+00 6.738617639764092e+00 6.024550753896817e+00 7.254251534450802e-01 -1.658353808748960e+00 8.471525195692382e-01 8.041616049161876e-01 2.312530203944333e-02 -2.321396663122941e-02 1.855055459404594e-05 6.798859597166327e+00 7.514697731031931e+00 -4.226723505858109e+00 8.011042151488202e-01 1.605252887460333e+00 1.653842980579315e+00 1.550532998218265e+00 -8.497453263485205e-01 -8.311346762230546e-01 -5.490429276924581e-02 -2.537121513739557e-02 96 1.735391092669793e-07 -8.161775954142813e-02 1.500000000000000e+01 -1.500000000000000e+01 -6.342701432955100e-02 -5.752252632246957e-02 -8.567915466742007e-01 -8.592337227556451e-01 -5.064633050095659e+00 -4.210882191324738e+00 6.235752622141381e+00 1.607087207580124e+00 8.096195817882840e+00 7.282150402315111e+00 5.493899586716258e+00 7.423137387936280e-01 -1.681697255669014e+00 8.251760515484750e-01 8.035379152695849e-01 2.311519915354818e-02 -2.318727165473893e-02 1.819074521187713e-05 6.265550540650592e+00 8.060645127209852e+00 -4.227210040715598e+00 8.008426687545542e-01 1.604372418940199e+00 1.631388131194964e+00 1.567719601256684e+00 -8.723600982830205e-01 -8.548815929131369e-01 -6.327477895471652e-02 -6.160793980836329e-02 97 1.753291325826829e-07 -9.985595971484277e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.461454893612220e-02 -5.745766838887192e-02 -8.881771033596779e-01 -8.603072294845605e-01 -5.061137544888957e+00 -4.207874442424160e+00 5.891819110751297e+00 1.607642855682889e+00 8.457152864316049e+00 7.660997855005041e+00 5.133200484214942e+00 7.758568024907777e-01 -1.700031980199971e+00 7.902984074708411e-01 8.038009008336336e-01 2.311413302546557e-02 -2.318919838512240e-02 5.241410778720563e-06 5.902623148569630e+00 8.441259306451899e+00 -4.223696887228489e+00 8.006614417648962e-01 1.604467246541827e+00 1.599684883980159e+00 1.599610031157520e+00 -8.866166509981465e-01 -8.755345292911189e-01 -6.320343522775911e-02 -9.409040785825015e-02 98 1.769992776914259e-07 -8.911095207402143e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.052225291007716e-01 -4.925434174297009e-02 -9.003244879959321e-01 -8.519529074782214e-01 -5.054896755191758e+00 -4.202514567722142e+00 5.913068437686833e+00 1.609418718175471e+00 8.441343859626177e+00 7.668404976284418e+00 5.134329292602241e+00 8.122773680744613e-01 -1.703561143405724e+00 7.580877511710293e-01 8.046947471771891e-01 2.312350797084453e-02 -2.322194660672987e-02 -1.611157702675021e-05 5.903288477865811e+00 8.448997116350350e+00 -4.217436370435933e+00 8.007707255395009e-01 1.605477665462916e+00 1.572381636580291e+00 1.632643904802329e+00 -8.851286469249927e-01 -8.828106095591575e-01 -5.417977591726710e-02 -1.068336868034467e-01 99 1.786020083719941e-07 -5.615614206166065e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.640713996836978e-02 -3.648557980574487e-02 -8.939350155075599e-01 -8.380589855914395e-01 -5.048140602438616e+00 -4.196716488623633e+00 6.242868031564560e+00 1.610531846166931e+00 8.105253675518463e+00 7.353641586040394e+00 5.444747333151298e+00 8.409816285005425e-01 -1.694117610897317e+00 7.341072242876813e-01 8.052716242775340e-01 2.313873624843634e-02 -2.325669692171671e-02 -4.025099790670914e-05 6.214941178993400e+00 8.133297675414030e+00 -4.210664015935348e+00 8.010174434361488e-01 1.606296321886409e+00 1.553135695506514e+00 1.656777686504413e+00 -8.713246091840919e-01 -8.779078740577555e-01 -4.013413778631936e-02 -1.004322397590407e-01 100 1.804581902037723e-07 -1.313455718355434e-03 1.500000000000000e+01 -1.500000000000000e+01 -6.640343761684023e-02 -2.019808928664093e-02 -8.671659432874925e-01 -8.196994627846919e-01 -5.041750144121576e+00 -4.191237036390591e+00 6.890455742964000e+00 1.609730098737050e+00 7.445122341039347e+00 6.708843123965575e+00 6.076044233506872e+00 8.544735293034571e-01 -1.671541477322712e+00 7.207527406340599e-01 8.048860162079546e-01 2.315854285891668e-02 -2.327486879741304e-02 -6.508998189848479e-05 6.849118329673490e+00 7.486115997335567e+00 -4.204263828500734e+00 8.011459200065247e-01 1.606025922431352e+00 1.543905694117908e+00 1.664683795177225e+00 -8.453560879894778e-01 -8.602299439169816e-01 -2.221789821530502e-02 -7.291243580668871e-02 101 1.821556007731834e-07 4.969862880514488e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.800749624732374e-02 -7.796150885644283e-03 -8.311743513143872e-01 -8.051748187809457e-01 -5.038757807393686e+00 -4.188676533248031e+00 7.564419184188010e+00 1.607805954045258e+00 6.763844669612778e+00 6.029470273208414e+00 6.745410505487200e+00 8.450426864460099e-01 -1.646109510012062e+00 7.249046117543749e-01 8.039168890549044e-01 2.317393671781436e-02 -2.326981184687935e-02 -7.770612505246862e-05 7.521523619073746e+00 6.803813372639119e+00 -4.201273073340849e+00 8.009754572872359e-01 1.604879647639872e+00 1.550064107739590e+00 1.651831501359871e+00 -8.187053321815809e-01 -8.370046070616424e-01 -8.575765974208712e-03 -3.577810875257060e-02 102 1.837594335041111e-07 8.541849063136200e-02 1.500000000000000e+01 -1.500000000000000e+01 8.768304984305113e-03 -1.093483710552931e-03 -7.954418798563487e-01 -7.967290645908579e-01 -5.039020736559562e+00 -4.188910161121449e+00 8.104223772164197e+00 1.606806286717019e+00 6.223231953568999e+00 5.480585890706890e+00 7.292065288383319e+00 8.209019366807353e-01 -1.623971647257133e+00 7.441404983778301e-01 8.033950823561961e-01 2.318270864855284e-02 -2.326359481844263e-02 -7.665018564705689e-05 8.070625957515062e+00 6.252159233160459e+00 -4.201545958679791e+00 8.006978770918334e-01 1.604086483333453e+00 1.569462298899230e+00 1.627600431236611e+00 -7.971422730141590e-01 -8.137742022590611e-01 -1.202832081608224e-03 1.103286419599424e-03 103 1.855929160131611e-07 9.995739897531698e-02 1.500000000000000e+01 -1.500000000000000e+01 3.926073835921744e-02 -1.310761061502596e-03 -7.643533914299127e-01 -7.957844382367378e-01 -5.042724485473455e+00 -4.192096313434804e+00 8.423649769398781e+00 1.607811130000741e+00 5.903976473430801e+00 5.143201799326687e+00 7.630852743598062e+00 7.852896033479687e-01 -1.607539005082857e+00 7.800092762038517e-01 8.038834847706027e-01 2.318334704979085e-02 -2.326860586802059e-02 -6.069666061609954e-05 8.411039721166194e+00 5.912633965179920e+00 -4.205267493448857e+00 8.005745701467206e-01 1.604465482735783e+00 1.603399852094467e+00 1.595570643952037e+00 -7.833497660480498e-01 -7.930842565751628e-01 -1.441837167652856e-03 3.319107229760749e-02 104 1.871230401796700e-07 8.727966836850663e-02 1.500000000000000e+01 -1.500000000000000e+01 4.839186217136992e-02 -8.103753755102716e-03 -7.534342565834327e-01 -8.025647250187661e-01 -5.047800282817479e+00 -4.196455963924985e+00 8.377024953221476e+00 1.609718180440428e+00 5.946107838255161e+00 5.166492445470166e+00 7.605609005617456e+00 7.567047261665592e-01 -1.604361069483224e+00 8.139692118581586e-01 8.048442610787647e-01 2.317594156458215e-02 -2.328118508442249e-02 -3.888780619713671e-05 8.385978110573130e+00 5.935611133081681e+00 -4.210359714185505e+00 8.007466412186591e-01 1.605604559402739e+00 1.634096114416796e+00 1.571496700597434e+00 -7.838284251534965e-01 -7.854670178765899e-01 -8.914129130612988e-03 4.450308155165625e-02 105 1.886624112071403e-07 5.457597599750727e-02 1.500000000000000e+01 -1.500000000000000e+01 3.958198772216440e-02 -2.003933645208211e-02 -7.597698594965905e-01 -8.154908218512548e-01 -5.053957622101655e+00 -4.201740075800045e+00 8.045520965092872e+00 1.610920210199719e+00 6.269915023207178e+00 5.471469878103780e+00 7.294163098401249e+00 7.345534781340219e-01 -1.612341865847494e+00 8.417536493374144e-01 8.054669619689472e-01 2.316190135561991e-02 -2.328093431062039e-02 -1.499398827534287e-05 8.073588311736935e+00 6.241801804412859e+00 -4.216531737407448e+00 8.010487243712524e-01 1.606523572891838e+00 1.657408571345862e+00 1.553801894568308e+00 -7.963588724993371e-01 -7.894478087758586e-01 -2.204327009729032e-02 3.808258889463011e-02 106 1.904643921975581e-07 1.118628774737635e-03 1.500000000000000e+01 -1.500000000000000e+01 9.204751113148706e-03 -3.691602962373432e-02 -7.871706663320048e-01 -8.345452205484325e-01 -5.060548169429402e+00 -4.207391390733829e+00 7.409649104820947e+00 1.610174147177870e+00 6.901410137790786e+00 6.086906197077627e+00 6.672800966721226e+00 7.221139163741205e-01 -1.633883600364069e+00 8.551476946554191e-01 8.051092124310221e-01 2.314149244967081e-02 -2.325370083946618e-02 8.086122338411071e-06 7.449913484014886e+00 6.860034001284660e+00 -4.223132666348876e+00 8.012349818558156e-01 1.606338186044994e+00 1.665300305530731e+00 1.545284667260617e+00 -8.228766513384156e-01 -8.078399703552564e-01 -4.060763258610776e-02 1.001336334698981e-02 107 1.920436975669664e-07 -4.661790707679947e-02 1.500000000000000e+01 -1.500000000000000e+01 -2.789159087310354e-02 -5.007596564135106e-02 -8.222475322104976e-01 -8.499591432871126e-01 -5.064175238290318e+00 -4.210497021897082e+00 6.780484954384403e+00 1.608309562064263e+00 7.536993242016045e+00 6.717575334734244e+00 6.045661785803085e+00 7.255426494173493e-01 -1.658794640738763e+00 8.471488554734317e-01 8.041701036593837e-01 2.312507002755875e-02 -2.321463561775653e-02 1.872631620369593e-05 6.820069936544491e+00 7.493559403894109e+00 -4.226760149663310e+00 8.011156146168613e-01 1.605272651874620e+00 1.653921606933247e+00 1.550603183836473e+00 -8.501012354985762e-01 -8.316182288176972e-01 -5.508356220548617e-02 -2.601895925273394e-02 108 1.935901456338117e-07 -8.253364931398312e-02 1.500000000000000e+01 -1.500000000000000e+01 -6.443376565173274e-02 -5.764334595466401e-02 -8.577807925289043e-01 -8.593937876857095e-01 -5.064610187633508e+00 -4.210862327620243e+00 6.252053871076324e+00 1.607084403244694e+00 8.080089725112487e+00 7.266318498904194e+00 5.509950752735613e+00 7.428829167720754e-01 -1.682334572197877e+00 8.245915746532698e-01 8.035365217375403e-01 2.311499705804110e-02 -2.318761360372468e-02 1.809988366225038e-05 6.281679359524057e+00 8.044750325307126e+00 -4.227186839230029e+00 8.008487041304422e-01 1.604377011334381e+00 1.630944200622623e+00 1.568213945764934e+00 -8.728445731049209e-01 -8.555974208700182e-01 -6.340768055013041e-02 -6.262377728550770e-02 109 1.953915551318565e-07 -9.994197091101881e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.528054651075367e-02 -5.731589569453735e-02 -8.888778567406032e-01 -8.601760756707946e-01 -5.060973822479080e+00 -4.207733742377445e+00 5.913131038343663e+00 1.607660809162757e+00 8.435979136401002e+00 7.640426051222286e+00 5.153946137707388e+00 7.768246181293891e-01 -1.700388700706058e+00 7.893521510959743e-01 8.038097406525166e-01 2.311428107482112e-02 -2.318988553061754e-02 4.661424400265131e-06 5.923470439737180e+00 8.420614235321454e+00 -4.223532544766371e+00 8.006669222468735e-01 1.604481672783568e+00 1.598958670591236e+00 1.600440150346484e+00 -8.867570771235575e-01 -8.760316421643596e-01 -6.304748526399108e-02 -9.481440407072716e-02 110 1.970643219382009e-07 -8.816513024138255e-02 1.500000000000000e+01 -1.500000000000000e+01 -1.051639117476960e-01 -4.887136191270885e-02 -9.003503903012361e-01 -8.515412549863763e-01 -5.054648665784410e+00 -4.202301602468967e+00 5.942692382385122e+00 1.609431464358446e+00 8.411485784292675e+00 7.639211850928978e+00 5.163304049630520e+00 8.131595165708445e-01 -1.703414688742736e+00 7.572491308150769e-01 8.047013348450461e-01 2.312399238169416e-02 -2.322294023430411e-02 -1.699878150631347e-05 5.932409971846841e+00 8.419699745098124e+00 -4.217187619743453e+00 8.007760946516749e-01 1.605489589357606e+00 1.571769537658396e+00 1.633337685830573e+00 -8.847779192422959e-01 -8.828457879273151e-01 -5.375849810397973e-02 -1.068637898983274e-01 111 1.986714723112731e-07 -5.433722421553828e-02 1.500000000000000e+01 -1.500000000000000e+01 -9.557568812358956e-02 -3.593526757696785e-02 -8.932225036612148e-01 -8.374440967805796e-01 -5.047872104979587e+00 -4.196486171355507e+00 6.279856976766671e+00 1.610503005794303e+00 8.067821665973010e+00 7.316716768653177e+00 5.481158692428406e+00 8.414423918480191e-01 -1.693466758327244e+00 7.335970086344871e-01 8.052577319421166e-01 2.313944999684641e-02 -2.325716400776198e-02 -4.123846390805129e-05 6.251535498917075e+00 8.096234257324125e+00 -4.210394997496507e+00 8.010183655712162e-01 1.606283057984553e+00 1.552818000245184e+00 1.657017161602753e+00 -8.705143167192518e-01 -8.774551432664577e-01 -3.952879433466463e-02 -9.969953451439469e-02 112 2.000000000000000e-07 -1.564344650402307e-02 1.500000000000000e+01 -1.500000000000000e+01 -7.524537640253367e-02 -2.400274978671124e-02 -8.752192195558152e-01 -8.240453067432065e-01 -5.043082555658974e+00 -4.192378891559821e+00 6.738865317050257e+00 1.609981405329513e+00 7.599590780378322e+00 6.860710146813910e+00 5.927288590993360e+00 8.532585471238123e-01 -1.677774069286929e+00 7.221683050034062e-01 8.050120015737352e-01 2.315379058411680e-02 -2.327077239342628e-02 -5.960192989851061e-05 6.699688832296820e+00 7.638573621025562e+00 -4.205597554354238e+00 8.011375468711981e-01 1.606145519343767e+00 1.544554377913556e+00 1.664646758802622e+00 -8.521713684371304e-01 -8.655083577878386e-01 -2.640302476538237e-02 -8.120556939238473e-02 0707070124062140571006440006700000000000011777770500302371300003400000000642spice3c1/examples/rtlinv.inrtlinv ckt - cascaded rtl inverters .width in=72 .opt acct list node lvlcod=2 .dc vin 0.0 2.5 0.025 .tran 2ns 200ns vcc 6 0 5 vin 1 0 pulse(0 5 2ns 2ns 2ns 80ns) rb1 1 2 10k rc1 6 3 1k q1 3 2 0 qnd rb2 3 4 10k q2 5 4 0 qnd rc2 6 5 1k .model qnd npn(bf=50 rb=70 rc=40 ccs=2pf tf=0.1ns tr=10ns cje=0.9pf + cjc=1.5pf pc=0.85 va=50) .print dc v(3) v(5) .plot dc v(3) .print tran v(3) v(5) .plot tran v(3) v(5) v(1) .end 0707070124062140601006440006700000000000011777770500302371300003500000002623spice3c1/examples/rtlinv.outWarning: option lvlcod is obsolete. Warning: vin: no DC value, transient time 0 value used (debug printing enabled) Circuit: rtlinv ckt - cascaded rtl inverters (debug printing enabled) Circuit: rtlinv ckt - cascaded rtl inverters Date: Mon May 1 17:03:56 PDT 1989 RTLINV CKT - CASCADED RTL INVERTERS .DC VIN 0.0 2.5 0.025 .TRAN 2NS 200NS VCC 6 0 5 VIN 1 0 PULSE(0 5 2NS 2NS 2NS 80NS) RB1 1 2 10K RC1 6 3 1K Q1 3 2 0 QND RB2 3 4 10K Q2 5 4 0 QND RC2 6 5 1K .MODEL QND NPN(BF=50 RB=70 RC=40 CCS=2PF TF=0.1NS TR=10NS CJE=0.9PF + CJC=1.5PF PC=0.85 VA=50) .OPT ACCT LIST NODE LVLCOD=2 .END .print card ignored since rawfile was produced .plot card ignored since rawfile was produced .print card ignored since rawfile was produced .plot card ignored since rawfile was produced Total run time: 2.590 seconds. Current data size = 287712, Data limits: hard = 85950464, soft = 85950464. 29 page faults, 34 vol + 74 invol = 108 context switches. Time since last call: 0.000 seconds. Nominal temperature = 27 Operating temperature = 27 Total iterations = 547 Transient iterations = 329 Circuit Equations = 13 Transient timepoints = 104 Accepted timepoints = 92 Rejected timepoints = 12 Total Analysis Time = 2.18 Transient time = 1.41 matrix reordering time = 0 L-U decomposition time = 0.19 Matrix solve time = 0.13 transient L-U decomp time = 0.13 Transient solve time = 0.07 Transient iters per point = 0 Load time = 1.04 0707070124062140611006440006700000000000011777770500302371300003600000001011spice3c1/examples/diffpair.indifpair ckt - simple differential pair *.width in=72 .opt acct list node lvlcod=2 *.tf v(5) vin *.dc vin -0.25 0.25 0.005 *.ac dec 10 1 10ghz .tran 5ns 500ns vin 1 0 sin(0 0.1 5meg) ac 1 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 qnl q2 5 3 6 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 qnl q4 7 7 9 qnl rbias 7 8 20k .model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf + va=50) .print dc v(4) v(5) .plot dc v(5) .print ac vm(5) vp(5) .plot ac vm(5) vp(5) .print tran v(4) v(5) .plot tran v(5) .end 0707070124062140621006440006700000000000011777770500302371300003700000003064spice3c1/examples/diffpair.outWarning: option lvlcod is obsolete. Warning: vin: no DC value, transient time 0 value used (debug printing enabled) Circuit: difpair ckt - simple differential pair Circuit: difpair ckt - simple differential pair Date: Mon May 1 17:00:51 PDT 1989 DIFPAIR CKT - SIMPLE DIFFERENTIAL PAIR *.WIDTH IN=72 *.TF V(5) VIN *.DC VIN -0.25 0.25 0.005 *.AC DEC 10 1 10GHZ .TRAN 5NS 500NS VIN 1 0 SIN(0 0.1 5MEG) AC 1 VCC 8 0 12 VEE 9 0 -12 Q1 4 2 6 QNL Q2 5 3 6 QNL RS1 1 2 1K RS2 3 0 1K RC1 4 8 10K RC2 5 8 10K Q3 6 7 9 QNL Q4 7 7 9 QNL RBIAS 7 8 20K .MODEL QNL NPN(BF=80 RB=100 CCS=2PF TF=0.3NS TR=6NS CJE=3PF CJC=2PF + VA=50) .OPT ACCT LIST NODE LVLCOD=2 .END .print card ignored since rawfile was produced .plot card ignored since rawfile was produced .print card ignored since rawfile was produced .plot card ignored since rawfile was produced .print card ignored since rawfile was produced .plot card ignored since rawfile was produced Total run time: 1.570 seconds. Current data size = 291808, Data limits: hard = 85950464, soft = 85950464. 73 page faults, 113 vol + 18 invol = 131 context switches. Time since last call: 0.000 seconds. Nominal temperature = 27 Operating temperature = 27 Total iterations = 164 Transient iterations = 156 Circuit Equations = 17 Transient timepoints = 59 Accepted timepoints = 59 Rejected timepoints = 0 Total Analysis Time = 1.21 Transient time = 1.14 matrix reordering time = 0.03 L-U decomposition time = 0.14 Matrix solve time = 0.07 transient L-U decomp time = 0.14 Transient solve time = 0.07 Transient iters per point = 0 Load time = 0.59 0707070124062140631006440006700000000000011777770500302371300003700000057354spice3c1/examples/diffpair.rawTitle: difpair ckt - simple differential pair Date: Mon May 1 17:00:49 PDT 1989 Plotname: transient Flags: real No. Variables: 17 No. Points: 59 Command: version SPICE 3c1 Alpha test Variables: 0 time time 1 V(1) voltage 2 V(8) voltage 3 V(9) voltage 4 V(4) voltage 5 V(2) voltage 6 V(6) voltage 7 V(5) voltage 8 V(3) voltage 9 V(7) voltage 10 vee#branch current 11 vcc#branch current 12 vin#branch current 13 q4#base voltage 14 q3#base voltage 15 q2#base voltage 16 q1#base voltage Values: 0 0.000000000000000e+00 0.000000000000000e+00 1.200000000000000e+01 -1.200000000000000e+01 5.229097689954566e+00 -7.661116221626991e-03 -7.699732713567362e-01 5.229097689954493e+00 -7.661116221626739e-03 -1.122115277987322e+01 2.530560333445986e-03 -2.515238101002755e-03 -7.661116221626991e-06 -1.122256866471847e+01 -1.122256866372759e+01 -8.427227843789413e-03 -8.427227843789690e-03 1 5.000000000000000e-11 1.570795680830879e-04 1.200000000000000e+01 -1.200000000000000e+01 5.229095578926423e+00 -7.629434965025361e-03 -7.699755179812602e-01 5.229095629723524e+00 -7.644175952632722e-03 -1.122115269825889e+01 2.530922655305922e-03 -2.515238514047950e-03 -7.786514533108449e-06 -1.122256861900104e+01 -1.122256787553845e+01 -8.408593547895994e-03 -8.408086418336206e-03 2 1.000000000000000e-10 3.141587485879563e-04 1.200000000000000e+01 -1.200000000000000e+01 5.229089045571908e+00 -7.607837300656899e-03 -7.699673204607793e-01 5.229089416401089e+00 -7.637764077754308e-03 -1.122115266815039e+01 2.531066909663870e-03 -2.515239787210220e-03 -7.921996049244856e-06 -1.122256861538771e+01 -1.122256757655065e+01 -8.401540485529738e-03 -8.400036905581385e-03 3 2.000000000000000e-10 6.283143965558951e-04 1.200000000000000e+01 -1.200000000000000e+01 5.229074671680948e+00 -7.566791437864904e-03 -7.699546391735625e-01 5.229078444470869e+00 -7.627977763756386e-03 -1.122115254556984e+01 2.531184364431603e-03 -2.515242315663310e-03 -8.195105834420799e-06 -1.122256859987778e+01 -1.122256711857364e+01 -8.390775540132024e-03 -8.386302021306983e-03 4 4.000000000000000e-10 1.256603988335261e-03 1.200000000000000e+01 -1.200000000000000e+01 5.229052075864525e+00 -7.451590669219291e-03 -7.698962673215872e-01 5.229071195710456e+00 -7.580048675864812e-03 -1.122115212042367e+01 2.530906935800661e-03 -2.515245278863685e-03 -8.708194657554552e-06 -1.122256853213820e+01 -1.122256514196611e+01 -8.338053543451293e-03 -8.322410134974746e-03 5 8.000000000000000e-10 2.513009544333748e-03 1.200000000000000e+01 -1.200000000000000e+01 5.228973255232473e+00 -7.157814650998002e-03 -7.697241139231886e-01 5.229108738588382e+00 -7.436553913385587e-03 -1.122115057737045e+01 2.531440674602534e-03 -2.515249329486437e-03 -9.670824195331750e-06 -1.122256820710437e+01 -1.122255968559793e+01 -8.180209304724146e-03 -8.124897070531177e-03 6 1.600000000000000e-09 5.024431817976956e-03 1.200000000000000e+01 -1.200000000000000e+01 5.228486521011962e+00 -6.364088303805236e-03 -7.691902873242395e-01 5.229437853198539e+00 -6.988736132826134e-03 -1.122114562556133e+01 2.532496751266641e-03 -2.515264843857016e-03 -1.138852012178219e-05 -1.122256642098230e+01 -1.122254458086277e+01 -7.687609746108747e-03 -7.502940315983455e-03 7 3.200000000000000e-09 1.003617148512149e-02 1.200000000000000e+01 -1.200000000000000e+01 5.225461431522238e+00 -4.231990208992581e-03 -7.675884515725156e-01 5.231423632273607e+00 -5.649797395384295e-03 -1.122113688302861e+01 2.534731420128897e-03 -2.515368337771846e-03 -1.426816169411407e-05 -1.122256087739250e+01 -1.122250931475918e+01 -6.214777134922724e-03 -5.658806378403988e-03 8 6.400000000000000e-09 1.997099805144070e-02 1.200000000000000e+01 -1.200000000000000e+01 5.209844538213557e+00 1.007740631015935e-03 -7.633604801142804e-01 5.242267322119446e+00 -2.158584763161308e-03 -1.122112702532270e+01 2.538000745535712e-03 -2.515845165232835e-03 -1.896325742042477e-05 -1.122255020337771e+01 -1.122245464216890e+01 -2.374443239477439e-03 -8.885851110265417e-04 9 1.280000000000000e-08 3.913736668372024e-02 1.200000000000000e+01 -1.200000000000000e+01 5.142567826109943e+00 1.239131203990138e-02 -7.538421710031697e-01 5.295820099307284e+00 5.535202411514944e-03 -1.122112284301339e+01 2.540392782489838e-03 -2.517217349608947e-03 -2.674605464381886e-05 -1.122254086474324e+01 -1.122241504559777e+01 6.088722652666439e-03 9.716706575519491e-03 10 2.280000000000000e-08 6.565857557529564e-02 1.200000000000000e+01 -1.200000000000000e+01 4.957486062935853e+00 2.914795066119352e-02 -7.397344591460380e-01 5.461935651712084e+00 1.650524485890871e-02 -1.122112684335977e+01 2.539877462102381e-03 -2.519114170703195e-03 -3.651062491410212e-05 -1.122254215750463e+01 -1.122242721877314e+01 1.815576934479958e-02 2.549688816978331e-02 11 3.280000000000000e-08 8.575266561936522e-02 1.200000000000000e+01 -1.200000000000000e+01 4.698984891421943e+00 4.250206228904130e-02 -7.286220495648578e-01 5.711075585017853e+00 2.454136785480808e-02 -1.122113427617307e+01 2.537714288423108e-03 -2.520050666164674e-03 -4.325060333032392e-05 -1.122254933888560e+01 -1.122246638672958e+01 2.699550464028888e-02 3.817700195600891e-02 12 4.280000000000000e-08 9.745268727865772e-02 1.200000000000000e+01 -1.200000000000000e+01 4.397363814478886e+00 5.099592714825287e-02 -7.217917162262811e-01 6.014988887694877e+00 2.870781178124371e-02 -1.122114318259984e+01 2.534980688613729e-03 -2.519821888912616e-03 -4.645676013040484e-05 -1.122255795160281e+01 -1.122251314396573e+01 3.157859295936808e-02 4.635025113521239e-02 13 5.280000000000000e-08 9.961336091431725e-02 1.200000000000000e+01 -1.200000000000000e+01 4.086098103200878e+00 5.387311586942363e-02 -7.198575343999106e-01 6.339175776755109e+00 2.871743737820475e-02 -1.122115270278449e+01 2.532007621617200e-03 -2.518530247143626e-03 -4.574024504489362e-05 -1.122256661378327e+01 -1.122256215976035e+01 3.158918111602523e-02 4.929909136493427e-02 14 6.280000000000000e-08 9.202318473658703e-02 1.200000000000000e+01 -1.200000000000000e+01 3.798551551178484e+00 5.099380984773420e-02 -7.228754692741071e-01 6.647146512359508e+00 2.479158580735232e-02 -1.122116212420014e+01 2.528998518573700e-03 -2.516488299856208e-03 -4.102937488885283e-05 -1.122257520130761e+01 -1.122261001541292e+01 2.727074438808755e-02 4.689087235884892e-02 15 7.280000000000000e-08 7.542513807361038e-02 1.200000000000000e+01 -1.200000000000000e+01 3.564959350384126e+00 4.277624125554644e-02 -7.304126268243838e-01 6.904217170737614e+00 1.752320993230564e-02 -1.122117037277698e+01 2.526229137252462e-03 -2.514140866526675e-03 -3.264889681806394e-05 -1.122258289982018e+01 -1.122265252216487e+01 1.927553092553620e-02 3.951135157374005e-02 16 8.280000000000000e-08 5.144395337815065e-02 1.200000000000000e+01 -1.200000000000000e+01 3.409647354889689e+00 3.010460368200286e-02 -7.416471676649719e-01 7.081298092833991e+00 7.756229164267303e-03 -1.122117569299911e+01 2.523970229394227e-03 -2.511964239877588e-03 -2.133934969614778e-05 -1.122258962661531e+01 -1.122268533681158e+01 8.531852080694033e-03 2.797066871238809e-02 17 9.280000000000000e-08 2.242707609493812e-02 1.200000000000000e+01 -1.200000000000000e+01 3.350054318986390e+00 1.422847488649368e-02 -7.554353254987643e-01 7.157279292728230e+00 -3.552029142702792e-03 -1.122117964445739e+01 2.522354864132575e-03 -2.510325621051408e-03 -8.198601208444441e-06 -1.122259367356617e+01 -1.122270695926905e+01 -3.907232056973072e-03 1.340861476564923e-02 18 1.028000000000000e-07 -8.785119655074313e-03 1.200000000000000e+01 -1.200000000000000e+01 3.395036540211538e+00 -3.363114808634892e-03 -7.704472530986777e-01 7.121094942444282e+00 -1.538492070060587e-02 -1.122118036385979e+01 2.521540935132261e-03 -2.509445869927408e-03 5.422004846439421e-06 -1.122259560177515e+01 -1.122271510270823e+01 -1.692341277066645e-02 -2.820914323990950e-03 19 1.128000000000000e-07 -3.913736668372024e-02 1.200000000000000e+01 -1.200000000000000e+01 3.544725326469471e+00 -2.109627554198504e-02 -7.853081368860209e-01 6.972667584310598e+00 -2.674750640506460e-02 -1.122117996677387e+01 2.521494482446433e-03 -2.509319707260687e-03 1.804109114173520e-05 -1.122259462980240e+01 -1.122271084448730e+01 -2.942225704557106e-02 -1.929216642781152e-02 20 1.228000000000000e-07 -6.565857557529564e-02 1.200000000000000e+01 -1.200000000000000e+01 3.789696877233673e+00 -3.742938074081141e-02 -7.987151196494516e-01 6.723188031587470e+00 -3.670521878291292e-02 -1.122117636724284e+01 2.522256065601876e-03 -2.509770327480028e-03 2.822919483448423e-05 -1.122259174264131e+01 -1.122269388716191e+01 -4.037574066120422e-02 -3.460646125736298e-02 21 1.328000000000000e-07 -8.575266561936523e-02 1.200000000000000e+01 -1.200000000000000e+01 4.110943777041278e+00 -5.088291682011740e-02 -8.094474556139388e-01 6.394124412955333e+00 -4.435344708574856e-02 -1.122117024167748e+01 2.523797891657339e-03 -2.510551693084213e-03 3.486974879924783e-05 -1.122258694003999e+01 -1.122266506941387e+01 -4.878879179432341e-02 -4.739594194019261e-02 22 1.428000000000000e-07 -9.745268727865772e-02 1.200000000000000e+01 -1.200000000000000e+01 4.480745780624993e+00 -6.014274097932271e-02 -8.164581457155320e-01 6.015226097286446e+00 -4.889727976680203e-02 -1.122116321850084e+01 2.525989194014451e-03 -2.511460973133898e-03 3.730994629933501e-05 -1.122257980950357e+01 -1.122262715351589e+01 -5.378700774348223e-02 -5.641174634938921e-02 23 1.528000000000000e-07 -9.961336091431724e-02 1.200000000000000e+01 -1.200000000000000e+01 4.865512624223590e+00 -6.423480607080466e-02 -8.190303175161673e-01 5.621422431347820e+00 -4.979745281944603e-02 -1.122115462937705e+01 2.528659747732526e-03 -2.512364225911711e-03 3.537855484351258e-05 -1.122257190343686e+01 -1.122258289353603e+01 -5.477719810139063e-02 -6.069695058645340e-02 24 1.628000000000000e-07 -9.202318473658703e-02 1.200000000000000e+01 -1.200000000000000e+01 5.228690305554713e+00 -6.257967452144561e-02 -8.167866747171843e-01 5.248888027889240e+00 -4.678211563562912e-02 -1.122114553268902e+01 2.531609905318683e-03 -2.513299443290055e-03 2.944351021514142e-05 -1.122256331378069e+01 -1.122253589981958e+01 -5.146032719919203e-02 -5.963532349993147e-02 25 1.728000000000000e-07 -7.542513807361038e-02 1.200000000000000e+01 -1.200000000000000e+01 5.535470074766134e+00 -5.517888992224805e-02 -8.098196309290665e-01 4.931336215729983e+00 -3.998079030190333e-02 -1.122113696836987e+01 2.534535655032315e-03 -2.514376219368882e-03 2.024624815136233e-05 -1.122255520261722e+01 -1.122249084316027e+01 -4.397886933209367e-02 -5.315426510711182e-02 26 1.828000000000000e-07 -5.144395337815065e-02 1.200000000000000e+01 -1.200000000000000e+01 5.756806571147748e+00 -4.265301881081104e-02 -7.987224329420300e-01 4.696654032793298e+00 -2.993914774352785e-02 -1.122112971477560e+01 2.537143629818986e-03 -2.515710425344675e-03 8.790934567339612e-06 -1.122254794154222e+01 -1.122245253742912e+01 -3.293306251788064e-02 -4.177392535407708e-02 27 1.928000000000000e-07 -2.242707609493811e-02 1.200000000000000e+01 -1.200000000000000e+01 5.872790252088666e+00 -2.623561669253520e-02 -7.845389420420441e-01 4.564495917195316e+00 -1.760490207863821e-02 -1.122112524259022e+01 2.539091427374859e-03 -2.517327645201113e-03 -3.808540597597092e-06 -1.122254282480541e+01 -1.122242581256313e+01 -1.936539228650203e-02 -2.661647075229491e-02 28 2.028000000000000e-07 8.785119655074323e-03 1.200000000000000e+01 -1.200000000000000e+01 5.874276152301390e+00 -7.638151985379237e-03 -7.687007251169979e-01 4.545167601012296e+00 -4.253578332581668e-03 -1.122112277582411e+01 2.540204377647055e-03 -2.519111763459837e-03 -1.642327164045356e-05 -1.122254047721901e+01 -1.122241318763490e+01 -4.678936165839835e-03 -9.280479149424593e-03 29 2.128000000000000e-07 3.913736668372024e-02 1.200000000000000e+01 -1.200000000000000e+01 5.763960210758678e+00 1.115862972958843e-02 -7.528574589708557e-01 4.638432360002152e+00 8.673209626432621e-03 -1.122112387824945e+01 2.540294008908608e-03 -2.520816936836390e-03 -2.797873695413181e-05 -1.122254094495380e+01 -1.122241701784194e+01 9.540530589075883e-03 8.360756034175247e-03 30 2.228000000000000e-07 6.565857557529565e-02 1.200000000000000e+01 -1.200000000000000e+01 5.555674201637829e+00 2.815172935828827e-02 -7.386960232530976e-01 4.833913483799417e+00 1.973545617327201e-02 -1.122112867802619e+01 2.539319008357225e-03 -2.522097665357585e-03 -3.750684621700738e-05 -1.122254411009857e+01 -1.122243755532644e+01 2.170900179059921e-02 2.440104473658753e-02 31 2.328000000000000e-07 8.575266561936523e-02 1.200000000000000e+01 -1.200000000000000e+01 5.273076837117051e+00 4.155720341716579e-02 -7.277295663758578e-01 5.111458675637870e+00 2.770495065196849e-02 -1.122113485596993e+01 2.537446755564167e-03 -2.522603191523005e-03 -4.419546220219943e-05 -1.122255049379743e+01 -1.122247138795426e+01 3.047544571716534e-02 3.713765719694585e-02 32 2.428000000000000e-07 9.745268727865772e-02 1.200000000000000e+01 -1.200000000000000e+01 4.946658411276857e+00 5.006557323166249e-02 -7.210537305320607e-01 5.442553507730120e+00 3.178817749019608e-02 -1.122114343956629e+01 2.534885676863183e-03 -2.522135980077617e-03 -4.738711404699522e-05 -1.122255834209136e+01 -1.122251500943205e+01 3.496699523921569e-02 4.532686182696297e-02 33 2.528000000000000e-07 9.961336091431725e-02 1.200000000000000e+01 -1.200000000000000e+01 4.610516889660986e+00 5.291947555746709e-02 -7.192820974613096e-01 5.793253137485615e+00 3.167486513461216e-02 -1.122115295991807e+01 2.531935128803562e-03 -2.520680645281244e-03 -4.669388535685016e-05 -1.122256685475432e+01 -1.122256351643230e+01 3.484235164807337e-02 4.825008702178207e-02 34 2.628000000000000e-07 9.202318473658704e-02 1.200000000000000e+01 -1.200000000000000e+01 4.298747476188647e+00 4.996895323921279e-02 -7.224828022604118e-01 6.127220175511208e+00 2.755818959295823e-02 -1.122116256598761e+01 2.528900132952311e-03 -2.518461363129395e-03 -4.205423149737425e-05 -1.122257543266856e+01 -1.122261174873191e+01 3.031400855225406e-02 4.576353008947536e-02 35 2.728000000000000e-07 7.542513807361040e-02 1.200000000000000e+01 -1.200000000000000e+01 4.042265246982520e+00 4.163037529776538e-02 -7.302270723984358e-01 6.409508060810392e+00 2.001967778037014e-02 -1.122116990713693e+01 2.526137815464590e-03 -2.515881164577555e-03 -3.379476277584502e-05 -1.122258374230358e+01 -1.122265391317875e+01 2.202164555840716e-02 3.825089902018087e-02 36 2.828000000000000e-07 5.144395337815067e-02 1.200000000000000e+01 -1.200000000000000e+01 3.866045979818471e+00 2.881442713716651e-02 -7.416654185772972e-01 6.610603844427347e+00 9.927893164723509e-03 -1.122117610433410e+01 2.523858183525920e-03 -2.513393822792123e-03 -2.262952624098416e-05 -1.122258990852311e+01 -1.122268713020525e+01 1.092068248119586e-02 2.655147451306809e-02 37 2.928000000000000e-07 2.242707609493817e-02 1.200000000000000e+01 -1.200000000000000e+01 3.787806419404524e+00 1.277280867629798e-02 -7.556546017781780e-01 6.709042935920922e+00 -1.741602162095288e-03 -1.122117943891965e+01 2.522259360893320e-03 -2.511374036413438e-03 -9.654267418640184e-06 -1.122259413219831e+01 -1.122270843096236e+01 -1.915762378304817e-03 1.180738193443397e-02 38 3.028000000000000e-07 -8.785119655074266e-03 1.200000000000000e+01 -1.200000000000000e+01 3.816392990205338e+00 -4.978754422657115e-03 -7.708382501184124e-01 6.693624624780662e+00 -1.392726911941041e-02 -1.122118144356325e+01 2.521409578366684e-03 -2.510057310679562e-03 3.806365232417151e-06 -1.122259563400515e+01 -1.122271714439186e+01 -1.531999603135145e-02 -4.598117899415400e-03 39 3.128000000000000e-07 -3.913736668372019e-02 1.200000000000000e+01 -1.200000000000000e+01 3.951434322489680e+00 -2.286818170174345e-02 -7.858500957784174e-01 6.564388629042895e+00 -2.562058772493039e-02 -1.122118003925044e+01 2.521398094923545e-03 -2.509476706809265e-03 1.626918498197674e-05 -1.122259497891980e+01 -1.122271224417408e+01 -2.818264649742343e-02 -2.124126320354578e-02 40 3.228000000000000e-07 -6.565857557529560e-02 1.200000000000000e+01 -1.200000000000000e+01 4.182830489520378e+00 -3.931634599673926e-02 -7.993511428606944e-01 6.332661150268941e+00 -3.583768983099970e-02 -1.122117584312275e+01 2.522219353452202e-03 -2.509509628177206e-03 2.634222957855635e-05 -1.122259220672582e+01 -1.122269417459144e+01 -3.942145881409966e-02 -3.668212303888362e-02 41 3.328000000000000e-07 -8.575266561936519e-02 1.200000000000000e+01 -1.200000000000000e+01 4.490869738856434e+00 -5.282946752561286e-02 -8.101130164623758e-01 6.020405081378722e+00 -4.366526977422147e-02 -1.122117071713985e+01 2.523770832346798e-03 -2.509931053833477e-03 3.292319809375233e-05 -1.122258661906640e+01 -1.122266536973173e+01 -4.803179675164361e-02 -4.953714771623763e-02 42 3.428000000000000e-07 -9.745268727865769e-02 1.200000000000000e+01 -1.200000000000000e+01 4.847251797049493e+00 -6.209643855331381e-02 -8.171033614169909e-01 5.657703374496237e+00 -4.831760391091303e-02 -1.122116327127075e+01 2.525983025078024e-03 -2.510562646408965e-03 3.535624872534388e-05 -1.122257979980847e+01 -1.122262701144879e+01 -5.314936430200434e-02 -5.856081368077942e-02 43 3.528000000000000e-07 -9.961336091431726e-02 1.200000000000000e+01 -1.200000000000000e+01 5.218017909497103e+00 -6.613862723838788e-02 -8.196123294660679e-01 5.279647991215794e+00 -4.926183557262527e-02 -1.122115443339886e+01 2.528694381073916e-03 -2.511291131598653e-03 3.347473367592938e-05 -1.122257173798651e+01 -1.122258218171546e+01 -5.418801912988780e-02 -6.279115387079494e-02 44 3.628000000000000e-07 -9.202318473658708e-02 1.200000000000000e+01 -1.200000000000000e+01 5.566626354573355e+00 -6.437562258272031e-02 -8.172709383446067e-01 4.922370023075726e+00 -4.623542851690072e-02 -1.122114533917677e+01 2.531662266772031e-03 -2.512157629193931e-03 2.764756215386677e-05 -1.122256313798012e+01 -1.122253486872805e+01 -5.085897136859079e-02 -6.161086636733363e-02 45 3.728000000000000e-07 -7.542513807361045e-02 1.200000000000000e+01 -1.200000000000000e+01 5.858499019113948e+00 -5.681759546536133e-02 -8.101848900343596e-01 4.619400836370345e+00 -3.938139016277463e-02 -1.122113663063900e+01 2.534608273975891e-03 -2.513266845983521e-03 1.860754260824912e-05 -1.122255492819771e+01 -1.122248956598223e+01 -4.331952917905209e-02 -5.495684120453642e-02 46 3.828000000000000e-07 -5.144395337815075e-02 1.200000000000000e+01 -1.200000000000000e+01 6.064966703377618e+00 -4.409563124076089e-02 -7.989567654109226e-01 4.398376978113411e+00 -2.925659038565485e-02 -1.122112939661217e+01 2.537217323603784e-03 -2.514722101681506e-03 7.348322137389863e-06 -1.122254783635500e+01 -1.122245119574801e+01 -3.218224942422034e-02 -4.336079902702191e-02 47 3.928000000000000e-07 -2.242707609493827e-02 1.200000000000000e+01 -1.200000000000000e+01 6.166437261297197e+00 -2.746224784575187e-02 -7.846409066736274e-01 4.278762380411120e+00 -1.681976428664167e-02 -1.122112471978972e+01 2.539180160851750e-03 -2.516536271818654e-03 -5.035171750813608e-06 -1.122254268303188e+01 -1.122242432203544e+01 -1.850174071530584e-02 -2.796576502083323e-02 48 4.028000000000000e-07 8.785119655074188e-03 1.200000000000000e+01 -1.200000000000000e+01 6.154030188298130e+00 -8.644941910019705e-03 -7.686739723009542e-01 4.270865326199113e+00 -3.353670312114880e-03 -1.122112254738271e+01 2.540284171215174e-03 -2.518566575919411e-03 -1.743006156509389e-05 -1.122254020557140e+01 -1.122241191102237e+01 -3.689037343326367e-03 -1.038794806652909e-02 49 4.128000000000000e-07 3.913736668372010e-02 1.200000000000000e+01 -1.200000000000000e+01 6.030563607315468e+00 1.035569734022588e-02 -7.527164640804709e-01 4.374613606155732e+00 9.687134282780146e-03 -1.122112432589398e+01 2.540336793555598e-03 -2.520538494947579e-03 -2.878166934349422e-05 -1.122254052873602e+01 -1.122241643276009e+01 1.065584771105816e-02 7.477530405876463e-03 50 4.227999999999999e-07 6.565857557529551e-02 1.200000000000000e+01 -1.200000000000000e+01 5.809818928619759e+00 2.750809020973228e-02 -7.384811083981042e-01 4.579888460793798e+00 2.083663830105241e-02 -1.122112794412038e+01 2.539375886332458e-03 -2.522085658264663e-03 -3.815048536556323e-05 -1.122254434434173e+01 -1.122243662734711e+01 2.292030213115765e-02 2.369304167317596e-02 51 4.327999999999999e-07 8.575266561936512e-02 1.200000000000000e+01 -1.200000000000000e+01 5.515358666496815e+00 4.103461258674809e-02 -7.274693156543865e-01 4.866922892164498e+00 2.887081932658433e-02 -1.122113504998577e+01 2.537470889152142e-03 -2.522828596633157e-03 -4.471805303261704e-05 -1.122255027946264e+01 -1.122247109187700e+01 3.175790125924277e-02 3.656280728348638e-02 52 4.427999999999999e-07 9.745268727865767e-02 1.200000000000000e+01 -1.200000000000000e+01 5.177603966640733e+00 4.961933184532148e-02 -7.207828009066485e-01 5.207517000031763e+00 3.298402903577238e-02 -1.122114430860128e+01 2.534862941256562e-03 -2.522545118762814e-03 -4.783335543333619e-05 -1.122255784703006e+01 -1.122251564353940e+01 3.628243193934961e-02 4.483599630198786e-02 53 4.527999999999999e-07 9.961336091431726e-02 1.200000000000000e+01 -1.200000000000000e+01 4.830591551430599e+00 5.249691328937746e-02 -7.190451446457121e-01 5.567863423224701e+00 3.285024303672358e-02 -1.122115282187749e+01 2.531906057116050e-03 -2.521212143628345e-03 -4.711644762493981e-05 -1.122256724427916e+01 -1.122256399219122e+01 3.613526734039594e-02 4.778526852688348e-02 54 4.627999999999999e-07 9.202318473658712e-02 1.200000000000000e+01 -1.200000000000000e+01 4.508459346215091e+00 4.953255304872765e-02 -7.223073821027258e-01 5.911581147684987e+00 2.867027370600323e-02 -1.122116195014409e+01 2.528890020556108e-03 -2.519054048117197e-03 -4.249063168785946e-05 -1.122257593797065e+01 -1.122261184085031e+01 3.153730107660355e-02 4.528348987994171e-02 55 4.727999999999999e-07 7.542513807361053e-02 1.200000000000000e+01 -1.200000000000000e+01 4.242302022296946e+00 4.115965815346004e-02 -7.301216969273265e-01 6.203596499392769e+00 2.103793851664795e-02 -1.122116979947481e+01 2.526118149677454e-03 -2.516468637804769e-03 -3.426547992015049e-05 -1.122258380467289e+01 -1.122265426317697e+01 2.314173236831274e-02 3.773311016144499e-02 56 4.827999999999999e-07 5.144395337815084e-02 1.200000000000000e+01 -1.200000000000000e+01 4.057253262262002e+00 2.828959593315062e-02 -7.416396717235090e-01 6.414165946279898e+00 1.082170817628486e-02 -1.122117562280834e+01 2.523843313644081e-03 -2.513916860286227e-03 -2.315435744500022e-05 -1.122259013497539e+01 -1.122268736595415e+01 1.190387899391335e-02 2.597416018865059e-02 57 4.927999999999999e-07 2.242707609493834e-02 1.200000000000000e+01 -1.200000000000000e+01 3.971146071811434e+00 1.219053078311967e-02 -7.557000787733773e-01 6.521688704213513e+00 -9.812788811089399e-04 -1.122118028484628e+01 2.522192241034393e-03 -2.511775536639819e-03 -1.023654531181867e-05 -1.122259407345298e+01 -1.122270950343299e+01 -1.079406769219834e-03 1.116687625193781e-02 58 5.000000000000000e-07 -5.381041520141734e-18 1.200000000000000e+01 -1.200000000000000e+01 3.975287172056412e+00 -5.704958019069692e-04 -7.666604526782946e-01 6.528872533187920e+00 -9.876563682617151e-03 -1.122118118592116e+01 2.521567657745982e-03 -2.510643088771625e-03 -5.704958019069638e-07 -1.122259540822125e+01 -1.122271609223858e+01 -1.086422005087887e-02 -6.275453820976656e-04 0707070124062140641006440006700000000000011777770500302371300003500000002533spice3c1/examples/mosamp2.inmosamp2 - mos amplifier - transient .options acct abstol=10n vntol=10n .tran 0.1us 10us m1 15 15 1 32 m w=88.9u l=25.4u m2 1 1 2 32 m w=12.7u l=266.7u m3 2 2 30 32 m w=88.9u l=25.4u m4 15 5 4 32 m w=12.7u l=106.7u m5 4 4 30 32 m w=88.9u l=12.7u m6 15 15 5 32 m w=44.5u l=25.4u m7 5 20 8 32 m w=482.6u l=12.7u m8 8 2 30 32 m w=88.9u l=25.4u m9 15 15 6 32 m w=44.5u l=25.4u m10 6 21 8 32 m w=482.6u l=12.7u m11 15 6 7 32 m w=12.7u l=106.7u m12 7 4 30 32 m w=88.9u l=12.7u m13 15 10 9 32 m w=139.7u l=12.7u m14 9 11 30 32 m w=139.7u l=12.7u m15 15 15 12 32 m w=12.7u l=207.8u m16 12 12 11 32 m w=54.1u l=12.7u m17 11 11 30 32 m w=54.1u l=12.7u m18 15 15 10 32 m w=12.7u l=45.2u m19 10 12 13 32 m w=270.5u l=12.7u m20 13 7 30 32 m w=270.5u l=12.7u m21 15 10 14 32 m w=254u l=12.7u m22 14 11 30 32 m w=241.3u l=12.7u m23 15 20 16 32 m w=19u l=38.1u m24 16 14 30 32 m w=406.4u l=12.7u m25 15 15 20 32 m w=38.1u l=42.7u m26 20 16 30 32 m w=381u l=25.4u m27 20 15 66 32 m w=22.9u l=7.6u cc 7 9 40pf cl 66 0 70pf vin 21 0 pulse(0 5 1ns 1ns 1ns 5us 10us) vccp 15 0 dc +15 vddn 30 0 dc -15 vb 32 0 dc -20 .model m nmos(nsub=2.2e15 uo=575 ucrit=49k uexp=0.1 tox=0.11u xj=2.95u + level=2 cgso=1.5n cgdo=1.5n cbd=4.5f cbs=4.5f ld=2.4485u nss=3.2e10 + kp=2e-5 phi=0.6 ) .print tran v(20) v(66) .plot tran v(20) v(66) .end 0707070124062140651006440006700000000000011777770500302371300003600000002502spice3c1/examples/mosamp2.outWarning: vin: no DC value, transient time 0 value used (debug printing enabled) Circuit: mosamp2 - mos amplifier - transient Note: starting Gmin stepping Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: One sucessful Gmin step Note: Gmin stepping completed Circuit: mosamp2 - mos amplifier - transient Date: Mon May 1 17:02:33 PDT 1989 .print card ignored since rawfile was produced .plot card ignored since rawfile was produced Total run time: 30.400 seconds. Current data size = 347104, Data limits: hard = 85950464, soft = 85950464. 34 page faults, 38 vol + 343 invol = 381 context switches. Time since last call: 0.000 seconds. Nominal temperature = 27 Operating temperature = 27 Total iterations = 710 Transient iterations = 564 Circuit Equations = 25 Transient timepoints = 208 Accepted timepoints = 170 Rejected timepoints = 38 Total Analysis Time = 29.92 Transient time = 25.53 matrix reordering time = 0.04 L-U decomposition time = 0.97 Matrix solve time = 0.64 transient L-U decomp time = 0.81 Transient solve time = 0.52 Transient iters per point = 0 Load time = 24.67 0707070124062140661006440006700000000000011777770500302371300003600000306004spice3c1/examples/mosamp2.rawTitle: mosamp2 - mos amplifier - transient Date: Mon May 1 17:00:52 PDT 1989 Plotname: transient Flags: real No. Variables: 25 No. Points: 170 Command: version SPICE 3c1 Alpha test Variables: 0 time time 1 V(15) voltage 2 V(1) voltage 3 V(32) voltage 4 V(2) voltage 5 V(30) voltage 6 V(5) voltage 7 V(4) voltage 8 V(20) voltage 9 V(8) voltage 10 V(6) voltage 11 V(21) voltage 12 V(7) voltage 13 V(10) voltage 14 V(9) voltage 15 V(11) voltage 16 V(12) voltage 17 V(13) voltage 18 V(14) voltage 19 V(16) voltage 20 V(66) voltage 21 vb#branch current 22 vddn#branch current 23 vccp#branch current 24 vin#branch current Values: 0 0.000000000000000e+00 1.500000000000000e+01 9.645151810896303e+00 -2.000000000000000e+01 -1.173537121188383e+01 -1.500000000000000e+01 9.463943076722423e+00 -1.206778604375265e+01 4.197204439422299e-02 -2.314554074080814e+00 9.697743215295090e+00 0.000000000000000e+00 -1.190051241020262e+01 -1.033767034747928e+01 -1.299782267675332e+01 -1.208141974586166e+01 -8.893994917503190e+00 -1.227236674077976e+01 -1.296551614294199e+01 -1.104694970967401e+01 4.197203215705684e-02 1.266329285317180e-09 5.215119767588326e-03 -5.215121033917608e-03 0.000000000000000e+00 1 1.000000000000000e-11 1.500000000000000e+01 9.644646499330143e+00 -2.000000000000000e+01 -1.173455149329094e+01 -1.500000000000000e+01 9.463256271961348e+00 -1.206731588188922e+01 4.335947782166330e-02 -2.313991372190385e+00 9.696274177694709e+00 0.000000000000000e+00 -1.190021670251657e+01 -1.033659759886281e+01 -1.299752442903749e+01 -1.208057123391771e+01 -8.892653903138581e+00 -1.227113599297340e+01 -1.296545783862378e+01 -1.104783250446848e+01 4.197248202392987e-02 -5.360050378012677e-07 5.222728502943780e-03 -5.350922138118852e-03 1.255805721015052e-04 2 2.000000000000000e-11 1.500000000000000e+01 9.644646613814485e+00 -2.000000000000000e+01 -1.173455259527523e+01 -1.500000000000000e+01 9.463244795993542e+00 -1.206732175362879e+01 4.334577703560068e-02 -2.313997959827836e+00 9.696276477323907e+00 0.000000000000000e+00 -1.190021896775396e+01 -1.033659898977623e+01 -1.299752666460997e+01 -1.208057211034449e+01 -8.892657567544501e+00 -1.227114226950696e+01 -1.296545728981866e+01 -1.104783481645801e+01 4.197292713082766e-02 -1.211676491395331e-08 5.215717247063545e-03 -5.217991299970734e-03 -8.295786129569604e-07 3 4.000000000000000e-11 1.500000000000000e+01 9.644646854866564e+00 -2.000000000000000e+01 -1.173455477725655e+01 -1.500000000000000e+01 9.463222206838150e+00 -1.206733333123642e+01 4.331882277638167e-02 -2.314010918977683e+00 9.696281034464454e+00 0.000000000000000e+00 -1.190022341778720e+01 -1.033660177432388e+01 -1.299753105583741e+01 -1.208057385056102e+01 -8.892664790905535e+00 -1.227115459612122e+01 -1.296545618732534e+01 -1.104783935617402e+01 4.197380649542665e-02 -1.189025384753942e-08 5.215729068809849e-03 -5.217964752190770e-03 -8.048876702221319e-07 4 8.000000000000000e-11 1.500000000000000e+01 9.644647378937089e+00 -2.000000000000000e+01 -1.173455906528597e+01 -1.500000000000000e+01 9.463178655955682e+00 -1.206735584073150e+01 4.326691604028980e-02 -2.314035881040756e+00 9.696290013662650e+00 0.000000000000000e+00 -1.190023201292021e+01 -1.033660734400469e+01 -1.299753953688991e+01 -1.208057728895724e+01 -8.892678836946390e+00 -1.227117828499565e+01 -1.296545394254406e+01 -1.104784805355709e+01 4.197551482838193e-02 -1.119417698767773e-08 5.215749864311822e-03 -5.217910861490116e-03 -7.585956997707699e-07 5 1.600000000000000e-10 1.500000000000000e+01 9.644648532850823e+00 -2.000000000000000e+01 -1.173456732934103e+01 -1.500000000000000e+01 9.463098207208930e+00 -1.206739761658640e+01 4.317118150852113e-02 -2.314081949977732e+00 9.696307275567757e+00 0.000000000000000e+00 -1.190024763798175e+01 -1.033661851957853e+01 -1.299755494242933e+01 -1.208058399946705e+01 -8.892704933155201e+00 -1.227122156130067e+01 -1.296544947932141e+01 -1.104786396369688e+01 4.197873718366031e-02 -9.919005566924144e-09 5.215789199429111e-03 -5.217815364638813e-03 -6.701287843923626e-07 6 3.200000000000000e-10 1.500000000000000e+01 9.644651635220304e+00 -2.000000000000000e+01 -1.173458246476505e+01 -1.500000000000000e+01 9.462960292223893e+00 -1.206747047769574e+01 4.300768749173346e-02 -2.314160722014060e+00 9.696339073297519e+00 0.000000000000000e+00 -1.190027400507896e+01 -1.033664097811109e+01 -1.299758090814925e+01 -1.208059691320088e+01 -8.892750818275710e+00 -1.227129467035989e+01 -1.296544061061393e+01 -1.104789065403727e+01 4.198449965861154e-02 -7.774296308962986e-09 5.215844939730863e-03 -5.217634715521619e-03 -5.245473192454914e-07 7 6.400000000000000e-10 1.500000000000000e+01 9.644660288126647e+00 -2.000000000000000e+01 -1.173460812276176e+01 -1.500000000000000e+01 9.462755188205014e+00 -1.206758306727162e+01 4.276670874679518e-02 -2.314277106941170e+00 9.696394480824022e+00 0.000000000000000e+00 -1.190031250696611e+01 -1.033668606629210e+01 -1.299761874359005e+01 -1.208062159751053e+01 -8.892824304461631e+00 -1.227140203072852e+01 -1.296542405280286e+01 -1.104792863046641e+01 4.199392013867665e-02 -4.699743516536523e-09 5.215910933250367e-03 -5.217352788834027e-03 -3.072728357957945e-07 8 1.000000000000000e-09 1.500000000000000e+01 9.644671047869510e+00 -2.000000000000000e+01 -1.173463248481975e+01 -1.500000000000000e+01 9.462605389142649e+00 -1.206767122440795e+01 4.259388984326412e-02 -2.314360933807004e+00 9.696447009379996e+00 0.000000000000000e+00 -1.190034076179931e+01 -1.033673683296947e+01 -1.299764643914013e+01 -1.208064957714100e+01 -8.892887668507324e+00 -1.227148188656550e+01 -1.296540797768018e+01 -1.104795425942636e+01 4.200210486115790e-02 -2.615374240619886e-09 5.215920067581796e-03 -5.217108354171170e-03 -1.521421000602423e-07 9 1.064000000000000e-09 1.500000000000000e+01 9.655285414718122e+00 -2.000000000000000e+01 -1.171623067463543e+01 -1.500000000000000e+01 9.528031798475868e+00 -1.204512138010385e+01 1.468660639800297e-01 -2.110453849297980e+00 9.878663395461757e+00 3.200000000000001e-01 -1.187275924266601e+01 -1.032781551042574e+01 -1.297041450524234e+01 -1.207611740626890e+01 -8.885704361622249e+00 -1.225979119749793e+01 -1.295804751010512e+01 -1.102520338242948e+01 4.221861244759815e-02 2.577843746384573e-05 7.192183200582680e-03 -3.153615377058517e-03 -4.301151433657079e-03 10 1.146677414337601e-09 1.500000000000000e+01 9.668694820946109e+00 -2.000000000000000e+01 -1.169284519406346e+01 -1.500000000000000e+01 9.608975469732840e+00 -1.201781829647119e+01 2.741557483312733e-01 -1.849545646105584e+00 1.010900291063754e+01 7.333870716880061e-01 -1.183934528831926e+01 -1.031715931042148e+01 -1.293745638195220e+01 -1.207077469251918e+01 -8.878374249812051e+00 -1.224870158930891e+01 -1.294923142409941e+01 -1.099747053541024e+01 4.271361171017956e-02 2.406604733609172e-05 7.142203842417476e-03 -3.246113159626659e-03 -4.442007602636170e-03 11 1.189106314516325e-09 1.500000000000000e+01 9.675443694272073e+00 -2.000000000000000e+01 -1.168100319940165e+01 -1.500000000000000e+01 9.647945363169935e+00 -1.200496115521525e+01 3.349766958250476e-01 -1.716492643792024e+00 1.022428384829797e+01 9.455315725816232e-01 -1.182338375337242e+01 -1.031218938976379e+01 -1.292173046236490e+01 -1.206831544705438e+01 -8.875606306343968e+00 -1.224503123928823e+01 -1.294510779664090e+01 -1.098423977432218e+01 4.307533514159692e-02 5.557713421616299e-05 7.099002875261343e-03 -3.313374153039713e-03 -4.498242892286392e-03 12 1.220471467635084e-09 1.500000000000000e+01 9.680401390348086e+00 -2.000000000000000e+01 -1.167227046553254e+01 -1.500000000000000e+01 9.673972594434695e+00 -1.199646217604019e+01 3.753697427427542e-01 -1.617937564655705e+00 1.030796466270997e+01 1.102357338175419e+00 -1.181219240123435e+01 -1.030880946013598e+01 -1.291071379758783e+01 -1.206665655656507e+01 -8.874036223412485e+00 -1.224325839865150e+01 -1.294237016992613e+01 -1.097545645329388e+01 4.338977875870902e-02 1.877434195525146e-04 6.997266202822344e-03 -3.429850154624719e-03 -4.501551626971684e-03 13 1.257327758285945e-09 1.500000000000000e+01 9.686289166704886e+00 -2.000000000000000e+01 -1.166186494578755e+01 -1.500000000000000e+01 9.699776254208530e+00 -1.198806916855644e+01 4.150718886393418e-01 -1.500052749520699e+00 1.040443277233264e+01 1.286638791429723e+00 -1.179976264699815e+01 -1.030522876004488e+01 -1.289848968866587e+01 -1.206491177940337e+01 -8.872724552822374e+00 -1.224219779392490e+01 -1.293963021104050e+01 -1.096681932623676e+01 4.380439892331457e-02 3.522305336582931e-04 6.840251542732892e-03 -3.604289602886282e-03 -4.421970547064233e-03 14 1.302995244424568e-09 1.500000000000000e+01 9.693872687113310e+00 -2.000000000000000e+01 -1.164841816256106e+01 -1.500000000000000e+01 9.723834017286451e+00 -1.198024420369042e+01 4.513879379250339e-01 -1.347126030497037e+00 1.052112815315213e+01 1.514976222122838e+00 -1.178542117186082e+01 -1.030140136092425e+01 -1.288440367399931e+01 -1.206306089032802e+01 -8.871858767583647e+00 -1.224231671762805e+01 -1.293700264387842e+01 -1.095890752147809e+01 4.437090699014817e-02 4.214337668612241e-04 6.651248465980121e-03 -3.819505927459468e-03 -4.166288229298501e-03 15 1.354783970320506e-09 1.500000000000000e+01 9.702788541312920e+00 -2.000000000000000e+01 -1.163254583421785e+01 -1.500000000000000e+01 9.743596811059858e+00 -1.197390402800999e+01 4.801136463895628e-01 -1.165769634751167e+00 1.064979281979094e+01 1.773919851602531e+00 -1.177039783249465e+01 -1.029775759311744e+01 -1.286967128649097e+01 -1.206130778369173e+01 -8.871754135224904e+00 -1.224412214276414e+01 -1.293479569114623e+01 -1.095264132644296e+01 4.506496221546041e-02 4.485380696779692e-04 6.531779282303765e-03 -3.968968911757986e-03 -3.986537070945724e-03 16 1.439154748647394e-09 1.500000000000000e+01 9.717261680565733e+00 -2.000000000000000e+01 -1.160659663175924e+01 -1.500000000000000e+01 9.771009823294438e+00 -1.196550353819123e+01 5.192500497101001e-01 -8.667974149009544e-01 1.085091345616493e+01 2.195773743236968e+00 -1.174823860072914e+01 -1.029294070662205e+01 -1.284798818506743e+01 -1.205897364244916e+01 -8.873133385211812e+00 -1.225011774197149e+01 -1.293190598953721e+01 -1.094414195600215e+01 4.628560828940725e-02 5.454868892366624e-04 6.523830342642364e-03 -4.022279220535997e-03 -4.106009735750362e-03 17 1.578266440306714e-09 1.500000000000000e+01 9.741017302026483e+00 -2.000000000000000e+01 -1.156351547705236e+01 -1.500000000000000e+01 9.811919947019666e+00 -1.195416277955484e+01 5.775774654132683e-01 -3.636824894802618e-01 1.115851464246796e+01 2.891332201533572e+00 -1.171736240189637e+01 -1.028772035510636e+01 -1.281789931037679e+01 -1.205629322921321e+01 -8.878736170621817e+00 -1.226650794962553e+01 -1.292832527539797e+01 -1.093161243857521e+01 4.850625213997855e-02 5.214671605603752e-04 6.524411984957970e-03 -4.102584203338181e-03 -4.125865559400423e-03 18 1.720310646708546e-09 1.500000000000000e+01 9.765205890523129e+00 -2.000000000000000e+01 -1.151901170481996e+01 -1.500000000000000e+01 9.851180901933495e+00 -1.194441789982933e+01 6.339327099837986e-01 1.647984037837265e-01 1.145623801226386e+01 3.601553233542731e+00 -1.169039924908511e+01 -1.028520639123906e+01 -1.279176871161783e+01 -1.205461401947851e+01 -8.887325434729472e+00 -1.228878603409410e+01 -1.292577622298066e+01 -1.091964411579587e+01 5.102086659894348e-02 4.716236462279786e-04 6.556687556525652e-03 -4.330897282524405e-03 -3.998162480744082e-03 19 2.000000000000000e-09 1.500000000000000e+01 9.812676015501534e+00 -2.000000000000000e+01 -1.142982489285429e+01 -1.500000000000000e+01 9.922520189896458e+00 -1.192966671053820e+01 7.375802908673285e-01 1.250330665298789e+00 1.198706292357460e+01 5.000000000000000e+00 -1.164978338736203e+01 -1.028857056112716e+01 -1.275285687362577e+01 -1.205411151818965e+01 -8.909822186306071e+00 -1.234253501228974e+01 -1.292410186384652e+01 -1.089796326459611e+01 5.663431547679171e-02 4.330737960936009e-04 6.565131294240016e-03 -4.641819728099306e-03 -3.871202125821256e-03 20 2.028408841280366e-09 1.500000000000000e+01 9.812294212915825e+00 -2.000000000000000e+01 -1.142960679868591e+01 -1.500000000000000e+01 9.915586319323876e+00 -1.193447457284574e+01 7.255560402640417e-01 1.265308282478985e+00 1.193890350833767e+01 5.000000000000000e+00 -1.166124582351250e+01 -1.029377309884833e+01 -1.276431430407321e+01 -1.205643313666749e+01 -8.916476594541020e+00 -1.235554538710301e+01 -1.292653535936511e+01 -1.090082501120476e+01 5.723788617405112e-02 -5.039287236914679e-04 5.059216337525568e-03 -5.612474679365104e-03 -4.300242005391610e-04 21 2.085226523841099e-09 1.500000000000000e+01 9.811492363287383e+00 -2.000000000000000e+01 -1.142924172160762e+01 -1.500000000000000e+01 9.902297033529242e+00 -1.194366315149522e+01 7.020063788487326e-01 1.294494256219747e+00 1.184510496384935e+01 5.000000000000000e+00 -1.168319620956133e+01 -1.030402388969460e+01 -1.278625816523365e+01 -1.206089171711957e+01 -8.928712879622765e+00 -1.237924335593495e+01 -1.293133208528005e+01 -1.090640797841639e+01 5.841867284127535e-02 -4.936446349949864e-04 5.051067200326963e-03 -5.579892868414952e-03 -4.106254474341743e-04 22 2.198861888962565e-09 1.500000000000000e+01 9.809700752036750e+00 -2.000000000000000e+01 -1.142886685426963e+01 -1.500000000000000e+01 9.877506666729641e+00 -1.196039501007132e+01 6.572504670433778e-01 1.348921747326024e+00 1.166860118689089e+01 5.000000000000000e+00 -1.172289685802915e+01 -1.032375820650481e+01 -1.282595942805061e+01 -1.206899880868399e+01 -8.948645178471782e+00 -1.241683589318308e+01 -1.294059362336684e+01 -1.091688669991534e+01 6.065880915276409e-02 -4.559028739017173e-04 5.036601045591772e-03 -5.522686831451637e-03 -3.880768578809241e-04 23 2.426132619205495e-09 1.500000000000000e+01 9.805513649544520e+00 -2.000000000000000e+01 -1.142930438096654e+01 -1.500000000000000e+01 9.834811193472638e+00 -1.198773342193808e+01 5.768714950788984e-01 1.444296349770501e+00 1.137084635525735e+01 5.000000000000000e+00 -1.178595601839890e+01 -1.035928882055387e+01 -1.288909018209758e+01 -1.208212491447124e+01 -8.973600425867215e+00 -1.246033860510238e+01 -1.295761527461667e+01 -1.093517163980074e+01 6.468023302432192e-02 -3.910700269264605e-04 5.039690233282700e-03 -5.536657493207580e-03 -2.563543776542962e-04 24 2.880674079691357e-09 1.500000000000000e+01 9.795641371358553e+00 -2.000000000000000e+01 -1.143343471084980e+01 -1.500000000000000e+01 9.772372451432688e+00 -1.202466807019158e+01 4.477187951966616e-01 1.596021644994121e+00 1.092253260471880e+01 5.000000000000000e+00 -1.187011461189139e+01 -1.041571781434609e+01 -1.297352264123163e+01 -1.209985073057221e+01 -8.988544003936863e+00 -1.247456599056468e+01 -1.298643232803927e+01 -1.096257226123351e+01 7.118656558521118e-02 -2.835491437590684e-04 5.035297752169037e-03 -5.456445209751209e-03 -1.395371392174532e-04 25 3.337558526333576e-09 1.500000000000000e+01 9.784628189703684e+00 -2.000000000000000e+01 -1.144045926459942e+01 -1.500000000000000e+01 9.733856596060955e+00 -1.204560714275379e+01 3.525254743828179e-01 1.710967225376223e+00 1.058241791187122e+01 5.000000000000000e+00 -1.192257463124602e+01 -1.045521760040005e+01 -1.302625560408727e+01 -1.211020084007134e+01 -8.979384282957947e+00 -1.244047369864141e+01 -1.300932880617653e+01 -1.097990189231484e+01 7.607199174791383e-02 -2.028238443274226e-04 5.023876616408861e-03 -5.309460752303425e-03 -1.330301874927025e-04 26 3.887726851203483e-09 1.500000000000000e+01 9.770913828341574e+00 -2.000000000000000e+01 -1.145107521183785e+01 -1.500000000000000e+01 9.710341393579912e+00 -1.205755721122751e+01 2.717182279960547e-01 1.815976009151169e+00 1.026324334478708e+01 5.000000000000000e+00 -1.196229832515301e+01 -1.048271438582282e+01 -1.306618901647772e+01 -1.211623499366221e+01 -8.956519222754343e+00 -1.237904351696399e+01 -1.302941308185679e+01 -1.099059449591468e+01 8.034175799919809e-02 -1.346548505527017e-04 5.032777513118830e-03 -5.212693260106187e-03 -1.165592058405782e-04 27 4.607604038167664e-09 1.500000000000000e+01 9.753336428912844e+00 -2.000000000000000e+01 -1.146663053707342e+01 -1.500000000000000e+01 9.703617213703005e+00 -1.206101321772576e+01 2.029614398807292e-01 1.917335540015629e+00 9.946779590790788e+00 5.000000000000000e+00 -1.199222165088296e+01 -1.049184669692706e+01 -1.309610855254407e+01 -1.211715742209959e+01 -8.923826853245445e+00 -1.230026883516896e+01 -1.304432772051114e+01 -1.099320953168345e+01 8.412329500716342e-02 -7.868340289087885e-05 5.068453710112739e-03 -5.167627792724634e-03 -9.035285197674721e-05 28 5.542703673295503e-09 1.500000000000000e+01 9.732153986157269e+00 -2.000000000000000e+01 -1.148760433137656e+01 -1.500000000000000e+01 9.717451765160554e+00 -1.205589352479026e+01 1.503938387435539e-01 2.009931370110628e+00 9.648484215951755e+00 5.000000000000000e+00 -1.200909877161956e+01 -1.047147487333783e+01 -1.311245544649185e+01 -1.211098875995943e+01 -8.887499597996566e+00 -1.222093252381581e+01 -1.304718439563636e+01 -1.098580021771501e+01 8.711742553117583e-02 -4.004835131557966e-05 5.136137335099429e-03 -5.171756625460797e-03 -6.734396402146518e-05 29 6.504044523471977e-09 1.500000000000000e+01 9.712812189346206e+00 -2.000000000000000e+01 -1.150877502635608e+01 -1.500000000000000e+01 9.744836890785366e+00 -1.204642811960694e+01 1.200019363179631e-01 2.074694247920819e+00 9.430907846433759e+00 5.000000000000000e+00 -1.200950939474620e+01 -1.042667263696661e+01 -1.311172056968001e+01 -1.209964497177662e+01 -8.860039113136086e+00 -1.216860995274873e+01 -1.303459196198487e+01 -1.097300573542426e+01 8.879618755219122e-02 -2.230964272178491e-05 5.217827493751167e-03 -5.214148913095491e-03 -5.195464729164281e-05 30 7.533692183528071e-09 1.500000000000000e+01 9.695020133597792e+00 -2.000000000000000e+01 -1.153014996978057e+01 -1.500000000000000e+01 9.779845949183069e+00 -1.203589022246069e+01 1.004731298558740e-01 2.122108785675539e+00 9.263622744359252e+00 5.000000000000000e+00 -1.199756286609448e+01 -1.036620050190115e+01 -1.309796316089202e+01 -1.208527129950487e+01 -8.841131109791130e+00 -1.214038124123510e+01 -1.300903839315603e+01 -1.096004175750657e+01 8.964664136925921e-02 -1.431983119146749e-05 5.305679118278462e-03 -5.275236179474385e-03 -4.062494044858019e-05 31 8.544309550130514e-09 1.500000000000000e+01 9.680400690918329e+00 -2.000000000000000e+01 -1.154942335184069e+01 -1.500000000000000e+01 9.815659907054192e+00 -1.202686959223094e+01 8.784625574342104e-02 2.154219730555543e+00 9.144024712730815e+00 5.000000000000000e+00 -1.197819678978481e+01 -1.030529676391624e+01 -1.307637342001578e+01 -1.207145649700465e+01 -8.831564440447027e+00 -1.213418069966881e+01 -1.297729405121295e+01 -1.095225660145904e+01 8.987874797269769e-02 -1.063848175581717e-05 5.381335799875707e-03 -5.333669589368598e-03 -3.242874351100584e-05 32 9.565958714148733e-09 1.500000000000000e+01 9.668250832484627e+00 -2.000000000000000e+01 -1.156704570368294e+01 -1.500000000000000e+01 9.851683423594992e+00 -1.201956837804921e+01 7.897195791705017e-02 2.177449162792325e+00 9.053512281304839e+00 5.000000000000000e+00 -1.195518917678966e+01 -1.025045587518246e+01 -1.305084108838682e+01 -1.205963762779117e+01 -8.829264344476194e+00 -1.214337176510737e+01 -1.294375983326829e+01 -1.095177511076693e+01 8.972085097669728e-02 -7.739469925808757e-06 5.439046830338491e-03 -5.381140514452552e-03 -2.582759814385592e-05 33 1.066044718482299e-08 1.500000000000000e+01 9.657801630642716e+00 -2.000000000000000e+01 -1.158389957143062e+01 -1.500000000000000e+01 9.889637382537056e+00 -1.201366247861010e+01 7.289828890486185e-02 2.195795820968686e+00 8.979847323154620e+00 5.000000000000000e+00 -1.193079371859092e+01 -1.020508065527745e+01 -1.302363375775820e+01 -1.205062168019823e+01 -8.833027311809058e+00 -1.216408066289790e+01 -1.291111347138574e+01 -1.096023606643716e+01 8.928082841337410e-02 -4.482976708082153e-06 5.475106531405665e-03 -5.413442609238475e-03 -2.007841789397526e-05 34 1.203739464363769e-08 1.500000000000000e+01 9.647788389142967e+00 -2.000000000000000e+01 -1.160238192295478e+01 -1.500000000000000e+01 9.936583094050615e+00 -1.200846371170195e+01 7.007711955553072e-02 2.213069959998431e+00 8.910328948423367e+00 5.000000000000000e+00 -1.190538643753282e+01 -1.017127478481256e+01 -1.299481473167303e+01 -1.204518531343604e+01 -8.843468622948233e+00 -1.219677141678917e+01 -1.288002900353882e+01 -1.098238252459747e+01 8.855409719387311e-02 -9.201107285312191e-08 5.482981779038075e-03 -5.426691391980920e-03 -1.434923454352326e-05 35 1.377102805536827e-08 1.500000000000000e+01 9.639055530902649e+00 -2.000000000000000e+01 -1.162195679741929e+01 -1.500000000000000e+01 9.994491214619320e+00 -1.200432576592695e+01 7.339180403358288e-02 2.229207574607931e+00 8.847643118307823e+00 5.000000000000000e+00 -1.188583313054668e+01 -1.016177644803814e+01 -1.297147428211175e+01 -1.204623336961246e+01 -8.859836414894377e+00 -1.223563308239857e+01 -1.285938962895097e+01 -1.102188593729999e+01 8.771094038857181e-02 4.768563390368754e-06 5.447508934981752e-03 -5.410801928966020e-03 -9.047297663671038e-06 36 1.609750596797110e-08 1.500000000000000e+01 9.632133474892806e+00 -2.000000000000000e+01 -1.164309429839167e+01 -1.500000000000000e+01 1.006900823683018e+01 -1.200100147675184e+01 8.598691388951663e-02 2.244594182855513e+00 8.792299668401322e+00 5.000000000000000e+00 -1.187990547490443e+01 -1.018470206297939e+01 -1.296148376512410e+01 -1.205539478980331e+01 -8.878579504214355e+00 -1.226941041660392e+01 -1.285754970532104e+01 -1.108003250167094e+01 8.723895114846509e-02 8.605632371749989e-06 5.362897711093656e-03 -5.364248027614085e-03 -4.424273710666759e-06 37 1.846754357003250e-08 1.500000000000000e+01 9.628870220592127e+00 -2.000000000000000e+01 -1.165997213942246e+01 -1.500000000000000e+01 1.013937558788355e+01 -1.199859512411740e+01 1.029842974524982e-01 2.254948854904959e+00 8.759100516570517e+00 5.000000000000000e+00 -1.188917493547854e+01 -1.022150672762862e+01 -1.296751847662531e+01 -1.206676535061445e+01 -8.889186639805128e+00 -1.227980921659892e+01 -1.287186678513366e+01 -1.113274208724999e+01 8.784849175436977e-02 9.389176472785237e-06 5.275981710423296e-03 -5.317951292358888e-03 -1.674176699971181e-06 38 2.122813800516439e-08 1.500000000000000e+01 9.627919536406958e+00 -2.000000000000000e+01 -1.167529340783101e+01 -1.500000000000000e+01 1.021270292284299e+01 -1.199573578695887e+01 1.222019265286347e-01 2.262253839571444e+00 8.739599288888738e+00 5.000000000000000e+00 -1.190546584407591e+01 -1.025288472175440e+01 -1.298051948970293e+01 -1.207605396286254e+01 -8.891272041943254e+00 -1.227142527301857e+01 -1.289017698314280e+01 -1.117899850462004e+01 8.996629489671460e-02 8.042974809914719e-06 5.206473701009903e-03 -5.287615372523370e-03 1.902550530563760e-07 39 2.408459733803001e-08 1.500000000000000e+01 9.628709630192905e+00 -2.000000000000000e+01 -1.168751488744630e+01 -1.500000000000000e+01 1.027892242950335e+01 -1.199229464713553e+01 1.387308766653418e-01 2.266383026884011e+00 8.733174626506650e+00 5.000000000000000e+00 -1.191791866943727e+01 -1.026153551364567e+01 -1.298948018880674e+01 -1.207925489213818e+01 -8.886965420905641e+00 -1.225509784832181e+01 -1.289922548769864e+01 -1.121277059200667e+01 9.347245147404277e-02 6.162641322527585e-06 5.174342852520674e-03 -5.284219003252756e-03 1.406888399356325e-06 40 2.813703932800187e-08 1.500000000000000e+01 9.631081712757461e+00 -2.000000000000000e+01 -1.170042075676178e+01 -1.500000000000000e+01 1.035961225210612e+01 -1.198703299474168e+01 1.578651326839555e-01 2.269679662436986e+00 8.736413239278869e+00 5.000000000000000e+00 -1.192254949922651e+01 -1.024572855242566e+01 -1.298847231943584e+01 -1.207700107972552e+01 -8.880395202456123e+00 -1.224003026006381e+01 -1.289367928107185e+01 -1.125202003333328e+01 1.000748251939120e-01 4.918873826371647e-06 5.164157540958295e-03 -5.302161851617854e-03 2.542309241108974e-06 41 3.328245061060106e-08 1.500000000000000e+01 9.634516080726450e+00 -2.000000000000000e+01 -1.171169879812356e+01 -1.500000000000000e+01 1.044720172480861e+01 -1.198089570719477e+01 1.818850812110923e-01 2.272854413475735e+00 8.749012863482277e+00 5.000000000000000e+00 -1.191774465916852e+01 -1.021806558726182e+01 -1.297568992409737e+01 -1.207285877184788e+01 -8.878298951449949e+00 -1.223870453469305e+01 -1.287548320914629e+01 -1.130614660648673e+01 1.106589189573672e-01 5.540909063806510e-06 5.152335385385187e-03 -5.321824178369844e-03 3.207333814172456e-06 42 3.939497285944780e-08 1.500000000000000e+01 9.638034573118417e+00 -2.000000000000000e+01 -1.172035330776945e+01 -1.500000000000000e+01 1.053707716745965e+01 -1.197491090523933e+01 2.153217807148441e-01 2.276346223205150e+00 8.766932578409431e+00 5.000000000000000e+00 -1.191329554432730e+01 -1.020023070803732e+01 -1.296145261200457e+01 -1.207187155969835e+01 -8.880999373897396e+00 -1.224528786251361e+01 -1.285866369548039e+01 -1.137936157103307e+01 1.264224333609462e-01 7.004174307388262e-06 5.114722729450907e-03 -5.325222691976996e-03 3.138203269219269e-06 43 4.662045038593590e-08 1.500000000000000e+01 9.640972254354520e+00 -2.000000000000000e+01 -1.172662491164856e+01 -1.500000000000000e+01 1.062836709661509e+01 -1.196902277189478e+01 2.605891663359693e-01 2.279547498731519e+00 8.787081731074142e+00 5.000000000000000e+00 -1.191449803070071e+01 -1.019164746212414e+01 -1.295108770082636e+01 -1.207346426395134e+01 -8.883527030527726e+00 -1.224794585071032e+01 -1.284740578665673e+01 -1.146682677081169e+01 1.496748435151325e-01 7.929785569456381e-06 5.060017483200673e-03 -5.319982471640034e-03 2.527491657567033e-06 44 5.765982356115154e-08 1.500000000000000e+01 9.643497794914549e+00 -2.000000000000000e+01 -1.173183711124718e+01 -1.500000000000000e+01 1.074427411444687e+01 -1.196113608169877e+01 3.356474367820816e-01 2.282374684339026e+00 8.811953904044832e+00 5.000000000000000e+00 -1.191880756453452e+01 -1.017501243511336e+01 -1.293734669625252e+01 -1.207458422634448e+01 -8.883514617921846e+00 -1.224412474131235e+01 -1.283129579391189e+01 -1.159137951864228e+01 1.942269835819664e-01 8.444894962668044e-06 4.992931717380043e-03 -5.320084876077265e-03 1.613017274475226e-06 45 7.601229981927567e-08 1.500000000000000e+01 9.645124841250838e+00 -2.000000000000000e+01 -1.173524035845153e+01 -1.500000000000000e+01 1.089783107886708e+01 -1.194997063680770e+01 4.727563793459889e-01 2.284697866083462e+00 8.837822305994051e+00 5.000000000000000e+00 -1.192255847589069e+01 -1.013751523279350e+01 -1.290955638733005e+01 -1.207407355671455e+01 -8.882515440854176e+00 -1.223856255495958e+01 -1.279863522732693e+01 -1.178609499443451e+01 2.888357758914533e-01 9.357500277465371e-06 4.909117464226986e-03 -5.328964954683991e-03 7.082117954465312e-07 46 9.850787029343401e-08 1.500000000000000e+01 9.645487771604250e+00 -2.000000000000000e+01 -1.173603085453211e+01 -1.500000000000000e+01 1.105034005124502e+01 -1.193841329315493e+01 6.610493460475732e-01 2.286201329306382e+00 8.853017658193139e+00 5.000000000000000e+00 -1.192647588858688e+01 -1.009052244109955e+01 -1.287261808782134e+01 -1.207357431343826e+01 -8.882144313693045e+00 -1.223370622264300e+01 -1.275677138800668e+01 -1.201446049151209e+01 4.339322076587058e-01 1.050992727680384e-05 4.826017195207339e-03 -5.338193219487603e-03 2.476413185331633e-07 47 1.434990112417507e-07 1.500000000000000e+01 9.645369440086618e+00 -2.000000000000000e+01 -1.173581182183107e+01 -1.500000000000000e+01 1.132885294221670e+01 -1.191636082849338e+01 1.086957986136717e+00 2.287847180057360e+00 8.865200792391664e+00 5.000000000000000e+00 -1.193601458117184e+01 -9.991925122664141e+00 -1.279376873365865e+01 -1.207289398038922e+01 -8.881112211333623e+00 -1.222228566858828e+01 -1.266893787525684e+01 -1.245742088460388e+01 7.939981112450298e-01 1.208960447857332e-05 4.714678517614838e-03 -5.359481662522983e-03 2.553741077228650e-08 48 2.176104593591439e-07 1.500000000000000e+01 9.645184325344201e+00 -2.000000000000000e+01 -1.173545541035157e+01 -1.500000000000000e+01 1.181871118672967e+01 -1.187687446933787e+01 1.831774941585888e+00 2.288158900031110e+00 8.868141296568754e+00 5.000000000000000e+00 -1.195406879953936e+01 -9.805677487463655e+00 -1.264483229743386e+01 -1.207139023196729e+01 -8.878803177767857e+00 -1.220021503665257e+01 -1.250433807630417e+01 -1.326517376094588e+01 1.487378986725266e+00 1.234320988134017e-05 4.705096728886126e-03 -5.431182961284261e-03 -9.948237923098778e-08 49 2.598857749995859e-07 1.500000000000000e+01 9.645145893311686e+00 -2.000000000000000e+01 -1.173541221611911e+01 -1.500000000000000e+01 1.208511778742984e+01 -1.185594373867598e+01 2.223329783881442e+00 2.286584470913830e+00 8.860796089209823e+00 5.000000000000000e+00 -1.196532830883695e+01 -9.687699636397626e+00 -1.254890540280219e+01 -1.207061079717139e+01 -8.877633173148290e+00 -1.218664225879650e+01 -1.240051491467990e+01 -1.382096866263998e+01 1.890896457369754e+00 1.896581245716364e-06 4.825467936192379e-03 -5.500064985775961e-03 -2.561414020847762e-07 50 3.014688504318654e-07 1.500000000000000e+01 9.645108323184543e+00 -2.000000000000000e+01 -1.173533258418764e+01 -1.500000000000000e+01 1.233114089074354e+01 -1.183659925657959e+01 2.588003355567108e+00 2.285838436938382e+00 8.855059064074117e+00 5.000000000000000e+00 -1.197697743068432e+01 -9.564196562202534e+00 -1.244708778201843e+01 -1.206976068008171e+01 -8.876490297092685e+00 -1.217263672822291e+01 -1.228735890650848e+01 -1.409402318235744e+01 2.271327714969650e+00 -1.700477976264954e-06 4.906221784456794e-03 -5.531075353672524e-03 -9.973616156874987e-08 51 3.320901045723436e-07 1.500000000000000e+01 9.645050923662550e+00 -2.000000000000000e+01 -1.173530690764619e+01 -1.500000000000000e+01 1.250122184184465e+01 -1.182320849791850e+01 2.841190120560324e+00 2.285297107491185e+00 8.851653511970630e+00 5.000000000000000e+00 -1.198606192989539e+01 -9.469086061618005e+00 -1.236779072941392e+01 -1.206930356034818e+01 -8.875758924563247e+00 -1.216189744206996e+01 -1.220094152468691e+01 -1.417280718363718e+01 2.536807311136353e+00 5.651287834620170e-06 4.942139777809377e-03 -5.540367679420547e-03 -9.063601217331756e-08 52 3.635629753314540e-07 1.500000000000000e+01 9.645111423674058e+00 -2.000000000000000e+01 -1.173537105689389e+01 -1.500000000000000e+01 1.266634723698068e+01 -1.181022717170647e+01 3.086971496081661e+00 2.284761106093344e+00 8.848564057497393e+00 5.000000000000000e+00 -1.199571407716812e+01 -9.367730802022737e+00 -1.228259993285014e+01 -1.206891382903461e+01 -8.875139285697175e+00 -1.215061505833962e+01 -1.211009098067354e+01 -1.422282699269192e+01 2.795332796826024e+00 6.136192441435856e-06 4.983570640259195e-03 -5.548449989310288e-03 -9.024017821078950e-08 53 4.229836487985134e-07 1.500000000000000e+01 9.645166980433834e+00 -2.000000000000000e+01 -1.173537338455530e+01 -1.500000000000000e+01 1.295449358953196e+01 -1.178754341798114e+01 3.515959342957005e+00 2.283839767631076e+00 8.843230135857841e+00 5.000000000000000e+00 -1.201473671660318e+01 -9.166858839565947e+00 -1.211244708067834e+01 -1.206812046147031e+01 -8.873952243235433e+00 -1.212841176689781e+01 -1.193028105910279e+01 -1.429243069486552e+01 3.246158007797136e+00 5.898356935417136e-06 5.054916172121452e-03 -5.563118486100891e-03 -8.387185349811426e-08 54 4.843260482868192e-07 1.500000000000000e+01 9.645213018016799e+00 -2.000000000000000e+01 -1.173538119706709e+01 -1.500000000000000e+01 1.322285048040694e+01 -1.176640791025606e+01 3.915527461573659e+00 2.283026006157132e+00 8.838399207737154e+00 5.000000000000000e+00 -1.203544249993038e+01 -8.947557983451313e+00 -1.192518505565244e+01 -1.206734993434535e+01 -8.872821894737455e+00 -1.210441348009075e+01 -1.173371259955792e+01 -1.434846011227460e+01 3.665809423184813e+00 5.441279002146452e-06 5.120303463976332e-03 -5.578031488082967e-03 -7.129586780062316e-08 55 6.070108472634308e-07 1.500000000000000e+01 9.645188630611343e+00 -2.000000000000000e+01 -1.173528827880032e+01 -1.500000000000000e+01 1.339565393881469e+01 -1.175468087594278e+01 4.606955214964841e+00 2.294017779639522e+00 8.891255123481648e+00 5.000000000000000e+00 -1.207515160467491e+01 -8.516840200817925e+00 -1.153890309686703e+01 -1.206759397679412e+01 -8.873342419382842e+00 -1.206059185823950e+01 -1.134491665195029e+01 -1.442512382092599e+01 4.391683466472944e+00 -6.018551942214035e-07 5.206668821456433e-03 -5.577878549311610e-03 7.970808959907577e-07 56 6.762570829651618e-07 1.500000000000000e+01 9.645359928077768e+00 -2.000000000000000e+01 -1.173422325102672e+01 -1.500000000000000e+01 1.115987326752658e+01 -1.195289891586470e+01 4.911982746131611e+00 2.377047292375980e+00 9.271327438258509e+00 5.000000000000000e+00 -1.206958079011138e+01 -8.498061156526313e+00 -1.140783601286857e+01 -1.207961044494636e+01 -8.892622206803833e+00 -1.208122082980582e+01 -1.131286465612421e+01 -1.441729810661027e+01 4.726865809219897e+00 -2.867576751423417e-07 5.057968526329959e-03 -5.377047174064513e-03 7.712415312934322e-06 57 7.335445435441602e-07 1.500000000000000e+01 9.645412181307644e+00 -2.000000000000000e+01 -1.173336162835239e+01 -1.500000000000000e+01 9.570877519951815e+00 -1.207304806198052e+01 5.161368776702509e+00 2.494962193594050e+00 9.813745447571716e+00 5.000000000000000e+00 -1.206258515973301e+01 -8.565569479676904e+00 -1.138423664050752e+01 -1.208618992755606e+01 -8.901857342999747e+00 -1.209707033618423e+01 -1.136683738551101e+01 -1.438627857861506e+01 4.981073742967244e+00 1.782263029784833e-06 4.989618015589537e-03 -5.301104814901553e-03 1.185878756810723e-05 58 7.910459509448314e-07 1.500000000000000e+01 9.645428952028094e+00 -2.000000000000000e+01 -1.173262663758428e+01 -1.500000000000000e+01 8.860656777867219e+00 -1.211887887008265e+01 5.403274830113174e+00 2.657484469487780e+00 1.042511472788649e+01 5.000000000000000e+00 -1.205384207284372e+01 -8.661691204506765e+00 -1.142074060962857e+01 -1.208847791409971e+01 -8.904804247394366e+00 -1.210942188493715e+01 -1.145146757902541e+01 -1.434233020820157e+01 5.224701582172470e+00 2.169631524678149e-06 4.986912805812629e-03 -5.291608772776538e-03 1.297402471916321e-05 59 8.503823247250679e-07 1.500000000000000e+01 9.645504311511668e+00 -2.000000000000000e+01 -1.173192388667379e+01 -1.500000000000000e+01 8.727601582056719e+00 -1.212504401474021e+01 5.635459204181938e+00 2.869826697037157e+00 1.079893933766691e+01 5.000000000000000e+00 -1.204522708054640e+01 -8.760637748424187e+00 -1.149261117522267e+01 -1.208832491337121e+01 -8.904289767280823e+00 -1.211872981664222e+01 -1.154109065691016e+01 -1.429090988937839e+01 5.463370672854494e+00 2.277519130541988e-06 5.014979301562341e-03 -5.299025988399391e-03 7.836506223977172e-06 60 9.092510744396458e-07 1.500000000000000e+01 9.645416997871145e+00 -2.000000000000000e+01 -1.173211198065928e+01 -1.500000000000000e+01 8.759607800617654e+00 -1.212282371981909e+01 5.846088533066998e+00 3.074748738010128e+00 1.098152533994925e+01 5.000000000000000e+00 -1.203559105941422e+01 -8.862342896295037e+00 -1.157841280090339e+01 -1.208831981162639e+01 -8.904326923628957e+00 -1.212939759394064e+01 -1.163258598858889e+01 -1.423278578771284e+01 5.684245154791968e+00 2.585896259955264e-06 5.044111070276289e-03 -5.303443432815751e-03 3.531672515588844e-06 61 9.774883553562441e-07 1.500000000000000e+01 9.645386037688528e+00 -2.000000000000000e+01 -1.173256650855458e+01 -1.500000000000000e+01 8.784826583887724e+00 -1.212176091996814e+01 6.071073239964375e+00 3.290650454248036e+00 1.108427201417578e+01 5.000000000000000e+00 -1.202400610974666e+01 -8.985752485151689e+00 -1.168597597696371e+01 -1.208858107139485e+01 -8.904734098575446e+00 -1.214263220222332e+01 -1.174327621045563e+01 -1.415076965848573e+01 5.920415284217229e+00 3.127158864170855e-06 5.071190970002231e-03 -5.307938491793781e-03 2.283962572646547e-06 62 1.076137893970709e-06 1.500000000000000e+01 9.645356610190152e+00 -2.000000000000000e+01 -1.173290893132782e+01 -1.500000000000000e+01 8.785895717546857e+00 -1.212199180619691e+01 6.366786057919911e+00 3.572096629308693e+00 1.115293620855338e+01 5.000000000000000e+00 -1.200696580263165e+01 -9.168518213066777e+00 -1.184787296741233e+01 -1.208879136809128e+01 -8.905035642053399e+00 -1.216190741973401e+01 -1.190721349599566e+01 -1.398432635520109e+01 6.229427112084181e+00 3.571394820260140e-06 5.097694288142022e-03 -5.309028145556274e-03 2.089595384080392e-06 63 1.176684888557045e-06 1.500000000000000e+01 9.645347307024863e+00 -2.000000000000000e+01 -1.173311525849328e+01 -1.500000000000000e+01 8.782173621799863e+00 -1.212218649933162e+01 6.638427617673898e+00 3.830954317984559e+00 1.118523774469539e+01 5.000000000000000e+00 -1.198950944568898e+01 -9.356187363817067e+00 -1.201597611550232e+01 -1.208880526955160e+01 -8.905066575141714e+00 -1.218144969506571e+01 -1.207500485637642e+01 -1.363304805380120e+01 6.511809538548001e+00 3.016580259897894e-06 5.089474862196720e-03 -5.279495429763701e-03 1.858183808726166e-06 64 1.269453447450662e-06 1.500000000000000e+01 9.645007967688381e+00 -2.000000000000000e+01 -1.173568387248957e+01 -1.500000000000000e+01 8.783877388976651e+00 -1.212207022221097e+01 6.655632987277610e+00 3.851718024512260e+00 1.120186077966718e+01 5.000000000000000e+00 -1.197338387717288e+01 -9.529206654135466e+00 -1.217163892024546e+01 -1.208872936040927e+01 -8.904966961419629e+00 -1.219940763886757e+01 -1.222691421576428e+01 -1.265371828742060e+01 6.630025354010739e+00 -1.478448500926008e-07 5.093255686794501e-03 -5.130200725595374e-03 -5.739330417291705e-07 65 1.354039600653734e-06 1.500000000000000e+01 9.644306530702953e+00 -2.000000000000000e+01 -1.174157442960345e+01 -1.500000000000000e+01 8.793402022771200e+00 -1.212125502512275e+01 6.171116264961816e+00 3.400190008465745e+00 1.121184505479587e+01 5.000000000000000e+00 -1.195887255038732e+01 -9.685953087365135e+00 -1.231301845679500e+01 -1.208876277133502e+01 -8.904956112019069e+00 -1.221568275847325e+01 -1.236964303187642e+01 -1.178973056278375e+01 6.392854359729932e+00 -4.526644567217009e-07 5.330211424784923e-03 -4.991613628538751e-03 -5.720265725177817e-06 66 1.438526023088163e-06 1.500000000000000e+01 9.644246026459949e+00 -2.000000000000000e+01 -1.174459788555866e+01 -1.500000000000000e+01 8.863039427330007e+00 -1.211509982524957e+01 5.378233455729025e+00 2.662599830145358e+00 1.111950844491356e+01 5.000000000000000e+00 -1.194639715720730e+01 -9.824827240347021e+00 -1.244684241137272e+01 -1.208785653903834e+01 -8.903511915074153e+00 -1.222856979345239e+01 -1.249727028481267e+01 -1.121704780775307e+01 5.789143305042864e+00 -5.764719432672578e-08 5.567725622422314e-03 -4.901677820709644e-03 -1.392218399419362e-05 67 1.498641998747076e-06 1.500000000000000e+01 9.645308636357457e+00 -2.000000000000000e+01 -1.173897645659877e+01 -1.500000000000000e+01 9.326675867893236e+00 -1.207357430315764e+01 5.020182385731725e+00 2.421470719987524e+00 1.005554267446793e+01 5.000000000000000e+00 -1.195437385339716e+01 -9.791929664153300e+00 -1.249620559557259e+01 -1.208000567920979e+01 -8.890758478201128e+00 -1.221015738858289e+01 -1.248131782664270e+01 -1.134102271953924e+01 5.342639416394945e+00 -4.564890380655341e-08 5.505377732690487e-03 -4.954876606801882e-03 -2.234089617278629e-05 68 1.555300591999712e-06 1.500000000000000e+01 9.645353799230257e+00 -2.000000000000000e+01 -1.173568250716949e+01 -1.500000000000000e+01 9.737549272202974e+00 -1.204225467926283e+01 4.887559932105462e+00 2.357381977815114e+00 9.385975573462292e+00 5.000000000000000e+00 -1.195732711597269e+01 -9.744441480680656e+00 -1.249324311028129e+01 -1.207782686491608e+01 -8.888466402794757e+00 -1.220414007378248e+01 -1.244149554220731e+01 -1.170118249252044e+01 5.054087901855652e+00 -2.039750806713335e-08 5.318675130615862e-03 -5.035361814831086e-03 -6.086664264652846e-06 69 1.613817431009543e-06 1.500000000000000e+01 9.645187589072226e+00 -2.000000000000000e+01 -1.173487689955746e+01 -1.500000000000000e+01 9.911775334665243e+00 -1.203148983949722e+01 4.870784125545434e+00 2.352237503667760e+00 9.211154234031766e+00 5.000000000000000e+00 -1.195993311293130e+01 -9.708043087657747e+00 -1.246843317391704e+01 -1.207864348336332e+01 -8.889983062050879e+00 -1.220236287118981e+01 -1.240666536039955e+01 -1.205657159661480e+01 4.913775016828871e+00 -5.434106111911775e-09 5.156415933079490e-03 -5.086162949638444e-03 1.753390827778938e-06 70 1.670727767387449e-06 1.500000000000000e+01 9.645193059494183e+00 -2.000000000000000e+01 -1.173485833878532e+01 -1.500000000000000e+01 9.862469963980468e+00 -1.203732299975494e+01 4.910814997198556e+00 2.369064816226508e+00 9.281169347115205e+00 5.000000000000000e+00 -1.196173026762266e+01 -9.685380943895378e+00 -1.244128400035184e+01 -1.207971504264726e+01 -8.891584542646566e+00 -1.220166655357748e+01 -1.238389759400141e+01 -1.228046474124062e+01 4.888788980501645e+00 6.607698284223406e-10 5.065744052023619e-03 -5.105743849849714e-03 3.129011974232160e-06 71 1.756566125022286e-06 1.500000000000000e+01 9.645207899365835e+00 -2.000000000000000e+01 -1.173492470024339e+01 -1.500000000000000e+01 9.647113561482629e+00 -1.205496847293219e+01 4.988144600761231e+00 2.403127094595698e+00 9.475160682443568e+00 5.000000000000000e+00 -1.196237027637772e+01 -9.674015233898110e+00 -1.241433284340810e+01 -1.208109274823477e+01 -8.893636307170930e+00 -1.220261090680793e+01 -1.237095120529894e+01 -1.239665020806591e+01 4.938267185073788e+00 5.139774283802220e-09 5.018870427494107e-03 -5.104743745397094e-03 2.776152533440972e-06 72 1.862727273308500e-06 1.500000000000000e+01 9.645181698017388e+00 -2.000000000000000e+01 -1.173512077677887e+01 -1.500000000000000e+01 9.447139971249553e+00 -1.206995196421666e+01 5.049089985913720e+00 2.432687687060189e+00 9.662461396066334e+00 5.000000000000000e+00 -1.196155561474271e+01 -9.681090586615948e+00 -1.240608034453904e+01 -1.208197627602133e+01 -8.894884563981051e+00 -1.220457234152531e+01 -1.237585751481820e+01 -1.234211422915719e+01 5.015088207121353e+00 6.250159249934118e-09 5.028779440944464e-03 -5.086538309939047e-03 1.400846353620782e-06 73 1.987816561790646e-06 1.500000000000000e+01 9.645180426884928e+00 -2.000000000000000e+01 -1.173539186305169e+01 -1.500000000000000e+01 9.390683423353396e+00 -1.207349583810434e+01 5.059409861963348e+00 2.438057714710154e+00 9.720801056392175e+00 5.000000000000000e+00 -1.196058638457150e+01 -9.693090567729339e+00 -1.241326685580272e+01 -1.208196390428455e+01 -8.894787985103478e+00 -1.220562734366545e+01 -1.238690744110707e+01 -1.223486468659589e+01 5.055110789199833e+00 2.921089812756292e-09 5.063965293467499e-03 -5.070781476857539e-03 -2.983372848033975e-07 74 2.129012712270905e-06 1.500000000000000e+01 9.645138940292588e+00 -2.000000000000000e+01 -1.173550995414142e+01 -1.500000000000000e+01 9.431153217379961e+00 -1.207006587713437e+01 5.039868781576338e+00 2.427852008898409e+00 9.672681307735181e+00 5.000000000000000e+00 -1.196023831910823e+01 -9.698433877344635e+00 -1.242206693854772e+01 -1.208156023672839e+01 -8.894170582313958e+00 -1.220551538643710e+01 -1.239254014088296e+01 -1.218287707068442e+01 5.049534692871796e+00 3.145401117063862e-10 5.084010829624729e-03 -5.067147022342679e-03 -7.581926737344544e-07 75 2.329012712270905e-06 1.500000000000000e+01 9.645136950660993e+00 -2.000000000000000e+01 -1.173543203460411e+01 -1.500000000000000e+01 9.484732058309995e+00 -1.206598724212913e+01 5.023023412669863e+00 2.419686383268032e+00 9.617004707546350e+00 5.000000000000000e+00 -1.196039938803702e+01 -9.697057514243217e+00 -1.242502752597311e+01 -1.208133746416645e+01 -8.893860214754900e+00 -1.220507080136186e+01 -1.239170323248441e+01 -1.219302741996833e+01 5.028939397408723e+00 5.198856729364427e-10 5.081715405765175e-03 -5.071693771531985e-03 -2.088918672174546e-07 76 2.529012712270905e-06 1.500000000000000e+01 9.645155195718708e+00 -2.000000000000000e+01 -1.173536117135821e+01 -1.500000000000000e+01 9.491909424619528e+00 -1.206560253753804e+01 5.022333011958693e+00 2.419305761448263e+00 9.608997548867336e+00 5.000000000000000e+00 -1.196060441764541e+01 -9.694539421981524e+00 -1.242313336630849e+01 -1.208134729916734e+01 -8.893894553188955e+00 -1.220486874720069e+01 -1.238934762504190e+01 -1.221583900278642e+01 5.022272714824285e+00 1.153083166459140e-09 5.074595280058528e-03 -5.074784439111648e-03 8.383762074850908e-08 77 2.729012712270905e-06 1.500000000000000e+01 9.645159782135541e+00 -2.000000000000000e+01 -1.173534380077383e+01 -1.500000000000000e+01 9.481358062882090e+00 -1.206644287309449e+01 5.026589984638360e+00 2.421476621403997e+00 9.621073138004045e+00 5.000000000000000e+00 -1.196063944681414e+01 -9.693952832401177e+00 -1.242171223031220e+01 -1.208139111693309e+01 -8.893938097457089e+00 -1.220485846668796e+01 -1.238869447979593e+01 -1.222154749586227e+01 5.025015557489158e+00 1.525299655980644e-09 5.072150475888182e-03 -5.074864771636661e-03 1.061085974816270e-07 78 2.929012712270905e-06 1.500000000000000e+01 9.645147539688635e+00 -2.000000000000000e+01 -1.173539005001846e+01 -1.500000000000000e+01 9.475430715746753e+00 -1.206687562447623e+01 5.028396482580482e+00 2.422387878667911e+00 9.627687602384865e+00 5.000000000000000e+00 -1.196059705241805e+01 -9.694311172081211e+00 -1.242157512393341e+01 -1.208142005270296e+01 -8.893980546060628e+00 -1.220493710518098e+01 -1.238898170588603e+01 -1.221844969993920e+01 5.027803400707443e+00 1.384930804705162e-09 5.073127126592457e-03 -5.074128317332244e-03 1.618558574125427e-08 79 3.129012712270905e-06 1.500000000000000e+01 9.645138298932487e+00 -2.000000000000000e+01 -1.173542473193414e+01 -1.500000000000000e+01 9.475377610891519e+00 -1.206683852013729e+01 5.028162113568836e+00 2.422280352171225e+00 9.627845107834264e+00 5.000000000000000e+00 -1.196057424443754e+01 -9.694595592599781e+00 -1.242184766148729e+01 -1.208143079742592e+01 -8.893994349462603e+00 -1.220498285037924e+01 -1.238924177271085e+01 -1.221593194885030e+01 5.028299292526708e+00 1.271691751483022e-09 5.074052830537343e-03 -5.073810793587049e-03 -1.577928396075627e-08 80 3.329012712270905e-06 1.500000000000000e+01 9.645187594621630e+00 -2.000000000000000e+01 -1.173542976238839e+01 -1.500000000000000e+01 9.477270608793756e+00 -1.206672130369912e+01 5.027509600045882e+00 2.421957012624081e+00 9.625763494973335e+00 5.000000000000000e+00 -1.196057967967949e+01 -9.694644440571381e+00 -1.242200402448461e+01 -1.208141440177460e+01 -8.893987926307985e+00 -1.220497729841866e+01 -1.238931251631861e+01 -1.221550202294098e+01 5.027739231445316e+00 1.299095330234884e-09 5.074248534829771e-03 -5.073854173933156e-03 -1.484685583358384e-08 81 3.529012712270905e-06 1.500000000000000e+01 9.645169703852519e+00 -2.000000000000000e+01 -1.173538577863128e+01 -1.500000000000000e+01 9.477675508357362e+00 -1.206670791188088e+01 5.027374289965841e+00 2.421877379487190e+00 9.624991632009653e+00 5.000000000000000e+00 -1.196058075600125e+01 -9.694572581407502e+00 -1.242198701514897e+01 -1.208141726850071e+01 -8.893997700552507e+00 -1.220497586411702e+01 -1.238924354547183e+01 -1.221611248470400e+01 5.027417149620020e+00 1.335165613881207e-09 5.074046338709918e-03 -5.073976487351443e-03 -1.042550494168392e-10 82 3.729012712270905e-06 1.500000000000000e+01 9.645116098219662e+00 -2.000000000000000e+01 -1.173533209163442e+01 -1.500000000000000e+01 9.477791266904709e+00 -1.206671867030277e+01 5.027456581905780e+00 2.421916036619705e+00 9.625019852328219e+00 5.000000000000000e+00 -1.196058274691653e+01 -9.694524313546175e+00 -1.242193836175706e+01 -1.208141743094195e+01 -8.893994961534611e+00 -1.220496628555419e+01 -1.238920192675132e+01 -1.221644594663793e+01 5.027421261089479e+00 1.298113495656128e-09 5.073945810231769e-03 -5.074007920663969e-03 2.289477809667159e-09 83 3.929012712270905e-06 1.500000000000000e+01 9.645133813953651e+00 -2.000000000000000e+01 -1.173534742672797e+01 -1.500000000000000e+01 9.477283231160736e+00 -1.206671326395422e+01 5.027562248109144e+00 2.421968697942401e+00 9.625540608195472e+00 5.000000000000000e+00 -1.196060124685522e+01 -9.694489298856931e+00 -1.242191828181198e+01 -1.208138019480105e+01 -8.893913148401518e+00 -1.220488334465261e+01 -1.238919642627500e+01 -1.221646464567184e+01 5.027528654383165e+00 1.288829741575421e-09 5.073987583788014e-03 -5.074055342234521e-03 1.080764473873698e-08 84 4.129012712270905e-06 1.500000000000000e+01 9.645181655357651e+00 -2.000000000000000e+01 -1.173540279815639e+01 -1.500000000000000e+01 9.477021486802095e+00 -1.206670430626020e+01 5.027628745364173e+00 2.422012486102672e+00 9.626133545617445e+00 5.000000000000000e+00 -1.196059339186664e+01 -9.694508106115439e+00 -1.242190729535820e+01 -1.208139866843030e+01 -8.893961651760929e+00 -1.220493917141766e+01 -1.238920062085831e+01 -1.221639996983333e+01 5.027613267023437e+00 1.317271238272150e-09 5.073973973586928e-03 -5.074001597845786e-03 6.791778690320961e-10 85 4.329012712270905e-06 1.500000000000000e+01 9.645169150496727e+00 -2.000000000000000e+01 -1.173539172060970e+01 -1.500000000000000e+01 9.477256726896618e+00 -1.206673074324572e+01 5.027610927868914e+00 2.422002709050192e+00 9.625889220735661e+00 5.000000000000000e+00 -1.196056985802885e+01 -9.694564023987883e+00 -1.242192068797928e+01 -1.208144414049087e+01 -8.894064550620955e+00 -1.220504673897266e+01 -1.238921930687951e+01 -1.221629852949759e+01 5.027618257663460e+00 1.338769880218003e-09 5.073939334745299e-03 -5.073918618441504e-03 -9.867947637377032e-09 86 4.529012712270905e-06 1.500000000000000e+01 9.645126914804098e+00 -2.000000000000000e+01 -1.173534552703728e+01 -1.500000000000000e+01 9.477517888772684e+00 -1.206673475994314e+01 5.027541478758609e+00 2.421958398153076e+00 9.625346911795347e+00 5.000000000000000e+00 -1.196057745482167e+01 -9.694548446434301e+00 -1.242193862394841e+01 -1.208142506392318e+01 -8.894012342804410e+00 -1.220498650316212e+01 -1.238921857583153e+01 -1.221626770453334e+01 5.027560328123500e+00 1.321514654400550e-09 5.073990404063230e-03 -5.073959269513115e-03 -1.169694281201867e-09 87 4.729012712270905e-06 1.500000000000000e+01 9.645133689620948e+00 -2.000000000000000e+01 -1.173535235914226e+01 -1.500000000000000e+01 9.477391503688394e+00 -1.206670561420297e+01 5.027519924159894e+00 2.421947456765250e+00 9.625477615748246e+00 5.000000000000000e+00 -1.196060143039718e+01 -9.694500105025035e+00 -1.242193113111753e+01 -1.208138260316219e+01 -8.893914419578001e+00 -1.220488437782019e+01 -1.238920492844053e+01 -1.221632733148821e+01 5.027524981417698e+00 1.311825036461095e-09 5.074032798880059e-03 -5.074031938572386e-03 6.247218341538520e-09 88 4.929012712270905e-06 1.500000000000000e+01 9.645172663082771e+00 -2.000000000000000e+01 -1.173539226041103e+01 -1.500000000000000e+01 9.477124538425084e+00 -1.206670450661087e+01 5.027578770510782e+00 2.421985843916752e+00 9.625915458496241e+00 5.000000000000000e+00 -1.196059363782439e+01 -9.694515655113616e+00 -1.242191682913391e+01 -1.208139783225913e+01 -8.893962117697497e+00 -1.220493980655026e+01 -1.238920883664968e+01 -1.221638888324555e+01 5.027562984832316e+00 1.350002541007550e-09 5.073976525342731e-03 -5.074005501912876e-03 1.489101408141625e-09 89 5.002000000000000e-06 1.500000000000000e+01 9.645186426673230e+00 -2.000000000000000e+01 -1.173540085581420e+01 -1.500000000000000e+01 9.477107298565828e+00 -1.206673777364802e+01 5.027637136974368e+00 2.422018879103512e+00 9.625917283483584e+00 4.999999999999471e+00 -1.196056712807495e+01 -9.694544707643378e+00 -1.242190826944779e+01 -1.208143408751376e+01 -8.894076522220963e+00 -1.220505768437118e+01 -1.238921791484952e+01 -1.221643843371422e+01 5.027606995577199e+00 1.435223479675778e-09 5.073911199895494e-03 -5.073960076056683e-03 -2.497552629840137e-09 90 5.002100000000000e-06 1.500000000000000e+01 9.628801744206040e+00 -2.000000000000000e+01 -1.176377472709092e+01 -1.500000000000000e+01 9.371714087761842e+00 -1.210274104180847e+01 4.866065683332168e+00 2.105892171164870e+00 9.341938847853058e+00 4.499999999999433e+00 -1.200261901814501e+01 -9.708073467371638e+00 -1.246340412541062e+01 -1.208823368922364e+01 -8.904148392299946e+00 -1.222064870868597e+01 -1.240064547324697e+01 -1.225162193369231e+01 5.027223055851688e+00 -2.422560856668610e-05 3.086398883824117e-03 -7.134391549564690e-03 4.340976082164729e-03 91 5.002300000000000e-06 1.500000000000000e+01 9.602365988967523e+00 -2.000000000000000e+01 -1.181054899637651e+01 -1.500000000000000e+01 9.177140382125969e+00 -1.216571766162602e+01 4.612315104940193e+00 1.576254134891105e+00 8.782614051815299e+00 3.499999999999358e+00 -1.207790814595104e+01 -9.730367406530282e+00 -1.253749886994449e+01 -1.209928988197187e+01 -8.915718374209681e+00 -1.223506065552408e+01 -1.241819832556645e+01 -1.230672329424962e+01 5.025723162177859e+00 -2.660020470098360e-03 3.408643025871247e-03 -6.840750759980685e-03 6.787894308702631e-03 92 5.002542444731962e-06 1.500000000000000e+01 9.582513386166594e+00 -2.000000000000000e+01 -1.184718111198944e+01 -1.500000000000000e+01 8.961900309298530e+00 -1.222975240647453e+01 4.432655249868352e+00 1.143035651293947e+00 8.121033268587867e+00 2.287776340189531e+00 -1.215392743804409e+01 -9.748240006698291e+00 -1.261189877112837e+01 -1.210816902363286e+01 -8.916029698410039e+00 -1.222533809056611e+01 -1.243057084756730e+01 -1.234548097635821e+01 5.022843289098792e+00 -6.172235243482263e-03 3.764826453613545e-03 -6.583713359124017e-03 9.990583442320870e-03 93 5.002762996358514e-06 1.500000000000000e+01 9.568542148194634e+00 -2.000000000000000e+01 -1.187418751781923e+01 -1.500000000000000e+01 8.727458079064228e+00 -1.229374815761963e+01 4.308412930891578e+00 8.091153087313798e-01 7.536162767871081e+00 1.185018207431170e+00 -1.221119405280442e+01 -9.757161666755022e+00 -1.266752362594096e+01 -1.211309486855225e+01 -8.906814620043190e+00 -1.219765059473534e+01 -1.243749321716307e+01 -1.237191616211003e+01 5.019415930755632e+00 -6.576306918784096e-03 3.634274267524825e-03 -6.755575239683528e-03 1.090749499912540e-02 94 5.002995093587417e-06 1.500000000000000e+01 9.557671605634565e+00 -2.000000000000000e+01 -1.189657273603750e+01 -1.500000000000000e+01 8.433249298991497e+00 -1.236935527427590e+01 4.209889254678724e+00 5.165631563545068e-01 6.939898657351792e+00 2.453206291453014e-02 -1.226056568228484e+01 -9.758973637392615e+00 -1.271500112344180e+01 -1.211541452803845e+01 -8.890228790607890e+00 -1.215547353235296e+01 -1.244070541022139e+01 -1.239256958336706e+01 5.015179148361678e+00 -5.922149462661688e-03 3.647576058695579e-03 -6.852845753992066e-03 1.050265061862536e-02 95 5.003000000000000e-06 1.500000000000000e+01 9.557484206437362e+00 -2.000000000000000e+01 -1.189697910951403e+01 -1.500000000000000e+01 8.426497897811897e+00 -1.237104696002708e+01 4.208160756143608e+00 5.110315460956122e-01 6.927506949891150e+00 0.000000000000000e+00 -1.226148955344787e+01 -9.758928349069059e+00 -1.271588311243214e+01 -1.211543206293448e+01 -8.889803357868896e+00 -1.215444061961745e+01 -1.244072842235570e+01 -1.239292750016664e+01 5.015082691177737e+00 -5.922121584120649e-03 3.647833729942151e-03 -6.855451211973786e-03 1.050793399681061e-02 96 5.003005371761953e-06 1.500000000000000e+01 9.557943838731396e+00 -2.000000000000000e+01 -1.189627874872785e+01 -1.500000000000000e+01 8.423264560139641e+00 -1.237134209097852e+01 4.213058250571593e+00 5.175646673427646e-01 6.929539770297852e+00 0.000000000000000e+00 -1.226006565140470e+01 -9.758118619368139e+00 -1.271444214780587e+01 -1.211505931593503e+01 -8.888608155844711e+00 -1.215204335531560e+01 -1.244020927008903e+01 -1.239182659851050e+01 5.014977603163783e+00 9.999706455923827e-06 5.256474391163612e-03 -5.051409501757628e-03 1.154348464676318e-03 97 5.003016115285860e-06 1.500000000000000e+01 9.558858088482956e+00 -2.000000000000000e+01 -1.189488545055456e+01 -1.500000000000000e+01 8.416807396038843e+00 -1.237193147717840e+01 4.222783983501980e+00 5.305617818974526e-01 6.933598512043254e+00 0.000000000000000e+00 -1.225723242630654e+01 -9.756498943995362e+00 -1.271157484471619e+01 -1.211431730410004e+01 -8.886242487551242e+00 -1.214730296618601e+01 -1.243917480042809e+01 -1.238964085939774e+01 5.014769030278027e+00 9.883036317644774e-06 5.253394517977822e-03 -5.057084039016455e-03 1.145810615690054e-03 98 5.003028886004425e-06 1.500000000000000e+01 9.559934685422779e+00 -2.000000000000000e+01 -1.189324429637828e+01 -1.500000000000000e+01 8.409151901166011e+00 -1.237263004766740e+01 4.234204903035093e+00 5.458712133769426e-01 6.938409072560181e+00 0.000000000000000e+00 -1.225389402452663e+01 -9.754573359574570e+00 -1.270819603147832e+01 -1.211344232967526e+01 -8.883480352000662e+00 -1.214177731354396e+01 -1.243795288809707e+01 -1.238707518438880e+01 5.014524341369391e+00 9.749453805585535e-06 5.249822722801362e-03 -5.063749296434757e-03 1.135743796348812e-03 99 5.003054427441555e-06 1.500000000000000e+01 9.562053626609283e+00 -2.000000000000000e+01 -1.189001270088555e+01 -1.500000000000000e+01 8.393912984649436e+00 -1.237401895252990e+01 4.256577261396293e+00 5.760179354496957e-01 6.947982822692230e+00 0.000000000000000e+00 -1.224731560561548e+01 -9.750722060696410e+00 -1.270153712036443e+01 -1.211171608583126e+01 -8.878123006805506e+00 -1.213109103672263e+01 -1.243553502031130e+01 -1.238205300309494e+01 5.014045829295141e+00 9.488607612394468e-06 5.242996703439626e-03 -5.076855266163798e-03 1.115948695242177e-03 100 5.003105510315816e-06 1.500000000000000e+01 9.566157263953899e+00 -2.000000000000000e+01 -1.188374827495135e+01 -1.500000000000000e+01 8.363748917365357e+00 -1.237675465446090e+01 4.299498109465501e+00 6.344618740979148e-01 6.966944017538703e+00 0.000000000000000e+00 -1.223453880838226e+01 -9.743025309699986e+00 -1.268860066982615e+01 -1.210835623586322e+01 -8.868053359028119e+00 -1.211112768140680e+01 -1.243079981728105e+01 -1.237243414573801e+01 5.013131011978088e+00 8.991262084275502e-06 5.230552148237561e-03 -5.102188839505014e-03 1.077681993939028e-03 101 5.003207676064337e-06 1.500000000000000e+01 9.573857514178161e+00 -2.000000000000000e+01 -1.187197015999643e+01 -1.500000000000000e+01 8.304827321443806e+00 -1.238199902092788e+01 4.378566262608329e+00 7.443719575938345e-01 7.004156558984620e+00 0.000000000000000e+00 -1.221038347362950e+01 -9.727701371924481e+00 -1.266413133887262e+01 -1.210198550140925e+01 -8.850286128082130e+00 -1.207637344868980e+01 -1.242170124029815e+01 -1.235478766549244e+01 5.011458097968707e+00 8.085318270910916e-06 5.209983251813086e-03 -5.149568711169243e-03 1.006129878468759e-03 102 5.003412007561379e-06 1.500000000000000e+01 9.587451128761433e+00 -2.000000000000000e+01 -1.185108924661433e+01 -1.500000000000000e+01 8.193407023728764e+00 -1.239126265283337e+01 4.513302363813063e+00 9.393820098268489e-01 7.075995486474882e+00 0.000000000000000e+00 -1.216682307805254e+01 -9.697622215485261e+00 -1.261996444534475e+01 -1.209048579431953e+01 -8.822748079613661e+00 -1.202423625645185e+01 -1.240478405818987e+01 -1.232507494745428e+01 5.008653572018049e+00 6.576490176380150e-06 5.182159458316011e-03 -5.232265620633536e-03 8.806793815298467e-04 103 5.003778342447627e-06 1.500000000000000e+01 9.606904027388577e+00 -2.000000000000000e+01 -1.182093323275322e+01 -1.500000000000000e+01 8.017104593106764e+00 -1.240293443490720e+01 4.694347891633824e+00 1.221764459059315e+00 7.197340091165369e+00 0.000000000000000e+00 -1.210085513146624e+01 -9.646816376182216e+00 -1.255298226071846e+01 -1.207331971322078e+01 -8.793200992003070e+00 -1.197352688547395e+01 -1.237782697264148e+01 -1.228669958719759e+01 5.005025414292208e+00 4.611312533088588e-06 5.162258216200424e-03 -5.348354861993042e-03 7.030410685809791e-04 104 5.004165681905904e-06 1.500000000000000e+01 9.622092253935402e+00 -2.000000000000000e+01 -1.179700876483413e+01 -1.500000000000000e+01 7.863661546493024e+00 -1.240821875559666e+01 4.823539371065929e+00 1.447174958601614e+00 7.316645566126268e+00 0.000000000000000e+00 -1.204402096289283e+01 -9.599051681107587e+00 -1.249518605245090e+01 -1.205922747747301e+01 -8.781608434042640e+00 -1.196177890863530e+01 -1.235313966650146e+01 -1.226219546357737e+01 5.002629628640597e+00 3.227540459918614e-06 5.166384877775355e-03 -5.435754860385152e-03 5.653269837957970e-04 105 5.004623326069019e-06 1.500000000000000e+01 9.634863096367979e+00 -2.000000000000000e+01 -1.177639531591728e+01 -1.500000000000000e+01 7.723011923428404e+00 -1.240608562657599e+01 4.921278772733844e+00 1.643619517796721e+00 7.447470245500675e+00 0.000000000000000e+00 -1.198941460779857e+01 -9.552292648653635e+00 -1.243960080706972e+01 -1.204703208292418e+01 -8.784282724208420e+00 -1.198186099739386e+01 -1.232825040111411e+01 -1.224860343246404e+01 5.001072124735198e+00 2.164548700234434e-06 5.185222283572608e-03 -5.503748264561615e-03 4.491242979588386e-04 106 5.005054338650519e-06 1.500000000000000e+01 9.643182911545860e+00 -2.000000000000000e+01 -1.176246755781218e+01 -1.500000000000000e+01 7.626106088016410e+00 -1.239735688816132e+01 4.977656776704266e+00 1.778875714197914e+00 7.561909699226964e+00 0.000000000000000e+00 -1.194766023570273e+01 -9.518851663007088e+00 -1.239709356111949e+01 -1.203931836117734e+01 -8.796609048952399e+00 -1.202006782012290e+01 -1.230882306441255e+01 -1.224683946115753e+01 5.000436321101354e+00 1.514685200625086e-06 5.204586136059139e-03 -5.539999039443678e-03 3.716945250869185e-04 107 5.005595996516196e-06 1.500000000000000e+01 9.650220137490082e+00 -2.000000000000000e+01 -1.175003165830828e+01 -1.500000000000000e+01 7.544327482509211e+00 -1.238007657417163e+01 5.019929554425218e+00 1.903271411773015e+00 7.695208476844167e+00 0.000000000000000e+00 -1.190587088635051e+01 -9.491954052703726e+00 -1.235461111019064e+01 -1.203401275244566e+01 -8.818708174414445e+00 -1.207914135082273e+01 -1.229005645945701e+01 -1.225482208533722e+01 5.000312639209179e+00 9.682093035115341e-07 5.219946713035973e-03 -5.556177301626209e-03 3.026441471279680e-04 108 5.006301849017367e-06 1.500000000000000e+01 9.655742035800239e+00 -2.000000000000000e+01 -1.173926464086057e+01 -1.500000000000000e+01 7.488408032490961e+00 -1.235201072185329e+01 5.049667709019613e+00 2.016866187864127e+00 7.853521142709681e+00 0.000000000000000e+00 -1.186664527803814e+01 -9.480964302612736e+00 -1.231493006036172e+01 -1.203316711096315e+01 -8.851094497370289e+00 -1.215794402078417e+01 -1.227547592718407e+01 -1.227561747025207e+01 5.000776720834679e+00 5.071833117353170e-07 5.217552513846344e-03 -5.540945659401941e-03 2.417783947711705e-04 109 5.006982146313411e-06 1.500000000000000e+01 9.658554020944507e+00 -2.000000000000000e+01 -1.173267204756685e+01 -1.500000000000000e+01 7.474304208641929e+00 -1.232302758863117e+01 5.064448928827284e+00 2.092807117419483e+00 7.991520494545515e+00 0.000000000000000e+00 -1.184325006587008e+01 -9.493001972952871e+00 -1.229157705804229e+01 -1.203756593195931e+01 -8.881657306602494e+00 -1.222623506350619e+01 -1.227196204947459e+01 -1.230147046889875e+01 5.001602958440342e+00 2.275745504405930e-07 5.191694677463819e-03 -5.498597096405610e-03 2.025209212598586e-04 110 5.007833935002147e-06 1.500000000000000e+01 9.660073526511705e+00 -2.000000000000000e+01 -1.172752034787748e+01 -1.500000000000000e+01 7.492645410658869e+00 -1.228844364006243e+01 5.075457063445712e+00 2.160441249043478e+00 8.147006069601921e+00 0.000000000000000e+00 -1.183077869807627e+01 -9.531812091008629e+00 -1.227977673296843e+01 -1.204808428945148e+01 -8.914869077309206e+00 -1.229340729202281e+01 -1.228071838964919e+01 -1.233484865426737e+01 5.002912308481178e+00 1.877591867643186e-08 5.134717116383868e-03 -5.423370723537011e-03 1.684755445858476e-04 111 5.008891379966901e-06 1.500000000000000e+01 9.660264458290656e+00 -2.000000000000000e+01 -1.172391062696626e+01 -1.500000000000000e+01 7.548018135005897e+00 -1.225169385235940e+01 5.085441744772416e+00 2.219411435273936e+00 8.317753187005043e+00 0.000000000000000e+00 -1.183531312871755e+01 -9.601781994154926e+00 -1.228592929850079e+01 -1.206522037194321e+01 -8.945436443545719e+00 -1.234580835642953e+01 -1.230704137724043e+01 -1.236925604753470e+01 5.004789783650383e+00 -9.280103565997740e-08 5.045388376166509e-03 -5.318153395647497e-03 1.393349098209112e-04 112 5.010562008851216e-06 1.500000000000000e+01 9.658823797601465e+00 -2.000000000000000e+01 -1.172151801929458e+01 -1.500000000000000e+01 7.665959181493715e+00 -1.220916699919403e+01 5.097790788603099e+00 2.280969381043371e+00 8.549187820979314e+00 0.000000000000000e+00 -1.186846242353209e+01 -9.721026466097843e+00 -1.232271764939022e+01 -1.209240727785120e+01 -8.969725772450471e+00 -1.237030646336986e+01 -1.236502925228646e+01 -1.239440746775019e+01 5.008112551999882e+00 -7.027638116392265e-08 4.912121948993964e-03 -5.168826977597229e-03 1.084000815391464e-04 113 5.012300133620907e-06 1.500000000000000e+01 9.656326338154179e+00 -2.000000000000000e+01 -1.172151581703682e+01 -1.500000000000000e+01 7.798596767072170e+00 -1.218096866048417e+01 5.104557338919403e+00 2.317986481418297e+00 8.752687301640728e+00 0.000000000000000e+00 -1.191529868600869e+01 -9.820446925624484e+00 -1.237387894567109e+01 -1.211331137766793e+01 -8.970411517644757e+00 -1.234578685863523e+01 -1.242550347086143e+01 -1.238038392663900e+01 5.011802756339540e+00 7.631617303104601e-08 4.819997932447093e-03 -5.059992824784666e-03 8.651324603207476e-05 114 5.014068259958367e-06 1.500000000000000e+01 9.653507220864814e+00 -2.000000000000000e+01 -1.172297800180328e+01 -1.500000000000000e+01 7.926514702220631e+00 -1.216330681822709e+01 5.102573841425508e+00 2.335808444194094e+00 8.931458173649605e+00 0.000000000000000e+00 -1.195831453816155e+01 -9.877021034040310e+00 -1.242109559516884e+01 -1.212327101946596e+01 -8.955003292824627e+00 -1.229609252993209e+01 -1.247145819563524e+01 -1.233268549003165e+01 5.015479778080132e+00 2.442533901339426e-07 4.789493922825289e-03 -5.004339106080797e-03 7.056272664957599e-05 115 5.015848456465489e-06 1.500000000000000e+01 9.650783401379903e+00 -2.000000000000000e+01 -1.172525704619674e+01 -1.500000000000000e+01 8.041682123998769e+00 -1.215191855082000e+01 5.091128926097902e+00 2.338823099545198e+00 9.090196303234151e+00 0.000000000000000e+00 -1.198716578841814e+01 -9.887865932869170e+00 -1.245348656636594e+01 -1.212237807225439e+01 -8.932714231220683e+00 -1.224339613388812e+01 -1.249499734073124e+01 -1.226536946075964e+01 5.018744627867505e+00 3.671618126805702e-07 4.816344738977105e-03 -4.994857988357830e-03 5.839365606690461e-05 116 5.018330857058904e-06 1.500000000000000e+01 9.647600322126097e+00 -2.000000000000000e+01 -1.172883447941155e+01 -1.500000000000000e+01 8.179170065978231e+00 -1.214106456127207e+01 5.064152124026539e+00 2.327019059502250e+00 9.284876549042880e+00 0.000000000000000e+00 -1.199984685266715e+01 -9.851729436714829e+00 -1.246966686103637e+01 -1.211002866070285e+01 -8.904630128111734e+00 -1.219146521155873e+01 -1.249416801760042e+01 -1.216943406730510e+01 5.021985189524873e+00 4.208270977862022e-07 4.908584886937372e-03 -5.024918035623847e-03 4.608080242124137e-05 117 5.020989980745268e-06 1.500000000000000e+01 9.645221290105436e+00 -2.000000000000000e+01 -1.173231277932448e+01 -1.500000000000000e+01 8.301809439724654e+00 -1.213298176343716e+01 5.030842764919433e+00 2.304543447145481e+00 9.464695686092956e+00 0.000000000000000e+00 -1.198822113438160e+01 -9.790196719970567e+00 -1.246031453234120e+01 -1.209322025400162e+01 -8.887301631513532e+00 -1.217200558493218e+01 -1.246906584956319e+01 -1.208975922741856e+01 5.023474396089235e+00 3.528040213487416e-07 5.019799952994833e-03 -5.069776541366114e-03 3.740614627552701e-05 118 5.023567154674121e-06 1.500000000000000e+01 9.643948393871890e+00 -2.000000000000000e+01 -1.173479527983355e+01 -1.500000000000000e+01 8.401105077580754e+00 -1.212771607054100e+01 5.002859685255068e+00 2.282078213370229e+00 9.613890958774443e+00 0.000000000000000e+00 -1.196726435712893e+01 -9.742038946417393e+00 -1.244082917470170e+01 -1.208119251975301e+01 -8.883982471209989e+00 -1.218096309700187e+01 -1.244131241329189e+01 -1.204425417020858e+01 5.023120764817782e+00 2.261391439432123e-07 5.096903615037509e-03 -5.095537891107263e-03 3.203524146689126e-05 119 5.026533765171839e-06 1.500000000000000e+01 9.643477221875477e+00 -2.000000000000000e+01 -1.173641418402965e+01 -1.500000000000000e+01 8.495120610679171e+00 -1.212435130187308e+01 4.981146296721901e+00 2.262139268675983e+00 9.758736718757271e+00 0.000000000000000e+00 -1.194751036266367e+01 -9.719989759912799e+00 -1.242279647612044e+01 -1.207616719595839e+01 -8.890318902875368e+00 -1.220473289797329e+01 -1.242253470346609e+01 -1.202212644195393e+01 5.021144733329385e+00 9.284393411993447e-08 5.131383228714286e-03 -5.092779384259033e-03 2.774056596900806e-05 120 5.029705774375993e-06 1.500000000000000e+01 9.643642955586960e+00 -2.000000000000000e+01 -1.173706601488061e+01 -1.500000000000000e+01 8.573669986288292e+00 -1.212317134651463e+01 4.968254736569253e+00 2.248558697599945e+00 9.886538048580727e+00 0.000000000000000e+00 -1.193878977874598e+01 -9.729596474218857e+00 -1.241652202034337e+01 -1.207861274621835e+01 -8.899799217772461e+00 -1.222617469383784e+01 -1.242165571835771e+01 -1.201350061865727e+01 5.017956954146991e+00 1.441436853717331e-08 5.124076633108872e-03 -5.065272227618527e-03 2.378689072013507e-05 121 5.033930537751503e-06 1.500000000000000e+01 9.644104389936277e+00 -2.000000000000000e+01 -1.173726184972175e+01 -1.500000000000000e+01 8.648088624684452e+00 -1.212331262913674e+01 4.956691365748733e+00 2.236256826961361e+00 1.002459229453963e+01 0.000000000000000e+00 -1.194147443003454e+01 -9.760711351901912e+00 -1.242344577851747e+01 -1.208523450973219e+01 -8.906986316772838e+00 -1.223617045285016e+01 -1.243716544892822e+01 -1.199648497037484e+01 5.012827149789445e+00 -1.048745167625252e-09 5.099791654127834e-03 -5.025394683069682e-03 1.896584150906094e-05 122 5.038778362196970e-06 1.500000000000000e+01 9.644421959472500e+00 -2.000000000000000e+01 -1.173750036573454e+01 -1.500000000000000e+01 8.702397486792056e+00 -1.212352691209562e+01 4.940166900992130e+00 2.221124316905482e+00 1.015185929642529e+01 0.000000000000000e+00 -1.194914071818515e+01 -9.787537813170703e+00 -1.243666403704627e+01 -1.208965157843248e+01 -8.907217425695031e+00 -1.223142619651712e+01 -1.245644638722836e+01 -1.195845142535418e+01 5.005842635005269e+00 2.463857683550431e-08 5.094267114056272e-03 -4.999144177601486e-03 1.417812087259505e-05 123 5.045145306319713e-06 1.500000000000000e+01 9.644492196737285e+00 -2.000000000000000e+01 -1.173814159201805e+01 -1.500000000000000e+01 8.744677525975290e+00 -1.212277998523829e+01 4.910043728705621e+00 2.194648577742390e+00 1.028550230510252e+01 0.000000000000000e+00 -1.195268083996423e+01 -9.799480716319910e+00 -1.244769637465582e+01 -1.208957473132755e+01 -8.903748050322141e+00 -1.222358651916509e+01 -1.247018377598544e+01 -1.189428339950193e+01 4.994364818092547e+00 3.911921873129883e-08 5.120082712368572e-03 -4.989142262387322e-03 9.595773324014863e-06 124 5.051449606986584e-06 1.500000000000000e+01 9.644448909444876e+00 -2.000000000000000e+01 -1.173884939416056e+01 -1.500000000000000e+01 8.769084862071916e+00 -1.212167405258694e+01 4.875281347126047e+00 2.163343145032274e+00 1.039067394211870e+01 0.000000000000000e+00 -1.195018159604322e+01 -9.802626565273866e+00 -1.245268166508005e+01 -1.208771623586052e+01 -8.902122691464520e+00 -1.222293599051418e+01 -1.247650798439085e+01 -1.183230700409413e+01 4.980064045909376e+00 2.357284622993180e-08 5.154264346782309e-03 -4.985919645805162e-03 6.639557685355580e-06 125 5.064058208320326e-06 1.500000000000000e+01 9.644467500698697e+00 -2.000000000000000e+01 -1.173983569331707e+01 -1.500000000000000e+01 8.795001795244437e+00 -1.212054499413709e+01 4.801933959587607e+00 2.095139703518714e+00 1.054833289346959e+01 0.000000000000000e+00 -1.194550493186078e+01 -9.819483359119093e+00 -1.246378763784065e+01 -1.208694019127034e+01 -8.902990513921397e+00 -1.222829605844070e+01 -1.249214944119377e+01 -1.172272237113899e+01 4.943047695157797e+00 -7.035798454758800e-09 5.203827913815599e-03 -4.970075434964286e-03 2.905350978501765e-06 126 5.076318125301194e-06 1.500000000000000e+01 9.644496535608088e+00 -2.000000000000000e+01 -1.174050668576681e+01 -1.500000000000000e+01 8.804320516411821e+00 -1.212031471716170e+01 4.723972270725334e+00 2.021899245006101e+00 1.065599860585259e+01 0.000000000000000e+00 -1.194387108585896e+01 -9.842069307006520e+00 -1.247858443431369e+01 -1.208759062421885e+01 -8.903739144541764e+00 -1.223142358213475e+01 -1.251137972928192e+01 -1.162297109890678e+01 4.896972534949302e+00 -1.738767171401404e-08 5.244113829476036e-03 -4.953145393909451e-03 5.028067824193236e-07 127 5.100684447655181e-06 1.500000000000000e+01 9.644444580961524e+00 -2.000000000000000e+01 -1.174169234036118e+01 -1.500000000000000e+01 8.809838074672263e+00 -1.212007160150201e+01 4.544783868717635e+00 1.853434086836123e+00 1.080086225185930e+01 0.000000000000000e+00 -1.194079757328614e+01 -9.883607917621525e+00 -1.251019600982731e+01 -1.208790234539054e+01 -8.903668942620186e+00 -1.223500579815621e+01 -1.254881873972224e+01 -1.143676692530516e+01 4.777527337198996e+00 -2.851214397661202e-08 5.328197869934331e-03 -4.929236622238648e-03 -2.519928362186631e-06 128 5.149417092363153e-06 1.500000000000000e+01 9.644380130061742e+00 -2.000000000000000e+01 -1.174364269198036e+01 -1.500000000000000e+01 8.814753823446181e+00 -1.211957013165345e+01 4.108052386592942e+00 1.441507296404309e+00 1.096622207730107e+01 0.000000000000000e+00 -1.193310753085124e+01 -9.964491693178337e+00 -1.257670815698060e+01 -1.208792499732640e+01 -8.903741465283602e+00 -1.224356310127469e+01 -1.262208452700953e+01 -1.112054763979167e+01 4.439506471506501e+00 -4.886188765590742e-08 5.484747808252921e-03 -4.898597940718900e-03 -5.636937321309710e-06 129 5.222818567409958e-06 1.500000000000000e+01 9.644218287410634e+00 -2.000000000000000e+01 -1.174556292737216e+01 -1.500000000000000e+01 8.823279903870008e+00 -1.211896023384816e+01 3.306015619242926e+00 6.832696391608310e-01 1.108598289759798e+01 0.000000000000000e+00 -1.192143106549668e+01 -1.008870206463667e+01 -1.268346384234913e+01 -1.208808151673875e+01 -8.903992885408379e+00 -1.225688325355864e+01 -1.273389280038328e+01 -1.075026870595669e+01 3.732792077882479e+00 -6.871416810561997e-08 5.679472612991984e-03 -4.884315399802445e-03 -7.879887190716235e-06 130 5.333447325275402e-06 1.500000000000000e+01 9.644138690649561e+00 -2.000000000000000e+01 -1.174708017639364e+01 -1.500000000000000e+01 8.835743329125367e+00 -1.211779287486999e+01 1.905677851063450e+00 -6.414559097104707e-01 1.116873644745088e+01 0.000000000000000e+00 -1.190377141988496e+01 -1.027791761548547e+01 -1.285059285783693e+01 -1.208817393404003e+01 -8.904115393993251e+00 -1.227682382078368e+01 -1.290380276053985e+01 -1.034204626630709e+01 2.383459358046816e+00 -8.502137155108084e-08 5.903074371471195e-03 -4.931877736655656e-03 -9.226985877048876e-06 131 5.425106387141024e-06 1.500000000000000e+01 9.644157850883806e+00 -2.000000000000000e+01 -1.174735693495538e+01 -1.500000000000000e+01 8.856924479030584e+00 -1.211592758822942e+01 6.632394379003333e-01 -1.813724356374521e+00 1.119755444193074e+01 0.000000000000000e+00 -1.188919765429595e+01 -1.043414397213306e+01 -1.299070146970030e+01 -1.208812436210692e+01 -8.904040398472369e+00 -1.229312953764161e+01 -1.304386293988734e+01 -1.008862864716216e+01 1.128044138296476e+00 -9.047799629051488e-08 6.047168836612007e-03 -5.029778644161030e-03 -1.097437848299824e-05 132 5.498758795705662e-06 1.500000000000000e+01 9.645192289121346e+00 -2.000000000000000e+01 -1.174065734022187e+01 -1.500000000000000e+01 9.337028426692249e+00 -1.207342732225748e+01 3.455282425005950e-02 -2.311700810364218e+00 1.011065307443664e+01 0.000000000000000e+00 -1.189622484414893e+01 -1.040916547986826e+01 -1.304882666513694e+01 -1.208021149068508e+01 -8.891234967565278e+00 -1.227563636583660e+01 -1.303377939828565e+01 -1.030289013904181e+01 3.311023845104910e-01 -5.776981736619133e-08 5.843119371171058e-03 -5.152652125102299e-03 -2.269178140028445e-05 133 5.559552917317399e-06 1.500000000000000e+01 9.645491987654847e+00 -2.000000000000000e+01 -1.173541856289803e+01 -1.500000000000000e+01 9.806728826346505e+00 -1.203621978900550e+01 -1.320463058689468e-01 -2.393741140390922e+00 9.378829150820427e+00 0.000000000000000e+00 -1.190142180622688e+01 -1.034846127983805e+01 -1.304102206440284e+01 -1.207721674621820e+01 -8.887386998600399e+00 -1.226613150237782e+01 -1.298343954744834e+01 -1.071643007624139e+01 -2.285282982209074e-02 -1.447003957656113e-08 5.500759829719921e-03 -5.244281261517392e-03 -7.113984039583408e-06 134 5.618601943453593e-06 1.500000000000000e+01 9.645230440607011e+00 -2.000000000000000e+01 -1.173430338964111e+01 -1.500000000000000e+01 9.910207439523312e+00 -1.203251236452931e+01 -9.931706794551244e-02 -2.378679449227460e+00 9.274915088355692e+00 0.000000000000000e+00 -1.190281457136417e+01 -1.031585956673124e+01 -1.301258266749524e+01 -1.207881464750133e+01 -8.890374059859689e+00 -1.226664641238582e+01 -1.295092267442990e+01 -1.107135171249723e+01 -1.154623564985423e-01 1.612132852851260e-09 5.223906506417629e-03 -5.264813284388457e-03 3.973058490943723e-06 135 5.646663665482860e-06 1.500000000000000e+01 9.645230243689630e+00 -2.000000000000000e+01 -1.173439095542990e+01 -1.500000000000000e+01 9.816992301230300e+00 -1.204195632333693e+01 -4.628758933206460e-02 -2.355821365747899e+00 9.376668737720703e+00 0.000000000000000e+00 -1.190268906005825e+01 -1.031201769177282e+01 -1.299917102158599e+01 -1.208015506652789e+01 -8.892421290893090e+00 -1.226845297431249e+01 -1.294492982810267e+01 -1.117540081025730e+01 -9.350354655222243e-02 4.349578901412079e-09 5.141639831226646e-03 -5.254816812080465e-03 5.385002823902668e-06 136 5.668589588359541e-06 1.500000000000000e+01 9.645231503401226e+00 -2.000000000000000e+01 -1.173446273770455e+01 -1.500000000000000e+01 9.701710962072014e+00 -1.205188190941158e+01 -2.547505392426932e-03 -2.336075722098658e+00 9.485241084626505e+00 0.000000000000000e+00 -1.190225386707156e+01 -1.031403670225003e+01 -1.299128628752772e+01 -1.208111020289481e+01 -8.893824575845825e+00 -1.227010244110964e+01 -1.294489505713956e+01 -1.121397756733809e+01 -5.984946971278402e-02 6.116654295019289e-09 5.107151201719299e-03 -5.243125471113094e-03 5.424216767805854e-06 137 5.688914057169018e-06 1.500000000000000e+01 9.645226700129803e+00 -2.000000000000000e+01 -1.173457744958531e+01 -1.500000000000000e+01 9.588961914248776e+00 -1.206076677721033e+01 3.238514219993844e-02 -2.319383400114786e+00 9.587511912338164e+00 0.000000000000000e+00 -1.190174254354920e+01 -1.031860508079481e+01 -1.298687054636231e+01 -1.208177073063515e+01 -8.894754459543717e+00 -1.227147424496722e+01 -1.294769093246873e+01 -1.121749970923373e+01 -2.440179759923052e-02 7.514414872983300e-09 5.097999812799741e-03 -5.231973403970231e-03 4.835768238442876e-06 138 5.711720207405110e-06 1.500000000000000e+01 9.645198184139513e+00 -2.000000000000000e+01 -1.173475615458194e+01 -1.500000000000000e+01 9.483204284859398e+00 -1.206847066291742e+01 6.059840176824852e-02 -2.305233307589480e+00 9.685645951609670e+00 0.000000000000000e+00 -1.190114680543918e+01 -1.032515093029457e+01 -1.298510092718130e+01 -1.208221874315181e+01 -8.895344983935405e+00 -1.227267185363925e+01 -1.295266949269484e+01 -1.119394247830532e+01 1.258418576719312e-02 8.159667660294632e-09 5.108627470353220e-03 -5.221241000835595e-03 3.610577544798364e-06 139 5.734590014721070e-06 1.500000000000000e+01 9.645139408121355e+00 -2.000000000000000e+01 -1.173502240564996e+01 -1.500000000000000e+01 9.411982749977390e+00 -1.207323954539929e+01 7.630330630068856e-02 -2.297068140894426e+00 9.756125097562720e+00 0.000000000000000e+00 -1.190066845509252e+01 -1.033154953367734e+01 -1.298598116982247e+01 -1.208237030554656e+01 -8.895485583934698e+00 -1.227337584864877e+01 -1.295810442930204e+01 -1.115403100214678e+01 4.192835454352818e-02 7.472796825021239e-09 5.133159086379677e-03 -5.213243407721071e-03 2.129657202782750e-06 140 5.763444462771464e-06 1.500000000000000e+01 9.645088699999273e+00 -2.000000000000000e+01 -1.173531097369287e+01 -1.500000000000000e+01 9.370775002516773e+00 -1.207554520411660e+01 8.098174189725442e-02 -2.294444274134279e+00 9.800621102453043e+00 0.000000000000000e+00 -1.190027893402594e+01 -1.033772832827328e+01 -1.298917924515738e+01 -1.208226118302998e+01 -8.895239974855947e+00 -1.227365753018425e+01 -1.296386058847294e+01 -1.109976292861448e+01 6.485458054714129e-02 5.212342531485967e-09 5.170553228483736e-03 -5.207506963332696e-03 4.078512478714383e-07 141 5.814417721142686e-06 1.500000000000000e+01 9.645120912038211e+00 -2.000000000000000e+01 -1.173558226633411e+01 -1.500000000000000e+01 9.377792617395223e+00 -1.207408809367447e+01 6.793470594490144e-02 -2.301175607133680e+00 9.794591636921346e+00 0.000000000000000e+00 -1.190006005283920e+01 -1.034271927932099e+01 -1.299545978104260e+01 -1.208180339288143e+01 -8.894496411911009e+00 -1.227332622126325e+01 -1.296926126503239e+01 -1.103212150718003e+01 7.426387427497943e-02 1.216510550714299e-09 5.221543852789903e-03 -5.205934813984155e-03 -1.268077467823005e-06 142 5.855448861856462e-06 1.500000000000000e+01 9.645152584494582e+00 -2.000000000000000e+01 -1.173559959584905e+01 -1.500000000000000e+01 9.416564727744140e+00 -1.207086756963359e+01 5.170207229949196e-02 -2.309547636851732e+00 9.751671095373627e+00 0.000000000000000e+00 -1.190016070847193e+01 -1.034260166017750e+01 -1.299896042569491e+01 -1.208145981747602e+01 -8.893989976593095e+00 -1.227279411985367e+01 -1.296985810144996e+01 -1.101074554622136e+01 6.467497556687351e-02 -4.220665378284700e-10 5.239977087861396e-03 -5.209145860014891e-03 -1.413798706366509e-06 143 5.896459917487235e-06 1.500000000000000e+01 9.645179869997714e+00 -2.000000000000000e+01 -1.173552029884040e+01 -1.500000000000000e+01 9.454838837229919e+00 -1.206801854305810e+01 3.949860638451950e-02 -2.315760149491107e+00 9.708463011460964e+00 0.000000000000000e+00 -1.190035484658810e+01 -1.034066508806757e+01 -1.300038768914537e+01 -1.208125275095968e+01 -8.893699360597525e+00 -1.227232239389839e+01 -1.296853674902954e+01 -1.101275678490088e+01 5.115186718991791e-02 -5.981429512055875e-10 5.240503126909994e-03 -5.213108355438518e-03 -9.514143641659498e-07 144 5.940702368662168e-06 1.500000000000000e+01 9.645211029995665e+00 -2.000000000000000e+01 -1.173543978868699e+01 -1.500000000000000e+01 9.479555723828327e+00 -1.206632016469545e+01 3.388275159833928e-02 -2.318603156829951e+00 9.680874169610398e+00 0.000000000000000e+00 -1.190052413406189e+01 -1.033838708949782e+01 -1.300012785366903e+01 -1.208120649686909e+01 -8.893671903811297e+00 -1.227209426471374e+01 -1.296658851288125e+01 -1.102748488967023e+01 4.020073145192776e-02 2.882359295233828e-11 5.230741248067154e-03 -5.216081716569675e-03 -3.194567814936922e-07 145 5.987114993546998e-06 1.500000000000000e+01 9.645181400211823e+00 -2.000000000000000e+01 -1.173540276299724e+01 -1.500000000000000e+01 9.485556300243606e+00 -1.206609876450765e+01 3.448458045296579e-02 -2.318311910780108e+00 9.673983366024435e+00 0.000000000000000e+00 -1.190061287656207e+01 -1.033692875048826e+01 -1.299901265476668e+01 -1.208124951783215e+01 -8.893725305364518e+00 -1.227202638442206e+01 -1.296515774152864e+01 -1.104327347079168e+01 3.539958018862377e-02 8.934849737790025e-10 5.219150480931633e-03 -5.217206464879177e-03 1.326970458806320e-07 146 6.052993722146426e-06 1.500000000000000e+01 9.645160601681991e+00 -2.000000000000000e+01 -1.173536455391300e+01 -1.500000000000000e+01 9.476247362857335e+00 -1.206695752062342e+01 3.925129859840373e-02 -2.315931129226434e+00 9.684049879067102e+00 0.000000000000000e+00 -1.190059361623144e+01 -1.033649875965078e+01 -1.299765941943329e+01 -1.208139693195291e+01 -8.893980718297892e+00 -1.227225171686738e+01 -1.296451327948979e+01 -1.105450369030985e+01 3.653520041358536e-02 1.570850308857825e-09 5.210118010628965e-03 -5.216602073448854e-03 3.196959328880198e-07 147 6.117354980074411e-06 1.500000000000000e+01 9.645201402424811e+00 -2.000000000000000e+01 -1.173536192615510e+01 -1.500000000000000e+01 9.464807966983776e+00 -1.206782172400704e+01 4.287799876771673e-02 -2.314104278418114e+00 9.696706307050332e+00 0.000000000000000e+00 -1.190054022934631e+01 -1.033708519621288e+01 -1.299721928885859e+01 -1.208147153084734e+01 -8.894082691322326e+00 -1.227240679365230e+01 -1.296489860194823e+01 -1.105433181796636e+01 4.038443243790054e-02 1.667184372555772e-09 5.209557832746661e-03 -5.215413668208885e-03 1.951595167464871e-07 148 6.185682100819779e-06 1.500000000000000e+01 9.645214345657616e+00 -2.000000000000000e+01 -1.173541590815572e+01 -1.500000000000000e+01 9.459689095519896e+00 -1.206818599261935e+01 4.380037663618897e-02 -2.313630712949505e+00 9.702412367528355e+00 0.000000000000000e+00 -1.190049593406932e+01 -1.033774446104230e+01 -1.299741717272283e+01 -1.208148627282841e+01 -8.894100819502409e+00 -1.227247958730188e+01 -1.296547651932735e+01 -1.104957132916763e+01 4.297725233658385e-02 1.485884573249512e-09 5.212795508300709e-03 -5.214677401182606e-03 1.205602950966641e-08 149 6.275142296833499e-06 1.500000000000000e+01 9.645220628073973e+00 -2.000000000000000e+01 -1.173544090027289e+01 -1.500000000000000e+01 9.460548272738258e+00 -1.206803039634368e+01 4.287211545948793e-02 -2.314090183501817e+00 9.701757057825507e+00 0.000000000000000e+00 -1.190049529527774e+01 -1.033792238174763e+01 -1.299779482811204e+01 -1.208144321889607e+01 -8.894020432267150e+00 -1.227241080150543e+01 -1.296571016099627e+01 -1.104571262903852e+01 4.333975078722554e-02 1.239143493387167e-09 5.215832041105002e-03 -5.214711012603061e-03 -6.069432589509081e-08 150 6.397251971275498e-06 1.500000000000000e+01 9.645178664495964e+00 -2.000000000000000e+01 -1.173541450155711e+01 -1.500000000000000e+01 9.463995184260253e+00 -1.206775763584293e+01 4.172239473557522e-02 -2.314671809150085e+00 9.697790327954582e+00 0.000000000000000e+00 -1.190051521326866e+01 -1.033778978023592e+01 -1.299796101894069e+01 -1.208141119532433e+01 -8.893967695984659e+00 -1.227234270927467e+01 -1.296563776697795e+01 -1.104541896390081e+01 4.223466973456850e-02 1.163380738026164e-09 5.216260973067810e-03 -5.215058403450425e-03 -4.090424864582118e-08 151 6.540317937152030e-06 1.500000000000000e+01 9.645158554963535e+00 -2.000000000000000e+01 -1.173540256616621e+01 -1.500000000000000e+01 9.464732156250631e+00 -1.206769499695619e+01 4.168894806378370e-02 -2.314692761269400e+00 9.696829059151737e+00 0.000000000000000e+00 -1.190052193078810e+01 -1.033760507495161e+01 -1.299786545591103e+01 -1.208140186731809e+01 -8.893959971172444e+00 -1.227232417865740e+01 -1.296548079536656e+01 -1.104685571896600e+01 4.171188383895083e-02 1.271716195497059e-09 5.215273668264038e-03 -5.215231668088925e-03 8.743660865923476e-09 152 6.740317937152030e-06 1.500000000000000e+01 9.645194575904500e+00 -2.000000000000000e+01 -1.173538190415983e+01 -1.500000000000000e+01 9.463954162461999e+00 -1.206778166720258e+01 4.200954839160482e-02 -2.314535816979854e+00 9.697543233445894e+00 0.000000000000000e+00 -1.190051217057813e+01 -1.033761024960409e+01 -1.299779313791115e+01 -1.208139495016087e+01 -8.893953439906414e+00 -1.227232549280609e+01 -1.296548234039781e+01 -1.104728205289316e+01 4.189830465333452e-02 1.279113148501671e-09 5.214926432846425e-03 -5.215189052470879e-03 8.934778498392263e-09 153 6.940317937152030e-06 1.500000000000000e+01 9.645214403327274e+00 -2.000000000000000e+01 -1.173541350183084e+01 -1.500000000000000e+01 9.463984003722558e+00 -1.206779035645928e+01 4.204531698869321e-02 -2.314508348003364e+00 9.697674183966066e+00 0.000000000000000e+00 -1.190050342626195e+01 -1.033767048120584e+01 -1.299780631159391e+01 -1.208142159049069e+01 -8.894015843443198e+00 -1.227238980581334e+01 -1.296551277678391e+01 -1.104702897615591e+01 4.202936428214463e-02 1.223281136221848e-09 5.215058493532784e-03 -5.215095036212062e-03 -8.632644691520717e-10 154 7.140317937152030e-06 1.500000000000000e+01 9.645187499572106e+00 -2.000000000000000e+01 -1.173543968730643e+01 -1.500000000000000e+01 9.463938060150961e+00 -1.206779218004061e+01 4.200581305590250e-02 -2.314523422321476e+00 9.698052121960830e+00 0.000000000000000e+00 -1.190050642868216e+01 -1.033774713527133e+01 -1.299784745787668e+01 -1.208146270873406e+01 -8.894081213093925e+00 -1.227245361366655e+01 -1.296554913682486e+01 -1.104690759229041e+01 4.201843441583071e-02 1.264810303487707e-09 5.215042963031843e-03 -5.215010914764823e-03 -4.639462467986684e-09 155 7.340317937152030e-06 1.500000000000000e+01 9.645177062709785e+00 -2.000000000000000e+01 -1.173542648306443e+01 -1.500000000000000e+01 9.463988849557261e+00 -1.206777453731958e+01 4.196830904856913e-02 -2.314546304356978e+00 9.698172094736091e+00 0.000000000000000e+00 -1.190051824669591e+01 -1.033771927147109e+01 -1.299786229361105e+01 -1.208142974378905e+01 -8.893995961665578e+00 -1.227236916727916e+01 -1.296555430609211e+01 -1.104691253334012e+01 4.197703142385299e-02 1.291179861698180e-09 5.215103421310046e-03 -5.215086198438586e-03 1.309792872666536e-09 156 7.540317937152030e-06 1.500000000000000e+01 9.645215783797169e+00 -2.000000000000000e+01 -1.173541712586018e+01 -1.500000000000000e+01 9.464042940101419e+00 -1.206776483489406e+01 4.191521546941536e-02 -2.314578935302311e+00 9.697550486209110e+00 0.000000000000000e+00 -1.190051797021292e+01 -1.033762075219472e+01 -1.299782338723345e+01 -1.208137992481964e+01 -8.893913093530092e+00 -1.227228651288230e+01 -1.296550673847543e+01 -1.104691414456636e+01 4.192422582090225e-02 1.258413597071202e-09 5.215223893731835e-03 -5.215204993355402e-03 3.186279280162201e-10 157 7.740317937152030e-06 1.500000000000000e+01 9.645237523400430e+00 -2.000000000000000e+01 -1.173544134717762e+01 -1.500000000000000e+01 9.464093248345695e+00 -1.206778340961739e+01 4.193578130274368e-02 -2.314562347941759e+00 9.697354908655920e+00 0.000000000000000e+00 -1.190050754048261e+01 -1.033761705408770e+01 -1.299778873819120e+01 -1.208140792579400e+01 -8.893989984514174e+00 -1.227236066040067e+01 -1.296547555656863e+01 -1.104696626699550e+01 4.193029378390836e-02 1.233253413493453e-09 5.215128550045469e-03 -5.215141535982338e-03 -6.739776376419484e-10 158 7.940317937152030e-06 1.500000000000000e+01 9.645214848051236e+00 -2.000000000000000e+01 -1.173546195193270e+01 -1.500000000000000e+01 9.463973486509498e+00 -1.206779709012516e+01 4.202089568129315e-02 -2.314512659687079e+00 9.697951691698336e+00 0.000000000000000e+00 -1.190051564379498e+01 -1.033769779072138e+01 -1.299782173071332e+01 -1.208143574152552e+01 -8.894027733038500e+00 -1.227239599286329e+01 -1.296552286684915e+01 -1.104700279451053e+01 4.200424480598779e-02 1.288956192970839e-09 5.215007460331312e-03 -5.215050240535453e-03 3.728854878233743e-09 159 8.140317937152030e-06 1.500000000000000e+01 9.645202430881261e+00 -2.000000000000000e+01 -1.173548701684086e+01 -1.500000000000000e+01 9.463908467733230e+00 -1.206777917379312e+01 4.203038671560853e-02 -2.314503038040240e+00 9.698253130100432e+00 0.000000000000000e+00 -1.190051488633037e+01 -1.033772456372201e+01 -1.299785038362329e+01 -1.208143731219981e+01 -8.894013212649678e+00 -1.227238829638585e+01 -1.296555305338485e+01 -1.104695090740796e+01 4.203009663772887e-02 1.308139851252801e-09 5.215051542264332e-03 -5.215059555020074e-03 6.073833090563580e-09 160 8.340317937152030e-06 1.500000000000000e+01 9.645239419664462e+00 -2.000000000000000e+01 -1.173545947718601e+01 -1.500000000000000e+01 9.464182737610516e+00 -1.206776665091924e+01 4.190593723112123e-02 -2.314572826644312e+00 9.697666862810557e+00 0.000000000000000e+00 -1.190051251378248e+01 -1.033765736103823e+01 -1.299782786898257e+01 -1.208141096045443e+01 -8.893975291497979e+00 -1.227234846629804e+01 -1.296551724389058e+01 -1.104686421631521e+01 4.193087131507369e-02 1.249665642927154e-09 5.215196296683028e-03 -5.215134996566999e-03 -5.932416717139681e-09 161 8.540317937152030e-06 1.500000000000000e+01 9.645264527211874e+00 -2.000000000000000e+01 -1.173543543429125e+01 -1.500000000000000e+01 9.464113988617493e+00 -1.206777623152388e+01 4.192984839465796e-02 -2.314565129628739e+00 9.697440469196033e+00 0.000000000000000e+00 -1.190051042792650e+01 -1.033761043450763e+01 -1.299779250934750e+01 -1.208140110132937e+01 -8.893981807700797e+00 -1.227235036061248e+01 -1.296547519930391e+01 -1.104696496412243e+01 4.192381728713042e-02 1.206925481641586e-09 5.215138682873141e-03 -5.215153733799489e-03 1.829340669703898e-10 162 8.740317937152030e-06 1.500000000000000e+01 9.645242916640798e+00 -2.000000000000000e+01 -1.173547858096459e+01 -1.500000000000000e+01 9.463850925340535e+00 -1.206779037530328e+01 4.204631875851171e-02 -2.314499365880977e+00 9.698009032112734e+00 0.000000000000000e+00 -1.190050986132670e+01 -1.033768676097868e+01 -1.299781438937094e+01 -1.208143696221671e+01 -8.894030363998134e+00 -1.227240308858403e+01 -1.296551355899851e+01 -1.104703047682547e+01 4.202285328294900e-02 1.274094101847882e-09 5.214996061424210e-03 -5.215058553827541e-03 7.989956530676895e-09 163 8.940317937152030e-06 1.500000000000000e+01 9.645232668477571e+00 -2.000000000000000e+01 -1.173550491064039e+01 -1.500000000000000e+01 9.463893147701560e+00 -1.206778194680117e+01 4.202703631254085e-02 -2.314503909710872e+00 9.698276581480721e+00 0.000000000000000e+00 -1.190051448472202e+01 -1.033776312829964e+01 -1.299786920382894e+01 -1.208144870988116e+01 -8.894029424589886e+00 -1.227240364914876e+01 -1.296556759976013e+01 -1.104692826558894e+01 4.203244255504947e-02 1.315191521729130e-09 5.215025125884122e-03 -5.215013323490075e-03 -8.206541582128572e-10 164 9.140317937152030e-06 1.500000000000000e+01 9.645264682359352e+00 -2.000000000000000e+01 -1.173548849605192e+01 -1.500000000000000e+01 9.464259815067298e+00 -1.206775813424433e+01 4.187789837257063e-02 -2.314580727997151e+00 9.697686635475723e+00 0.000000000000000e+00 -1.190051413797181e+01 -1.033767579021632e+01 -1.299784405108791e+01 -1.208141636682599e+01 -8.893987128436064e+00 -1.227235821066098e+01 -1.296552682065065e+01 -1.104683832442355e+01 4.190752217313745e-02 1.260128318607824e-09 5.215194033489235e-03 -5.215116472399408e-03 -1.155989502488701e-08 165 9.340317937152030e-06 1.500000000000000e+01 9.645285751312552e+00 -2.000000000000000e+01 -1.173548191184020e+01 -1.500000000000000e+01 9.464177042406567e+00 -1.206776892260606e+01 4.190503854323889e-02 -2.314574220674301e+00 9.697412270265729e+00 0.000000000000000e+00 -1.190050941281580e+01 -1.033756892749388e+01 -1.299777747740241e+01 -1.208138433104660e+01 -8.893945867171324e+00 -1.227231927538220e+01 -1.296546446717945e+01 -1.104695940883417e+01 4.189767289089242e-02 1.199926191362716e-09 5.215185655091460e-03 -5.215205242132021e-03 1.696920704838316e-09 166 9.540317937152030e-06 1.500000000000000e+01 9.645269288956574e+00 -2.000000000000000e+01 -1.173550817247711e+01 -1.500000000000000e+01 9.463992056554207e+00 -1.206777636369425e+01 4.199068888337911e-02 -2.314525550074687e+00 9.697496295629085e+00 0.000000000000000e+00 -1.190050451912866e+01 -1.033768894211515e+01 -1.299781174183843e+01 -1.208143070774731e+01 -8.894020266006376e+00 -1.227239879413623e+01 -1.296552149276331e+01 -1.104699794911009e+01 4.197258767380536e-02 1.232441676389450e-09 5.215035422842069e-03 -5.215079189222162e-03 1.480052996812474e-09 167 9.740317937152030e-06 1.500000000000000e+01 9.645262046589079e+00 -2.000000000000000e+01 -1.173552566966106e+01 -1.500000000000000e+01 9.463998950923902e+00 -1.206777077212276e+01 4.199685704143136e-02 -2.314516742954913e+00 9.697981489058481e+00 0.000000000000000e+00 -1.190050997386697e+01 -1.033776225852123e+01 -1.299785879361805e+01 -1.208146984709745e+01 -8.894077418243533e+00 -1.227244914188801e+01 -1.296555987148679e+01 -1.104693927765301e+01 4.199697910863041e-02 1.286461184178825e-09 5.214993599723424e-03 -5.215000211567265e-03 5.629966384162966e-09 168 9.940317937152030e-06 1.500000000000000e+01 9.645290019725131e+00 -2.000000000000000e+01 -1.173551781453865e+01 -1.500000000000000e+01 9.463949089945333e+00 -1.206778192515638e+01 4.201219490781799e-02 -2.314509973588771e+00 9.698298306789521e+00 0.000000000000000e+00 -1.190051182400350e+01 -1.033768822292769e+01 -1.299782281627252e+01 -1.208146721858899e+01 -8.894050929945812e+00 -1.227241708182313e+01 -1.296549852853290e+01 -1.104696956621550e+01 4.201085388584881e-02 1.330337246422078e-09 5.215001072556446e-03 -5.215014261268567e-03 8.842617931700808e-09 169 1.000000000000000e-05 1.500000000000000e+01 9.645522938711018e+00 -2.000000000000000e+01 -1.173570309000301e+01 -1.500000000000000e+01 9.463909429205363e+00 -1.206778714779870e+01 4.209568419219343e-02 -2.314445038265406e+00 9.698112746591873e+00 0.000000000000000e+00 -1.190049705168927e+01 -1.033760940034808e+01 -1.299778978614521e+01 -1.208141246386846e+01 -8.893981190668927e+00 -1.227235898352222e+01 -1.296547624295331e+01 -1.104709813804509e+01 4.206301328956409e-02 1.294741922701603e-09 5.214987410492279e-03 -5.215089186644849e-03 2.636057195083989e-08 0707070124062140671006440006700000000000011777770500302371400003400000001356spice3c1/examples/mosmem.inmosmem - mos memory cell .width in=72 .opt abstol=1u .opt acct list node .tran 20ns 2us vdd 9 0 dc 5 vs 7 0 pulse(2 0 520ns 20ns 20ns 500ns 2000ns) vw 1 0 pulse(0 2 20ns 20ns 500ns 200ns) vwb 2 0 pulse(2 0 20ns 20ns 20ns 2000ns 2000ns) m1 3 1 0 0 mod w=250u l=5u m2 4 2 0 0 mod w=250u l=5u m3 9 9 3 0 mod w=5u l=5u m4 9 9 4 0 mod w=5u l=5u m5 5 7 3 0 mod w=50u l=5u m6 6 7 4 0 mod w=50u l=5u m7 5 6 0 0 mod w=250u l=5u m8 6 5 0 0 mod w=250u l=5u m9 9 9 5 0 mod w=5u l=5u m10 9 9 6 0 mod w=5u l=5u m11 8 4 0 0 mod w=250u l=5u m12 9 9 8 0 mod w=5u l=5u .model mod nmos(vto=0.5 phi=0.7 kp=1.0e-6 gamma=1.83 lambda=0.115 + level=1 cgso=1u cgdo=1u cbd=50p cbs=50p) .print dc v(5) v(6) .plot dc v(6) .plot tran v(6) v(5) v(7) v(1) v(2) .end 0707070124062140701006440006700000000000011777770500302371400003500000003327spice3c1/examples/mosmem.outWarning: vwb: no DC value, transient time 0 value used Warning: vw: no DC value, transient time 0 value used Warning: vs: no DC value, transient time 0 value used (debug printing enabled) Circuit: mosmem - mos memory cell Circuit: mosmem - mos memory cell Date: Mon May 1 17:02:44 PDT 1989 MOSMEM - MOS MEMORY CELL .TRAN 20NS 2US VDD 9 0 DC 5 VS 7 0 PULSE(2 0 520NS 20NS 20NS 500NS 2000NS) VW 1 0 PULSE(0 2 20NS 20NS 500NS 200NS) VWB 2 0 PULSE(2 0 20NS 20NS 20NS 2000NS 2000NS) M1 3 1 0 0 MOD W=250U L=5U M2 4 2 0 0 MOD W=250U L=5U M3 9 9 3 0 MOD W=5U L=5U M4 9 9 4 0 MOD W=5U L=5U M5 5 7 3 0 MOD W=50U L=5U M6 6 7 4 0 MOD W=50U L=5U M7 5 6 0 0 MOD W=250U L=5U M8 6 5 0 0 MOD W=250U L=5U M9 9 9 5 0 MOD W=5U L=5U M10 9 9 6 0 MOD W=5U L=5U M11 8 4 0 0 MOD W=250U L=5U M12 9 9 8 0 MOD W=5U L=5U .MODEL MOD NMOS(VTO=0.5 PHI=0.7 KP=1.0E-6 GAMMA=1.83 LAMBDA=0.115 + LEVEL=1 CGSO=1U CGDO=1U CBD=50P CBS=50P) .OPT ACCT LIST NODE .OPT ABSTOL=1U .END .print card ignored since rawfile was produced .plot card ignored since rawfile was produced .plot card ignored since rawfile was produced Total run time: 3.720 seconds. Current data size = 302048, Data limits: hard = 85950464, soft = 85950464. 29 page faults, 37 vol + 66 invol = 103 context switches. Time since last call: 0.000 seconds. Nominal temperature = 27 Operating temperature = 27 Total iterations = 252 Transient iterations = 232 Circuit Equations = 14 Transient timepoints = 112 Accepted timepoints = 103 Rejected timepoints = 9 Total Analysis Time = 3.25 Transient time = 3.06 matrix reordering time = 0.01 L-U decomposition time = 0.16 Matrix solve time = 0.13 transient L-U decomp time = 0.14 Transient solve time = 0.13 Transient iters per point = 0 Load time = 1.98 0707070124062140711006440006700000000000011777770500302371400003500000102642spice3c1/examples/mosmem.rawTitle: mosmem - mos memory cell Date: Mon May 1 17:02:36 PDT 1989 Plotname: transient Flags: real No. Variables: 14 No. Points: 103 Command: version SPICE 3c1 Alpha test Variables: 0 time time 1 V(9) voltage 2 V(7) voltage 3 V(1) voltage 4 V(2) voltage 5 V(3) voltage 6 V(4) voltage 7 V(5) voltage 8 V(6) voltage 9 V(8) voltage 10 vwb#branch current 11 vw#branch current 12 vs#branch current 13 vdd#branch current Values: 0 0.000000000000000e+00 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.667279166423612e+00 1.777846908473535e-01 2.668134009039930e+00 1.352192489023052e-01 2.668452092654640e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 -2.722259789956584e-05 1 2.000000000000000e-10 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380488502657e+00 1.778812072472390e-01 2.667239667696022e+00 1.353295565888248e-01 2.668268745364158e+00 -8.136101173027155e-05 8.924178095739421e-04 -6.465488257755836e-04 -4.267248515423157e-05 2 4.000000000000000e-10 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380453020495e+00 1.778812021381349e-01 2.667239663903665e+00 1.353295527998936e-01 2.668268733133134e+00 -6.386380087958221e-09 -4.435270262170832e-08 -1.204313844482829e-08 -2.722126148417200e-05 3 8.000000000000000e-10 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380424657407e+00 1.778811955316593e-01 2.667239659369292e+00 1.353295471318554e-01 2.668268721273166e+00 -2.624158775693664e-09 2.358557793513683e-11 -1.382069111932616e-09 -2.721994016680312e-05 4 1.600000000000000e-09 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380402012222e+00 1.778811821508947e-01 2.667239648201097e+00 1.353295347411174e-01 2.668268705112679e+00 -8.304508643253161e-10 2.358568895743929e-11 -2.442427385340729e-09 -2.721991211257838e-05 5 3.200000000000000e-09 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380383986644e+00 1.778811628919753e-01 2.667239624987518e+00 1.353295093416261e-01 2.668268671283522e+00 -2.980128590950037e-09 2.358596651319544e-11 -2.105735297935896e-09 -2.721992259556156e-05 6 6.400000000000000e-09 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380320670699e+00 1.778811203669149e-01 2.667239578771504e+00 1.353294586643802e-01 2.668268600319222e+00 -3.465555268103437e-09 2.358665346369193e-11 -2.076813549259371e-09 -2.721992478308072e-05 7 1.280000000000000e-08 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380194038826e+00 1.778810353432361e-01 2.667239486371809e+00 1.353293573665979e-01 2.668268458412448e+00 -3.706547122830570e-09 2.358801348689710e-11 -2.060848767679313e-09 -2.721992765383681e-05 8 2.000000000000000e-08 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 2.000000000000000e+00 2.665380014875378e+00 1.778809345380684e-01 2.667239367305770e+00 1.353292344613791e-01 2.668268273790523e+00 -4.270249639570095e-09 2.358996331608409e-11 -2.318037583496496e-09 -2.721992413564814e-05 9 2.010662970572800e-08 5.000000000000000e+00 2.000000000000000e+00 1.066297057279999e-02 1.989337029427200e+00 2.672449484261915e+00 1.742512579927685e-01 2.667239307371677e+00 1.353291933354180e-01 2.665273686009145e+00 4.148994305665692e-02 -3.342487433334218e-02 1.612973113762184e-03 -6.381016324878697e-06 10 2.031988911718400e-08 5.000000000000000e+00 2.000000000000000e+00 3.198891171840001e-02 1.968011088281600e+00 2.686593637615682e+00 1.669968486371687e-01 2.667239288432281e+00 1.353291601094187e-01 2.659289477852030e+00 4.149969171820469e-02 -3.341520853123736e-02 1.616903340489806e-03 -5.912598811080860e-06 11 2.074640794009600e-08 5.000000000000000e+00 2.000000000000000e+00 7.464079400960001e-02 1.925359205990400e+00 2.714890083967731e+00 1.525053890563834e-01 2.667239171736457e+00 1.353289951023747e-01 2.647337940202201e+00 4.151275040552949e-02 -3.340242400327764e-02 1.622070789767602e-03 -5.343827396182485e-06 12 2.159944558592000e-08 5.000000000000000e+00 2.000000000000000e+00 1.599445585920000e-01 1.840055441408000e+00 2.771562960816736e+00 1.235911539450489e-01 2.667238797381885e+00 1.353283525432771e-01 2.623501441891801e+00 4.153951590359641e-02 -3.337716874059254e-02 1.632380462575841e-03 -4.200203606648245e-06 13 2.330552087756800e-08 5.000000000000000e+00 2.000000000000000e+00 3.305520877568000e-01 1.669447912243200e+00 2.885166429789450e+00 6.604598230573883e-02 2.667237214533232e+00 1.353255873201419e-01 2.576101533135240e+00 4.159528506774354e-02 -3.332792232077493e-02 1.653299904568247e-03 -1.892054589552146e-06 14 2.671767146086400e-08 5.000000000000000e+00 2.000000000000000e+00 6.717671460864001e-01 1.328232853913600e+00 3.113341677628688e+00 -4.781909313239637e-02 2.667230030259754e+00 1.353129943243198e-01 2.482469229061929e+00 4.171723027373363e-02 -3.323485568832841e-02 1.696076858938717e-03 2.862902352515368e-06 15 3.354197262745600e-08 5.000000000000000e+00 2.000000000000000e+00 1.354197262745600e+00 6.458027372543999e-01 3.572986336822766e+00 -2.696268859599151e-01 2.667194535372936e+00 1.352507396897493e-01 2.300704459785905e+00 4.201897935004428e-02 -3.308102335571760e-02 1.786590758137066e-03 1.347408080309970e-05 16 4.000000000000000e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.011094572447385e+00 -4.694645993471541e-01 2.667128796688392e+00 1.351354292372584e-01 2.137699872192101e+00 4.245342756966598e-02 -3.298118709913670e-02 1.892713034282156e-03 2.767822278113588e-05 17 4.009568728065020e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.011073092683391e+00 -4.694591518953483e-01 2.667127587797645e+00 1.351333087128657e-01 2.137704441606523e+00 1.423243446971312e-05 -5.611969492713698e-05 -1.011718966037467e-05 -3.960427819026113e-05 18 4.028706184195061e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.011030133266577e+00 -4.694482572689927e-01 2.667125171302189e+00 1.351290701595011e-01 2.137713580205754e+00 1.423183081966650e-05 -5.611945287475884e-05 -1.011561535732564e-05 -3.960415438847113e-05 19 4.052306775593045e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.010977155156732e+00 -4.694348220739359e-01 2.667122191223192e+00 1.351238430568701e-01 2.137724849879466e+00 1.423105819622905e-05 -5.611916727943367e-05 -1.011460791229546e-05 -3.960396916125389e-05 20 4.099507958389013e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.010871199441473e+00 -4.694079530361017e-01 2.667116231144734e+00 1.351133889118069e-01 2.137747388105961e+00 1.422951361514102e-05 -5.611859609039316e-05 -1.011443309465593e-05 -3.960354883800199e-05 21 4.193910323980950e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.010659289996191e+00 -4.693542203185681e-01 2.667104312703174e+00 1.350924836000605e-01 2.137792460117014e+00 1.422642712720426e-05 -5.611745371869592e-05 -1.011432427120568e-05 -3.960270169167191e-05 22 4.382715055164824e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.010235478870187e+00 -4.692467758140359e-01 2.667080483092488e+00 1.350506857274178e-01 2.137882586786807e+00 1.422026479549511e-05 -5.611516899901858e-05 -1.011396719633254e-05 -3.960101126850068e-05 23 4.760324517532571e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.009387887675661e+00 -4.690319701915215e-01 2.667032852938824e+00 1.349671409469232e-01 2.138062770990912e+00 1.420798248418474e-05 -5.611059965464349e-05 -1.011317728137704e-05 -3.959763283461657e-05 24 5.515543442268065e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.007692829510532e+00 -4.686028856100140e-01 2.666937708697073e+00 1.348002548853150e-01 2.138422705695872e+00 1.419479122526015e-05 -5.610146134486793e-05 -1.011369678986015e-05 -3.959083282029785e-05 25 7.025981291739054e-08 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 4.004303210027909e+00 -4.677472877234600e-01 2.666748159841497e+00 1.344677398065180e-01 2.139140437930735e+00 1.413304927683321e-05 -5.608318624055093e-05 -1.011045122906130e-05 -3.957745145358527e-05 26 1.004685699068103e-07 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 3.997526415847796e+00 -4.660447417362319e-01 2.666372545763436e+00 1.338088601587207e-01 2.140568725028650e+00 1.404211586645415e-05 -5.604032798706485e-05 -1.010866834446603e-05 -3.955030195633590e-05 27 1.404685699068103e-07 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 3.988561773565431e+00 -4.638073229706180e-01 2.665881021014261e+00 1.329472540964237e-01 2.142445872359877e+00 1.392349255508959e-05 -5.600448142855687e-05 -1.008141513207889e-05 -3.951523416920846e-05 28 1.804685699068103e-07 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 3.979598259475060e+00 -4.615884387975682e-01 2.665396975490692e+00 1.320982328636544e-01 2.144307623927445e+00 1.381010547979846e-05 -5.593231646800010e-05 -1.009827417613302e-05 -3.947918576757031e-05 29 2.204685699068103e-07 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 3.970649599433843e+00 -4.593873139168842e-01 2.664919129841426e+00 1.312609790557455e-01 2.146154613379407e+00 1.370153271563188e-05 -5.590423660321083e-05 -1.005861841581299e-05 -3.944457137958523e-05 30 2.400000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 3.966283081905137e+00 -4.583188300824697e-01 2.664688658905942e+00 1.308567266273498e-01 2.147051237781983e+00 1.365003520440063e-05 -5.587837079353702e-05 -1.006599439201824e-05 -3.942704460836419e-05 31 2.440000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.984000000000000e+00 0.000000000000000e+00 3.954490630493140e+00 -4.581006045486470e-01 2.664641635268131e+00 1.307743178698617e-01 2.147234367063689e+00 1.363909586392072e-05 1.263158391241657e-03 -1.462477806090249e-04 -5.304304703401363e-05 32 2.520000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.952000000000000e+00 0.000000000000000e+00 3.930966897244793e+00 -4.576645408756410e-01 2.664547773855949e+00 1.306095184755430e-01 2.147600303624682e+00 1.361891905978527e-05 1.266033299154114e-03 -1.456924210715021e-04 -5.297862796363402e-05 33 2.680000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.888000000000000e+00 0.000000000000000e+00 3.884166507827667e+00 -4.567940418421386e-01 2.664360803663858e+00 1.302818055498310e-01 2.148330829022197e+00 1.358458580983301e-05 1.271317634936257e-03 -1.446224437289250e-04 -5.285938549613476e-05 34 3.000000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.760000000000000e+00 0.000000000000000e+00 3.791520645058930e+00 -4.550610759338126e-01 2.663990173867114e+00 1.296311509896738e-01 2.149785179555690e+00 1.349696199901061e-05 1.281177718293797e-03 -1.426524021254415e-04 -5.263497194783138e-05 35 3.400000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.600000000000000e+00 0.000000000000000e+00 3.677358103428988e+00 -4.529089188250433e-01 2.663533185276650e+00 1.288294247826992e-01 2.151591409808309e+00 1.340219624703645e-05 1.292195180198207e-03 -1.404414941461632e-04 -5.238060296601437e-05 36 3.800000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.440000000000000e+00 0.000000000000000e+00 3.564829838298990e+00 -4.507718593913171e-01 2.663082811603369e+00 1.280393523519700e-01 2.153385053170117e+00 1.330944122627977e-05 1.301805456999838e-03 -1.385161600513948e-04 -5.215464111039969e-05 37 4.200000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.280000000000000e+00 0.000000000000000e+00 3.453726771052070e+00 -4.486493828516813e-01 2.662638932792776e+00 1.272606865255311e-01 2.155166531352203e+00 1.321990682869132e-05 1.310059573091374e-03 -1.368610963954158e-04 -5.195589680109774e-05 38 4.600000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 1.120000000000000e+00 0.000000000000000e+00 3.343839721422626e+00 -4.465409983998973e-01 2.662201453545392e+00 1.264932480336297e-01 2.156936246234779e+00 1.313336504911249e-05 1.317005994870580e-03 -1.354672583790757e-04 -5.178343239553393e-05 39 5.000000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 9.600000000000000e-01 0.000000000000000e+00 3.234964499396657e+00 -4.444462467571070e-01 2.661770287856780e+00 1.257368820684513e-01 2.158694573911262e+00 1.304959523933504e-05 1.322691823598555e-03 -1.343252644962266e-04 -5.163630426146527e-05 40 5.200000000000000e-07 5.000000000000000e+00 2.000000000000000e+00 8.799999999999999e-01 0.000000000000000e+00 3.180859973992401e+00 -4.434038865503251e-01 2.661557053430370e+00 1.253628173241821e-01 2.159569546627314e+00 1.300860419055133e-05 1.325081289149841e-03 -1.338448803784387e-04 -5.157182123509365e-05 41 5.214720754619471e-07 5.000000000000000e+00 1.852792453805290e+00 8.741116981522115e-01 0.000000000000000e+00 3.157115433945127e+00 -4.522484371203768e-01 2.643164132606200e+00 1.078183039369082e-01 2.152368902587753e+00 -1.502054547929411e-03 -2.032493690212731e-03 1.767245203795016e-02 -2.960998239543032e-04 42 5.244162263858413e-07 5.000000000000000e+00 1.558377361415871e+00 8.623350944566348e-01 0.000000000000000e+00 3.109671944269778e+00 -4.698448492079138e-01 2.606482568961174e+00 7.288670433894871e-02 2.138048563949641e+00 -1.488936864913947e-03 -2.026041572610229e-03 1.768377348687289e-02 -2.956036022338419e-04 43 5.303045282336297e-07 5.000000000000000e+00 9.695471766370320e-01 8.387818870654812e-01 0.000000000000000e+00 3.014953775935332e+00 -5.047015670851356e-01 2.533505749450897e+00 3.612073770587601e-03 2.109700418905306e+00 -1.470400461254999e-03 -2.016677053184725e-03 1.770018747217923e-02 -2.954968651420873e-04 44 5.400000000000000e-07 5.000000000000000e+00 0.000000000000000e+00 7.999999999999999e-01 0.000000000000000e+00 2.859488592614340e+00 -5.607534011911059e-01 2.414518431718163e+00 -1.086485789389386e-01 2.064167175864244e+00 -1.423780522375517e-03 -2.000774061183392e-03 1.773208825502651e-02 -2.946843853438751e-04 45 5.401869387928192e-07 5.000000000000000e+00 0.000000000000000e+00 7.992522448287233e-01 0.000000000000000e+00 2.858988707668363e+00 -5.607276975458206e-01 2.414522400389820e+00 -1.086415702158463e-01 2.064188384274968e+00 3.437441327412694e-05 1.331485805542487e-03 -1.238918629346553e-04 -5.660102872915088e-05 46 5.405608163784575e-07 5.000000000000000e+00 0.000000000000000e+00 7.977567344861702e-01 0.000000000000000e+00 2.857989070509054e+00 -5.606760715885207e-01 2.414530672619298e+00 -1.086270373078692e-01 2.064230993194521e+00 3.461810570372370e-05 1.331633729011406e-03 -1.236240062488653e-04 -5.657749878655322e-05 47 5.413085715497340e-07 5.000000000000000e+00 0.000000000000000e+00 7.947657138010639e-01 0.000000000000000e+00 2.855989795765946e+00 -5.605728109188584e-01 2.414547411329219e+00 -1.085975983768271e-01 2.064316229647907e+00 3.452550725739634e-05 1.331707454208603e-03 -1.235731860704525e-04 -5.657777937635245e-05 48 5.428040818922872e-07 5.000000000000000e+00 0.000000000000000e+00 7.887836724308512e-01 0.000000000000000e+00 2.851991779024706e+00 -5.603669546036394e-01 2.414581218189021e+00 -1.085383366002470e-01 2.064486150539113e+00 3.434266302896824e-05 1.331892745786989e-03 -1.236811205034966e-04 -5.657354602168823e-05 49 5.457951025773935e-07 5.000000000000000e+00 0.000000000000000e+00 7.768195896904260e-01 0.000000000000000e+00 2.843997224576786e+00 -5.599583268769880e-01 2.414649089606336e+00 -1.084195276019580e-01 2.064823526337824e+00 3.398166491583657e-05 1.332191429736423e-03 -1.237064990023753e-04 -5.656938983669842e-05 50 5.517771439476061e-07 5.000000000000000e+00 0.000000000000000e+00 7.528914242095755e-01 0.000000000000000e+00 2.828021376051244e+00 -5.591535066481709e-01 2.414784962639231e+00 -1.081817959043705e-01 2.065488185041454e+00 3.328838894053367e-05 1.332629333487437e-03 -1.236372320735793e-04 -5.656365304707630e-05 51 5.637412266880314e-07 5.000000000000000e+00 0.000000000000000e+00 7.050350932478746e-01 0.000000000000000e+00 2.796110107375486e+00 -5.575908048058200e-01 2.415056037202757e+00 -1.077070101003506e-01 2.066779358630165e+00 3.200014295679432e-05 1.333749249371846e-03 -1.237452552618409e-04 -5.654517611008482e-05 52 5.876693921688818e-07 5.000000000000000e+00 0.000000000000000e+00 6.093224313244726e-01 0.000000000000000e+00 2.732421517008610e+00 -5.546317624296428e-01 2.415597632411751e+00 -1.067588153556870e-01 2.069226462476827e+00 2.975713745627493e-05 1.335518508219810e-03 -1.238345138103994e-04 -5.650926588177682e-05 53 6.276693921688818e-07 5.000000000000000e+00 0.000000000000000e+00 4.493224313244726e-01 0.000000000000000e+00 2.626261692272143e+00 -5.500941423048754e-01 2.416498660166220e+00 -1.051810752224832e-01 2.072984672562869e+00 2.676097661118029e-05 1.337699670117927e-03 -1.240185378427948e-04 -5.644998246984981e-05 54 6.676693921688818e-07 5.000000000000000e+00 0.000000000000000e+00 2.893224313244726e-01 0.000000000000000e+00 2.520444915959331e+00 -5.459746724007407e-01 2.417394695367806e+00 -1.036120476261563e-01 2.076402712641480e+00 2.443996746136397e-05 1.339717174368850e-03 -1.240958088176651e-04 -5.640521993518139e-05 55 7.076693921688818e-07 5.000000000000000e+00 0.000000000000000e+00 1.293224313244726e-01 0.000000000000000e+00 2.414968906158831e+00 -5.421914305456080e-01 2.418285670383141e+00 -1.020518759242454e-01 2.079547110001569e+00 2.259454894144896e-05 1.341839834097850e-03 -1.240578875459981e-04 -5.638218059575966e-05 56 7.400000000000000e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.329972400505605e+00 -5.393378017654350e-01 2.419002073680514e+00 -1.007973962176283e-01 2.081922331663007e+00 2.136009581564329e-05 1.343640231165167e-03 -1.239590360963582e-04 -5.638241538220069e-05 57 7.410172570192713e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.329972750759499e+00 -5.392510440260584e-01 2.419024559189666e+00 -1.007580223124800e-01 2.081994599125105e+00 2.132148948914142e-05 8.607802323701286e-08 7.322014237710547e-06 -4.325103721447457e-05 58 7.430517710578139e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.329973587958992e+00 -5.390778718458688e-01 2.419069552993863e+00 -1.006792077538298e-01 2.082138854490379e+00 2.125118224846970e-05 1.140723631595786e-07 7.317218964356803e-06 -4.324779499330182e-05 59 7.471207991348992e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.329975371699473e+00 -5.387331612227737e-01 2.419159438886626e+00 -1.005218201665402e-01 2.082426034421553e+00 2.111201117293866e-05 1.140711477463918e-07 7.280887943236433e-06 -4.324245614663303e-05 60 7.552588552890696e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.329978987701875e+00 -5.380503319908322e-01 2.419339104142458e+00 -1.002072091564402e-01 2.082995024055577e+00 2.084141909699340e-05 1.120768264393363e-07 7.226551182912613e-06 -4.323194818788034e-05 61 7.715349675974106e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.329986149381473e+00 -5.367099506911056e-01 2.419697840768407e+00 -9.957895493426059e-02 2.084112408502578e+00 2.032933036898296e-05 1.115186524089026e-07 7.116192045865258e-06 -4.321020616473097e-05 62 8.040871922140925e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330000771248323e+00 -5.341214037335804e-01 2.420412455896464e+00 -9.832758704413621e-02 2.086272025759171e+00 1.940781231285949e-05 1.150604467961905e-07 6.915945369153752e-06 -4.316569763733765e-05 63 8.440871922140925e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330018452576925e+00 -5.310900415254570e-01 2.421285740663577e+00 -9.679840333455044e-02 2.088803930203843e+00 1.843110716379776e-05 1.151550589285552e-07 6.702031365363897e-06 -4.310865042652099e-05 64 8.840871922140925e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330036010045820e+00 -5.282030328235104e-01 2.422153725467311e+00 -9.527851868837172e-02 2.091218100827387e+00 1.759269968036451e-05 1.151834797602155e-07 6.516121780523305e-06 -4.304976165183797e-05 65 9.240871922140925e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330053539896845e+00 -5.254416297009816e-01 2.423016415070098e+00 -9.376791932177950e-02 2.093529778261196e+00 1.686625208012363e-05 1.151370238299670e-07 6.352643880026712e-06 -4.298981585846162e-05 66 9.640871922140925e-07 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330071070630017e+00 -5.227898224517998e-01 2.423873810625602e+00 -9.226660152243356e-02 2.095751980062092e+00 1.623130820317751e-05 1.150988380381988e-07 6.207457542925249e-06 -4.292928108566155e-05 67 1.004087192214092e-06 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330088603415312e+00 -5.202342168375270e-01 2.424725915881153e+00 -9.077455825427342e-02 2.097895599138165e+00 1.567190498011383e-05 1.150798908866255e-07 6.077380895395685e-06 -4.286842419682691e-05 68 1.040000000000000e-06 5.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.330104304960053e+00 -5.180127784430262e-01 2.425486452652378e+00 -8.944286157481187e-02 2.099760492593454e+00 1.522358394800494e-05 1.151685469370084e-07 5.971325234677529e-06 -4.281360196445865e-05 69 1.040798926246301e-06 5.000000000000000e+00 7.989262463014338e-02 0.000000000000000e+00 0.000000000000000e+00 2.340593410699300e+00 -5.132405378200405e-01 2.435280067710899e+00 -8.020131123542169e-02 2.103641345989063e+00 1.493329529815287e-03 3.282421107956013e-03 -1.785358711652552e-02 1.955788649409330e-04 70 1.042396778738904e-06 5.000000000000000e+00 2.396778738904301e-01 0.000000000000000e+00 0.000000000000000e+00 2.361584981896137e+00 -5.036739343388722e-01 2.454899568346536e+00 -6.166938056938174e-02 2.111422587183206e+00 1.499098271323922e-03 3.285621288723201e-03 -1.784750695268408e-02 1.968043853190649e-04 71 1.045592483724110e-06 5.000000000000000e+00 5.592483724110063e-01 0.000000000000000e+00 0.000000000000000e+00 2.403593210168277e+00 -4.844624855724510e-01 2.494243947058822e+00 -2.444753992313847e-02 2.127054041924923e+00 1.506992201902507e-03 3.290492159547943e-03 -1.784037711040443e-02 1.988098119876886e-04 72 1.051983893694522e-06 5.000000000000000e+00 1.198389369452159e+00 0.000000000000000e+00 0.000000000000000e+00 2.487801898198459e+00 -4.456993633170816e-01 2.573313079179664e+00 5.056000399791816e-02 2.158614609532208e+00 1.525091447644366e-03 3.298195539429474e-03 -1.782494825108946e-02 2.027155072999904e-04 73 1.060000000000000e-06 5.000000000000000e+00 1.999999999999999e+00 0.000000000000000e+00 0.000000000000000e+00 2.593718958279756e+00 -3.963845714838860e-01 2.673124448701143e+00 1.455710568978222e-01 2.198805876890023e+00 1.550104023903725e-03 3.308507140994534e-03 -1.780760279634590e-02 2.073940424829707e-04 74 1.060696383510489e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593718974139415e+00 -3.963518885274472e-01 2.673116221976466e+00 1.455566273914851e-01 2.198833292748758e+00 1.173310250261392e-05 5.693579024912410e-09 7.210527625291230e-07 -3.685892855794393e-05 75 1.062089150531468e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593719005858740e+00 -3.962865284900873e-01 2.673099773091879e+00 1.455277763810248e-01 2.198888119517564e+00 1.173134475538316e-05 5.693581620058730e-09 7.214531332136453e-07 -3.685796505751779e-05 76 1.064874684573424e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593719069297318e+00 -3.961558270364758e-01 2.673066888993447e+00 1.454700983291905e-01 2.198997757347467e+00 1.172768049303996e-05 5.693572176224126e-09 7.222222892736690e-07 -3.685602251931089e-05 77 1.070445752657337e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593719196174287e+00 -3.958944974932396e-01 2.673001175445827e+00 1.453548380391050e-01 2.199216971142338e+00 1.172036138390436e-05 5.693553416924457e-09 7.237601269225596e-07 -3.685213853611322e-05 78 1.081587888825164e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593719449927471e+00 -3.953721309643154e-01 2.672870060923881e+00 1.451248372034855e-01 2.199655152015546e+00 1.170576146954983e-05 5.693515849752862e-09 7.285659701914728e-07 -3.684450097465864e-05 79 1.103872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593719957430234e+00 -3.943296807144835e-01 2.672609362440665e+00 1.446675653545844e-01 2.200529583202231e+00 1.168038497495222e-05 5.693429661751681e-09 7.340515459826075e-07 -3.682887193002569e-05 80 1.143872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593720868381828e+00 -3.924643223202095e-01 2.672145746377085e+00 1.438543781407930e-01 2.202094240241559e+00 1.163510032024502e-05 5.693280985107768e-09 7.462218392374461e-07 -3.680113222422353e-05 81 1.183872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593721779332924e+00 -3.906081493358233e-01 2.671688992527140e+00 1.430532275498350e-01 2.203651174725761e+00 1.157237674651469e-05 5.693104781871738e-09 7.541503408778219e-07 -3.677336373546407e-05 82 1.223872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593722690286921e+00 -3.887592014440397e-01 2.671237669035885e+00 1.422615991521988e-01 2.205201987355490e+00 1.153334590926400e-05 5.692929969016575e-09 7.670117178278134e-07 -3.674574348128691e-05 83 1.263872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593723601241712e+00 -3.869191996870155e-01 2.670793018385166e+00 1.414816714022892e-01 2.206745276648301e+00 1.147205431027850e-05 5.692762593788314e-09 7.754228959769771e-07 -3.671812674871781e-05 84 1.303872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593724512196521e+00 -3.850863931645978e-01 2.670353754251952e+00 1.407111878460828e-01 2.208282471811632e+00 1.143255565696480e-05 5.692595387695593e-09 7.880723322898362e-07 -3.669064937520890e-05 85 1.343872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593725423151283e+00 -3.832621074500249e-01 2.669920885850759e+00 1.399519186868902e-01 2.209812493403766e+00 1.137515819156607e-05 5.692427738814704e-09 7.961702307404846e-07 -3.666315702711481e-05 86 1.383872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593726334106032e+00 -3.814446644462107e-01 2.669493173371337e+00 1.392016893203002e-01 2.211336711259825e+00 1.133763530271749e-05 5.692259965901086e-09 8.085068162155514e-07 -3.663580815683471e-05 87 1.423872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593727245060780e+00 -3.796356795403478e-01 2.669071795902240e+00 1.384625680295939e-01 2.212853809440823e+00 1.127972410554549e-05 5.692092190819065e-09 8.165129816024548e-07 -3.660845412558825e-05 88 1.463872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593728156015529e+00 -3.778335170707748e-01 2.668655540424533e+00 1.377324272127752e-01 2.214365123255343e+00 1.124219532142550e-05 5.691924423543299e-09 8.286253269163598e-07 -3.658123866834429e-05 89 1.503872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593729066970279e+00 -3.760394929422672e-01 2.668245403363775e+00 1.370130147770917e-01 2.215869580870106e+00 1.118721848734336e-05 5.691756661905384e-09 8.363675450190951e-07 -3.655400602423911e-05 90 1.543872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593729977925029e+00 -3.742520180693745e-01 2.667840201865552e+00 1.363022560081632e-01 2.217368479689147e+00 1.115125153178286e-05 5.691588901568512e-09 8.481781377814518e-07 -3.652691360416497e-05 91 1.583872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593730888879779e+00 -3.724725926949129e-01 2.667441039133380e+00 1.356020861251952e-01 2.218860597408430e+00 1.109625390778726e-05 5.691421142966363e-09 8.558044376724173e-07 -3.649981043715947e-05 92 1.623872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593731799834529e+00 -3.706996648836653e-01 2.667046757096852e+00 1.349104738653891e-01 2.220347201214012e+00 1.106049393525399e-05 5.691253386966300e-09 8.673708245271082e-07 -3.647284328286857e-05 93 1.663872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593732710789280e+00 -3.689345232453002e-01 2.666658327760944e+00 1.342291243268817e-01 2.221827241304539e+00 1.100780344952447e-05 5.691085633568321e-09 8.747723627237913e-07 -3.644585785890182e-05 94 1.703872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593733621744030e+00 -3.671756567216855e-01 2.666274620910314e+00 1.335560550838178e-01 2.223301951599832e+00 1.097330603899705e-05 5.690917880604024e-09 8.860456279091841e-07 -3.641900836368169e-05 95 1.743872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593734532698781e+00 -3.654244702017992e-01 2.665896674628400e+00 1.328930871558740e-01 2.224770187328981e+00 1.092091573763805e-05 5.690750129374450e-09 8.933204795831583e-07 -3.639214500704256e-05 96 1.783872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593735443653533e+00 -3.636794871232751e-01 2.665523382827704e+00 1.322382804198434e-01 2.226233154348249e+00 1.088675848651832e-05 5.690582382915366e-09 9.043411881825550e-07 -3.636541377058662e-05 97 1.823872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593736354608284e+00 -3.619419607408202e-01 2.665155687949960e+00 1.315932881397862e-01 2.227689831478066e+00 1.083623771512738e-05 5.690414636456281e-09 9.114183578812479e-07 -3.633866404307545e-05 98 1.863872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593737265563035e+00 -3.602104512194691e-01 2.664792509968721e+00 1.309562158858391e-01 2.229141394683542e+00 1.080313181749549e-05 5.690246891731920e-09 9.221555667087008e-07 -3.631204527982142e-05 99 1.903872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593738176517787e+00 -3.584862825669848e-01 2.664434830029671e+00 1.303287848256434e-01 2.230586764950670e+00 1.075311386281724e-05 5.690079149609645e-09 9.291021826309453e-07 -3.628541119000340e-05 100 1.943872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593739087472539e+00 -3.567680471910076e-01 2.664081591465968e+00 1.297091414867487e-01 2.232027092009346e+00 1.072042961077353e-05 5.689911409655773e-09 9.395860078424429e-07 -3.625890452694548e-05 101 1.983872161160817e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593739998427292e+00 -3.550544384586243e-01 2.663731816552745e+00 1.290955708422652e-01 2.233463443214611e+00 1.069559631616492e-05 5.689743671870306e-09 9.516083609935376e-07 -3.623248449755782e-05 102 2.000000000000000e-06 5.000000000000000e+00 2.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 2.593740365897916e+00 -3.543663326458909e-01 2.663592897463019e+00 1.288518798668228e-01 2.234040221135625e+00 1.065389399717794e-05 5.688810093135155e-09 9.494356843374376e-07 -3.622168626316215e-05 0707070124062140721006440006700000000000011777770500302371400003600000026665spice3c1/examples/process.mod.model BSIM_du2 r rsh = 120 defw = 0 narrow = 0 .model BSIM_du2 c cj = 0.00031 cjsw = 3e-10 defw = 0 narrow = 0 .model BSIM_du1 r rsh = 35 defw = 0 narrow = 0 .model BSIM_du1 c cj = 0.000275 cjsw = 1.9e-10 defw = 0 narrow = 0 .model BSIM_py1 r rsh = 30 defw = 0 narrow = 0 .model BSIM_py1 c cj = 7e-05 cjsw = 0 defw = 0 narrow = 0 .model BSIM_ml2 r rsh = 0.03 defw = 0 narrow = 0 .model BSIM_ml2 c cj = 1.3e-05 cjsw = 0 defw = 0 narrow = 0 .model BSIM_ml1 r rsh = 0.04 defw = 0 narrow = 0 .model BSIM_ml1 c cj = 2.6e-05 cjsw = 0 defw = 0 narrow = 0 .model BSIM_pm2_du2 pmos level=4 + vfb = -0.21389 lvfb = 0.0336471 wvfb = 0.220237 + phi = 0.697239 lphi = 0 wphi = 0 + k1 = 0.595618 lk1 = -0.097957 wk1 = -0.081902 + k2 = -0.020029 lk2 = 0.0197751 wk2 = -0.040038 + eta = -0.01403 leta = 0.0362814 weta = 0.014472 + muz = 182.193 dl = 0.8656 dw = 0.57444 + u0 = 0.112067 lu0 = 0.0928463 wu0 = -0.088985 + u1 = 0.0239431 lu1 = 0.0889483 wu1 = 0.0105634 + x2mz = 7.51914 lx2mz = -1.8327 wx2mz = 3.98658 + x2e = -0.0013199 lx2e = 0.00400836 wx2e = 0.000197847 + x3e = 0.000570255 lx3e = -0.0012309 wx3e = -0.0023082 + x2u0 = 0.00507623 lx2u0 = -0.00018537 wx2u0 = 0.00176966 + x2u1 = -0.012781 lx2u1 = 0.011442 wx2u1 = 0.00636308 + mus = 189.043 lmus = 86.4555 wmus = -34.304 + x2ms = 4.09098 lx2ms = 3.51921 wx2ms = 4.49145 + x3ms = 0.671879 lx3ms = 7.66627 wx3ms = -1.5826 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.032 temp = 27 vdd = 5 + cgdo = 4.39e-10 cgso = 4.39e-10 cgbo = 2.34e-10 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 120 cj = 0.00031 cjsw = 3e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_pm2_du1 pmos level=4 + vfb = -0.21389 lvfb = 0.0336471 wvfb = 0.220237 + phi = 0.697239 lphi = 0 wphi = 0 + k1 = 0.595618 lk1 = -0.097957 wk1 = -0.081902 + k2 = -0.020029 lk2 = 0.0197751 wk2 = -0.040038 + eta = -0.01403 leta = 0.0362814 weta = 0.014472 + muz = 182.193 dl = 0.8656 dw = 0.57444 + u0 = 0.112067 lu0 = 0.0928463 wu0 = -0.088985 + u1 = 0.0239431 lu1 = 0.0889483 wu1 = 0.0105634 + x2mz = 7.51914 lx2mz = -1.8327 wx2mz = 3.98658 + x2e = -0.0013199 lx2e = 0.00400836 wx2e = 0.000197847 + x3e = 0.000570255 lx3e = -0.0012309 wx3e = -0.0023082 + x2u0 = 0.00507623 lx2u0 = -0.00018537 wx2u0 = 0.00176966 + x2u1 = -0.012781 lx2u1 = 0.011442 wx2u1 = 0.00636308 + mus = 189.043 lmus = 86.4555 wmus = -34.304 + x2ms = 4.09098 lx2ms = 3.51921 wx2ms = 4.49145 + x3ms = 0.671879 lx3ms = 7.66627 wx3ms = -1.5826 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.032 temp = 27 vdd = 5 + cgdo = 4.39e-10 cgso = 4.39e-10 cgbo = 2.34e-10 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 35 cj = 0.000275 cjsw = 1.9e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_pm1_du2 pmos level=4 + vfb = -1.0087 lvfb = -0.21402 wvfb = 0.344354 + phi = 0.796434 lphi = 0 wphi = 0 + k1 = 1.31191 lk1 = 0.323395 wk1 = -0.57698 + k2 = 0.14664 lk2 = 0.168585 wk2 = -0.18796 + eta = -0.0010027 leta = -0.0094847 weta = 0.0147316 + muz = 182.193 dl = 0.27226 dw = 0.16288 + u0 = 0.0438497 lu0 = 0.0638105 wu0 = -0.061053 + u1 = -0.057332 lu1 = 1.01174 wu1 = 0.0162706 + x2mz = 2.81626 lx2mz = -8.255 wx2mz = 6.6768 + x2e = -0.00076911 lx2e = 0.00962411 wx2e = -0.0037951 + x3e = 0.000786777 lx3e = 0.000735448 wx3e = -0.0017796 + x2u0 = 0.00106821 lx2u0 = -0.0080958 wx2u0 = 0.00403379 + x2u1 = -0.019209 lx2u1 = -0.074573 wx2u1 = 0.014752 + mus = 184.449 lmus = 212.012 wmus = -65.47 + x2ms = -4.433 lx2ms = -22.143 wx2ms = 14.6383 + x3ms = -3.2083 lx3ms = 40.341 wx3ms = -10.149 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.03 temp = 27 vdd = 5 + cgdo = 0 cgso = 0 cgbo = 0 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 120 cj = 0.00031 cjsw = 3e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_pm1_du1 pmos level=4 + vfb = -1.0087 lvfb = -0.21402 wvfb = 0.344354 + phi = 0.796434 lphi = 0 wphi = 0 + k1 = 1.31191 lk1 = 0.323395 wk1 = -0.57698 + k2 = 0.14664 lk2 = 0.168585 wk2 = -0.18796 + eta = -0.0010027 leta = -0.0094847 weta = 0.0147316 + muz = 182.193 dl = 0.27226 dw = 0.16288 + u0 = 0.0438497 lu0 = 0.0638105 wu0 = -0.061053 + u1 = -0.057332 lu1 = 1.01174 wu1 = 0.0162706 + x2mz = 2.81626 lx2mz = -8.255 wx2mz = 6.6768 + x2e = -0.00076911 lx2e = 0.00962411 wx2e = -0.0037951 + x3e = 0.000786777 lx3e = 0.000735448 wx3e = -0.0017796 + x2u0 = 0.00106821 lx2u0 = -0.0080958 wx2u0 = 0.00403379 + x2u1 = -0.019209 lx2u1 = -0.074573 wx2u1 = 0.014752 + mus = 184.449 lmus = 212.012 wmus = -65.47 + x2ms = -4.433 lx2ms = -22.143 wx2ms = 14.6383 + x3ms = -3.2083 lx3ms = 40.341 wx3ms = -10.149 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.03 temp = 27 vdd = 5 + cgdo = 0 cgso = 0 cgbo = 0 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 35 cj = 0.000275 cjsw = 1.9e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_nm3_du2 nmos level=4 + vfb = -5.6087 lvfb = -0.21402 wvfb = 0.344354 + phi = 0.796434 lphi = 0 wphi = 0 + k1 = 1.31191 lk1 = 0.323395 wk1 = -0.57698 + k2 = 0.14664 lk2 = 0.168585 wk2 = -0.18796 + eta = -0.0010027 leta = -0.0094847 weta = 0.0147316 + muz = 534.334 dl = 0.79799 dw = 0.4774 + u0 = 0.0438497 lu0 = 0.0638105 wu0 = -0.061053 + u1 = -0.057332 lu1 = 1.01174 wu1 = 0.0162706 + x2mz = 8.25434 lx2mz = -24.197 wx2mz = 19.5696 + x2e = -0.00076911 lx2e = 0.00962411 wx2e = -0.0037951 + x3e = 0.000786777 lx3e = 0.000735448 wx3e = -0.0017796 + x2u0 = 0.00106821 lx2u0 = -0.0080958 wx2u0 = 0.00403379 + x2u1 = -0.019209 lx2u1 = -0.074573 wx2u1 = 0.014752 + mus = 540.612 lmus = 621.401 wmus = -191.9 + x2ms = -12.992 lx2ms = -64.9 wx2ms = 42.9043 + x3ms = -9.4035 lx3ms = 118.239 wx3ms = -29.747 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.03 temp = 27 vdd = 5 + cgdo = 0 cgso = 0 cgbo = 0 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 120 cj = 0.00031 cjsw = 3e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_nm3_du1 nmos level=4 + vfb = -5.6087 lvfb = -0.21402 wvfb = 0.344354 + phi = 0.796434 lphi = 0 wphi = 0 + k1 = 1.31191 lk1 = 0.323395 wk1 = -0.57698 + k2 = 0.14664 lk2 = 0.168585 wk2 = -0.18796 + eta = -0.0010027 leta = -0.0094847 weta = 0.0147316 + muz = 534.334 dl = 0.79799 dw = 0.4774 + u0 = 0.0438497 lu0 = 0.0638105 wu0 = -0.061053 + u1 = -0.057332 lu1 = 1.01174 wu1 = 0.0162706 + x2mz = 8.25434 lx2mz = -24.197 wx2mz = 19.5696 + x2e = -0.00076911 lx2e = 0.00962411 wx2e = -0.0037951 + x3e = 0.000786777 lx3e = 0.000735448 wx3e = -0.0017796 + x2u0 = 0.00106821 lx2u0 = -0.0080958 wx2u0 = 0.00403379 + x2u1 = -0.019209 lx2u1 = -0.074573 wx2u1 = 0.014752 + mus = 540.612 lmus = 621.401 wmus = -191.9 + x2ms = -12.992 lx2ms = -64.9 wx2ms = 42.9043 + x3ms = -9.4035 lx3ms = 118.239 wx3ms = -29.747 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.03 temp = 27 vdd = 5 + cgdo = 0 cgso = 0 cgbo = 0 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 35 cj = 0.000275 cjsw = 1.9e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_nm2_du2 nmos level=4 + vfb = -1.0682 lvfb = -0.067765 wvfb = 0.415888 + phi = 0.793602 lphi = 0 wphi = 0 + k1 = 1.3821 lk1 = 0.156889 wk1 = -0.63435 + k2 = 0.160163 lk2 = 0.141849 wk2 = -0.20333 + eta = -0.011885 leta = 0.0133579 weta = 0.0213053 + muz = 544.582 dl = 0.94444 dw = 0.44423 + u0 = 0.0402955 lu0 = 0.0536003 wu0 = -0.051224 + u1 = 0.201256 lu1 = 0.430621 wu1 = -0.15909 + x2mz = -1.1522 lx2mz = -2.536 wx2mz = 24.8135 + x2e = -0.0030525 lx2e = 0.0140355 wx2e = -0.0021259 + x3e = 0.00233703 lx3e = -0.0019621 wx3e = -0.0030147 + x2u0 = -0.0015014 lx2u0 = -0.0017938 wx2u0 = 0.00504494 + x2u1 = -0.096961 lx2u1 = 0.0968463 wx2u1 = 0.0656404 + mus = 595.572 lmus = 475.833 wmus = -230.62 + x2ms = -77.819 lx2ms = 77.511 wx2ms = 81.9963 + x3ms = -18.177 lx3ms = 123.358 wx3ms = -19.316 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.032 temp = 27 vdd = 5 + cgdo = 2.69e-10 cgso = 2.69e-10 cgbo = 2.34e-10 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 120 cj = 0.00031 cjsw = 3e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_nm2_du1 nmos level=4 + vfb = -1.0682 lvfb = -0.067765 wvfb = 0.415888 + phi = 0.793602 lphi = 0 wphi = 0 + k1 = 1.3821 lk1 = 0.156889 wk1 = -0.63435 + k2 = 0.160163 lk2 = 0.141849 wk2 = -0.20333 + eta = -0.011885 leta = 0.0133579 weta = 0.0213053 + muz = 544.582 dl = 0.94444 dw = 0.44423 + u0 = 0.0402955 lu0 = 0.0536003 wu0 = -0.051224 + u1 = 0.201256 lu1 = 0.430621 wu1 = -0.15909 + x2mz = -1.1522 lx2mz = -2.536 wx2mz = 24.8135 + x2e = -0.0030525 lx2e = 0.0140355 wx2e = -0.0021259 + x3e = 0.00233703 lx3e = -0.0019621 wx3e = -0.0030147 + x2u0 = -0.0015014 lx2u0 = -0.0017938 wx2u0 = 0.00504494 + x2u1 = -0.096961 lx2u1 = 0.0968463 wx2u1 = 0.0656404 + mus = 595.572 lmus = 475.833 wmus = -230.62 + x2ms = -77.819 lx2ms = 77.511 wx2ms = 81.9963 + x3ms = -18.177 lx3ms = 123.358 wx3ms = -19.316 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.032 temp = 27 vdd = 5 + cgdo = 2.69e-10 cgso = 2.69e-10 cgbo = 2.34e-10 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 35 cj = 0.000275 cjsw = 1.9e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_nm1_du2 nmos level=4 + vfb = -1.0087 lvfb = -0.21402 wvfb = 0.344354 + phi = 0.796434 lphi = 0 wphi = 0 + k1 = 1.31191 lk1 = 0.323395 wk1 = -0.57698 + k2 = 0.14664 lk2 = 0.168585 wk2 = -0.18796 + eta = -0.0010027 leta = -0.0094847 weta = 0.0147316 + muz = 534.334 dl = 0.79799 dw = 0.4774 + u0 = 0.0438497 lu0 = 0.0638105 wu0 = -0.061053 + u1 = -0.057332 lu1 = 1.01174 wu1 = 0.0162706 + x2mz = 8.25434 lx2mz = -24.197 wx2mz = 19.5696 + x2e = -0.00076911 lx2e = 0.00962411 wx2e = -0.0037951 + x3e = 0.000786777 lx3e = 0.000735448 wx3e = -0.0017796 + x2u0 = 0.00106821 lx2u0 = -0.0080958 wx2u0 = 0.00403379 + x2u1 = -0.019209 lx2u1 = -0.074573 wx2u1 = 0.014752 + mus = 540.612 lmus = 621.401 wmus = -191.9 + x2ms = -12.992 lx2ms = -64.9 wx2ms = 42.9043 + x3ms = -9.4035 lx3ms = 118.239 wx3ms = -29.747 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.03 temp = 27 vdd = 5 + cgdo = 0 cgso = 0 cgbo = 0 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 120 cj = 0.00031 cjsw = 3e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 .model BSIM_nm1_du1 nmos level=4 + vfb = -1.0087 lvfb = -0.21402 wvfb = 0.344354 + phi = 0.796434 lphi = 0 wphi = 0 + k1 = 1.31191 lk1 = 0.323395 wk1 = -0.57698 + k2 = 0.14664 lk2 = 0.168585 wk2 = -0.18796 + eta = -0.0010027 leta = -0.0094847 weta = 0.0147316 + muz = 534.334 dl = 0.79799 dw = 0.4774 + u0 = 0.0438497 lu0 = 0.0638105 wu0 = -0.061053 + u1 = -0.057332 lu1 = 1.01174 wu1 = 0.0162706 + x2mz = 8.25434 lx2mz = -24.197 wx2mz = 19.5696 + x2e = -0.00076911 lx2e = 0.00962411 wx2e = -0.0037951 + x3e = 0.000786777 lx3e = 0.000735448 wx3e = -0.0017796 + x2u0 = 0.00106821 lx2u0 = -0.0080958 wx2u0 = 0.00403379 + x2u1 = -0.019209 lx2u1 = -0.074573 wx2u1 = 0.014752 + mus = 540.612 lmus = 621.401 wmus = -191.9 + x2ms = -12.992 lx2ms = -64.9 wx2ms = 42.9043 + x3ms = -9.4035 lx3ms = 118.239 wx3ms = -29.747 + x3u1 = 0 lx3u1 = 0 wx3u1 = 0 + tox = 0.03 temp = 27 vdd = 5 + cgdo = 0 cgso = 0 cgbo = 0 + xpart = 1 + n0 = 0 ln0 = 0 wn0 = 0 + nb = 0 lnb = 0 wnb = 0 + nd = 0 lnd = 0 wnd = 0 + rsh = 35 cj = 0.000275 cjsw = 1.9e-10 + js = 1e-05 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 0707070124062140731006440006700000000000011777770500302371400003600000000113spice3c1/examples/process.outname of process file (input): name of .model file (output): process name : 0707070124062140741006440006700000000000011777770500302371400003500000163405spice3c1/examples/rtlinv.rawTitle: rtlinv ckt - cascaded rtl inverters Date: Mon May 1 17:03:45 PDT 1989 Plotname: DCtransferCurve Flags: real No. Variables: 13 No. Points: 100 Command: version SPICE 3c1 Alpha test Variables: 0 sweep voltage 1 V(6) voltage 2 V(1) voltage 3 V(2) voltage 4 V(3) voltage 5 V(4) voltage 6 V(5) voltage 7 vin#branch current 8 vcc#branch current 9 q2#collector voltage 10 q2#base voltage 11 q1#collector voltage 12 q1#base voltage Values: 0 0.000000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 1 2.500000000000000e-02 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 2 5.000000000000000e-02 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 3 7.500000000000000e-02 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 4 1.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 5 1.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 6 1.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 7 1.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 8 2.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 9 2.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 10 2.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 11 2.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 12 3.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 13 3.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 14 3.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 15 3.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 16 4.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 17 4.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 18 4.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 19 4.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 20 5.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 21 5.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 22 5.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 23 5.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 24 6.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 25 6.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 26 6.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 27 6.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 28 7.000000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 29 7.250000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 30 7.500000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 31 7.750000000000000e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 32 7.999999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 33 8.249999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 34 8.499999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 35 8.749999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 36 8.999999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 37 9.249999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 38 9.499999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 39 9.749999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 40 9.999999999999999e-01 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 41 1.025000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 42 1.050000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 43 1.075000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 44 1.100000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 45 1.125000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 46 1.150000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 47 1.175000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 48 1.200000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 49 1.225000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 50 1.250000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 51 1.275000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 52 1.300000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 53 1.325000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 54 1.350000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 55 1.375000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 56 1.400000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 57 1.425000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 58 1.450000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 59 1.475000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 60 1.500000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 61 1.525000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 62 1.550000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 63 1.575000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 64 1.600000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 65 1.625000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 66 1.650000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 67 1.675000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 68 1.700000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 69 1.725000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 70 1.750000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 71 1.775000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 72 1.800000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 73 1.825000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 74 1.850000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 75 1.875000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 76 1.900000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 77 1.925000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 78 1.950000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 79 1.975000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 80 2.000000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 81 2.025000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 82 2.050000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 83 2.075000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 84 2.100000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 85 2.125000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 86 2.150000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 87 2.175000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 88 2.200000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 89 2.225000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 90 2.250000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 91 2.275000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 92 2.300000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 93 2.325000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 94 2.350000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 95 2.375000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 96 2.400000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 97 2.425000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 98 2.450000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 99 2.475000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435907e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333437e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 Title: rtlinv ckt - cascaded rtl inverters Date: Mon May 1 17:03:46 PDT 1989 Plotname: transient Flags: real No. Variables: 13 No. Points: 92 Command: version SPICE 3c1 Alpha test Variables: 0 time time 1 V(6) voltage 2 V(1) voltage 3 V(2) voltage 4 V(3) voltage 5 V(4) voltage 6 V(5) voltage 7 vin#branch current 8 vcc#branch current 9 q2#collector voltage 10 q2#base voltage 11 q1#collector voltage 12 q1#base voltage Values: 0 0.000000000000000e+00 5.000000000000000e+00 0.000000000000000e+00 4.622284795583068e-08 4.622184879089775e+00 8.440337667062243e-01 2.665056227435909e-01 4.622284795583068e-12 -5.111309498166634e-03 7.716584765333455e-02 8.175867089195394e-01 4.622184878702901e+00 4.654640789152150e-08 1 2.000000000000000e-11 5.000000000000000e+00 0.000000000000000e+00 -6.397133391219691e-04 4.622460266215776e+00 8.440393012903670e-01 2.665090164541791e-01 -6.397133391219691e-08 -5.111030717330045e-03 7.716937711234628e-02 8.175903545358892e-01 4.622472360724109e+00 -6.441913324958229e-04 2 2.966422363398984e-11 5.000000000000000e+00 0.000000000000000e+00 -6.398624025497200e-04 4.622459233073126e+00 8.440393603510334e-01 2.665090947626012e-01 -6.398624025497200e-08 -5.111031672164273e-03 7.716945855310526e-02 8.175904212419788e-01 4.622471281886939e+00 -6.443414393675680e-04 3 4.899267090196953e-11 5.000000000000000e+00 0.000000000000000e+00 -6.401551388658626e-04 4.622457178192345e+00 8.440396975402724e-01 2.665095048042376e-01 -6.401551388658626e-08 -5.111033317003418e-03 7.716988499640713e-02 8.175907751757079e-01 4.622469135242647e+00 -6.446362248379236e-04 4 7.758482469969780e-11 5.000000000000000e+00 0.000000000000000e+00 -6.405729479595564e-04 4.622454165068794e+00 8.440393524937827e-01 2.665091260198494e-01 -6.405729479595564e-08 -5.111036708911357e-03 7.716949106064334e-02 8.175904488057576e-01 4.622465990921845e+00 -6.450569585952733e-04 5 1.347691322951544e-10 5.000000000000000e+00 0.000000000000000e+00 -6.413528040117878e-04 4.622448249420330e+00 8.440389575219827e-01 2.665087116219789e-01 -6.413528040117878e-08 -5.111043038957691e-03 7.716906008685800e-02 8.175900924786943e-01 4.622459816564737e+00 -6.458422736398703e-04 6 2.491377474860675e-10 5.000000000000000e+00 0.000000000000000e+00 -6.426956537809711e-04 4.622436845460593e+00 8.440382275326964e-01 2.665079491044297e-01 -6.426956537809711e-08 -5.111055205434978e-03 7.716826706860689e-02 8.175894372072011e-01 4.622447913750728e+00 -6.471945233574379e-04 7 4.778749778678937e-10 5.000000000000000e+00 0.000000000000000e+00 -6.445718158592490e-04 4.622415645027239e+00 8.440373663667906e-01 2.665071107104336e-01 -6.445718158592490e-08 -5.111077244262327e-03 7.716739513885092e-02 8.175887184161674e-01 4.622425783942971e+00 -6.490838185702637e-04 8 9.353494386315461e-10 5.000000000000000e+00 0.000000000000000e+00 -6.455116921544746e-04 4.622378904708119e+00 8.440364249191660e-01 2.665063039854758e-01 -6.455116921544746e-08 -5.111114791306405e-03 7.716655614489486e-02 8.175880275606433e-01 4.622387430815600e+00 -6.500302739995559e-04 9 1.850298360158851e-09 5.000000000000000e+00 0.000000000000000e+00 -6.388641116199354e-04 4.622323154671158e+00 8.440355181883298e-01 2.665057018868761e-01 -6.388641116199354e-08 -5.111171143441966e-03 7.716592996235117e-02 8.175875047329500e-01 4.622329231403935e+00 -6.433361604012750e-04 10 2.000000000000000e-09 5.000000000000000e+00 0.000000000000000e+00 -6.367798983089628e-04 4.622316133642177e+00 8.440366109234322e-01 2.665070482293445e-01 -6.367798983089628e-08 -5.111176818128479e-03 7.716733015851824e-02 8.175886542644010e-01 4.622321897078739e+00 -6.412373575971255e-04 11 2.009391455328010e-09 5.000000000000000e+00 2.347863832002505e-02 -4.587259761068902e-04 4.622319799484217e+00 8.440383738026648e-01 2.665090757676103e-01 -2.393736429613194e-06 -5.111171124748172e-03 7.716943879831475e-02 8.175904038228940e-01 4.622325717166312e+00 -6.262875261798137e-04 12 2.028174365984030e-09 5.000000000000000e+00 7.043591496007527e-02 -6.737433619659222e-05 4.622336857084345e+00 8.440386096321109e-01 2.665092125007557e-01 -7.050328929627186e-06 -5.111153930414899e-03 7.716958100078593e-02 8.175905218999453e-01 4.622343524357528e+00 -5.608973612704952e-04 13 2.065740187296070e-09 5.000000000000000e+00 1.643504682401757e-01 8.840105817490832e-04 4.622417191076764e+00 8.440390802020474e-01 2.665091085232016e-01 -1.634664576584266e-05 -5.111073700400034e-03 7.716947286412968e-02 8.175904334259244e-01 4.622427391163334e+00 -2.602546218599032e-04 14 2.140871829920151e-09 5.000000000000000e+00 3.521795748003765e-01 3.479572311125554e-03 4.622764266866758e+00 8.440409513700380e-01 2.665084610774300e-01 -3.487000024892509e-05 -5.110727272055812e-03 7.716879952052723e-02 8.175898881615609e-01 4.622789730803415e+00 1.038672293700798e-03 15 2.291135115168311e-09 5.000000000000000e+00 7.278377879207780e-01 1.142236461234016e-02 4.624171852118703e+00 8.440503963049782e-01 2.665079352044698e-01 -7.164154233084378e-05 -5.109320212676827e-03 7.716825261264863e-02 8.175895461142821e-01 4.624259212026706e+00 6.407456649181091e-03 16 2.591661685664632e-09 5.000000000000000e+00 1.479154214161581e+00 3.801233229126558e-02 4.629563060414557e+00 8.440888775944155e-01 2.665081154562901e-01 -1.441141881870315e-04 -5.103928824129152e-03 7.716844007454174e-02 8.175905583146745e-01 4.629887479562420e+00 2.792433911817338e-02 17 3.192714826657275e-09 5.000000000000000e+00 2.981787066643187e+00 1.309880621292164e-01 4.648579378754859e+00 8.442280542395135e-01 2.665073271053733e-01 -2.850799004513971e-04 -5.084913294139768e-03 7.716762018958823e-02 8.175975949679061e-01 4.649739959203114e+00 1.110324690976186e-01 18 4.000000000000000e-09 5.000000000000000e+00 5.000000000000000e+00 3.274994162089573e-01 4.685609703194742e+00 8.445037428635463e-01 2.664976350146035e-01 -4.672500583791043e-04 -5.047892661790654e-03 7.715754041518761e-02 8.176160011412280e-01 4.688398515163857e+00 2.947919121224200e-01 19 4.120210628198529e-09 5.000000000000000e+00 5.000000000000000e+00 3.593323898707257e-01 4.691459773102186e+00 8.445477639528635e-01 2.664946755167507e-01 -4.640667610129274e-04 -5.042045551381063e-03 7.715446253742073e-02 8.176193798888182e-01 4.694505812062871e+00 3.268477165998208e-01 20 4.360631884595585e-09 5.000000000000000e+00 5.000000000000000e+00 4.206085740709408e-01 4.701957519654567e+00 8.446268486966175e-01 2.664871460096352e-01 -4.579391425929059e-04 -5.031555334335798e-03 7.714663185002059e-02 8.176255339999118e-01 4.705465143124581e+00 3.885528340894374e-01 21 4.841474397389700e-09 5.000000000000000e+00 5.000000000000000e+00 5.338269153302045e-01 4.718245977693072e+00 8.447502959510216e-01 2.664656939123584e-01 -4.466173084669795e-04 -5.015288328394570e-03 7.712432166885269e-02 8.176358261788273e-01 4.722469799527763e+00 5.025637037375159e-01 22 5.803159422977927e-09 5.000000000000000e+00 5.000000000000000e+00 7.255299610928140e-01 4.727602165149483e+00 8.448253885661958e-01 2.664068426766057e-01 -4.274470038907186e-04 -5.005990992173912e-03 7.706311638366998e-02 8.176459511301128e-01 4.732237358861795e+00 6.956086708204638e-01 23 7.036599583363885e-09 5.000000000000000e+00 5.000000000000000e+00 8.040587592704943e-01 4.480648132806208e+00 8.430037863972040e-01 2.663574523523184e-01 -4.195941240729506e-04 -5.252994414841474e-03 7.701175044641114e-02 8.175402759723410e-01 4.474424635504092e+00 7.746871705853878e-01 24 8.370579225764814e-09 5.000000000000000e+00 5.000000000000000e+00 8.180622711304081e-01 4.030146774816396e+00 8.396409134193673e-01 2.665439472693625e-01 -4.181937728869592e-04 -5.703309277914241e-03 7.720570516013700e-02 8.173073723895881e-01 4.004114669254640e+00 7.887887070283210e-01 25 9.901556704179787e-09 5.000000000000000e+00 5.000000000000000e+00 8.242584583796739e-01 3.489217037404394e+00 8.355616409891009e-01 2.672450832628724e-01 -4.175741541620326e-04 -6.243537879332734e-03 7.793488659338726e-02 8.169860532141939e-01 3.439400340486231e+00 7.950282675883317e-01 26 1.176745842753038e-08 5.000000000000000e+00 5.000000000000000e+00 8.298855545963167e-01 2.880000167474742e+00 8.309179432146587e-01 2.688546152879921e-01 -4.170114445403683e-04 -6.851145217237266e-03 7.960879989951174e-02 8.165743676448381e-01 2.803396503070772e+00 8.006947534784909e-01 27 1.470007195290660e-08 5.000000000000000e+00 5.000000000000000e+00 8.366416658488534e-01 2.038444277665490e+00 8.244098173840482e-01 2.730439909009697e-01 -4.163358334151147e-04 -7.688511731433540e-03 8.396575053700852e-02 8.159115761620781e-01 1.924838186613235e+00 8.074981575097954e-01 28 1.870007195290660e-08 5.000000000000000e+00 5.000000000000000e+00 8.426915040604939e-01 1.102535214824548e+00 8.170080929910814e-01 2.827270295974444e-01 -4.157308495939506e-04 -8.614737755578007e-03 9.403611078134216e-02 8.150094031382471e-01 9.477787319048641e-01 8.135903445889174e-01 29 1.920007195290660e-08 5.000000000000000e+00 5.000000000000000e+00 8.432642880826773e-01 1.003893476932728e+00 8.162081394211148e-01 2.844629954645268e-01 -4.156735711917323e-04 -8.711643527602746e-03 9.584151528310786e-02 8.148943420585335e-01 8.447999573600832e-01 8.141671380992560e-01 30 2.020007195290660e-08 5.000000000000000e+00 5.000000000000000e+00 8.442590101927823e-01 8.177153293737468e-01 8.146885678245898e-01 2.883772057339949e-01 -4.155740989807218e-04 -8.893907464892258e-03 9.991229396335472e-02 8.146673804937457e-01 6.504360495948933e-01 8.151688232641318e-01 31 2.220007195290660e-08 5.000000000000000e+00 5.000000000000000e+00 8.458525526935392e-01 4.967772794289606e-01 8.120175720194860e-01 2.986638405470121e-01 -4.154147447306461e-04 -9.204558880024027e-03 1.106103941688926e-01 8.142242540676197e-01 3.153874094357569e-01 8.167735205623939e-01 32 2.397181057193631e-08 5.000000000000000e+00 5.000000000000000e+00 8.460956199885277e-01 3.361776657023390e-01 8.105419140974036e-01 3.124125791443845e-01 -4.153904380011472e-04 -9.351409755153276e-03 1.249090823101599e-01 8.138624638361691e-01 1.477273153368523e-01 8.170182893284474e-01 33 2.557858882328640e-08 5.000000000000000e+00 5.000000000000000e+00 8.457106834281699e-01 3.071731735563037e-01 8.100120864054288e-01 3.330448572617629e-01 -4.154289316571830e-04 -9.359781969181933e-03 1.463666515522334e-01 8.135319587953727e-01 1.174487448471593e-01 8.166306582121671e-01 34 2.627125542109870e-08 5.000000000000000e+00 5.000000000000000e+00 8.459475915120197e-01 3.013420492890541e-01 8.097687580382256e-01 3.471642482495207e-01 -4.154052408487980e-04 -9.351493702461425e-03 1.610508181795016e-01 8.133277449994698e-01 1.113620244256196e-01 8.168692246526038e-01 35 2.736859616887695e-08 5.000000000000000e+00 5.000000000000000e+00 8.461389860982560e-01 2.944961117949499e-01 8.092572469431275e-01 3.834503633215404e-01 -4.153861013901744e-04 -9.322053524883510e-03 1.987883778544020e-01 8.128605748891648e-01 1.042169117261552e-01 8.170619590009438e-01 36 2.923949724543558e-08 5.000000000000000e+00 5.000000000000000e+00 8.463315753835059e-01 2.867679780007061e-01 8.081906278534138e-01 4.870966652431293e-01 -4.153668424616494e-04 -9.226135356756165e-03 3.065805318528545e-01 8.118405864023828e-01 9.615300652132349e-02 8.172558964111905e-01 37 3.163262554363264e-08 5.000000000000000e+00 5.000000000000000e+00 8.465304521728940e-01 2.806461303541213e-01 8.070615773640020e-01 6.441588372448120e-01 -4.153469547827106e-04 -9.075195032401067e-03 4.699251907346044e-01 8.107464854930711e-01 8.976631378024661e-02 8.174561653381043e-01 38 3.412606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.466952988960301e-01 2.765654427262834e-01 8.057968535035093e-01 8.214076237128659e-01 -4.153304701103970e-04 -8.902026933560851e-03 6.542639286613806e-01 8.095014733789499e-01 8.551113479222587e-02 8.176221659883023e-01 39 3.812606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.468860270410710e-01 2.725004044385271e-01 8.035021708599477e-01 1.125034138183758e+00 -4.153113972958929e-04 -8.602465457377715e-03 9.700355037111081e-01 8.072191832248976e-01 8.127641355038247e-02 8.178142292303585e-01 40 4.212606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.470130228438148e-01 2.701028972915339e-01 8.009486004414562e-01 1.443212013821590e+00 -4.152986977156185e-04 -8.286685088886876e-03 1.300940494374454e+00 8.046645203635056e-01 7.878363037059560e-02 8.179421140037215e-01 41 4.612606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.470962610118373e-01 2.686314913785990e-01 7.981406699489937e-01 1.767609486595332e+00 -4.152903738988163e-04 -7.963759022026069e-03 1.638313866059145e+00 8.018472341989864e-01 7.725871431946135e-02 8.180259348389201e-01 42 5.012606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.471502323228832e-01 2.676997333313617e-01 7.950661812395233e-01 2.091904017501247e+00 -4.152849767677117e-04 -7.640396249167392e-03 1.975580178201297e+00 7.987577463748804e-01 7.629825687298352e-02 8.180802839491433e-01 43 5.412606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.471851033447219e-01 2.671053246606637e-01 7.917003214952110e-01 2.411366406113414e+00 -4.152814896655278e-04 -7.321528269225923e-03 2.307821062357950e+00 7.953724864730528e-01 7.569115765975202e-02 8.181153990681350e-01 44 5.812606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472069808557362e-01 2.667210769652336e-01 7.880082958945622e-01 2.722484419183706e+00 -4.152793019144264e-04 -7.010794503851060e-03 2.631383795951054e+00 7.916573064270675e-01 7.530477116812558e-02 8.181374297217264e-01 45 6.212606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472203447772213e-01 2.664683927356546e-01 7.839355717288532e-01 3.022635883405832e+00 -4.152779655222779e-04 -6.710895723858514e-03 2.943541318742065e+00 7.875578419818056e-01 7.505725972910798e-02 8.181508871906618e-01 46 6.612606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472281319397308e-01 2.662981160676332e-01 7.794016516083955e-01 3.309854492282192e+00 -4.152771868060269e-04 -6.423847391650175e-03 3.242248671973480e+00 7.829933763571809e-01 7.489762656817551e-02 8.181587288633089e-01 47 7.012606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472322048775933e-01 2.661790809332683e-01 7.742871455028335e-01 3.582630053719385e+00 -4.152767795122407e-04 -6.151190865347347e-03 3.525935255868160e+00 7.778439019548205e-01 7.479381191232076e-02 8.181628303117364e-01 48 7.412606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472337162524534e-01 2.660911196972537e-01 7.684104849413346e-01 3.839718519699928e+00 -4.152766283747547e-04 -5.894190360602819e-03 3.793307260487925e+00 7.719267204980432e-01 7.472548702416752e-02 8.181643522662206e-01 49 7.812606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472333337929418e-01 2.660206535687674e-01 7.614837821075775e-01 4.079926099602492e+00 -4.152766666207058e-04 -5.654053246828740e-03 4.043123143586592e+00 7.649520240073492e-01 7.467962719736282e-02 8.181639671294924e-01 50 8.212606880333272e-08 5.000000000000000e+00 5.000000000000000e+00 8.472313415661795e-01 2.659575280424698e-01 7.529829375631403e-01 4.301719504756728e+00 -4.152768658433820e-04 -5.432322967200803e-03 4.273788284946997e+00 7.563921154297850e-01 7.464772752608588e-02 8.181619609571428e-01 51 8.400000000000000e-08 5.000000000000000e+00 5.000000000000000e+00 8.472298501340463e-01 2.659284516826361e-01 7.482651089016635e-01 4.398773907602843e+00 -4.152770149865954e-04 -5.335297640714520e-03 4.374724863906957e+00 7.516414655021967e-01 7.463624312106541e-02 8.181604590849847e-01 52 8.420000000000000e-08 5.000000000000000e+00 4.500000000000000e+00 8.436044266203466e-01 2.658273034166379e-01 7.477248059827923e-01 4.408826985893568e+00 -3.656395573379653e-04 -5.325345710689794e-03 4.385180065329311e+00 7.510980885007554e-01 7.453280554303877e-02 8.180096576066891e-01 53 8.460000000000000e-08 5.000000000000000e+00 3.499999999999999e+00 8.362212764021664e-01 2.656642335762691e-01 7.466203813842088e-01 4.428798000934824e+00 -2.663778723597833e-04 -5.305537765488907e-03 4.405949920972217e+00 7.499870744188644e-01 7.436697832808809e-02 8.175748253369816e-01 54 8.540000000000000e-08 5.000000000000000e+00 1.499999999999998e+00 8.212690782410605e-01 2.660029316322314e-01 7.443173913735841e-01 4.468073152155465e+00 -6.787309217589372e-05 -5.265923916212304e-03 4.446796078241684e+00 7.476655925917736e-01 7.472979105855527e-02 8.165179617887479e-01 55 8.600000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.099656540465141e-01 2.670075747512718e-01 7.425081082005533e-01 4.496905200876026e+00 8.099656540465141e-05 -5.236087224372703e-03 4.476781408911067e+00 7.458366119346983e-01 7.578587560752553e-02 8.156354136248397e-01 56 8.616000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.098397052673606e-01 2.675089970498652e-01 7.420146813450641e-01 4.504481675918267e+00 8.098397052673606e-05 -5.228009327031868e-03 4.484660942954998e+00 7.453362211351305e-01 7.631133419467904e-02 8.155085832042322e-01 57 8.648000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.096961536394826e-01 2.686605572257904e-01 7.410140565204359e-01 4.519530835491214e+00 8.096961536394826e-05 -5.211808607282996e-03 4.500312068910862e+00 7.443205310154985e-01 7.751756551764340e-02 8.153640267149590e-01 58 8.712000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.095349302215602e-01 2.711969171915454e-01 7.389487824160457e-01 4.549105843335442e+00 8.095349302215602e-05 -5.179697239473012e-03 4.531070077068860e+00 7.422230454726172e-01 8.017378641830921e-02 8.152016747331112e-01 59 8.840000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.092614519886597e-01 2.767391635322865e-01 7.345180398994312e-01 4.605937925013253e+00 8.092614519886597e-05 -5.117322911454460e-03 4.590175442013784e+00 7.377224920340012e-01 8.597761456810933e-02 8.149262821525804e-01 60 9.096000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.087516724498110e-01 2.904410846942802e-01 7.242022728568624e-01 4.709227024641099e+00 8.087516724498110e-05 -5.000331890664620e-03 4.697596105626743e+00 7.272386011740005e-01 1.003236833294011e-01 8.144129341569597e-01 61 9.496000000000000e-08 5.000000000000000e+00 0.000000000000000e+00 8.079111381223667e-01 3.347070148828130e-01 7.040434505370577e-01 4.836909913616750e+00 8.079111381223667e-05 -4.828383071500437e-03 4.830386310161420e+00 7.066288055866375e-01 1.466179497355086e-01 8.135665160892233e-01 62 9.735348207556251e-08 5.000000000000000e+00 0.000000000000000e+00 8.065053664887823e-01 4.507219743038848e-01 6.946764598534104e-01 4.889493398118725e+00 8.065053664887823e-05 -4.659784627577391e-03 4.885073134043474e+00 6.963841412522571e-01 2.677750353338421e-01 8.121509040542038e-01 63 9.981746864811720e-08 5.000000000000000e+00 0.000000000000000e+00 8.047362711290271e-01 6.427416456763186e-01 6.938568503699408e-01 4.923350871905076e+00 8.047362711290271e-05 -4.433907482418606e-03 4.920284906781279e+00 6.942146568027962e-01 4.682468506845969e-01 8.103694250269303e-01 64 1.033148235500077e-07 5.000000000000000e+00 0.000000000000000e+00 8.023805685901803e-01 9.474213741379818e-01 7.106423725794916e-01 4.931615251466141e+00 8.023805685901803e-05 -4.120963374395877e-03 4.928879861524787e+00 7.089849195685821e-01 7.862653451097350e-01 8.079972325703115e-01 65 1.068541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.995908915665539e-01 1.276836727783308e+00 7.374390235414418e-01 4.866383872361357e+00 7.995908915665539e-05 -3.856779399855336e-03 4.861039227255811e+00 7.336632396117487e-01 1.130067787711608e+00 8.051880278075198e-01 66 1.108541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.959599354633126e-01 1.662189185343718e+00 7.624187664581223e-01 4.666285408110051e+00 7.959599354633126e-05 -3.671525406546230e-03 4.652936824434454e+00 7.561203735259231e-01 1.532275834433009e+00 8.015316550115558e-01 67 1.148541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.917953509315119e-01 2.051445718572142e+00 7.804363742914052e-01 4.334092824014566e+00 7.917953509315119e-05 -3.614461457413292e-03 4.307456536975149e+00 7.715393088814401e-01 1.938587584692150e+00 7.973379183880325e-01 68 1.188541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.870036301016037e-01 2.436569781324329e+00 7.944133997536562e-01 3.891329227049484e+00 7.870036301016037e-05 -3.672100991626187e-03 3.846982396131463e+00 7.829183050826615e-01 2.340601198103585e+00 7.925126555123149e-01 69 1.228541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.814187727882126e-01 2.811467941141717e+00 8.058937875195073e-01 3.362355500387510e+00 7.814187727882126e-05 -3.826176558470773e-03 3.296849720403010e+00 7.918547684441518e-01 2.731948955401875e+00 7.868887041977301e-01 70 1.268541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.747584145624622e-01 3.171402146967200e+00 8.155659519349410e-01 2.772701126302753e+00 7.747584145624621e-05 -4.055896726730047e-03 2.683609171354863e+00 7.990750985697152e-01 3.107681577626017e+00 7.801817234643994e-01 71 1.308541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.665148292661165e-01 3.512301070110912e+00 8.237959743015795e-01 2.150164246680224e+00 7.665148292661165e-05 -4.337534683208864e-03 2.036170816547433e+00 8.049764386309142e-01 3.463547133298585e+00 7.718804330709793e-01 72 1.348541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.556631936060095e-01 3.829942457167816e+00 8.307779731833966e-01 1.525884833850631e+00 7.556631936060095e-05 -4.644172708981554e-03 1.386920227204656e+00 8.097838217955057e-01 3.795136813390466e+00 7.609528359612515e-01 73 1.388541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.398694137589183e-01 4.117420297372412e+00 8.365601493447411e-01 9.370712983229331e-01 7.398694137589183e-05 -4.945508404304655e-03 7.745541502558505e-01 8.135941283085474e-01 4.095240549859419e+00 7.450484996552307e-01 74 1.428541436935361e-07 5.000000000000000e+00 0.000000000000000e+00 7.125169041197457e-01 4.358486297878077e+00 8.409427446804882e-01 4.380384085024904e-01 7.125169041197457e-05 -5.203475293619433e-03 2.555599448425900e-01 8.163199398081051e-01 4.346895924005990e+00 7.175045224485840e-01 75 1.450898331118460e-07 5.000000000000000e+00 0.000000000000000e+00 6.869009499807101e-01 4.461066253339660e+00 8.416413561083851e-01 3.226054286208077e-01 6.869009499807101e-05 -5.216328318039532e-03 1.355096457656400e-01 8.163053818277662e-01 4.453986603062172e+00 6.917092566305750e-01 76 1.471155009976942e-07 5.000000000000000e+00 0.000000000000000e+00 6.542293338584889e-01 4.526489997432171e+00 8.420581533469570e-01 3.007194500793576e-01 6.542293338584889e-05 -5.172790552488472e-03 1.127482280825319e-01 8.162671304383605e-01 4.522287324705798e+00 6.588089391954983e-01 77 1.481350559441869e-07 5.000000000000000e+00 0.000000000000000e+00 6.344752331779257e-01 4.549332371765191e+00 8.424437962937527e-01 2.949491036612271e-01 6.344752331779257e-05 -5.155718524573582e-03 1.067470678076762e-01 8.164955762654527e-01 4.546133220937685e+00 6.389165598101712e-01 78 1.496321997622776e-07 5.000000000000000e+00 0.000000000000000e+00 6.024880190621992e-01 4.572487182836124e+00 8.427860408464337e-01 2.887615744547524e-01 6.024880190621992e-05 -5.138751242709124e-03 1.003120374329424e-01 8.166781328525059e-01 4.570305474717528e+00 6.067054351956346e-01 79 1.526264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 5.342961634301919e-01 4.596113795742754e+00 8.431852963657837e-01 2.809764446167336e-01 5.342961634301919e-05 -5.122909759640513e-03 9.221550240140291e-02 8.169147968701449e-01 4.594970061569972e+00 5.380362365742032e-01 80 1.566264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 4.453992832730070e-01 4.606530852816563e+00 8.434801829656092e-01 2.751896155318128e-01 4.453992832730070e-05 -5.118279531651625e-03 8.619720015308526e-02 8.171388282766525e-01 4.605844289608629e+00 4.485170782559181e-01 81 1.606264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 3.655130825703774e-01 4.608920603363219e+00 8.436463207442372e-01 2.719144209178584e-01 3.655130825703774e-05 -5.119164975718922e-03 8.279099775457274e-02 8.172894007659043e-01 4.608338524628224e+00 3.680716741483700e-01 82 1.646264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 2.970760078463781e-01 4.610004738424272e+00 8.437525319282636e-01 2.699489290763227e-01 2.970760078463781e-05 -5.120046332499405e-03 8.074688623937566e-02 8.173887664827915e-01 4.609469936787227e+00 2.991555399013027e-01 83 1.686264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 2.401074914420540e-01 4.611433798884775e+00 8.438276778905330e-01 2.687309113335743e-01 2.401074914420540e-05 -5.119835289781650e-03 7.948014778691725e-02 8.174544350435733e-01 4.610961575324143e+00 2.417882438821484e-01 84 1.726264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 1.933651965384985e-01 4.613125201744815e+00 8.438827004091003e-01 2.679562347290204e-01 1.933651965384985e-05 -5.118918563526164e-03 7.867448411818126e-02 8.174980028997503e-01 4.612727179819951e+00 1.947187529142680e-01 85 1.766264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 1.552578281176907e-01 4.614763698809917e+00 8.439229848230518e-01 2.674602093135356e-01 1.552578281176907e-05 -5.117776091876547e-03 7.815861768607706e-02 8.175270998251438e-01 4.614437609618261e+00 1.563446329145145e-01 86 1.806264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 1.243602703195241e-01 4.616189300898246e+00 8.439520313198433e-01 2.671396339515170e-01 1.243602703195241e-05 -5.116671065150237e-03 7.782521930957766e-02 8.175463704327945e-01 4.615925822012489e+00 1.252307922117608e-01 87 1.846264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 9.941261646855788e-02 4.617368799602381e+00 8.439729415888899e-01 2.669306248757297e-01 9.941261646855787e-06 -5.115700575521890e-03 7.760784987075885e-02 8.175591705827954e-01 4.617157135018530e+00 1.001085047838378e-01 88 1.886264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 7.934138845696513e-02 4.618325844833779e+00 8.439880914305887e-01 2.667932101511409e-01 7.934138845696513e-06 -5.114880945015080e-03 7.746493855718649e-02 8.175677271567664e-01 4.618156229640743e+00 7.989677817616388e-02 89 1.926264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 6.324165405513329e-02 4.619097540836934e+00 8.439991791745812e-01 2.667021231405875e-01 6.324165405513329e-06 -5.114200336022479e-03 7.737020806621100e-02 8.175734906429447e-01 4.618961835917060e+00 6.368434563351922e-02 90 1.966264873984591e-07 5.000000000000000e+00 0.000000000000000e+00 5.035843662404387e-02 4.619718393081153e+00 8.440073830151605e-01 2.666412452790433e-01 5.035843662404387e-06 -5.113640361639803e-03 7.730689509020507e-02 8.175774059446986e-01 4.619609972844664e+00 5.071094568041217e-02 91 2.000000000000000e-07 5.000000000000000e+00 0.000000000000000e+00 4.155379590112504e-02 4.620145051425230e+00 8.440126411361591e-01 2.666059411887443e-01 4.155379590112504e-06 -5.113249007386026e-03 7.727017883629412e-02 8.175797142641356e-01 4.620055383123396e+00 4.184467247243292e-02 0707070124062140751006440006700000000000011777770500302371400003500000001040spice3c1/examples/schmitt.inschmitt ckt - ecl compatible schmitt trigger .width in=72 .opt acct list node lvlcod=2 .tran 10ns 1000ns vin 1 0 pulse(-1.6 -1.2 10ns 400ns 400ns 100ns 10000ns) vee 8 0 -5 rin 1 2 50 rc1 0 3 50 r1 3 5 185 r2 5 8 760 rc2 0 6 100 re 4 8 260 rth1 7 8 125 rth2 7 0 85 cload 7 0 5pf q1 3 2 4 qstd off q2 6 5 4 qstd q3 0 6 7 qstd q4 0 6 7 qstd .model qstd npn(is=1.0e-16 bf=50 br=0.1 rb=50 rc=10 tf=0.12ns tr=5ns + cje=0.4pf pe=0.8 me=0.4 cjc=0.5pf pc=0.8 mc=0.333 ccs=1pf va=50) .print tran v(1) v(3) v(5) v(6) .plot tran v(3) v(5) v(6) v(1) .end 0707070124062140761006440006700000000000011777770500302371400003600000002701spice3c1/examples/schmitt.outWarning: option lvlcod is obsolete. Warning: vin: no DC value, transient time 0 value used (debug printing enabled) Circuit: schmitt ckt - ecl compatible schmitt trigger Circuit: schmitt ckt - ecl compatible schmitt trigger Date: Mon May 1 17:04:12 PDT 1989 SCHMITT CKT - ECL COMPATIBLE SCHMITT TRIGGER .TRAN 10NS 1000NS VIN 1 0 PULSE(-1.6 -1.2 10NS 400NS 400NS 100NS 10000NS) VEE 8 0 -5 RIN 1 2 50 RC1 0 3 50 R1 3 5 185 R2 5 8 760 RC2 0 6 100 RE 4 8 260 RTH1 7 8 125 RTH2 7 0 85 CLOAD 7 0 5PF Q1 3 2 4 QSTD OFF Q2 6 5 4 QSTD Q3 0 6 7 QSTD Q4 0 6 7 QSTD .MODEL QSTD NPN(IS=1.0E-16 BF=50 BR=0.1 RB=50 RC=10 TF=0.12NS TR=5NS + CJE=0.4PF PE=0.8 ME=0.4 CJC=0.5PF PC=0.8 MC=0.333 CCS=1PF VA=50) .OPT ACCT LIST NODE LVLCOD=2 .END .print card ignored since rawfile was produced .plot card ignored since rawfile was produced Total run time: 3.560 seconds. Current data size = 295904, Data limits: hard = 85950464, soft = 85950464. 29 page faults, 32 vol + 52 invol = 84 context switches. Time since last call: 0.010 seconds. Nominal temperature = 27 Operating temperature = 27 Total iterations = 408 Transient iterations = 400 Circuit Equations = 19 Transient timepoints = 135 Accepted timepoints = 110 Rejected timepoints = 25 Total Analysis Time = 3.13 Transient time = 3.07 matrix reordering time = 0.01 L-U decomposition time = 0.33 Matrix solve time = 0.23 transient L-U decomp time = 0.33 Transient solve time = 0.23 Transient iters per point = 0 Load time = 1.74 0707070124062140771006440006700000000000011777770500302371500003600000143214spice3c1/examples/schmitt.rawTitle: schmitt ckt - ecl compatible schmitt trigger Date: Mon May 1 17:03:59 PDT 1989 Plotname: transient Flags: real No. Variables: 19 No. Points: 110 Command: version SPICE 3c1 Alpha test Variables: 0 time time 1 V(1) voltage 2 V(8) voltage 3 V(2) voltage 4 V(3) voltage 5 V(5) voltage 6 V(6) voltage 7 V(4) voltage 8 V(7) voltage 9 vee#branch current 10 vin#branch current 11 q4#collector voltage 12 q4#base voltage 13 q3#collector voltage 14 q3#base voltage 15 q2#collector voltage 16 q2#base voltage 17 q1#collector voltage 18 q1#base voltage Values: 0 0.000000000000000e+00 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000006545369e+00 -2.596995467264408e-01 -1.220586496216791e+00 -1.110592835458311e+00 -2.067993633680902e+00 -1.891854812225651e+00 4.111502156993846e-02 -1.309073804217631e-10 -1.278993355985160e-02 -1.111844319265202e+00 -1.278993355985161e-02 -1.111844319265202e+00 -1.221151525481386e+00 -1.231640046505829e+00 -2.596996209641424e-01 -1.600000013090738e+00 1 1.000000000000000e-10 -1.600000000000000e+00 -5.000000000000000e+00 -1.599999504025211e+00 -2.596990208776467e-01 -1.220583687273667e+00 -1.110584292887047e+00 -2.067990059381623e+00 -1.891849363178425e+00 4.111508260559899e-02 9.919495787269472e-09 -1.279225255148104e-02 -1.111832556256634e+00 -1.279225255148103e-02 -1.111832556256634e+00 -1.221143416827917e+00 -1.231636435711293e+00 -2.596991133560938e-01 -1.599999008050421e+00 2 2.000000000000000e-10 -1.600000000000000e+00 -5.000000000000000e+00 -1.599999796336798e+00 -2.596990506479492e-01 -1.220583847314263e+00 -1.110585318000616e+00 -2.067990253536088e+00 -1.891847217798385e+00 4.111509881131162e-02 4.073264045501013e-09 -1.279214688377891e-02 -1.111832138757929e+00 -1.279214688377891e-02 -1.111832138757929e+00 -1.221145121497753e+00 -1.231636641489063e+00 -2.596991420388194e-01 -1.599999592673595e+00 3 4.000000000000000e-10 -1.600000000000000e+00 -5.000000000000000e+00 -1.599999744694034e+00 -2.596987674357518e-01 -1.220582509639617e+00 -1.110581163095226e+00 -2.067988553588040e+00 -1.891843412296516e+00 4.111513755368652e-02 5.106119320766322e-09 -1.279200731426895e-02 -1.111830228414952e+00 -1.279200731426895e-02 -1.111830228414952e+00 -1.221139653276858e+00 -1.231634930819655e+00 -2.596988591821527e-01 -1.599999489388068e+00 4 8.000000000000000e-10 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000340729772e+00 -2.596991711821884e-01 -1.220585004077215e+00 -1.110588949807560e+00 -2.067991746498105e+00 -1.891849111685779e+00 4.111507639599436e-02 -6.814595434820325e-09 -1.279002774526409e-02 -1.111838565328715e+00 -1.279002774526409e-02 -1.111838565328715e+00 -1.221147998579854e+00 -1.231638154416655e+00 -2.596992306675436e-01 -1.600000681459543e+00 5 1.600000000000000e-09 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000082930481e+00 -2.596994337387549e-01 -1.220586153469405e+00 -1.110593176140268e+00 -2.067993212554434e+00 -1.891855276088621e+00 4.111501992973529e-02 -1.658609614235695e-09 -1.278964641100055e-02 -1.111845338337714e+00 -1.278964641100052e-02 -1.111845338337714e+00 -1.221151628875316e+00 -1.231639619112056e+00 -2.596994977983626e-01 -1.600000165860961e+00 6 3.200000000000000e-09 -1.600000000000000e+00 -5.000000000000000e+00 -1.599999972286293e+00 -2.596995465817728e-01 -1.220586459007050e+00 -1.110594646439325e+00 -2.067993588641633e+00 -1.891856680730410e+00 4.111500684408853e-02 5.542741422087660e-10 -1.278976721820314e-02 -1.111846481828262e+00 -1.278976721820319e-02 -1.111846481828262e+00 -1.221153376927683e+00 -1.231639996830491e+00 -2.596996227940583e-01 -1.599999944572586e+00 7 6.400000000000000e-09 -1.600000000000000e+00 -5.000000000000000e+00 -1.599999996547205e+00 -2.596995517474905e-01 -1.220586499440352e+00 -1.110595422603522e+00 -2.067993639327735e+00 -1.891857375549509e+00 4.111500103738748e-02 6.905589901989861e-11 -1.278955852143645e-02 -1.111847544680305e+00 -1.278955852143649e-02 -1.111847544680305e+00 -1.221154116033161e+00 -1.231640049455658e+00 -2.596996270865636e-01 -1.599999993094410e+00 8 1.000000000000000e-08 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000004842012e+00 -2.596995295268564e-01 -1.220586412792252e+00 -1.110593060719562e+00 -2.067993528925256e+00 -1.891855045621725e+00 4.111502021544533e-02 -9.684024415701487e-11 -1.278993447590963e-02 -1.111844554006841e+00 -1.278993447590964e-02 -1.111844554006841e+00 -1.221151769476606e+00 -1.231639939694196e+00 -2.596996039043684e-01 -1.600000009684024e+00 9 1.064000000000000e-08 -1.599360000000000e+00 -5.000000000000000e+00 -1.599398927490731e+00 -2.596839251324077e-01 -1.220564366485144e+00 -1.110573132475360e+00 -2.067967574127866e+00 -1.891840342941752e+00 4.111526667132775e-02 -7.785498146242742e-07 -1.279154740835851e-02 -1.111826412803623e+00 -1.279154740835845e-02 -1.111826412803623e+00 -1.221129133591591e+00 -1.231614701914671e+00 -2.596812268425251e-01 -1.599437854981462e+00 10 1.192000000000000e-08 -1.598080000000000e+00 -5.000000000000000e+00 -1.598129409065080e+00 -2.596779705135141e-01 -1.220557734898256e+00 -1.110559352899051e+00 -2.067960093258628e+00 -1.891827298326202e+00 4.111540852659836e-02 -9.881813015939073e-07 -1.279260789592286e-02 -1.111811303410151e+00 -1.279260789592286e-02 -1.111811303410151e+00 -1.221114507984516e+00 -1.231607451074850e+00 -2.596741178927173e-01 -1.598178818130159e+00 11 1.448000000000000e-08 -1.595520000000000e+00 -5.000000000000000e+00 -1.595567295241957e+00 -2.596799948250853e-01 -1.220563259738104e+00 -1.110551296333546e+00 -2.067966849212294e+00 -1.891820194215701e+00 4.111543210551908e-02 -9.459048391476446e-07 -1.279326423506558e-02 -1.111802967260815e+00 -1.279326423506559e-02 -1.111802967260814e+00 -1.221105757595993e+00 -1.231614285479727e+00 -2.596763578488581e-01 -1.595614590483915e+00 12 1.960000000000000e-08 -1.590400000000000e+00 -5.000000000000000e+00 -1.590446524007942e+00 -2.596825250612384e-01 -1.220572670768361e+00 -1.110540284509240e+00 -2.067978534847750e+00 -1.891810894919462e+00 4.111544917220268e-02 -9.304801588385855e-07 -1.279434426813064e-02 -1.111791533965203e+00 -1.279434426813069e-02 -1.111791533965203e+00 -1.221093813177778e+00 -1.231626175330793e+00 -2.596790221974254e-01 -1.590493048015884e+00 13 2.984000000000000e-08 -1.580160000000000e+00 -5.000000000000000e+00 -1.580206726535816e+00 -2.596825419306845e-01 -1.220571763280004e+00 -1.110543021462237e+00 -2.067977331711071e+00 -1.891813447450500e+00 4.111543457346677e-02 -9.345307163096186e-07 -1.279390495392436e-02 -1.111794898956678e+00 -1.279390495392437e-02 -1.111794898956678e+00 -1.221096572610684e+00 -1.231624958312822e+00 -2.596790924060474e-01 -1.580253453071631e+00 14 4.984000000000000e-08 -1.560160000000000e+00 -5.000000000000000e+00 -1.560207398360278e+00 -2.596831734067421e-01 -1.220571629042632e+00 -1.110541302949192e+00 -2.067976918267109e+00 -1.891812174245396e+00 4.111544652590481e-02 -9.479672055611420e-07 -1.279404963096749e-02 -1.111793309630880e+00 -1.279404963096746e-02 -1.111793309630880e+00 -1.221094630571437e+00 -1.231624608294468e+00 -2.596798915672316e-01 -1.560254796720556e+00 15 6.984000000000000e-08 -1.540160000000000e+00 -5.000000000000000e+00 -1.540208038818586e+00 -2.596849325140696e-01 -1.220572728689639e+00 -1.110536714498618e+00 -2.067977783920313e+00 -1.891808455721237e+00 4.111547149775873e-02 -9.607763717216222e-07 -1.279438154530736e-02 -1.111788892491155e+00 -1.279438154530734e-02 -1.111788892491155e+00 -1.221089514751466e+00 -1.231625602054153e+00 -2.596820381425284e-01 -1.540256077637172e+00 16 8.984000000000000e-08 -1.520160000000000e+00 -5.000000000000000e+00 -1.520208743230955e+00 -2.596889179622492e-01 -1.220575679006539e+00 -1.110526967582135e+00 -2.067980389688135e+00 -1.891800502370605e+00 4.111552122038394e-02 -9.748646191023828e-07 -1.279512158965889e-02 -1.111779405801053e+00 -1.279512158965889e-02 -1.111779405801053e+00 -1.221078689052782e+00 -1.231628466705639e+00 -2.596868766333861e-01 -1.520257486461910e+00 17 1.098400000000000e-07 -1.500160000000000e+00 -5.000000000000000e+00 -1.500209581227346e+00 -2.596975251976406e-01 -1.220581692605752e+00 -1.110507003442890e+00 -2.067985573966003e+00 -1.891784123260633e+00 4.111562440110290e-02 -9.916245469212236e-07 -1.279667316220999e-02 -1.111759838424322e+00 -1.279667316220995e-02 -1.111759838424322e+00 -1.221056569794607e+00 -1.231634174953629e+00 -2.596973455124059e-01 -1.500259162454692e+00 18 1.298400000000000e-07 -1.480160000000000e+00 -5.000000000000000e+00 -1.480210635146613e+00 -2.597162674815596e-01 -1.220594599493729e+00 -1.110460692322807e+00 -2.067996649865042e+00 -1.891745376314405e+00 4.111587479431370e-02 -1.012702932252224e-06 -1.280058872729426e-02 -1.111713274756507e+00 -1.280058872729427e-02 -1.111713274756507e+00 -1.221005728581607e+00 -1.231646353844934e+00 -2.597201516799164e-01 -1.480261270293225e+00 19 1.498400000000000e-07 -1.460160000000000e+00 -5.000000000000000e+00 -1.460212338500978e+00 -2.597570629215558e-01 -1.220623839581161e+00 -1.110364330776529e+00 -2.068022298284132e+00 -1.891665492677978e+00 4.111637674184014e-02 -1.046770019568280e-06 -1.280840663171543e-02 -1.111617579177913e+00 -1.280840663171545e-02 -1.111617579177913e+00 -1.220899464493628e+00 -1.231674394554068e+00 -2.597697308215640e-01 -1.460264677001957e+00 20 1.698400000000000e-07 -1.440160000000000e+00 -5.000000000000000e+00 -1.440215319879089e+00 -2.598459309133142e-01 -1.220686665517458e+00 -1.110160436863970e+00 -2.068077073143398e+00 -1.891496892925231e+00 4.111743220162081e-02 -1.106397581786787e-06 -1.282477967391345e-02 -1.111415789507837e+00 -1.282477967391349e-02 -1.111415789507836e+00 -1.220674339492820e+00 -1.231734315382280e+00 -2.598777800903476e-01 -1.440270639758179e+00 21 1.898400000000000e-07 -1.420160000000000e+00 -5.000000000000000e+00 -1.420221139463477e+00 -2.600393538313613e-01 -1.220823546230912e+00 -1.109719892543377e+00 -2.068196489213899e+00 -1.891133025540739e+00 4.111970374191599e-02 -1.222789269547664e-06 -1.285997545196212e-02 -1.110980515199949e+00 -1.285997545196219e-02 -1.110980515199948e+00 -1.220187632735085e+00 -1.231864919728913e+00 -2.601129439273876e-01 -1.420282278926955e+00 22 2.098400000000000e-07 -1.400160000000000e+00 -5.000000000000000e+00 -1.400233238535049e+00 -2.604640729684784e-01 -1.221124038435326e+00 -1.108747996739254e+00 -2.068458625906382e+00 -1.890328849891283e+00 4.112473354458413e-02 -1.464770700984868e-06 -1.293813404958819e-02 -1.110018656443042e+00 -1.293813404958826e-02 -1.110018656443042e+00 -1.219114532531665e+00 -1.232151606310625e+00 -2.606293218612634e-01 -1.400306477070099e+00 23 2.298400000000000e-07 -1.380160000000000e+00 -5.000000000000000e+00 -1.380259632924646e+00 -2.614119137776263e-01 -1.221794365786819e+00 -1.106582095314774e+00 -2.069043222946137e+00 -1.888534317037671e+00 4.113595934758710e-02 -1.992658492919620e-06 -1.311242942865116e-02 -1.107875569834195e+00 -1.311242942865115e-02 -1.107875569834195e+00 -1.216722915038483e+00 -1.232791030508565e+00 -2.617817315596816e-01 -1.380359265849292e+00 24 2.498400000000000e-07 -1.360160000000000e+00 -5.000000000000000e+00 -1.360320672365422e+00 -2.636105309565842e-01 -1.223347266130888e+00 -1.101562868396045e+00 -2.070396243577595e+00 -1.884363228994141e+00 4.116208083650334e-02 -3.213447308448702e-06 -1.351760460618793e-02 -1.102909914947902e+00 -1.351760460618790e-02 -1.102909914947902e+00 -1.211180336614907e+00 -1.234271577285471e+00 -2.644549757871279e-01 -1.360481344730845e+00 25 2.698400000000000e-07 -1.340160000000000e+00 -5.000000000000000e+00 -1.340481343679371e+00 -2.692923220640856e-01 -1.227346827251744e+00 -1.088616371733508e+00 -2.073871623529154e+00 -1.873510113806210e+00 4.123027633161707e-02 -6.426873587410658e-06 -1.457218452500752e-02 -1.090106305032665e+00 -1.457218452500753e-02 -1.090106305032665e+00 -1.196882035587197e+00 -1.238079610674288e+00 -2.713640564667590e-01 -1.340802687358741e+00 26 2.832891685537573e-07 -1.326710831446243e+00 -5.000000000000000e+00 -1.327355125254302e+00 -2.796373844125275e-01 -1.234516233342283e+00 -1.065204088589774e+00 -2.080037778335050e+00 -1.853633434679049e+00 4.135614035554518e-02 -1.288587616118551e-05 -1.650576322564585e-02 -1.066984960094343e+00 -1.650576322564585e-02 -1.066984960094343e+00 -1.171012148846923e+00 -1.244862402743043e+00 -2.839497883799111e-01 -1.327999419062361e+00 27 2.854463512332765e-07 -1.324553648766724e+00 -5.000000000000000e+00 -1.325313796816365e+00 -2.824324066536551e-01 -1.236347093703394e+00 -1.059008691078287e+00 -2.081559040430493e+00 -1.848347466165646e+00 4.139016806880207e-02 -1.520296099283627e-05 -1.702169454184782e-02 -1.060893459455953e+00 -1.702169454184782e-02 -1.060893459455953e+00 -1.164155652835049e+00 -1.246553130151805e+00 -2.873559319276434e-01 -1.326073944866007e+00 28 2.897607165923148e-07 -1.320239283407685e+00 -5.000000000000000e+00 -1.321343313762265e+00 -2.905699920476362e-01 -1.241652468997750e+00 -1.041031237370686e+00 -2.085947933622597e+00 -1.832901339550854e+00 4.148987596632299e-02 -2.208060709159472e-05 -1.853073762742928e-02 -1.043229143456985e+00 -1.853073762742923e-02 -1.043229143456985e+00 -1.144255198673235e+00 -1.251442081105386e+00 -2.972741268382384e-01 -1.322447344116845e+00 29 2.908393079320744e-07 -1.319160692067926e+00 -5.000000000000000e+00 -1.320390788645439e+00 -2.934257190286479e-01 -1.243484077406869e+00 -1.034754718670501e+00 -2.087445683884094e+00 -1.827477273221593e+00 4.152509790796361e-02 -2.460193155026614e-05 -1.906048484347437e-02 -1.037067304027079e+00 -1.906048484347445e-02 -1.037067304027079e+00 -1.137305156394921e+00 -1.253117401264522e+00 -3.007563569760952e-01 -1.321620885222952e+00 30 2.929964906115936e-07 -1.317003509388406e+00 -5.000000000000000e+00 -1.318590598035697e+00 -3.006866072297359e-01 -1.248055675580586e+00 -1.018926320675678e+00 -2.091133232280844e+00 -1.813758098462630e+00 4.161465316683138e-02 -3.174177294581896e-05 -2.040475535183356e-02 -1.021563161062256e+00 -2.040475535183354e-02 -1.021563161062256e+00 -1.119764216588614e+00 -1.257262927333450e+00 -3.096147898459074e-01 -1.320177686682988e+00 31 2.960587261374647e-07 -1.313941273862535e+00 -5.000000000000000e+00 -1.316521585253136e+00 -3.187276318259149e-01 -1.258982724577025e+00 -9.801435298449793e-01 -2.099681747879667e+00 -1.779840601781825e+00 4.183873653808056e-02 -5.160622781201279e-05 -2.373425743076618e-02 -9.836840021843420e-01 -2.373425743076608e-02 -9.836840021843421e-01 -1.076741693893732e+00 -1.266986165024249e+00 -3.316485585829298e-01 -1.319101896643737e+00 32 2.979894831220834e-07 -1.312010516877917e+00 -5.000000000000000e+00 -1.315955339542791e+00 -3.396313408402102e-01 -1.270908474282093e+00 -9.361025190704716e-01 -2.108532805667179e+00 -1.740964685729581e+00 4.210000956061882e-02 -7.889645329748306e-05 -2.756486500585123e-02 -9.408750478599800e-01 -2.756486500585125e-02 -9.408750478599800e-01 -1.027803759461715e+00 -1.277270028036723e+00 -3.572183044978802e-01 -1.319900162207665e+00 33 2.998082946550359e-07 -1.310191705344964e+00 -5.000000000000000e+00 -1.316812386239715e+00 -3.754874246843622e-01 -1.290178785819122e+00 -8.621867027187340e-01 -2.121933634002780e+00 -1.675061412174689e+00 4.255033842853830e-02 -1.324136178950121e-04 -3.408354165445576e-02 -8.693790224381355e-01 -3.408354165445578e-02 -8.693790224381354e-01 -9.455284451028469e-01 -1.293325482063416e+00 -4.011421333436801e-01 -1.323433067134465e+00 34 3.015355834062643e-07 -1.308464416593736e+00 -5.000000000000000e+00 -1.320772916390323e+00 -4.436135876165999e-01 -1.324836472556819e+00 -7.246321668965584e-01 -2.143909105042447e+00 -1.550824395295621e+00 4.341411130171887e-02 -2.461699959317421e-04 -4.641502661392338e-02 -7.369877015627859e-01 -4.641502661392336e-02 -7.369877015627859e-01 -7.921531697197233e-01 -1.321217745664066e+00 -4.847026356836919e-01 -1.333081416186910e+00 35 3.033673272798623e-07 -1.306632672720138e+00 -5.000000000000000e+00 -1.332229510147781e+00 -5.994869862288993e-01 -1.403673471685103e+00 -4.153408004132158e-01 -2.184887001862838e+00 -1.266483650881811e+00 4.542749706797646e-02 -5.119367485528644e-04 -7.465140443073531e-02 -4.400711047250116e-01 -7.465140443073555e-02 -4.400711047250115e-01 -4.469827587298191e-01 -1.384420740962648e+00 -6.759148437202897e-01 -1.357826347575424e+00 36 3.044738695303796e-07 -1.305526130469620e+00 -5.000000000000000e+00 -1.333760396354653e+00 -7.179391360483822e-01 -1.486029185253676e+00 -1.766670262107017e-01 -2.196506142064280e+00 -1.039072717853640e+00 4.709373275041577e-02 -5.646853177006541e-04 -9.687838833274888e-02 -2.058151175398239e-01 -9.687838833274891e-02 -2.058151175398238e-01 -1.826744923001229e-01 -1.462438800000459e+00 -8.200085822199346e-01 -1.361994662239686e+00 37 3.050913782842062e-07 -1.304908621715794e+00 -5.000000000000000e+00 -1.317942346444830e+00 -7.519859603854566e-01 -1.554395416146383e+00 -9.686984426156339e-02 -2.166457942902989e+00 -9.515008201341255e-01 4.781992236198200e-02 -2.606744945807264e-04 -1.049518694251776e-01 -1.163042508771410e-01 -1.049518694251776e-01 -1.163042508771410e-01 -9.878306604148869e-02 -1.544578324526676e+00 -8.590096683673627e-01 -1.330976071173866e+00 38 3.057474667134871e-07 -1.304252533286513e+00 -5.000000000000000e+00 -1.312474784635198e+00 -7.623464832429144e-01 -1.589558677806767e+00 -5.610887144035305e-02 -2.156134480961561e+00 -9.049548951902275e-01 4.818572793483169e-02 -1.644450269737002e-04 -1.088438765035817e-01 -6.892710916695153e-02 -1.088438765035820e-01 -6.892710916695142e-02 -5.659246349374899e-02 -1.588758401584427e+00 -8.701016072123701e-01 -1.320697035983883e+00 39 3.062300337266777e-07 -1.303769966273322e+00 -5.000000000000000e+00 -1.313173497534016e+00 -7.618001801940019e-01 -1.593937618412901e+00 -4.511077040282215e-02 -2.157901236001201e+00 -8.924650705545934e-01 4.827308955627040e-02 -1.880706252138644e-04 -1.097416533382572e-01 -5.626105723403699e-02 -1.097416533382576e-01 -5.626105723403689e-02 -4.516173271061846e-02 -1.594756577322129e+00 -8.691798141669158e-01 -1.322577028794709e+00 40 3.067078897761180e-07 -1.303292110223882e+00 -5.000000000000000e+00 -1.313744977215690e+00 -7.604163852117980e-01 -1.592426904670460e+00 -4.220770650852247e-02 -2.159484109830757e+00 -8.891642710050441e-01 4.829539575763933e-02 -2.090573398361622e-04 -1.099256277926181e-01 -5.292861313878213e-02 -1.099256277926188e-01 -5.292861313878199e-02 -4.214011450727089e-02 -1.593112172150054e+00 -8.675261206617975e-01 -1.324197844207498e+00 41 3.072309871585781e-07 -1.302769012841422e+00 -5.000000000000000e+00 -1.313561583240505e+00 -7.598504335669515e-01 -1.590666077985800e+00 -4.228456813691660e-02 -2.159647614541287e+00 -8.892314428297521e-01 4.829654639598706e-02 -2.158514079816606e-04 -1.098866610380105e-01 -5.300649566334096e-02 -1.098866610380109e-01 -5.300649566334090e-02 -4.222425394003853e-02 -1.590912562404611e+00 -8.669115665279717e-01 -1.324354153639588e+00 42 3.078011760665646e-07 -1.302198823933435e+00 -5.000000000000000e+00 -1.312961102194226e+00 -7.599023836298754e-01 -1.589969617297373e+00 -4.309513788897858e-02 -2.159033024987971e+00 -8.901437504799283e-01 4.829252813640261e-02 -2.152455652158188e-04 -1.098072762280271e-01 -5.393571937589690e-02 -1.098072762280275e-01 -5.393571937589685e-02 -4.306841908310911e-02 -1.589968008758010e+00 -8.670143612386884e-01 -1.323723380455017e+00 43 3.086434643941597e-07 -1.301356535605840e+00 -5.000000000000000e+00 -1.312036625984172e+00 -7.601479346271611e-01 -1.589964280731759e+00 -4.381635492795445e-02 -2.158040135622114e+00 -8.909677425398506e-01 4.828976202697338e-02 -2.136018075666346e-04 -1.097454282849436e-01 -5.477209444600314e-02 -1.097454282849440e-01 -5.477209444600304e-02 -4.381569461353043e-02 -1.589894513653121e+00 -8.673225839253178e-01 -1.322716716362504e+00 44 3.100389965437572e-07 -1.299961003456243e+00 -5.000000000000000e+00 -1.310623301323608e+00 -7.604309617952542e-01 -1.590246683627182e+00 -4.409152194121366e-02 -2.156622181500262e+00 -8.912868524086778e-01 4.829229123496506e-02 -2.132459573473038e-04 -1.097249474639790e-01 -5.509497397770448e-02 -1.097249474639801e-01 -5.509497397770420e-02 -4.409929332073876e-02 -1.590195326964057e+00 -8.676622502714982e-01 -1.321285599190973e+00 45 3.128300608429521e-07 -1.297169939157048e+00 -5.000000000000000e+00 -1.307853838507448e+00 -7.609117693030080e-01 -1.590674407973376e+00 -4.404255524127962e-02 -2.153899996559022e+00 -8.912322544016975e-01 4.830263516591023e-02 -2.136779870079990e-04 -1.097304599856336e-01 -5.503914780162386e-02 -1.097304599856339e-01 -5.503914780162376e-02 -4.404817374126989e-02 -1.590636844269448e+00 -8.682420886408870e-01 -1.318537737857848e+00 46 3.159770416529258e-07 -1.294022958347074e+00 -5.000000000000000e+00 -1.304718346945930e+00 -7.614501112350400e-01 -1.591110266769798e+00 -4.398062195212656e-02 -2.150806108588440e+00 -8.911615647867252e-01 4.831452675353129e-02 -2.139077719771065e-04 -1.097354844902734e-01 -5.496747416906408e-02 -1.097354844902737e-01 -5.496747416906404e-02 -4.398394326056422e-02 -1.591073679841928e+00 -8.688936385882773e-01 -1.315413735544785e+00 47 3.222710032728731e-07 -1.287728996727127e+00 -5.000000000000000e+00 -1.298449624458270e+00 -7.625677172055774e-01 -1.592009192645448e+00 -4.396261477986768e-02 -2.144622641352410e+00 -8.911418012165653e-01 4.833728463118019e-02 -2.144125546228626e-04 -1.097370083524450e-01 -5.494737859748523e-02 -1.097370083524444e-01 -5.494737859748539e-02 -4.396497073080740e-02 -1.591972642849470e+00 -8.702465862985918e-01 -1.309170252189413e+00 48 3.348589265127677e-07 -1.275141073487232e+00 -5.000000000000000e+00 -1.285915252889717e+00 -7.647908974732757e-01 -1.593798425599333e+00 -4.395907874227839e-02 -2.132261363345565e+00 -8.911393071943092e-01 4.838249370642095e-02 -2.154835880496917e-04 -1.097372828877110e-01 -5.494481909748182e-02 -1.097372828877120e-01 -5.494481909748157e-02 -4.396069047442491e-02 -1.593762305439903e+00 -8.729378592313872e-01 -1.296689432292201e+00 49 3.548589265127677e-07 -1.255141073487232e+00 -5.000000000000000e+00 -1.265993082161541e+00 -7.683066947175545e-01 -1.596627658795894e+00 -4.395276784401877e-02 -2.112605938101747e+00 -8.911331671748023e-01 4.845441794071768e-02 -2.170401734861772e-04 -1.097379322980423e-01 -5.493852557319441e-02 -1.097379322980406e-01 -5.493852557319479e-02 -4.395374153675032e-02 -1.596592114548660e+00 -8.771939274946686e-01 -1.276845090835850e+00 50 3.748589265127677e-07 -1.235141073487232e+00 -5.000000000000000e+00 -1.246071590564495e+00 -7.718031084923577e-01 -1.599441670103877e+00 -4.395040055868396e-02 -2.092950584075401e+00 -8.911309715787191e-01 4.852633037451441e-02 -2.186103415452527e-04 -1.097381176236768e-01 -5.493627539868777e-02 -1.097381176236791e-01 -5.493627539868721e-02 -4.395109067855094e-02 -1.599406825080397e+00 -8.814265106442605e-01 -1.257002107641758e+00 51 3.948589265127677e-07 -1.215141073487232e+00 -5.000000000000000e+00 -1.226149978503268e+00 -7.753242950772023e-01 -1.602275220281546e+00 -4.394944482913629e-02 -2.073293818327212e+00 -8.911300760862229e-01 4.859821212814279e-02 -2.201781003207141e-04 -1.097381986422144e-01 -5.493535573420591e-02 -1.097381986422133e-01 -5.493535573420615e-02 -4.395002495002203e-02 -1.602240945355296e+00 -8.856891040815971e-01 -1.237158883519304e+00 52 4.100000000000000e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211067617533285e+00 -7.779829341980033e-01 -1.604415000728911e+00 -4.394881000482176e-02 -2.058410586566578e+00 -8.911294026914808e-01 4.865264521379145e-02 -2.213523506657028e-04 -1.097382761240094e-01 -5.493467116589457e-02 -1.097382761240098e-01 -5.493467116589448e-02 -4.394934654087483e-02 -1.604381268758192e+00 -8.889075174413386e-01 -1.222135235066570e+00 53 4.120000000000000e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211010109416720e+00 -7.780063845474709e-01 -1.604520409959729e+00 -4.394620979552868e-02 -2.058296846714612e+00 -8.911268034181615e-01 4.865296477259077e-02 -2.202021883343955e-04 -1.097385741344056e-01 -5.493202027325994e-02 -1.097385741344055e-01 -5.493202027325994e-02 -4.394650658398904e-02 -1.604515763855841e+00 -8.889312276508970e-01 -1.222020218833440e+00 54 4.160000000000000e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211026618056755e+00 -7.781107335468747e-01 -1.604622358743636e+00 -4.394393194328052e-02 -2.058328592378231e+00 -8.911246267659640e-01 4.865272594396540e-02 -2.205323611350991e-04 -1.097387445805046e-01 -5.492980182308867e-02 -1.097387445805038e-01 -5.492980182308886e-02 -4.394397718568527e-02 -1.604623771089693e+00 -8.890565761915598e-01 -1.222053236113510e+00 55 4.240000000000000e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211020614468850e+00 -7.780716920618713e-01 -1.604589501516637e+00 -4.394307247417760e-02 -2.058316959568220e+00 -8.911238078092924e-01 4.865282047038916e-02 -2.204122893769999e-04 -1.097388182189499e-01 -5.492895814754804e-02 -1.097388182189506e-01 -5.492895814754790e-02 -4.394302545224721e-02 -1.604590423624105e+00 -8.890093921253393e-01 -1.222041228937700e+00 56 4.376679176784010e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211020902726906e+00 -7.780698710301790e-01 -1.604585127578418e+00 -4.394412899745803e-02 -2.058317521769493e+00 -8.911248845696805e-01 4.865281544917533e-02 -2.204180545381188e-04 -1.097387063715185e-01 -5.493004343931989e-02 -1.097387063715165e-01 -5.493004343932035e-02 -4.394417612045900e-02 -1.604585071952056e+00 -8.890073448822559e-01 -1.222041805453812e+00 57 4.576679176784010e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211020252264491e+00 -7.780703428395723e-01 -1.604585632736378e+00 -4.394410971821936e-02 -2.058316314275781e+00 -8.911248640452332e-01 4.865281959289597e-02 -2.204050452898161e-04 -1.097387138100546e-01 -5.493002539187521e-02 -1.097387138100541e-01 -5.493002539187530e-02 -4.394415442057894e-02 -1.604585619357218e+00 -8.890079092509027e-01 -1.222040504528982e+00 58 4.776679176784010e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211019969695542e+00 -7.780708085513143e-01 -1.604586053861438e+00 -4.394411331470264e-02 -2.058315792041780e+00 -8.911248719875545e-01 4.865282098383779e-02 -2.203993939108328e-04 -1.097387108551999e-01 -5.493003390120775e-02 -1.097387108551989e-01 -5.493003390120794e-02 -4.394415641157083e-02 -1.604586056137419e+00 -8.890084705150840e-01 -1.222039939391083e+00 59 4.976679176784010e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211020429348994e+00 -7.780702255142439e-01 -1.604585600628811e+00 -4.394413169800361e-02 -2.058316637502318e+00 -8.911248948992481e-01 4.865281814513166e-02 -2.204085869798741e-04 -1.097387075574705e-01 -5.493005745026920e-02 -1.097387075574674e-01 -5.493005745026994e-02 -4.394417456689759e-02 -1.604585608169139e+00 -8.890077638541432e-01 -1.222040858697987e+00 60 5.100000000000000e-07 -1.200000000000000e+00 -5.000000000000000e+00 -1.211020795984202e+00 -7.780697572250809e-01 -1.604585221375550e+00 -4.394417877809272e-02 -2.058317311171340e+00 -8.911249521950918e-01 4.865281559474766e-02 -2.204159196840445e-04 -1.097386994302045e-01 -5.493011632654607e-02 -1.097386994302031e-01 -5.493011632654641e-02 -4.394422163652059e-02 -1.604585228028763e+00 -8.890071970943960e-01 -1.222041591968404e+00 61 5.120000000000000e-07 -1.202000000000000e+00 -5.000000000000000e+00 -1.212966027441919e+00 -7.777836750521652e-01 -1.604440400732401e+00 -4.394292450499956e-02 -2.060189974916832e+00 -8.911238826246711e-01 4.864581215192158e-02 -2.193205488383856e-04 -1.097387862867814e-01 -5.492902183060298e-02 -1.097387862867740e-01 -5.492902183060475e-02 -4.394277802525779e-02 -1.604469058503551e+00 -8.886562627285313e-01 -1.223932054883839e+00 62 5.160000000000000e-07 -1.206000000000000e+00 -5.000000000000000e+00 -1.216945855086455e+00 -7.770897080028358e-01 -1.603905473661183e+00 -4.393932565050828e-02 -2.064112478572860e+00 -8.911204960862405e-01 4.863145654311533e-02 -2.189171017290908e-04 -1.097391059450578e-01 -5.492555636547378e-02 -1.097391059450504e-01 -5.492555636547552e-02 -4.393876592957256e-02 -1.603941922639725e+00 -8.878149055137626e-01 -1.227891710172909e+00 63 5.240000000000000e-07 -1.214000000000000e+00 -5.000000000000000e+00 -1.224912367911980e+00 -7.756997260365244e-01 -1.602781707568305e+00 -4.393987978350626e-02 -2.071971418491599e+00 -8.911208855688144e-01 4.860270537485549e-02 -2.182473582396038e-04 -1.097390561521834e-01 -5.492596101741009e-02 -1.097390561521786e-01 -5.492596101741121e-02 -4.393943526829513e-02 -1.602816174803116e+00 -8.861325371069762e-01 -1.235824735823960e+00 64 5.400000000000000e-07 -1.230000000000000e+00 -5.000000000000000e+00 -1.240853978416972e+00 -7.728629786718304e-01 -1.600501525720680e+00 -4.394059365196409e-02 -2.087705442896040e+00 -8.911215202891762e-01 4.854518505788716e-02 -2.170795683394491e-04 -1.097390233899169e-01 -5.492660540802042e-02 -1.097390233899151e-01 -5.492660540802085e-02 -4.394024831473789e-02 -1.600536404104554e+00 -8.826983556467992e-01 -1.251707956833945e+00 65 5.600000000000000e-07 -1.250000000000000e+00 -5.000000000000000e+00 -1.260774835034477e+00 -7.693502652297032e-01 -1.597677970111840e+00 -4.394267097624489e-02 -2.107359815698876e+00 -8.911235063906330e-01 4.847329063227461e-02 -2.154967006895363e-04 -1.097388334300598e-01 -5.492863783464484e-02 -1.097388334300562e-01 -5.492863783464568e-02 -4.394255133050922e-02 -1.597713347132151e+00 -8.784458477414743e-01 -1.271549670068954e+00 66 5.800000000000000e-07 -1.270000000000000e+00 -5.000000000000000e+00 -1.280696229531049e+00 -7.658528005162710e-01 -1.594867364636886e+00 -4.394751050865374e-02 -2.127014008734298e+00 -8.911281639066969e-01 4.840135848710849e-02 -2.139245906209700e-04 -1.097383838791124e-01 -5.493340443523512e-02 -1.097383838791107e-01 -5.493340443523555e-02 -4.394790398888648e-02 -1.594903471034286e+00 -8.742117625589514e-01 -1.291392459062097e+00 67 6.000000000000000e-07 -1.290000000000000e+00 -5.000000000000000e+00 -1.300617315688281e+00 -7.623274323131607e-01 -1.592034858310938e+00 -4.395896200896330e-02 -2.146666217436157e+00 -8.911391808888044e-01 4.832941191517538e-02 -2.123463137656276e-04 -1.097373207969012e-01 -5.494467946721760e-02 -1.097373207968976e-01 -5.494467946721845e-02 -4.396057122655774e-02 -1.592071875574749e+00 -8.699438687218590e-01 -1.311234631376563e+00 68 6.200000000000000e-07 -1.310000000000000e+00 -5.000000000000000e+00 -1.320538019310481e+00 -7.587998733213416e-01 -1.589200896383007e+00 -4.398641281226961e-02 -2.166316060893427e+00 -8.911655826782484e-01 4.825735327714392e-02 -2.107603862096293e-04 -1.097347744512754e-01 -5.497169958783331e-02 -1.097347744512697e-01 -5.497169958783465e-02 -4.399093938327082e-02 -1.589238927449054e+00 -8.656733061984928e-01 -1.331076038620963e+00 69 6.400000000000000e-07 -1.330000000000000e+00 -5.000000000000000e+00 -1.340457972710117e+00 -7.552542402536186e-01 -1.586354106985668e+00 -4.405183434089016e-02 -2.185962204856265e+00 -8.912284970842618e-01 4.818503364525387e-02 -2.091594542023402e-04 -1.097287085614280e-01 -5.503608721277812e-02 -1.097287085614242e-01 -5.503608721277901e-02 -4.406331662622382e-02 -1.586393725943244e+00 -8.613807711836910e-01 -1.350915945420234e+00 70 6.600000000000000e-07 -1.350000000000000e+00 -5.000000000000000e+00 -1.360380348703502e+00 -7.516396314378098e-01 -1.583455944952306e+00 -4.421136846188389e-02 -2.205609251294789e+00 -8.913826680331305e-01 4.811204808553435e-02 -2.076069740700307e-04 -1.097136724651929e-01 -5.519389645331026e-02 -1.097136724651934e-01 -5.519389645331010e-02 -4.423949411150176e-02 -1.583498529620582e+00 -8.570045137516152e-01 -1.370760697407003e+00 71 6.800000000000000e-07 -1.370000000000000e+00 -5.000000000000000e+00 -1.380298113292310e+00 -7.479671272441094e-01 -1.580519567769991e+00 -4.459040007339437e-02 -2.225240196586902e+00 -8.917481915976603e-01 4.803748391546648e-02 -2.059622658462028e-04 -1.096782069637413e-01 -5.556801625479844e-02 -1.096782069637414e-01 -5.556801625479846e-02 -4.465839360817218e-02 -1.580567922975224e+00 -8.525577180699106e-01 -1.390596226584620e+00 72 7.000000000000000e-07 -1.390000000000000e+00 -5.000000000000000e+00 -1.400206331835907e+00 -7.439879055347779e-01 -1.577360062060441e+00 -4.550785543201011e-02 -2.244836730782887e+00 -8.926330185539222e-01 4.795919125880188e-02 -2.041266367181489e-04 -1.095923166434499e-01 -5.647367016512780e-02 -1.095923166434507e-01 -5.647367016512762e-02 -4.567231508196409e-02 -1.577422099912747e+00 -8.477383430457516e-01 -1.410412663671815e+00 73 7.199999999999999e-07 -1.410000000000000e+00 -5.000000000000000e+00 -1.420098790038562e+00 -7.393907903844603e-01 -1.573759195970686e+00 -4.776950672261344e-02 -2.264364465678699e+00 -8.948140736681903e-01 4.787137412690858e-02 -2.019758007712428e-04 -1.093805920389242e-01 -5.870612618885462e-02 -1.093805920389240e-01 -5.870612618885470e-02 -4.817180960837829e-02 -1.573853591240995e+00 -8.421679535647996e-01 -1.430197580077124e+00 74 7.399999999999999e-07 -1.430000000000000e+00 -5.000000000000000e+00 -1.439942194197415e+00 -7.330496195447426e-01 -1.568910993551546e+00 -5.364870756581955e-02 -2.283695210946634e+00 -9.004824953230692e-01 4.775805694711765e-02 -1.988438839483054e-04 -1.088302673572059e-01 -6.450855237911671e-02 -1.088302673572053e-01 -6.450855237911685e-02 -5.466964039708262e-02 -1.569089933114920e+00 -8.344778475614315e-01 -1.449884388394830e+00 75 7.599999999999999e-07 -1.450000000000000e+00 -5.000000000000000e+00 -1.459610954026688e+00 -7.207171036130077e-01 -1.559804653451442e+00 -7.197248691180673e-02 -2.302330815434951e+00 -9.181362357530475e-01 4.755713364824719e-02 -1.922190805337520e-04 -1.071156849088778e-01 -8.258469765715083e-02 -1.071156849088756e-01 -8.258469765715138e-02 -7.492485130484965e-02 -1.560256431106394e+00 -8.195044405605587e-01 -1.469221908053375e+00 76 7.623444643752222e-07 -1.452344464375222e+00 -5.000000000000000e+00 -1.461856694530118e+00 -7.183922559687895e-01 -1.558196950060793e+00 -7.593285278026557e-02 -2.304341893376364e+00 -9.219273266248132e-01 4.752118540531201e-02 -1.902446030979141e-04 -1.067459935081597e-01 -8.646807829116855e-02 -1.067459935081594e-01 -8.646807829116861e-02 -7.931204785393093e-02 -1.558736780527069e+00 -8.166758588332500e-01 -1.471368924685014e+00 77 7.670333931256669e-07 -1.457033393125667e+00 -5.000000000000000e+00 -1.466328167966215e+00 -7.120110419755048e-01 -1.553790916484179e+00 -8.729556966324002e-02 -2.308220716162352e+00 -9.328107810200632e-01 4.742499663357394e-02 -1.858954968109675e-04 -1.056847764358447e-01 -9.761821489148979e-02 -1.056847764358462e-01 -9.761821489148944e-02 -9.189606853826418e-02 -1.554574708865461e+00 -8.089116355322991e-01 -1.475622942806764e+00 78 7.714823222145453e-07 -1.461482322214545e+00 -5.000000000000000e+00 -1.470396821104851e+00 -7.022297807995714e-01 -1.547126315181994e+00 -1.057850277442706e-01 -2.311322769579520e+00 -9.505077330888628e-01 4.728025925458184e-02 -1.782899778061064e-04 -1.039585962600202e-01 -1.157546879698197e-01 -1.039585962600203e-01 -1.157546879698197e-01 -1.123756664284781e-01 -1.548313987457709e+00 -7.970056540198952e-01 -1.479311319995156e+00 79 7.751677913163553e-07 -1.465167791316355e+00 -5.000000000000000e+00 -1.473384831104743e+00 -6.873391900657452e-01 -1.537450360024448e+00 -1.348382348105357e-01 -2.312686288319169e+00 -9.781934113064429e-01 4.706626104594054e-02 -1.643407957677614e-04 -1.012509277427178e-01 -1.441463801414525e-01 -1.012509277427176e-01 -1.441463801414526e-01 -1.445988001592225e-01 -1.539410817269518e+00 -7.788550729459914e-01 -1.481601870893131e+00 80 7.777825788289956e-07 -1.467782578828996e+00 -5.000000000000000e+00 -1.474812641797271e+00 -6.668271487750998e-01 -1.525009191392933e+00 -1.752849747740883e-01 -2.311575109880772e+00 -1.016484419510915e+00 4.678057670225504e-02 -1.406012593655019e-04 -9.749094603665000e-02 -1.834533514032229e-01 -9.749094603664949e-02 -1.834533514032230e-01 -1.895461215998433e-01 -1.528332467636619e+00 -7.538043600102369e-01 -1.481842704765546e+00 81 7.797599951159203e-07 -1.469759995115920e+00 -5.000000000000000e+00 -1.474739443485081e+00 -6.374460356792661e-01 -1.508408931828311e+00 -2.333431520378698e-01 -2.307354717260406e+00 -1.071079185790926e+00 4.638189329811961e-02 -9.958896738320594e-05 -9.210816304644657e-02 -2.395779694319133e-01 -9.210816304644617e-02 -2.395779694319135e-01 -2.541835402840394e-01 -1.514094370470384e+00 -7.178561673476034e-01 -1.479718891854241e+00 82 7.815252808033136e-07 -1.471525280803314e+00 -5.000000000000000e+00 -1.472408284162746e+00 -5.863013676486635e-01 -1.481359924754634e+00 -3.344866842170036e-01 -2.296768976550828e+00 -1.165509623425591e+00 4.570275498316797e-02 -1.766006718865662e-05 -8.276017849654230e-02 -3.368997021585711e-01 -8.276017849654214e-02 -3.368997021585712e-01 -3.669701454620769e-01 -1.491778164256819e+00 -6.551800975510465e-01 -1.473291287522179e+00 83 7.834255291053624e-07 -1.473425529105362e+00 -5.000000000000000e+00 -1.464019324813893e+00 -4.662223344529374e-01 -1.420636536865614e+00 -5.732773694102526e-01 -2.264401651928826e+00 -1.386497339253244e+00 4.413924216122219e-02 1.881240858293892e-04 -6.081623248509606e-02 -5.662365139375638e-01 -6.081623248509577e-02 -5.662365139375639e-01 -6.334214485403533e-01 -1.443101882937368e+00 -5.078768444563532e-01 -1.454613120522424e+00 84 7.855746817564715e-07 -1.475574681756472e+00 -5.000000000000000e+00 -1.459649893013768e+00 -2.887317628063179e-01 -1.301801143086877e+00 -9.626515782910285e-01 -2.167310551839359e+00 -1.745638979688085e+00 4.179589870601506e-02 3.184957748540774e-04 -2.562030882501340e-02 -9.486860341011789e-01 -2.562030882501361e-02 -9.486860341011786e-01 -1.064502953796071e+00 -1.332301121921976e+00 -2.917176083253891e-01 -1.443725104271064e+00 85 7.865728032626333e-07 -1.476572803262633e+00 -5.000000000000000e+00 -1.473846947524722e+00 -2.639035772463959e-01 -1.236241273361454e+00 -1.067131584531094e+00 -2.087654539128560e+00 -1.848173813587821e+00 4.136825230095490e-02 5.451711475822638e-05 -1.627172674422966e-02 -1.062626062055949e+00 -1.627172674422974e-02 -1.062626062055949e+00 -1.175646951974262e+00 -1.251419539584538e+00 -2.641254983110773e-01 -1.471121091786811e+00 86 7.872578176936744e-07 -1.477257817693674e+00 -5.000000000000000e+00 -1.477417481419094e+00 -2.597955844271232e-01 -1.221332570098708e+00 -1.100409710613019e+00 -2.068970714154640e+00 -1.881263671463065e+00 4.119501101805666e-02 -3.193274508396775e-06 -1.351721880635526e-02 -1.100080795372079e+00 -1.351721880635528e-02 -1.100080795372079e+00 -1.210582247770697e+00 -1.232610889650153e+00 -2.597797291140838e-01 -1.477577145144514e+00 87 7.876191472869374e-07 -1.477619147286937e+00 -5.000000000000000e+00 -1.477853763129238e+00 -2.595685114231503e-01 -1.220254986822223e+00 -1.107438208192813e+00 -2.067587796640989e+00 -1.888469028052744e+00 4.114410495158549e-02 -4.692316846016155e-06 -1.297969198691324e-02 -1.108176220678769e+00 -1.297969198691324e-02 -1.108176220678769e+00 -1.217886824017712e+00 -1.231232545095838e+00 -2.595532150375602e-01 -1.478088378971539e+00 88 7.878475371416560e-07 -1.477847537141656e+00 -5.000000000000000e+00 -1.477976061930760e+00 -2.596511971216483e-01 -1.220444914891065e+00 -1.109326207444154e+00 -2.067814638177317e+00 -1.890487827737763e+00 4.112683218130418e-02 -2.570495782075466e-06 -1.284945630548958e-02 -1.110398820416168e+00 -1.284945630548958e-02 -1.110398820416168e+00 -1.219829782999764e+00 -1.231463952856785e+00 -2.596466409908743e-01 -1.478104586719864e+00 89 7.881279287368625e-07 -1.478127928736863e+00 -5.000000000000000e+00 -1.478145972312103e+00 -2.597338846659399e-01 -1.220649797947722e+00 -1.110311043971341e+00 -2.068064869619024e+00 -1.891565448184655e+00 4.111697920613781e-02 -3.608715048019490e-07 -1.279232108014482e-02 -1.111557416476645e+00 -1.279232108014482e-02 -1.111557416476645e+00 -1.220843599366354e+00 -1.231715340876059e+00 -2.597392608811937e-01 -1.478164015887343e+00 90 7.884533160683737e-07 -1.478453316068374e+00 -5.000000000000000e+00 -1.478407506208078e+00 -2.597675718953556e-01 -1.220702500102766e+00 -1.110657278313379e+00 -2.068127535743979e+00 -1.891942350511147e+00 4.111365361902751e-02 9.161972059075311e-07 -1.278016343158531e-02 -1.111947241570353e+00 -1.278016343158531e-02 -1.111947241570353e+00 -1.221207020841928e+00 -1.231776649447235e+00 -2.597786577226748e-01 -1.478361696347783e+00 91 7.889555252287679e-07 -1.478955525228768e+00 -5.000000000000000e+00 -1.478889673300432e+00 -2.597654721206768e-01 -1.220655120230934e+00 -1.110715990605071e+00 -2.068066664565847e+00 -1.891996847720638e+00 4.111351410320409e-02 1.317038566724712e-06 -1.278340930352708e-02 -1.111994327530258e+00 -1.278340930352708e-02 -1.111994327530258e+00 -1.221276254895504e+00 -1.231713914614476e+00 -2.597785855658793e-01 -1.478823821372096e+00 92 7.897618230257883e-07 -1.479761823025788e+00 -5.000000000000000e+00 -1.479706265499520e+00 -2.597517039061932e-01 -1.220607935664321e+00 -1.110643809265449e+00 -2.068008017837383e+00 -1.891912142280574e+00 4.111447939602092e-02 1.111150525361961e-06 -1.278877768292628e-02 -1.111901987730324e+00 -1.278877768292627e-02 -1.111901987730324e+00 -1.221204918806044e+00 -1.231654594353537e+00 -2.597638699978033e-01 -1.479650707973252e+00 93 7.912334399196686e-07 -1.481233439919669e+00 -5.000000000000000e+00 -1.481186066689855e+00 -2.597478569171451e-01 -1.220612861117245e+00 -1.110578508577262e+00 -2.068015359514561e+00 -1.891843060095856e+00 4.111499733541964e-02 9.474645962762214e-07 -1.279144453530898e-02 -1.111829485453309e+00 -1.279144453530897e-02 -1.111829485453309e+00 -1.221135968684570e+00 -1.231662214779680e+00 -2.597587794248930e-01 -1.481138693460041e+00 94 7.937035613865689e-07 -1.483703561386569e+00 -5.000000000000000e+00 -1.483655169757834e+00 -2.597481979809432e-01 -1.220626378817609e+00 -1.110566936578222e+00 -2.068033253645810e+00 -1.891831834423826e+00 4.111500053076631e-02 9.678325746912027e-07 -1.279179315302905e-02 -1.111817768365145e+00 -1.279179315302905e-02 -1.111817768365145e+00 -1.221123297521275e+00 -1.231680183055562e+00 -2.597584764508256e-01 -1.483606778129100e+00 95 7.986438043203694e-07 -1.488643804320369e+00 -5.000000000000000e+00 -1.488594540678381e+00 -2.597433411025701e-01 -1.220623492538808e+00 -1.110582368788581e+00 -2.068031028937080e+00 -1.891845534251154e+00 4.111490328645498e-02 9.852728397709634e-07 -1.279073610181888e-02 -1.111833490385557e+00 -1.279073610181886e-02 -1.111833490385557e+00 -1.221140157028648e+00 -1.231677639484477e+00 -2.597525416778821e-01 -1.488545277036392e+00 96 8.085242901879703e-07 -1.498524290187970e+00 -5.000000000000000e+00 -1.498475333401408e+00 -2.597347096521599e-01 -1.220615608978513e+00 -1.110602349216755e+00 -2.068023311118219e+00 -1.891862263194453e+00 4.111480951193294e-02 9.791357312499346e-07 -1.278931667003707e-02 -1.111853135061531e+00 -1.278931667003705e-02 -1.111853135061531e+00 -1.221162269800520e+00 -1.231669439401363e+00 -2.597421435108971e-01 -1.498426376614845e+00 97 8.282852619231723e-07 -1.518285261923172e+00 -5.000000000000000e+00 -1.518236756799918e+00 -2.597251683800993e-01 -1.220607991581450e+00 -1.110623445829904e+00 -2.068016239220961e+00 -1.891879778804794e+00 4.111470660954592e-02 9.701024650966145e-07 -1.278763192806551e-02 -1.111874067325665e+00 -1.278763192806551e-02 -1.111874067325665e+00 -1.221185541814589e+00 -1.231661840825972e+00 -2.597305899911812e-01 -1.518188251676663e+00 98 8.482852619231723e-07 -1.538285261923172e+00 -5.000000000000000e+00 -1.538237284961173e+00 -2.597207196116248e-01 -1.220604942173370e+00 -1.110635456390979e+00 -2.068013591821696e+00 -1.891890189004242e+00 4.111463752263425e-02 9.595392399786538e-07 -1.278647997113795e-02 -1.111886686168791e+00 -1.278647997113793e-02 -1.111886686168791e+00 -1.221198510118952e+00 -1.231658969004451e+00 -2.597251758279094e-01 -1.538189307999174e+00 99 8.682852619231723e-07 -1.558285261923172e+00 -5.000000000000000e+00 -1.558237851155829e+00 -2.597185202993812e-01 -1.220603062257089e+00 -1.110640985589174e+00 -2.068011774242020e+00 -1.891895061155054e+00 4.111460800969287e-02 9.482153468668222e-07 -1.278592818721474e-02 -1.111892601797444e+00 -1.278592818721473e-02 -1.111892601797444e+00 -1.221204437664784e+00 -1.231657051732700e+00 -2.597225193885705e-01 -1.558190440388486e+00 100 8.882852619231723e-07 -1.578285261923172e+00 -5.000000000000000e+00 -1.578238442052988e+00 -2.597175639312469e-01 -1.220602476707358e+00 -1.110639711442451e+00 -2.068011272946366e+00 -1.891893615333208e+00 4.111462227478802e-02 9.363974036880746e-07 -1.278619902269335e-02 -1.111890720269670e+00 -1.278619902269335e-02 -1.111890720269670e+00 -1.221203279055808e+00 -1.231656527881151e+00 -2.597213517025714e-01 -1.578191622182803e+00 101 9.082852619231723e-07 -1.598285261923172e+00 -5.000000000000000e+00 -1.598239040325930e+00 -2.597170985276325e-01 -1.220602117337215e+00 -1.110638275909041e+00 -2.068010916509206e+00 -1.891892196230668e+00 4.111463547137595e-02 9.244319448438454e-07 -1.278640264662752e-02 -1.111888949192126e+00 -1.278640264662752e-02 -1.111888949192126e+00 -1.221201834186711e+00 -1.231656173525931e+00 -2.597207874866951e-01 -1.598192818728688e+00 102 9.100000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.599953809182539e+00 -2.597171344700065e-01 -1.220602503988270e+00 -1.110639371964371e+00 -2.068011412425592e+00 -1.891893322257151e+00 4.111462404704198e-02 9.238163492190227e-07 -1.278619931652377e-02 -1.111890415725747e+00 -1.278619931652378e-02 -1.111890415725747e+00 -1.221202891656257e+00 -1.231656680400684e+00 -2.597208116603179e-01 -1.599907618365078e+00 103 9.120000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.599997487858013e+00 -2.596999833775576e-01 -1.220583099413975e+00 -1.110606795155949e+00 -2.067989148766026e+00 -1.891867707995197e+00 4.111494012293208e-02 5.024283973760479e-08 -1.278872620779989e-02 -1.111859486498136e+00 -1.278872620779988e-02 -1.111859486498136e+00 -1.221166398134669e+00 -1.231635390160512e+00 -2.597003521592087e-01 -1.599994975716026e+00 104 9.160000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.600001576863455e+00 -2.596989701791445e-01 -1.220587033582431e+00 -1.110588474365040e+00 -2.067994429814005e+00 -1.891850957667199e+00 4.111504863729563e-02 -3.153726910957305e-08 -1.279032728030098e-02 -1.111839704601134e+00 -1.279032728030096e-02 -1.111839704601134e+00 -1.221146829707107e+00 -1.231640920282022e+00 -2.596988688958769e-01 -1.600003153726911e+00 105 9.240000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000083017608e+00 -2.596996692760195e-01 -1.220587312536240e+00 -1.110590499062961e+00 -2.067994672593564e+00 -1.891852582342375e+00 4.111503433908220e-02 -1.660352152640932e-09 -1.279012953002374e-02 -1.111841728992810e+00 -1.279012953002375e-02 -1.111841728992810e+00 -1.221149056997317e+00 -1.231641104035874e+00 -2.596997305225629e-01 -1.600000166035215e+00 106 9.400000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.599999990736921e+00 -2.596995499855794e-01 -1.220586475416423e+00 -1.110590839594148e+00 -2.067993605088819e+00 -1.891852851444231e+00 4.111503739352828e-02 1.852615812494851e-10 -1.279023294032772e-02 -1.111841809266484e+00 -1.279023294032770e-02 -1.111841809266484e+00 -1.221149535684629e+00 -1.231640017834445e+00 -2.596996261756227e-01 -1.599999981473842e+00 107 9.600000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000006945049e+00 -2.596995221099930e-01 -1.220586380260271e+00 -1.110593232613192e+00 -2.067993488326366e+00 -1.891855180979322e+00 4.111501933153937e-02 -1.389009835969790e-10 -1.278987806288637e-02 -1.111844791433226e+00 -1.278987806288638e-02 -1.111844791433226e+00 -1.221151932346497e+00 -1.231639898234084e+00 -2.596995963617063e-01 -1.600000013890098e+00 108 9.800000000000000e-07 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000006349917e+00 -2.596994979603637e-01 -1.220586266823098e+00 -1.110594321796087e+00 -2.067993346409048e+00 -1.891856242863145e+00 4.111501153156406e-02 -1.269983493368265e-10 -1.278972838904133e-02 -1.111846123770500e+00 -1.278972838904135e-02 -1.111846123770500e+00 -1.221153033185930e+00 -1.231639753202170e+00 -2.596995722085049e-01 -1.600000012699835e+00 109 1.000000000000000e-06 -1.600000000000000e+00 -5.000000000000000e+00 -1.600000006302634e+00 -2.596994724137738e-01 -1.220586146638818e+00 -1.110595464462583e+00 -2.067993196009735e+00 -1.891857348054565e+00 4.111500342662881e-02 -1.260526821811325e-10 -1.278956787720185e-02 -1.111847517361723e+00 -1.278956787720183e-02 -1.111847517361723e+00 -1.221154189749185e+00 -1.231639599533275e+00 -2.596995466681479e-01 -1.600000012605268e+00 0707070124062141001006440006700000000000011777770500302371500003600000000172spice3c1/examples/simplepz.intest circuit #1 for pz analysis:high pass filter r1 1 0 1k r2 2 0 1k c1 1 2 1.0e-12 .pz 1 0 2 0 cur pz .print pz all .end 0707070124062141011006440006700000000000011777770500302371500003700000000566spice3c1/examples/simplepz.out(debug printing enabled) Circuit: test circuit #1 for pz analysis:high pass filter Circuit: test circuit #1 for pz analysis:high pass filter Date: Mon May 1 17:04:13 PDT 1989 .print card ignored since rawfile was produced Total run time: 0.360 seconds. Current data size = 273376, Data limits: hard = 85950464, soft = 85950464. Time since last call: 0.010 seconds. 0707070124062141021006440006700000000000011777770500302371500003700000000551spice3c1/examples/simplepz.rawTitle: test circuit #1 for pz analysis:high pass filter Date: Mon May 1 17:04:13 PDT 1989 Plotname: pole-zero analysis Flags: complex No. Variables: 2 No. Points: 1 Command: version SPICE 3c1 Alpha test Variables: 0 pole(1) voltage 1 zero(1) voltage Values: 0 -5.000000000000000e+08,0.000000000000000e+00 0.000000000000000e+00,0.000000000000000e+00 0707070124062140470407550006700000000000021777770500302371500002200000000000spice3c1/examples0707070124060340461006440006700000000000011777770500302371500004100000001603spice3c1/spice3/include/acdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef ACDEFS #define ACDEFS "ACdefs.h $Revision: 1.3 $ on $Date: 88/11/16 21:53:40 $ " #include "jobdefs.h" /* structure used to describe an AC analysis to be performed */ typedef struct { int JOBtype; JOB *JOBnextJob; /* pointer to next thing to do */ char *JOBname; /* name of this job */ double ACstartFreq; double ACstopFreq; double ACfreqDelta; /* multiplier for decade/octave stepping, */ /* step for linear steps. */ double ACsaveFreq; /* frequency at which we left off last time*/ int ACstepType; /* values described below */ int ACnumberSteps; } ACAN; /* available step types: */ #define DECADE 1 #define OCTAVE 2 #define LINEAR 3 #define AC_DEC 1 #define AC_OCT 2 #define AC_LIN 3 #define AC_START 4 #define AC_STOP 5 #define AC_STEPS 6 #endif /*ACDEFS*/ 0707070124060340471006440006700000000000011777770500302371500004300000005747spice3c1/spice3/include/asrcdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef ASRC #define ASRC "ASRCdefs.h $Revision: 1.2 $ on $Date: 88/11/17 02:34:30 $ " #include "cktdefs.h" #include "ifsim.h" #include "complex.h" /* * structures to describe Arbitrary sources */ /* information to describe a single instance */ typedef struct sASRCinstance { struct sASRCmodel *ARRCmodPtr; /* backpointer to model */ struct sASRCinstance *ASRCnextInstance; /* pointer to next instance of *current model*/ IFuid ASRCname; /* pointer to character string naming this instance */ int ASRCposNode; /* number of positive node of source */ int ASRCnegNode; /* number of negative node of source */ int ASRCtype; /* Whether source is voltage or current */ int ASRCbranch; /* number of branch equation added for v source */ IFparseTree *ASRCtree; /* The parse tree */ double **ASRCposptr; /* pointer to pointers of the elements * in the sparce matrix */ double ASRCprev_value; /* Previous value for the convergence test */ double *ASRCacValues; /* Store rhs and derivatives for ac anal */ int ASRCcont_br; /* Temporary store for controlling current branch */ int ASRCstates; /* state info */ #define ASRCvOld ASRCstates #define ASRCcontVOld ASRCstates + 1 } ASRCinstance ; /* per model data */ typedef struct sASRCmodel { /* model structure for a source */ int ASRCmodType; /* type index of this device */ struct sASRCmodel *ASRCnextModel; /* pointer to next possible model *in linked list */ ASRCinstance * ASRCinstances; /* pointer to list of instances * that have this model */ IFuid ASRCmodName; /* pointer to character string naming this model */ } ASRCmodel; /* device parameters */ #define ASRC_VOLTAGE 1 #define ASRC_CURRENT 2 #define ASRC_POS_NODE 3 #define ASRC_NEG_NODE 4 #define ASRC_PARSE_TREE 5 /* model parameters */ /* device questions */ /* model questions */ #ifdef __STDC__ extern int ASRCask(CKTcircuit*,GENinstance *,int,IFvalue *,IFvalue*); extern int ASRCconvTest(GENmodel *,CKTcircuit*); extern int ASRCdelete(GENmodel *,IFuid,GENinstance **); extern void ASRCdestroy(GENmodel**); extern int ASRCfindBr(CKTcircuit *,GENmodel *,IFuid); extern int ASRCload(GENmodel *,CKTcircuit*); extern int ASRCmDelete(GENmodel**,IFuid,GENmodel*); extern int ASRCparam(int,IFvalue*,GENinstance*,IFvalue*); extern int ASRCpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int ASRCacLoad(GENmodel*,CKTcircuit*); extern int ASRCsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int ASRCask(); extern int ASRCconvTest(); extern int ASRCdelete(); extern void ASRCdestroy(); extern int ASRCfindBr(); extern int ASRCload(); extern int ASRCmDelete(); extern int ASRCparam(); extern int ASRCpzLoad(); extern int ASRCacLoad(); extern int ASRCsetup(); #endif /* stdc */ #endif /*ASRC*/ 0707070124060340501006440006700000000000011777770500302371500004200000037726spice3c1/spice3/include/bjtdefs.h /* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef BJT #define BJT "BJTdefs.h $Revision: 1.6 $ on $Date: 88/11/17 02:34:34 $ " #include "cktdefs.h" #include "ifsim.h" #include "gendefs.h" #include "complex.h" /* structures to describe Bipolar Junction Transistors */ /* data needed to describe a single instance */ typedef struct sBJTinstance { struct sBJTmodel *BJTmodPtr; /* backpointer to model */ struct sBJTinstance *BJTnextInstance; /* pointer to next instance of * current model*/ IFuid BJTname; /* pointer to character string naming this instance */ int BJTcolNode; /* number of collector node of bjt */ int BJTbaseNode; /* number of base node of bjt */ int BJTemitNode; /* number of emitter node of bjt */ int BJTsubstNode; /* number of substrate node of bjt */ int BJTcolPrimeNode; /* number of internal collector node of bjt */ int BJTbasePrimeNode; /* number of internal base node of bjt */ int BJTemitPrimeNode; /* number of internal emitter node of bjt */ double BJTarea; /* area factor for the bjt */ double BJTicVBE; /* initial condition voltage B-E*/ double BJTicVCE; /* initial condition voltage C-E*/ double BJTtemp; /* instance temperature */ double BJTtSatCur; /* temperature adjusted saturation current */ double BJTtBetaF; /* temperature adjusted forward beta */ double BJTtBetaR; /* temperature adjusted reverse beta */ double BJTtBEleakCur; /* temperature adjusted B-E leakage current */ double BJTtBCleakCur; /* temperature adjusted B-C leakage current */ double BJTtBEcap; /* temperature adjusted B-E capacitance */ double BJTtBEpot; /* temperature adjusted B-E potential */ double BJTtBCcap; /* temperature adjusted B-C capacitance */ double BJTtBCpot; /* temperature adjusted B-C potential */ double BJTtDepCap; /* temperature adjusted join point in diode curve */ double BJTtf1; /* temperature adjusted polynomial coefficient */ double BJTtf4; /* temperature adjusted polynomial coefficient */ double BJTtf5; /* temperature adjusted polynomial coefficient */ double BJTtVcrit; /* temperature adjusted critical voltage */ double *BJTcolColPrimePtr; /* pointer to sparse matrix at * (collector,collector prime) */ double *BJTbaseBasePrimePtr; /* pointer to sparse matrix at * (base,base prime) */ double *BJTemitEmitPrimePtr; /* pointer to sparse matrix at * (emitter,emitter prime) */ double *BJTcolPrimeColPtr; /* pointer to sparse matrix at * (collector prime,collector) */ double *BJTcolPrimeBasePrimePtr; /* pointer to sparse matrix at * (collector prime,base prime) */ double *BJTcolPrimeEmitPrimePtr; /* pointer to sparse matrix at * (collector prime,emitter prime) */ double *BJTbasePrimeBasePtr; /* pointer to sparse matrix at * (base prime,base ) */ double *BJTbasePrimeColPrimePtr; /* pointer to sparse matrix at * (base prime,collector prime) */ double *BJTbasePrimeEmitPrimePtr; /* pointer to sparse matrix at * (base primt,emitter prime) */ double *BJTemitPrimeEmitPtr; /* pointer to sparse matrix at * (emitter prime,emitter) */ double *BJTemitPrimeColPrimePtr; /* pointer to sparse matrix at * (emitter prime,collector prime) */ double *BJTemitPrimeBasePrimePtr; /* pointer to sparse matrix at * (emitter prime,base prime) */ double *BJTcolColPtr; /* pointer to sparse matrix at * (collector,collector) */ double *BJTbaseBasePtr; /* pointer to sparse matrix at * (base,base) */ double *BJTemitEmitPtr; /* pointer to sparse matrix at * (emitter,emitter) */ double *BJTcolPrimeColPrimePtr; /* pointer to sparse matrix at * (collector prime,collector prime) */ double *BJTbasePrimeBasePrimePtr; /* pointer to sparse matrix at * (base prime,base prime) */ double *BJTemitPrimeEmitPrimePtr; /* pointer to sparse matrix at * (emitter prime,emitter prime) */ double *BJTsubstSubstPtr; /* pointer to sparse matrix at * (substrate,substrate) */ double *BJTcolPrimeSubstPtr; /* pointer to sparse matrix at * (collector prime,substrate) */ double *BJTsubstColPrimePtr; /* pointer to sparse matrix at * (substrate,collector prime) */ double *BJTbaseColPrimePtr; /* pointer to sparse matrix at * (base,collector prime) */ double *BJTcolPrimeBasePtr; /* pointer to sparse matrix at * (collector prime,base) */ int BJTstate; /* pointer to start of state vector for bjt */ /* entries in the state vector for bjt: */ #define BJTvbe BJTstate #define BJTvbc BJTstate+1 #define BJTcc BJTstate+2 #define BJTcb BJTstate+3 #define BJTgpi BJTstate+4 #define BJTgmu BJTstate+5 #define BJTgm BJTstate+6 #define BJTgo BJTstate+7 #define BJTqbe BJTstate+8 #define BJTcqbe BJTstate+9 #define BJTqbc BJTstate+10 #define BJTcqbc BJTstate+11 #define BJTqcs BJTstate+12 #define BJTcqcs BJTstate+13 #define BJTqbx BJTstate+14 #define BJTcqbx BJTstate+15 #define BJTgx BJTstate+16 #define BJTcexbc BJTstate+17 #define BJTgeqcb BJTstate+18 #define BJTgccs BJTstate+19 #define BJTgeqbx BJTstate+20 #define BJTnumStates 21 #define BJTsensxpbe BJTstate+21 /* charge sensitivities and their derivatives. +22 for the derivatives - pointer to the beginning of the array */ #define BJTsensxpbc BJTstate+23 #define BJTsensxpcs BJTstate+25 #define BJTsensxpbx BJTstate+27 #define BJTnumSenStates 8 unsigned BJToff :1; /* 'off' flag for bjt */ unsigned BJTtempGiven :1; /* temperature given for bjt instance*/ unsigned BJTareaGiven :1; /* flag to indicate area was specified */ unsigned BJTicVBEGiven :1; /* flag to indicate VBE init. cond. given */ unsigned BJTicVCEGiven :1; /* flag to indicate VCE init. cond. given */ unsigned BJTsenPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ int BJTsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ double BJTcapbe; double BJTcapbc; double BJTcapcs; double BJTcapbx; double *BJTsens; #define BJTsenGpi BJTsens /* stores the perturbed values of gpi */ #define BJTsenGmu BJTsens+5 /* stores the perturbed values of gmu */ #define BJTsenGm BJTsens+10 /* stores the perturbed values of gm */ #define BJTsenGo BJTsens+15 /* stores the perturbed values of go */ #define BJTsenGx BJTsens+20 /* stores the perturbed values of gx */ #define BJTsenCpi BJTsens+25 /* stores the perturbed values of cpi */ #define BJTsenCmu BJTsens+30 /* stores the perturbed values of cmu */ #define BJTsenCbx BJTsens+35 /* stores the perturbed values of cbx */ #define BJTsenCmcb BJTsens+40 /* stores the perturbed values of cmcb */ #define BJTsenCcs BJTsens+45 /* stores the perturbed values of ccs */ #define BJTdphibedp BJTsens+51 #define BJTdphibcdp BJTsens+52 #define BJTdphicsdp BJTsens+53 #define BJTdphibxdp BJTsens+54 } BJTinstance ; /* per model data */ typedef struct sBJTmodel { /* model structure for a bjt */ int BJTmodType; /* type index of this device type */ struct sBJTmodel *BJTnextModel; /* pointer to next possible model in * linked list */ BJTinstance * BJTinstances; /* pointer to list of instances * that have this model */ IFuid BJTmodName; /* pointer to character string naming this model */ int BJTtype; double BJTtnom; /* nominal temperature */ double BJTsatCur; /* input - don't use */ double BJTbetaF; /* input - don't use */ double BJTemissionCoeffF; double BJTearlyVoltF; double BJTrollOffF; double BJTleakBEcurrent; /* input - don't use */ double BJTc2; double BJTleakBEemissionCoeff; double BJTbetaR; /* input - don't use */ double BJTemissionCoeffR; double BJTearlyVoltR; double BJTrollOffR; double BJTleakBCcurrent; /* input - don't use */ double BJTc4; double BJTleakBCemissionCoeff; double BJTbaseResist; double BJTbaseCurrentHalfResist; double BJTminBaseResist; double BJTemitterResist; double BJTcollectorResist; double BJTdepletionCapBE; /* input - don't use */ double BJTpotentialBE; /* input - don't use */ double BJTjunctionExpBE; double BJTtransitTimeF; double BJTtransitTimeBiasCoeffF; double BJTtransitTimeFVBC; double BJTtransitTimeHighCurrentF; double BJTexcessPhase; double BJTdepletionCapBC; /* input - don't use */ double BJTpotentialBC; /* input - don't use */ double BJTjunctionExpBC; double BJTbaseFractionBCcap; double BJTtransitTimeR; double BJTcapCS; double BJTpotentialSubstrate; double BJTexponentialSubstrate; double BJTbetaExp; double BJTenergyGap; double BJTtempExpIS; double BJTdepletionCapCoeff; double BJTinvEarlyVoltF; /* inverse of BJTearlyVoltF */ double BJTinvEarlyVoltR; /* inverse of BJTearlyVoltR */ double BJTinvRollOffF; /* inverse of BJTrollOffF */ double BJTinvRollOffR; /* inverse of BJTrollOffR */ double BJTcollectorConduct; /* collector conductance */ double BJTemitterConduct; /* emitter conductance */ double BJTtransitTimeVBCFactor; /* */ double BJTexcessPhaseFactor; double BJTf2; double BJTf3; double BJTf6; double BJTf7; unsigned BJTtnomGiven : 1; unsigned BJTsatCurGiven : 1; unsigned BJTbetaFGiven : 1; unsigned BJTemissionCoeffFGiven : 1; unsigned BJTearlyVoltFGiven : 1; unsigned BJTrollOffFGiven : 1; unsigned BJTleakBEcurrentGiven : 1; unsigned BJTc2Given : 1; unsigned BJTleakBEemissionCoeffGiven : 1; unsigned BJTbetaRGiven : 1; unsigned BJTemissionCoeffRGiven : 1; unsigned BJTearlyVoltRGiven : 1; unsigned BJTrollOffRGiven : 1; unsigned BJTleakBCcurrentGiven : 1; unsigned BJTc4Given : 1; unsigned BJTleakBCemissionCoeffGiven : 1; unsigned BJTbaseResistGiven : 1; unsigned BJTbaseCurrentHalfResistGiven : 1; unsigned BJTminBaseResistGiven : 1; unsigned BJTemitterResistGiven : 1; unsigned BJTcollectorResistGiven : 1; unsigned BJTdepletionCapBEGiven : 1; unsigned BJTpotentialBEGiven : 1; unsigned BJTjunctionExpBEGiven : 1; unsigned BJTtransitTimeFGiven : 1; unsigned BJTtransitTimeBiasCoeffFGiven : 1; unsigned BJTtransitTimeFVBCGiven : 1; unsigned BJTtransitTimeHighCurrentFGiven : 1; unsigned BJTexcessPhaseGiven : 1; unsigned BJTdepletionCapBCGiven : 1; unsigned BJTpotentialBCGiven : 1; unsigned BJTjunctionExpBCGiven : 1; unsigned BJTbaseFractionBCcapGiven : 1; unsigned BJTtransitTimeRGiven : 1; unsigned BJTcapCSGiven : 1; unsigned BJTpotentialSubstrateGiven : 1; unsigned BJTexponentialSubstrateGiven : 1; unsigned BJTbetaExpGiven : 1; unsigned BJTenergyGapGiven : 1; unsigned BJTtempExpISGiven : 1; unsigned BJTdepletionCapCoeffGiven : 1; } BJTmodel; #ifndef NPN #define NPN 1 #define PNP -1 #endif /*NPN*/ /* device parameters */ #define BJT_AREA 1 #define BJT_OFF 2 #define BJT_IC_VBE 3 #define BJT_IC_VCE 4 #define BJT_IC 5 #define BJT_AREA_SENS 6 #define BJT_TEMP 7 /* model parameters */ #define BJT_MOD_NPN 101 #define BJT_MOD_PNP 102 #define BJT_MOD_IS 103 #define BJT_MOD_BF 104 #define BJT_MOD_NF 105 #define BJT_MOD_VAF 206 #define BJT_MOD_IKF 107 #define BJT_MOD_ISE 108 #define BJT_MOD_C2 109 #define BJT_MOD_NE 110 #define BJT_MOD_BR 111 #define BJT_MOD_NR 112 #define BJT_MOD_VAR 113 #define BJT_MOD_IKR 114 #define BJT_MOD_ISC 115 #define BJT_MOD_C4 116 #define BJT_MOD_NC 117 #define BJT_MOD_RB 118 #define BJT_MOD_IRB 119 #define BJT_MOD_RBM 120 #define BJT_MOD_RE 121 #define BJT_MOD_RC 122 #define BJT_MOD_CJE 123 #define BJT_MOD_VJE 124 #define BJT_MOD_MJE 125 #define BJT_MOD_TF 126 #define BJT_MOD_XTF 127 #define BJT_MOD_VTF 128 #define BJT_MOD_ITF 129 #define BJT_MOD_PTF 130 #define BJT_MOD_CJC 131 #define BJT_MOD_VJC 132 #define BJT_MOD_MJC 133 #define BJT_MOD_XCJC 134 #define BJT_MOD_TR 135 #define BJT_MOD_CJS 136 #define BJT_MOD_VJS 137 #define BJT_MOD_MJS 138 #define BJT_MOD_XTB 139 #define BJT_MOD_EG 140 #define BJT_MOD_XTI 141 #define BJT_MOD_FC 142 #define BJT_MOD_TNOM 143 /* device questions */ #define BJT_QUEST_FT 201 #define BJT_QUEST_COLNODE 202 #define BJT_QUEST_BASENODE 203 #define BJT_QUEST_EMITNODE 204 #define BJT_QUEST_SUBSTNODE 205 #define BJT_QUEST_COLPRIMENODE 206 #define BJT_QUEST_BASEPRIMENODE 207 #define BJT_QUEST_EMITPRIMENODE 208 #define BJT_QUEST_VBE 209 #define BJT_QUEST_VBC 210 #define BJT_QUEST_CC 211 #define BJT_QUEST_CB 212 #define BJT_QUEST_GPI 213 #define BJT_QUEST_GMU 214 #define BJT_QUEST_GM 215 #define BJT_QUEST_GO 216 #define BJT_QUEST_QBE 217 #define BJT_QUEST_CQBE 218 #define BJT_QUEST_QBC 219 #define BJT_QUEST_CQBC 220 #define BJT_QUEST_QCS 221 #define BJT_QUEST_CQCS 222 #define BJT_QUEST_QBX 223 #define BJT_QUEST_CQBX 224 #define BJT_QUEST_GX 225 #define BJT_QUEST_CEXBC 226 #define BJT_QUEST_GEQCB 227 #define BJT_QUEST_GCCS 228 #define BJT_QUEST_GEQBX 229 #define BJT_QUEST_SENS_REAL 230 #define BJT_QUEST_SENS_IMAG 231 #define BJT_QUEST_SENS_MAG 232 #define BJT_QUEST_SENS_PH 233 #define BJT_QUEST_SENS_CPLX 234 #define BJT_QUEST_SENS_DC 235 #define BJT_QUEST_CE 236 #define BJT_QUEST_CS 237 #define BJT_QUEST_POWER 238 /* model questions */ #define BJT_MOD_INVEARLYF 301 #define BJT_MOD_INVEARLYR 302 #define BJT_MOD_INVROLLOFFF 303 #define BJT_MOD_INVROLLOFFR 304 #define BJT_MOD_COLCONDUCT 305 #define BJT_MOD_EMITTERCONDUCT 306 #define BJT_MOD_TRANSVBCFACT 307 #define BJT_MOD_EXCESSPHASEFACTOR 308 #ifdef __STDC__ extern int BJTacLoad(GENmodel *,CKTcircuit*); extern int BJTask(CKTcircuit *,GENinstance*,int,IFvalue*,IFvalue*); extern int BJTconvTest(GENmodel*,CKTcircuit*); extern int BJTdelete(GENmodel*,IFuid,GENinstance**); extern void BJTdestroy(GENmodel**); extern int BJTgetic(GENmodel*,CKTcircuit*); extern int BJTload(GENmodel*,CKTcircuit*); extern int BJTmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int BJTmDelete(GENmodel**,IFuid,GENmodel*); extern int BJTmParam(int,IFvalue*,GENmodel*); extern int BJTparam(int,IFvalue*,GENinstance*,IFvalue*); extern int BJTpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int BJTsAcLoad(GENmodel*,CKTcircuit*); extern int BJTsLoad(GENmodel*,CKTcircuit*); extern void BJTsPrint(GENmodel*,CKTcircuit*); extern int BJTsSetup(SENstruct*,GENmodel*); extern int BJTsUpdate(GENmodel*,CKTcircuit*); extern int BJTsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int BJTtemp(GENmodel*,CKTcircuit*); extern int BJTtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int BJTacLoad(); extern int BJTask(); extern int BJTconvTest(); extern int BJTdelete(); extern void BJTdestroy(); extern int BJTgetic(); extern int BJTload(); extern int BJTmAsk(); extern int BJTmDelete(); extern int BJTmParam(); extern int BJTparam(); extern int BJTpzLoad(); extern int BJTsAcLoad(); extern int BJTsLoad(); extern void BJTsPrint(); extern int BJTsSetup(); extern int BJTsUpdate(); extern int BJTsetup(); extern int BJTtemp(); extern int BJTtrunc(); #endif /* stdc */ #endif /*BJT*/ 0707070124060340511006440006700000000000011777770500302371600004300000047251spice3c1/spice3/include/bsimdefs.h/* * Copyright (c) 1985 Hong June Park, Thomas L. Quarles */ #ifndef BSIM #define BSIM "BSIMdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:34:39 $ " #include "ifsim.h" #include "gendefs.h" #include "cktdefs.h" #include "complex.h" /* declarations for BSIM MOSFETs */ /* information needed for each instance */ typedef struct sBSIMinstance { struct sBSIMmodel *BSIMmodPtr; /* pointer to model */ struct sBSIMinstance *BSIMnextInstance; /* pointer to next instance of *current model*/ IFuid BSIMname; /* pointer to character string naming this instance */ int BSIMdNode; /* number of the gate node of the mosfet */ int BSIMgNode; /* number of the gate node of the mosfet */ int BSIMsNode; /* number of the source node of the mosfet */ int BSIMbNode; /* number of the bulk node of the mosfet */ int BSIMdNodePrime; /* number of the internal drain node of the mosfet */ int BSIMsNodePrime; /* number of the internal source node of the mosfet */ double BSIMl; /* the length of the channel region */ double BSIMw; /* the width of the channel region */ double BSIMdrainArea; /* the area of the drain diffusion */ double BSIMsourceArea; /* the area of the source diffusion */ double BSIMdrainSquares; /* the length of the drain in squares */ double BSIMsourceSquares; /* the length of the source in squares */ double BSIMdrainPerimeter; double BSIMsourcePerimeter; double BSIMsourceConductance; /*conductance of source(or 0):set in setup*/ double BSIMdrainConductance; /*conductance of drain(or 0):set in setup*/ double BSIMicVBS; /* initial condition B-S voltage */ double BSIMicVDS; /* initial condition D-S voltage */ double BSIMicVGS; /* initial condition G-S voltage */ double BSIMvon; double BSIMvdsat; int BSIMoff; /* non-zero to indicate device is off for dc analysis*/ int BSIMmode; /* device mode : 1 = normal, -1 = inverse */ double BSIMvfb; /* flat band voltage at given L and W */ double BSIMphi; /* surface potential at strong inversion */ double BSIMK1; /* bulk effect coefficient 1 */ double BSIMK2; /* bulk effect coefficient 2 */ double BSIMeta; /* drain induced barrier lowering */ double BSIMetaB; /* Vbs dependence of Eta */ double BSIMetaD; /* Vds dependence of Eta */ double BSIMbetaZero; /* Beta at vds = 0 and vgs = Vth */ double BSIMbetaZeroB; /* Vbs dependence of BetaZero */ double BSIMbetaVdd; /* Beta at vds=Vdd and vgs=Vth */ double BSIMbetaVddB; /* Vbs dependence of BetaVdd */ double BSIMbetaVddD; /* Vds dependence of BetaVdd */ double BSIMugs; /* Mobility degradation due to gate field*/ double BSIMugsB; /* Vbs dependence of Ugs */ double BSIMuds; /* Drift Velocity Saturation due to Vds */ double BSIMudsB; /* Vbs dependence of Uds */ double BSIMudsD; /* Vds dependence of Uds */ double BSIMsubthSlope; /* slope of subthreshold current with Vgs*/ double BSIMsubthSlopeB; /* Vbs dependence of Subthreshold Slope */ double BSIMsubthSlopeD; /* Vds dependence of Subthreshold Slope */ double BSIMGDoverlapCap;/* Gate Drain Overlap Capacitance */ double BSIMGSoverlapCap;/* Gate Source Overlap Capacitance */ double BSIMGBoverlapCap;/* Gate Bulk Overlap Capacitance */ double BSIMvt0; double BSIMvdd; /* Supply Voltage */ double BSIMtemp; double BSIMoxideThickness; double BSIMchannelChargePartitionFlag; unsigned BSIMlGiven :1; unsigned BSIMwGiven :1; unsigned BSIMdrainAreaGiven :1; unsigned BSIMsourceAreaGiven :1; unsigned BSIMdrainSquaresGiven :1; unsigned BSIMsourceSquaresGiven :1; unsigned BSIMdrainPerimeterGiven :1; unsigned BSIMsourcePerimeterGiven :1; unsigned BSIMdNodePrimeSet :1; unsigned BSIMsNodePrimeSet :1; unsigned BSIMicVBSGiven :1; unsigned BSIMicVDSGiven :1; unsigned BSIMicVGSGiven :1; unsigned BSIMvonGiven :1; unsigned BSIMvdsatGiven :1; double *BSIMDdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *BSIMGgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *BSIMSsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *BSIMBbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *BSIMDPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *BSIMSPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *BSIMDdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *BSIMGbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *BSIMGdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *BSIMGspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *BSIMSspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *BSIMBdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *BSIMBspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *BSIMDPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *BSIMDPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *BSIMBgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *BSIMDPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *BSIMSPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *BSIMSPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *BSIMDPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *BSIMSPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *BSIMSPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int BSIMstates; /* index into state table for this device */ #define BSIMvbd BSIMstates+ 0 #define BSIMvbs BSIMstates+ 1 #define BSIMvgs BSIMstates+ 2 #define BSIMvds BSIMstates+ 3 #define BSIMcd BSIMstates+ 4 #define BSIMid BSIMstates+ 4 #define BSIMcbs BSIMstates+ 5 #define BSIMibs BSIMstates+ 5 #define BSIMcbd BSIMstates+ 6 #define BSIMibd BSIMstates+ 6 #define BSIMgm BSIMstates+ 7 #define BSIMgds BSIMstates+ 8 #define BSIMgmbs BSIMstates+ 9 #define BSIMgbd BSIMstates+ 10 #define BSIMgbs BSIMstates+ 11 #define BSIMqb BSIMstates+ 12 #define BSIMcqb BSIMstates+ 13 #define BSIMiqb BSIMstates+ 13 #define BSIMqg BSIMstates+ 14 #define BSIMcqg BSIMstates+ 15 #define BSIMiqg BSIMstates+ 15 #define BSIMqd BSIMstates+ 16 #define BSIMcqd BSIMstates+ 17 #define BSIMiqd BSIMstates+ 17 #define BSIMcggb BSIMstates+ 18 #define BSIMcgdb BSIMstates+ 19 #define BSIMcgsb BSIMstates+ 20 #define BSIMcbgb BSIMstates+ 21 #define BSIMcbdb BSIMstates+ 22 #define BSIMcbsb BSIMstates+ 23 #define BSIMcapbd BSIMstates+ 24 #define BSIMiqbd BSIMstates+ 25 #define BSIMcqbd BSIMstates+ 25 #define BSIMcapbs BSIMstates+ 26 #define BSIMiqbs BSIMstates+ 27 #define BSIMcqbs BSIMstates+ 27 #define BSIMcdgb BSIMstates+ 28 #define BSIMcddb BSIMstates+ 29 #define BSIMcdsb BSIMstates+ 30 #define BSIMvono BSIMstates+ 31 #define BSIMvdsato BSIMstates+ 32 #define BSIMqbs BSIMstates+ 33 #define BSIMqbd BSIMstates+ 34 #define BSIMnumStates 35 } BSIMinstance ; /* per model data */ typedef struct sBSIMmodel { /* model structure for a resistor */ int BSIMmodType; /* type index of this device type */ struct sBSIMmodel *BSIMnextModel; /* pointer to next possible model *in linked list */ BSIMinstance * BSIMinstances; /* pointer to list of instances * that have this model */ IFuid BSIMmodName; /* pointer to character string naming this model */ int BSIMtype; /* device type : 1 = nmos, -1 = pmos */ double BSIMvfb0; double BSIMvfbL; double BSIMvfbW; double BSIMphi0; double BSIMphiL; double BSIMphiW; double BSIMK10; double BSIMK1L; double BSIMK1W; double BSIMK20; double BSIMK2L; double BSIMK2W; double BSIMeta0; double BSIMetaL; double BSIMetaW; double BSIMetaB0; double BSIMetaBl; double BSIMetaBw; double BSIMetaD0; double BSIMetaDl; double BSIMetaDw; double BSIMdeltaL; double BSIMdeltaW; double BSIMmobZero; double BSIMmobZeroB0; double BSIMmobZeroBl; double BSIMmobZeroBw ; double BSIMmobVdd0; double BSIMmobVddl; double BSIMmobVddw; double BSIMmobVddB0; double BSIMmobVddBl; double BSIMmobVddBw; double BSIMmobVddD0; double BSIMmobVddDl; double BSIMmobVddDw; double BSIMugs0; double BSIMugsL; double BSIMugsW; double BSIMugsB0; double BSIMugsBL; double BSIMugsBW; double BSIMuds0; double BSIMudsL; double BSIMudsW; double BSIMudsB0; double BSIMudsBL; double BSIMudsBW; double BSIMudsD0; double BSIMudsDL; double BSIMudsDW; double BSIMsubthSlope0; double BSIMsubthSlopeL; double BSIMsubthSlopeW; double BSIMsubthSlopeB0; double BSIMsubthSlopeBL; double BSIMsubthSlopeBW; double BSIMsubthSlopeD0; double BSIMsubthSlopeDL; double BSIMsubthSlopeDW; double BSIMoxideThickness; /* unit: micron */ double BSIMCox; /* unit: F/cm**2 */ double BSIMtemp; double BSIMvdd; double BSIMgateSourceOverlapCap; double BSIMgateDrainOverlapCap; double BSIMgateBulkOverlapCap; double BSIMchannelChargePartitionFlag; double BSIMsheetResistance; double BSIMjctSatCurDensity; double BSIMbulkJctPotential; double BSIMbulkJctBotGradingCoeff; double BSIMbulkJctSideGradingCoeff; double BSIMsidewallJctPotential; double BSIMunitAreaJctCap; double BSIMunitLengthSidewallJctCap; double BSIMdefaultWidth; double BSIMdeltaLength; unsigned BSIMvfb0Given :1; unsigned BSIMvfbLGiven :1; unsigned BSIMvfbWGiven :1; unsigned BSIMphi0Given :1; unsigned BSIMphiLGiven :1; unsigned BSIMphiWGiven :1; unsigned BSIMK10Given :1; unsigned BSIMK1LGiven :1; unsigned BSIMK1WGiven :1; unsigned BSIMK20Given :1; unsigned BSIMK2LGiven :1; unsigned BSIMK2WGiven :1; unsigned BSIMeta0Given :1; unsigned BSIMetaLGiven :1; unsigned BSIMetaWGiven :1; unsigned BSIMetaB0Given :1; unsigned BSIMetaBlGiven :1; unsigned BSIMetaBwGiven :1; unsigned BSIMetaD0Given :1; unsigned BSIMetaDlGiven :1; unsigned BSIMetaDwGiven :1; unsigned BSIMdeltaLGiven :1; unsigned BSIMdeltaWGiven :1; unsigned BSIMmobZeroGiven :1; unsigned BSIMmobZeroB0Given :1; unsigned BSIMmobZeroBlGiven :1; unsigned BSIMmobZeroBwGiven :1; unsigned BSIMmobVdd0Given :1; unsigned BSIMmobVddlGiven :1; unsigned BSIMmobVddwGiven :1; unsigned BSIMmobVddB0Given :1; unsigned BSIMmobVddBlGiven :1; unsigned BSIMmobVddBwGiven :1; unsigned BSIMmobVddD0Given :1; unsigned BSIMmobVddDlGiven :1; unsigned BSIMmobVddDwGiven :1; unsigned BSIMugs0Given :1; unsigned BSIMugsLGiven :1; unsigned BSIMugsWGiven :1; unsigned BSIMugsB0Given :1; unsigned BSIMugsBLGiven :1; unsigned BSIMugsBWGiven :1; unsigned BSIMuds0Given :1; unsigned BSIMudsLGiven :1; unsigned BSIMudsWGiven :1; unsigned BSIMudsB0Given :1; unsigned BSIMudsBLGiven :1; unsigned BSIMudsBWGiven :1; unsigned BSIMudsD0Given :1; unsigned BSIMudsDLGiven :1; unsigned BSIMudsDWGiven :1; unsigned BSIMsubthSlope0Given :1; unsigned BSIMsubthSlopeLGiven :1; unsigned BSIMsubthSlopeWGiven :1; unsigned BSIMsubthSlopeB0Given :1; unsigned BSIMsubthSlopeBLGiven :1; unsigned BSIMsubthSlopeBWGiven :1; unsigned BSIMsubthSlopeD0Given :1; unsigned BSIMsubthSlopeDLGiven :1; unsigned BSIMsubthSlopeDWGiven :1; unsigned BSIMoxideThicknessGiven :1; unsigned BSIMtempGiven :1; unsigned BSIMvddGiven :1; unsigned BSIMgateSourceOverlapCapGiven :1; unsigned BSIMgateDrainOverlapCapGiven :1; unsigned BSIMgateBulkOverlapCapGiven :1; unsigned BSIMchannelChargePartitionFlagGiven :1; unsigned BSIMsheetResistanceGiven :1; unsigned BSIMjctSatCurDensityGiven :1; unsigned BSIMbulkJctPotentialGiven :1; unsigned BSIMbulkJctBotGradingCoeffGiven :1; unsigned BSIMsidewallJctPotentialGiven :1; unsigned BSIMbulkJctSideGradingCoeffGiven :1; unsigned BSIMunitAreaJctCapGiven :1; unsigned BSIMunitLengthSidewallJctCapGiven :1; unsigned BSIMdefaultWidthGiven :1; unsigned BSIMdeltaLengthGiven :1; unsigned BSIMtypeGiven :1; } BSIMmodel; #ifndef NMOS #define NMOS 1 #define PMOS -1 #endif /*NMOS*/ /* device parameters */ #define BSIM_W 1 #define BSIM_L 2 #define BSIM_AS 3 #define BSIM_AD 4 #define BSIM_PS 5 #define BSIM_PD 6 #define BSIM_NRS 7 #define BSIM_NRD 8 #define BSIM_OFF 9 #define BSIM_IC_VBS 10 #define BSIM_IC_VDS 11 #define BSIM_IC_VGS 12 #define BSIM_IC 13 /* model parameters */ #define BSIM_MOD_VFB0 101 #define BSIM_MOD_VFBL 102 #define BSIM_MOD_VFBW 103 #define BSIM_MOD_PHI0 104 #define BSIM_MOD_PHIL 105 #define BSIM_MOD_PHIW 106 #define BSIM_MOD_K10 107 #define BSIM_MOD_K1L 108 #define BSIM_MOD_K1W 109 #define BSIM_MOD_K20 110 #define BSIM_MOD_K2L 111 #define BSIM_MOD_K2W 112 #define BSIM_MOD_ETA0 113 #define BSIM_MOD_ETAL 114 #define BSIM_MOD_ETAW 115 #define BSIM_MOD_ETAB0 116 #define BSIM_MOD_ETABL 117 #define BSIM_MOD_ETABW 118 #define BSIM_MOD_ETAD0 119 #define BSIM_MOD_ETADL 120 #define BSIM_MOD_ETADW 121 #define BSIM_MOD_DELTAL 122 #define BSIM_MOD_DELTAW 123 #define BSIM_MOD_MOBZERO 124 #define BSIM_MOD_MOBZEROB0 125 #define BSIM_MOD_MOBZEROBL 126 #define BSIM_MOD_MOBZEROBW 127 #define BSIM_MOD_MOBVDD0 128 #define BSIM_MOD_MOBVDDL 129 #define BSIM_MOD_MOBVDDW 130 #define BSIM_MOD_MOBVDDB0 131 #define BSIM_MOD_MOBVDDBL 132 #define BSIM_MOD_MOBVDDBW 133 #define BSIM_MOD_MOBVDDD0 134 #define BSIM_MOD_MOBVDDDL 135 #define BSIM_MOD_MOBVDDDW 136 #define BSIM_MOD_UGS0 137 #define BSIM_MOD_UGSL 138 #define BSIM_MOD_UGSW 139 #define BSIM_MOD_UGSB0 140 #define BSIM_MOD_UGSBL 141 #define BSIM_MOD_UGSBW 142 #define BSIM_MOD_UDS0 143 #define BSIM_MOD_UDSL 144 #define BSIM_MOD_UDSW 145 #define BSIM_MOD_UDSB0 146 #define BSIM_MOD_UDSBL 147 #define BSIM_MOD_UDSBW 148 #define BSIM_MOD_UDSD0 149 #define BSIM_MOD_UDSDL 150 #define BSIM_MOD_UDSDW 151 #define BSIM_MOD_N00 152 #define BSIM_MOD_N0L 153 #define BSIM_MOD_N0W 154 #define BSIM_MOD_NB0 155 #define BSIM_MOD_NBL 156 #define BSIM_MOD_NBW 157 #define BSIM_MOD_ND0 158 #define BSIM_MOD_NDL 159 #define BSIM_MOD_NDW 160 #define BSIM_MOD_TOX 161 #define BSIM_MOD_TEMP 162 #define BSIM_MOD_VDD 163 #define BSIM_MOD_CGSO 164 #define BSIM_MOD_CGDO 165 #define BSIM_MOD_CGBO 166 #define BSIM_MOD_XPART 167 #define BSIM_MOD_RSH 168 #define BSIM_MOD_JS 169 #define BSIM_MOD_PB 170 #define BSIM_MOD_MJ 171 #define BSIM_MOD_PBSW 172 #define BSIM_MOD_MJSW 173 #define BSIM_MOD_CJ 174 #define BSIM_MOD_CJSW 175 #define BSIM_MOD_DEFWIDTH 176 #define BSIM_MOD_DELLENGTH 177 #define BSIM_MOD_NMOS 178 #define BSIM_MOD_PMOS 179 /* device questions */ #define BSIM_DNODE 201 #define BSIM_GNODE 202 #define BSIM_SNODE 203 #define BSIM_BNODE 204 #define BSIM_DNODEPRIME 205 #define BSIM_SNODEPRIME 206 #define BSIM_VBD 207 #define BSIM_VBS 208 #define BSIM_VGS 209 #define BSIM_VDS 210 #define BSIM_CD 211 #define BSIM_CBS 212 #define BSIM_CBD 213 #define BSIM_GM 214 #define BSIM_GDS 215 #define BSIM_GMBS 216 #define BSIM_GBD 217 #define BSIM_GBS 218 #define BSIM_QB 219 #define BSIM_CQB 220 #define BSIM_QG 221 #define BSIM_CQG 222 #define BSIM_QD 223 #define BSIM_CQD 224 #define BSIM_CGG 225 #define BSIM_CGD 226 #define BSIM_CGS 227 #define BSIM_CBG 228 #define BSIM_CAPBD 231 #define BSIM_CQBD 232 #define BSIM_CAPBS 233 #define BSIM_CQBS 234 #define BSIM_CDG 235 #define BSIM_CDD 236 #define BSIM_CDS 237 #define BSIM_VON 238 #define BSIM_QBS 239 #define BSIM_QBD 240 #define BSIM_SOURCECONDUCT 241 #define BSIM_DRAINCONDUCT 242 /* model questions */ #ifdef __STDC__ extern int BSIMacLoad(GENmodel *,CKTcircuit*); extern int BSIMask(CKTcircuit *,GENinstance*,int,IFvalue*,IFvalue*); extern int BSIMconvTest(GENmodel *,CKTcircuit*); extern int BSIMdelete(GENmodel*,IFuid,GENinstance**); extern void BSIMdestroy(GENmodel**); extern void BSIMevaluate(double,double,double,BSIMinstance*,BSIMmodel*, double*,double*,double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, CKTcircuit*); extern int BSIMgetic(GENmodel*,CKTcircuit*); extern int BSIMload(GENmodel*,CKTcircuit*); extern int BSIMmAsk(CKTcircuit*,GENmodel *,int, IFvalue*); extern int BSIMmDelete(GENmodel**,IFuid,GENmodel*); extern int BSIMmParam(int,IFvalue*,GENmodel*); extern void BSIMmosCap(CKTcircuit*, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*); extern int BSIMparam(int,IFvalue*,GENinstance*,IFvalue*); extern int BSIMpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int BSIMsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int BSIMtemp(GENmodel*,CKTcircuit*); extern int BSIMtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int BSIMacLoad(); extern int BSIMask(); extern int BSIMconvTest(); extern int BSIMdelete(); extern void BSIMdestroy(); extern void BSIMevaluate(); extern int BSIMgetic(); extern int BSIMload(); extern int BSIMmAsk(); extern int BSIMmDelete(); extern int BSIMmParam(); extern void BSIMmosCap(); extern int BSIMparam(); extern int BSIMpzLoad(); extern int BSIMsetup(); extern int BSIMtemp(); extern int BSIMtrunc(); #endif /* stdc */ #endif /*BSIM*/ 0707070124060340521006440006700000000000011777770500302371600004200000012502spice3c1/spice3/include/capdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef CAP #define CAP "CAPdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:34:44 $ " #include "ifsim.h" #include "complex.h" #include "gendefs.h" #include "cktdefs.h" /* structures used to describe capacitors */ /* information to describe each instance */ typedef struct sCAPinstance { struct sCAPmodel *CAPmodPtr; /* backpointer to model */ struct sCAPinstance *CAPnextInstance; /* pointer to next instance of * current model*/ IFuid CAPname; /* pointer to character string naming this instance */ int CAPposNode; /* number of positive node of capacitor */ int CAPnegNode; /* number of negative node of capacitor */ double CAPcapac; /* capacitance */ double CAPinitCond; /* initial capacitor voltage if specified */ double CAPwidth; /* width of the capacitor */ double CAPlength; /* length of the capacitor */ int CAPstate; /* pointer to start of capacitor state vector */ #define CAPqcap CAPstate /* charge on the capacitor */ #define CAPccap CAPstate+1 /* current through the capacitor */ #define CAPsensxp CAPstate+2 /* charge sensitivities and their derivatives. +3 for the derivatives - pointer to the beginning of the array */ double *CAPposPosptr; /* pointer to sparse matrix diagonal at * (positive,positive) */ double *CAPnegNegptr; /* pointer to sparse matrix diagonal at * (negative,negative) */ double *CAPposNegptr; /* pointer to sparse matrix offdiagonal at * (positive,negative) */ double *CAPnegPosptr; /* pointer to sparse matrix offdiagonal at * (negative,positive) */ unsigned CAPcapGiven : 1; /* flag to indicate capacitance was specified */ unsigned CAPicGiven : 1; /* flag to indicate init. cond. was specified */ unsigned CAPwidthGiven : 1; /* flag to indicate capacitor width given */ unsigned CAPlengthGiven : 1; /* flag to indicate capacitor length given*/ int CAPsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } CAPinstance ; /* data per model */ typedef struct sCAPmodel { /* model structure for a capacitor */ int CAPmodType; /* type index of this device type */ struct sCAPmodel *CAPnextModel; /* pointer to next possible model in * linked list */ CAPinstance * CAPinstances; /* pointer to list of instances that have this * model */ IFuid CAPmodName; /* pointer to character string naming this model */ double CAPcj; /* Unit Area Capacitance ( F/ M**2 ) */ double CAPcjsw; /* Unit Length Sidewall Capacitance ( F / M ) */ double CAPdefWidth; /* the default width of a capacitor */ double CAPnarrow; /* amount by which length/width are less than drawn */ unsigned CAPcjGiven : 1; /* Unit Area Capacitance ( F/ M**2 ) */ unsigned CAPcjswGiven : 1; /* Unit Length Sidewall Capacitance( F/M )*/ unsigned CAPdefWidthGiven : 1; /* flag indicates default width given*/ unsigned CAPnarrowGiven : 1; /* flag indicates narrowing factor given */ } CAPmodel; /* device parameters */ #define CAP_CAP 1 #define CAP_IC 2 #define CAP_WIDTH 3 #define CAP_LENGTH 4 #define CAP_CAP_SENS 5 #define CAP_CURRENT 6 #define CAP_POWER 7 /* model parameters */ #define CAP_MOD_CJ 101 #define CAP_MOD_CJSW 102 #define CAP_MOD_DEFWIDTH 103 #define CAP_MOD_C 104 #define CAP_MOD_NARROW 105 /* device questions */ #define CAP_QUEST_SENS_REAL 201 #define CAP_QUEST_SENS_IMAG 202 #define CAP_QUEST_SENS_MAG 203 #define CAP_QUEST_SENS_PH 204 #define CAP_QUEST_SENS_CPLX 205 #define CAP_QUEST_SENS_DC 206 #ifdef __STDC__ extern int CAPacLoad(GENmodel*,CKTcircuit*); extern int CAPask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int CAPdelete(GENmodel*,IFuid,GENinstance**); extern void CAPdestroy(GENmodel**); extern int CAPgetic(GENmodel*,CKTcircuit*); extern int CAPload(GENmodel*,CKTcircuit*); extern int CAPmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int CAPmDelete(GENmodel**,IFuid,GENmodel*); extern int CAPmParam(int,IFvalue*,GENmodel*); extern int CAPparam(int,IFvalue*,GENinstance*,IFvalue*); extern int CAPpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int CAPsAcLoad(GENmodel*,CKTcircuit*); extern int CAPsLoad(GENmodel*,CKTcircuit*); extern void CAPsPrint(GENmodel*,CKTcircuit*); extern int CAPsSetup(SENstruct *,GENmodel*); extern int CAPsUpdate(GENmodel*,CKTcircuit*); extern int CAPsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int CAPtemp(GENmodel*,CKTcircuit*); extern int CAPtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int CAPacLoad(); extern int CAPask(); extern int CAPdelete(); extern void CAPdestroy(); extern int CAPgetic(); extern int CAPload(); extern int CAPmAsk(); extern int CAPmDelete(); extern int CAPmParam(); extern int CAPparam(); extern int CAPpzLoad(); extern int CAPsAcLoad(); extern int CAPsLoad(); extern void CAPsPrint(); extern int CAPsSetup(); extern int CAPsUpdate(); extern int CAPsetup(); extern int CAPtemp(); extern int CAPtrunc(); #endif /* stdc */ #endif /*CAP*/ 0707070124060340531006440006700000000000011777770500302371600004300000006631spice3c1/spice3/include/cccsdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef CCCS #define CCCS "CCCSdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:34:47 $ " #include "ifsim.h" #include "gendefs.h" #include "complex.h" #include "cktdefs.h" /* structures used to describe Current Controlled Current Sources */ /* information needed for each instance */ typedef struct sCCCSinstance { struct sCCCSmodel *CCCSmodPtr; /* backpointer to model */ struct sCCCSinstance *CCCSnextInstance; /* pointer to next instance of *current model*/ IFuid CCCSname; /* pointer to character string naming this instance */ int CCCSposNode; /* number of positive node of source */ int CCCSnegNode; /* number of negative node of source */ int CCCScontBranch; /* number of branch eq of controlling source */ char *CCCScontName; /* pointer to name of controlling instance */ double CCCScoeff; /* coefficient */ double *CCCSposContBrptr; /* pointer to sparse matrix element at *(positive node, control branch eq)*/ double *CCCSnegContBrptr; /* pointer to sparse matrix element at *(negative node, control branch eq)*/ unsigned CCCScoeffGiven :1 ; /* flag to indicate coeff given */ int CCCSsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } CCCSinstance ; /* per model data */ typedef struct sCCCSmodel { /* model structure for a source */ int CCCSmodType; /* type index of this device type */ struct sCCCSmodel *CCCSnextModel; /* pointer to next possible model *in linked list */ CCCSinstance * CCCSinstances; /* pointer to list of instances that have this model */ IFuid CCCSmodName; /* pointer to character string naming this model */ } CCCSmodel; /* device parameters */ #define CCCS_GAIN 1 #define CCCS_CONTROL 2 #define CCCS_POS_NODE 3 #define CCCS_NEG_NODE 4 #define CCCS_CONT_BR 5 #define CCCS_GAIN_SENS 6 #define CCCS_CURRENT 7 #define CCCS_POWER 8 /* model parameters */ /* device questions */ #define CCCS_QUEST_SENS_REAL 201 #define CCCS_QUEST_SENS_IMAG 202 #define CCCS_QUEST_SENS_MAG 203 #define CCCS_QUEST_SENS_PH 204 #define CCCS_QUEST_SENS_CPLX 205 #define CCCS_QUEST_SENS_DC 206 /* model questions */ #ifdef __STDC__ extern int CCCSask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int CCCSdelete(GENmodel*,IFuid,GENinstance**); extern void CCCSdestroy(GENmodel**); extern int CCCSload(GENmodel*,CKTcircuit*); extern int CCCSmDelete(GENmodel**,IFuid,GENmodel*); extern int CCCSparam(int,IFvalue*,GENinstance*,IFvalue*); extern int CCCSpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int CCCSsAcLoad(GENmodel*,CKTcircuit*); extern int CCCSsLoad(GENmodel*,CKTcircuit*); extern void CCCSsPrint(GENmodel*,CKTcircuit*); extern int CCCSsSetup(SENstruct*,GENmodel*); extern int CCCSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int CCCSask(); extern int CCCSdelete(); extern void CCCSdestroy(); extern int CCCSload(); extern int CCCSmDelete(); extern int CCCSparam(); extern int CCCSpzLoad(); extern int CCCSsAcLoad(); extern int CCCSsLoad(); extern void CCCSsPrint(); extern int CCCSsSetup(); extern int CCCSsetup(); #endif /* stdc */ #endif /*CCCS*/ 0707070124060340541006440006700000000000011777770500302371600004300000010007spice3c1/spice3/include/ccvsdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef CCVS #define CCVS "CCVSdefs.h $Revision: 1.6 $ on $Date: 88/11/17 02:34:50 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* structures used to describe current controlled voltage sources */ /* information used to describe a single instance */ typedef struct sCCVSinstance { struct sCCVSmodel *CCVSmodPtr; /* backpointer to model */ struct sCCVSinstance *CCVSnextInstance; /* pointer to next instance of *current model*/ IFuid CCVSname; /* pointer to character string naming this instance */ int CCVSposNode; /* number of positive node of source */ int CCVSnegNode; /* number of negative node of source */ IFuid CCVScontName; /* pointer to name of controlling instance */ int CCVSbranch; /* equation number of branch equation added for v source */ int CCVScontBranch; /* number of branch eq of controlling source */ double CCVScoeff; /* coefficient */ double *CCVSposIbrptr; /* pointer to sparse matrix element at * (positive node, branch equation) */ double *CCVSnegIbrptr; /* pointer to sparse matrix element at * (negative node, branch equation) */ double *CCVSibrPosptr; /* pointer to sparse matrix element at * (branch equation, positive node) */ double *CCVSibrNegptr; /* pointer to sparse matrix element at * (branch equation, negative node) */ double *CCVSibrContBrptr; /* pointer to sparse matrix element at *(branch equation, control branch eq)*/ unsigned CCVScoeffGiven :1 ; /* flag to indicate coeff given */ int CCVSsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } CCVSinstance ; /* per model data */ typedef struct sCCVSmodel { /* model structure for a CCVsource */ int CCVSmodType; /* type index of this device type */ struct sCCVSmodel *CCVSnextModel; /* pointer to next possible model *in linked list */ CCVSinstance * CCVSinstances; /* pointer to list of instances that have this model */ IFuid CCVSmodName; /* pointer to character string naming this model */ } CCVSmodel; /* device parameters */ #define CCVS_TRANS 1 #define CCVS_CONTROL 2 #define CCVS_POS_NODE 3 #define CCVS_NEG_NODE 4 #define CCVS_BR 5 #define CCVS_CONT_BR 6 #define CCVS_TRANS_SENS 7 #define CCVS_CURRENT 8 #define CCVS_POWER 9 /* model parameters */ /* device questions */ #define CCVS_QUEST_SENS_REAL 201 #define CCVS_QUEST_SENS_IMAG 202 #define CCVS_QUEST_SENS_MAG 203 #define CCVS_QUEST_SENS_PH 204 #define CCVS_QUEST_SENS_CPLX 205 #define CCVS_QUEST_SENS_DC 206 /* model questions */ #ifdef __STDC__ extern int CCVSask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int CCVSdelete(GENmodel*,IFuid,GENinstance**); extern void CCVSdestroy(GENmodel**); extern int CCVSfindBr(CKTcircuit*,GENmodel*,IFuid); extern int CCVSload(GENmodel*,CKTcircuit*); extern int CCVSmDelete(GENmodel**,IFuid,GENmodel*); extern int CCVSparam(int,IFvalue*,GENinstance*,IFvalue*); extern int CCVSpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int CCVSsAcLoad(GENmodel*,CKTcircuit*); extern int CCVSsLoad(GENmodel*,CKTcircuit*); extern void CCVSsPrint(GENmodel*,CKTcircuit*); extern int CCVSsSetup(SENstruct*,GENmodel*); extern int CCVSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int CCVSask(); extern int CCVSdelete(); extern void CCVSdestroy(); extern int CCVSfindBr(); extern int CCVSload(); extern int CCVSmDelete(); extern int CCVSparam(); extern int CCVSpzLoad(); extern int CCVSsAcLoad(); extern int CCVSsLoad(); extern void CCVSsPrint(); extern int CCVSsSetup(); extern int CCVSsetup(); #endif /* stdc */ #endif /*CCVS*/ 0707070124060340551006440006700000000000011777770500302371600004200000027236spice3c1/spice3/include/cktdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef CKT #define CKT "CKTdefs.h $Revision: 1.13 $ on $Date: 89/04/05 13:09:39 $ " #define MAXNUMDEVS 30 extern int DEVmaxnum; #define MAXNUMDEVNODES 4 #include "smpdefs.h" #include "ifsim.h" #include "acdefs.h" #include "gendefs.h" #include "trcvdefs.h" #include "optdefs.h" #include "sendefs.h" #include "pzdefs.h" typedef struct sCKTnode { IFuid name; int type; #define SP_VOLTAGE 3 #define SP_CURRENT 4 #define NODE_VOLTAGE SP_VOLTAGE #define NODE_CURRENT SP_CURRENT int number; double ic; double nodeset; double *ptr; struct sCKTnode *next; unsigned int icGiven:1; unsigned int nsGiven:1; } CKTnode; /* defines for node parameters */ #define PARM_NS 1 #define PARM_IC 2 #define PARM_NODETYPE 3 typedef struct { GENmodel *CKThead[MAXNUMDEVS]; STATistics *CKTstat; double *(CKTstates[8]); #define CKTstate0 CKTstates[0] #define CKTstate1 CKTstates[1] #define CKTstate2 CKTstates[2] #define CKTstate3 CKTstates[3] #define CKTstate4 CKTstates[4] #define CKTstate5 CKTstates[5] #define CKTstate6 CKTstates[6] #define CKTstate7 CKTstates[7] double CKTtime; double CKTdelta; double CKTdeltaOld[7]; double CKTtemp; double CKTnomTemp; double CKTvt; double CKTag[7]; /* the gear variable coefficient matrix */ #ifdef PREDICTOR double CKTagp[7]; /* the gear predictor variable coefficient matrix */ #endif /*PREDICTOR*/ int CKTorder; /* the integration method order */ int CKTmaxOrder; /* maximum integration method order */ int CKTintegrateMethod; /* the integration method to be used */ /* known integration methods */ #define TRAPEZOIDAL 1 #define GEAR 2 SMPmatrix *CKTmatrix; /* pointer to sparse matrix */ int CKTniState; /* internal state */ double *CKTrhs; /* current rhs value - being loaded */ double *CKTrhsOld; /* previous rhs value for convergence testing */ double *CKTrhsSpare; /* spare rhs value for reordering */ double *CKTirhs; /* current rhs value - being loaded (imag) */ double *CKTirhsOld; /* previous rhs value (imaginary)*/ double *CKTirhsSpare; /* spare rhs value (imaginary)*/ #ifdef PREDICTOR double *CKTpred; /* predicted solution vector */ double *CKTsols[8]; /* previous 8 solutions */ #endif /* PREDICTOR */ double *CKTrhsOp; /* opearating point values */ double *CKTsenRhs; /* current sensitivity rhs values */ double *CKTseniRhs; /* current sensitivity rhs values (imag)*/ /* * symbolic constants for CKTniState * Note that they are bitwise disjoint */ #define NISHOULDREORDER 0x1 #define NIREORDERED 0x2 #define NIUNINITIALIZED 0x4 #define NIACSHOULDREORDER 0x10 #define NIACREORDERED 0x20 #define NIACUNINITIALIZED 0x40 #define NIDIDPREORDER 0x100 #define NIPZSHOULDREORDER 0x200 int CKTmaxEqNum; int CKTcurrentAnalysis; /* the analysis in progress (if any) */ /* defines for the value of CKTcurrentAnalysis */ /* are in TSKdefs.h */ CKTnode *CKTnodes; CKTnode *CKTlastNode; #define NODENAME(ckt,nodenum) CKTnodName(ckt,nodenum) int CKTnumStates; long CKTmode; /* defines for CKTmode */ /* old 'mode' parameters */ #define MODE 0x3 #define MODETRAN 0x1 #define MODEAC 0x2 /* old 'modedc' parameters */ #define MODEDC 0x70 #define MODEDCOP 0x10 #define MODETRANOP 0x20 #define MODEDCTRANCURVE 0x40 /* old 'initf' parameters */ #define INITF 0x3f00 #define MODEINITFLOAT 0x100 #define MODEINITJCT 0x200 #define MODEINITFIX 0x400 #define MODEINITSMSIG 0x800 #define MODEINITTRAN 0x1000 #define MODEINITPRED 0x2000 /* old 'nosolv' paramater */ #define MODEUIC 0x10000l int CKTbypass; int CKTdcMaxIter; /* iteration limit for dc op. (itl1) */ int CKTdcTrcvMaxIter; /* iteration limit for dc tran. curv (itl2) */ int CKTtranMaxIter; /* iteration limit for each timepoint for tran*/ /* (itl4) */ int CKTbreakSize; int CKTbreak; double CKTsaveDelta; double CKTminBreak; double *CKTbreaks; double CKTabstol; double CKTpivotAbsTol; double CKTpivotRelTol; double CKTreltol; double CKTchgtol; double CKTvoltTol; #ifdef NEWTRUNC double CKTlteReltol; double CKTlteAbstol; #endif /* NEWTRUNC */ double CKTgmin; double CKTdelmin; double CKTtrtol; double CKTfinalTime; double CKTstep; double CKTmaxStep; double CKTinitTime; double CKTomega; double CKTsrcFact; double CKTdiagGmin; int CKTnumSrcSteps; int CKTnumGminSteps; int CKTnoncon; double CKTdefaultMosL; double CKTdefaultMosW; double CKTdefaultMosAD; double CKTdefaultMosAS; unsigned int CKThadNodeset:1; unsigned int CKTfixLimit:1; /* flag to indicate that the limiting of * MOSFETs should be done as in SPICE2 */ unsigned int CKTnoOpIter:1; /* flag to indicate not to try the operating * point brute force, but to use gmin stepping * first */ JOB *CKTcurJob; SENstruct *CKTsenInfo; /* the sensitivity information */ }CKTcircuit; #ifdef __STDC__ int ACan( CKTcircuit *, int ); int ACaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); int ACsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int CKTacDump( CKTcircuit *, double , GENERIC *); int CKTacLoad( CKTcircuit *); int CKTaccept( CKTcircuit *); int CKTacct( CKTcircuit *, GENERIC *, int , IFvalue *); int CKTask( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTaskAnalQ( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTaskNodQst( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTbindNode( GENERIC *, GENERIC *, int , GENERIC *); void CKTbreakDump( CKTcircuit *); int CKTclrBreak( CKTcircuit *); int CKTconvTest( CKTcircuit *); int CKTcrtElt( GENERIC *, GENERIC *, GENERIC **, IFuid ); int CKTdelTask( GENERIC *, GENERIC *); int CKTdestroy( GENERIC *); int CKTdltAnal( GENERIC *, GENERIC *, GENERIC *); int CKTdltInst( GENERIC *, GENERIC *); int CKTdltMod( GENERIC *, GENERIC *); int CKTdltNod( GENERIC *, GENERIC *); int CKTdoJob( GENERIC *, int , GENERIC *); void CKTdump( CKTcircuit *, double, GENERIC *); int CKTfndAnal( GENERIC *, int *, GENERIC **, IFuid , GENERIC *, IFuid ); int CKTfndBranch( CKTcircuit *, IFuid); int CKTfndDev( GENERIC *, int *, GENERIC **, IFuid , GENERIC *, IFuid ); int CKTfndMod( GENERIC *, int *, GENERIC **, IFuid ); int CKTfndNode( GENERIC *, GENERIC **, IFuid ); int CKTfndTask( GENERIC *, GENERIC **, IFuid ); int CKTground( GENERIC *, GENERIC **, IFuid ); int CKTic( CKTcircuit *); int CKTinit( GENERIC **); int CKTinst2Node( GENERIC *, GENERIC *, int , GENERIC **, IFuid *); int CKTlinkEq(CKTcircuit*,CKTnode*); int CKTload( CKTcircuit *); int CKTmapNode( GENERIC *, GENERIC **, IFuid ); int CKTmkCur( CKTcircuit *, CKTnode **, IFuid , char *); int CKTmkNode(CKTcircuit*,CKTnode**); int CKTmkVolt( CKTcircuit *, CKTnode **, IFuid , char *); int CKTmodAsk( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTmodCrt( GENERIC *, int , GENERIC **, IFuid ); int CKTmodParam( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTnames(CKTcircuit *, int *, IFuid **); int CKTnewAnal( GENERIC *, int , IFuid , GENERIC **, GENERIC *); int CKTnewEq( GENERIC *, GENERIC **, IFuid ); int CKTnewNode( GENERIC *, GENERIC **, IFuid ); int CKTnewTask( GENERIC *, GENERIC **, IFuid ); IFuid CKTnodName( CKTcircuit *, int ); void CKTnodOut( CKTcircuit *); CKTnode * CKTnum2nod( CKTcircuit *, int ); int CKTop(CKTcircuit *, long, long, int ); int CKTpModName( char *, IFvalue *, CKTcircuit *, int , IFuid , GENmodel **); int CKTpName( char *, IFvalue *, CKTcircuit *, int , char *, GENinstance **); int CKTparam( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTpzLoad( CKTcircuit *, SPcomplex *, int ); int CKTpzSetup( CKTcircuit *); int CKTsenAC( CKTcircuit *); int CKTsenComp( CKTcircuit *); int CKTsenDCtran( CKTcircuit *); int CKTsenLoad( CKTcircuit *); void CKTsenPrint( CKTcircuit *); int CKTsenSetup( CKTcircuit *); int CKTsenUpdate( CKTcircuit *); int CKTsetAnalPm( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTsetBreak( CKTcircuit *, double ); int CKTsetNodPm( GENERIC *, GENERIC *, int , IFvalue *, IFvalue *); int CKTsetOpt( GENERIC *, GENERIC *, int , IFvalue *); int CKTsetup( CKTcircuit *); int CKTtemp( CKTcircuit *); void CKTterr( int , CKTcircuit *, double *); int CKTtrunc( CKTcircuit *, double *); int CKTtypelook( char *); int DCOaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); int DCOsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int DCTaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); int DCTsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int DCop( CKTcircuit *); int DCtrCurv( CKTcircuit *, int ); int DCtran( CKTcircuit *, int ); int PZan( CKTcircuit *, int ); int PZaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); int PZsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int SENaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); void SENdestroy( SENstruct *); int SENsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int SENstartup( CKTcircuit *); int SPIinit( IFfrontEnd *, IFsimulator **); char * SPerror( int ); int TFanal( CKTcircuit *, int ); int TFaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); int TFsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int TRANaskQuest( CKTcircuit *, GENERIC *, int , IFvalue *); int TRANsetParm( CKTcircuit *, GENERIC *, int , IFvalue *); int NIacIter( CKTcircuit * ); int NIcomCof( CKTcircuit * ); int NIconvTest(CKTcircuit * ); void NIdestroy(CKTcircuit * ); int NIinit( CKTcircuit * ); int NIintegrate( CKTcircuit *, double *, double *, double , int ); int NIiter( CKTcircuit * , int ); int NIpzMuller( CKTcircuit *, root **, int ); int NIpzSolve( CKTcircuit *, SPcomplex *, root *, SPcomplex *, int , int *); int NIreinit( CKTcircuit *); int NIsenReinit( CKTcircuit *); #else /* stdc */ int ACan(); int ACaskQuest(); int ACsetParm(); int CKTacDump(); int CKTacLoad(); int CKTaccept(); int CKTacct(); int CKTask(); int CKTaskAnalQ(); int CKTaskNodQst(); int CKTbindNode(); void CKTbreakDump(); int CKTclrBreak(); int CKTcrtElt(); int CKTdelTask(); int CKTdestroy(); int CKTdltAnal(); int CKTdltInst(); int CKTdltMod(); int CKTdltNod(); int CKTdoJob(); void CKTdump(); int CKTfndAnal(); int CKTfndBranch(); int CKTfndDev(); int CKTfndMod(); int CKTfndNode(); int CKTfndTask(); int CKTground(); int CKTic(); int CKTinit(); int CKTinst2Node(); int CKTlinkEq(); int CKTload(); int CKTmapNode(); int CKTmkCur(); int CKTmkNode(); int CKTmkVolt(); int CKTmodAsk(); int CKTmodCrt(); int CKTmodParam(); int CKTnames(); int CKTnewAnal(); int CKTnewEq(); int CKTnewNode(); int CKTnewTask(); IFuid CKTnodName(); void CKTnodOut(); CKTnode * CKTnum2nod(); int CKTop(); int CKTpModName(); int CKTpName(); int CKTparam(); int CKTpzLoad(); int CKTpzSetup(); int CKTsenAC(); int CKTsenComp(); int CKTsenDCtran(); int CKTsenLoad(); void CKTsenPrint(); int CKTsenSetup(); int CKTsenUpdate(); int CKTsetAnalPm(); int CKTsetBreak(); int CKTsetNodPm(); int CKTsetOpt(); int CKTsetup(); int CKTpzSetup(); int CKTtemp(); void CKTterr(); int CKTtrunc(); int CKTtypelook(); int DCOaskQuest(); int DCOsetParm(); int DCTaskQuest(); int DCTsetParm(); int DCop(); int DCtrCurv(); int DCtran(); int PZan(); int PZaskQuest(); int PZsetParm(); int SENaskQuest(); void SENdestroy(); int SENsetParm(); int SENstartup(); int SPIinit(); char * SPerror(); int TFanal(); int TFaskQuest(); int TFsetParm(); int TRANaskQuest(); int TRANsetParm(); int NIacIter(); int NIcomCof(); int NIconvTest(); void NIdestroy(); int NIinit(); int NIintegrate(); int NIiter(); int NIpzMuller(); int NIpzSolve(); int NIreinit(); int NIsenReinit(); #endif /* stdc */ extern IFfrontEnd *SPfrontEnd; #endif /*CKT*/ 0707070124060340561006440006700000000000011777770500302371600004000000000623spice3c1/spice3/include/const.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef CONST #define CONST "CONST.h $Revision: 1.4 $ on $Date: 88/12/08 16:31:52 $ " #define CHARGE (1.6021918e-19) #define CONSTCtoK (273.15) #define CONSTboltz (1.3806226e-23) #define REFTEMP 300.15 /* 27 degrees C */ extern double CONSTroot2; extern double CONSTvt0; extern double CONSTKoverQ; extern double CONSTe; #endif /*CONST*/ 0707070124060340571006440006700000000000011777770500302371600004100000006422spice3c1/spice3/include/cpdefs.h /* RCS Info: $Revision: 1.3 $ on $Date: 88/11/16 21:54:05 $ * $Source: /ic3/quarles/shared/include/RCS/CPdefs.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * General stuff for the C-shell parser. */ /* Standard definitions... */ #ifndef CPDEFS #define CPDEFS #include "cpstd.h" #define MAXWORDS 512 /* Information about spice commands. */ struct comm { char *co_comname; /* The name of the command. */ void (*co_func) (); /* The function that handles the command. */ bool co_stringargs; /* Collapse the arguments into a string. */ bool co_spiceonly; /* These can't be used from nutmeg. */ bool co_major; /* Is this a "major" command? */ long co_cctypes[4]; /* Bitmasks for command completion. */ unsigned int co_env;/* print help message on this environment mask */ int co_minargs; /* minimum number of arguments required */ int co_maxargs; /* maximum number of arguments allowed */ int (*co_argfn) (); /* The fn that prompts the user. */ char *co_help; /* When these are printed, printf(string, av[0]) .. */ } ; #define LOTS 1000 /* The history list. Things get put here after the first (basic) parse. * The word list will change later, so be sure to copy it. */ struct histent { int hi_event; wordlist *hi_wlist; struct histent *hi_next; struct histent *hi_prev; } ; /* Variables that are accessible to the parser via $varname expansions. * If the type is VT_LIST the value is a pointer to a list of the elements. */ struct variable { char va_type; char *va_name; union { bool vV_bool; int vV_num; double vV_real; char *vV_string; struct variable *vV_list; } va_V; struct variable *va_next; /* Link. */ } ; #define va_bool va_V.vV_bool #define va_num va_V.vV_num #define va_real va_V.vV_real #define va_string va_V.vV_string #define va_vlist va_V.vV_list #define VT_BOOL 1 #define VT_NUM 2 #define VT_REAL 3 #define VT_STRING 4 #define VT_LIST 5 /* The values returned by cp_userset(). */ #define US_OK 1 /* Either not relevant or nothing special. */ #define US_READONLY 2 /* Complain and don't set this var. */ #define US_DONTRECORD 3 /* Ok, but don't keep track of this one. */ /* Aliases. These will be expanded if the word is the first in an input * line. The substitution string may contain arg selectors. */ struct alias { char *al_name; /* The word to be substituted for. */ wordlist *al_text; /* What to substitute for it. */ struct alias *al_next; struct alias *al_prev; } ; /* The current record of what characters are special. */ #define CPC_BRR 004 /* Break word to right of character. */ #define CPC_BRL 010 /* Break word to left of character. */ /* For quoting individual characters. '' strings are all quoted, but `` and * "" strings are maintained as single words with the quotes around them. * Note that this won't work on non-ascii machines. */ #ifdef ASCIIQUOTE #define quote(c) ((c) | 0200) #define strip(c) ((c) & 0177) #else /* ASCIIQUOTE */ #define quote(c) (c) #define strip(c) (c) #endif /*ASCIIQUOTE */ #define CT_ALIASES 1 #define CT_LABEL 15 /* Get all the extern definitions... */ #include "cpextern.h" #endif /*CPDEFS*/ 0707070124060340601006440006700000000000011777770500302371600004300000007210spice3c1/spice3/include/cpextern.h /* RCS Info: $Revision: 1.3 $ on $Date: 88/11/16 21:54:06 $ * $Source: /ic3/quarles/shared/include/RCS/CPextern.h,v $ * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group * * Definitions for all external symbols in CP. */ /* alias.c */ extern struct alias *cp_aliases; extern void com_alias(); extern void com_unalias(); extern void cp_paliases(); extern void cp_setalias(); extern void cp_unalias(); extern wordlist *cp_doalias(); /* backquote.c */ extern char cp_back; extern wordlist *cp_bquote(); /* complete.c */ extern bool cp_nocc; extern bool cp_comlook(); extern char *cp_kwswitch(); extern void cp_addcomm(); extern void cp_addkword(); extern void cp_ccom(); extern void cp_ccon(); extern void cp_ccrestart(); extern void cp_remcomm(); extern void cp_remkword(); extern wordlist *cp_cctowl(); /* cshpar.c */ extern FILE *cp_in; extern FILE *cp_out; extern FILE *cp_err; extern FILE *cp_curin; extern FILE *cp_curout; extern FILE *cp_curerr; extern bool cp_debug; extern char cp_amp; extern char cp_gt; extern char cp_lt; extern void com_chdir(); extern void com_echo(); extern void com_strcmp(); extern void com_rehash(); extern void com_shell(); extern void cp_ioreset(); extern wordlist *cp_redirect(); extern wordlist *cp_parse(); /* front.c */ extern bool cp_cwait; extern bool cp_dounixcom; extern char *cp_csep; extern int cp_evloop(); extern void com_cdump(); extern void cp_resetcontrol(); extern void cp_toplevel(); extern void cp_popcontrol(); extern void cp_pushcontrol(); /* glob.c */ extern bool cp_globmatch(); extern char *cp_tildexpand(); extern char cp_cbrac; extern char cp_ccurl; extern char cp_comma; extern char cp_huh; extern char cp_obrac; extern char cp_ocurl; extern char cp_star; extern char cp_til; extern wordlist *cp_doglob(); /* history.c */ extern bool cp_didhsubst; extern char cp_bang; extern char cp_hat; extern int cp_maxhistlength; extern struct histent *cp_lastone; extern void com_history(); extern void cp_addhistent(); extern void cp_hprint(); extern wordlist *cp_histsubst(); /* lexical.c */ extern FILE *cp_inp_cur; extern bool cp_bqflag; extern bool cp_interactive; extern char *cp_altprompt; extern char *cp_promptstring; extern char cp_hash; extern int cp_event; extern wordlist *cp_lexer(); extern int inchar(); /* modify.c */ extern char cp_chars[]; extern void cp_init(); /* output.c */ extern char out_pbuf[]; extern bool out_moremode; extern bool out_isatty; extern void out_init(); #ifndef out_printf /* don't want to declare it if we have #define'ed it */ extern void out_printf(); #endif extern void out_send(); /* quote.c */ extern char *cp_unquote(); extern void cp_quoteword(); extern void cp_striplist(); extern void cp_wstrip(); /* spawn.c */ #ifdef VMS extern int system(); #endif /*VMS*/ /* unixcom.c */ extern bool cp_unixcom(); extern void cp_hstat(); extern void cp_rehash(); /* variable.c */ extern bool cp_getvar(); extern bool cp_ignoreeof; extern bool cp_noclobber; extern bool cp_noglob; extern bool cp_nonomatch; extern char cp_dol; extern void com_set(); extern void com_unset(); extern void com_shift(); extern void cp_remvar(); extern void cp_vprint(); extern void cp_vset(); extern wordlist *cp_variablesubst(); extern wordlist *cp_varwl(); extern struct variable *cp_setparse(); /* cpinterface.c etc -- stuff CP needs from FTE */ extern bool cp_istrue(); extern bool cp_oddcomm(); extern void cp_doquit(); extern void cp_periodic(); extern void ft_cpinit(); extern struct comm cp_coms[]; extern double *ft_numparse(); extern char *cp_program; extern bool ft_nutmeg; extern struct variable *cp_enqvar(); extern void cp_usrvars(); extern int cp_usrset(); extern void fatal(); 0707070124060340611006440006700000000000011777770500302371600004000000007020spice3c1/spice3/include/cpstd.h /* RCS Info: $Revision: 1.4 $ on $Date: 88/11/22 22:59:33 $ * $Source: /ic3/quarles/shared/include/RCS/CPstd.h,v $ * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group * * Standard definitions. This file serves as the header file for std.c and * wlist.c */ #ifndef _STD_H_ #define _STD_H_ #ifndef FILE #include #endif #ifndef isalpha #include #endif #ifndef HUGE #include #endif #include typedef int bool; #define false 0 #define true 1 /* Doubly linked lists of words. */ struct wordlist { char *wl_word; struct wordlist *wl_next; struct wordlist *wl_prev; } ; typedef struct wordlist wordlist; /* Complex numbers. */ struct _complex { /* IBM portability... */ double cx_real; double cx_imag; } ; typedef struct _complex complex; #define realpart(cval) ((struct _complex *) (cval))->cx_real #define imagpart(cval) ((struct _complex *) (cval))->cx_imag /* Externs defined in std.c */ extern char *tmalloc(); extern char *trealloc(); extern char *copy(); extern char *gettok(); extern char *datestring(); extern char *getusername(); extern char *gethome(); extern char *tildexpand(); extern char *printnum(); extern int cp_numdgt; #ifndef CMS extern void fatal(); #endif extern void setenv(); extern void appendc(); extern int scannum(); extern double seconds(); extern bool prefix(); extern bool ciprefix(); extern bool cieq(); extern bool substring(); extern void cp_printword(); /* Externs from wlist.c ... */ extern char **wl_mkvec(); extern char *wl_flatten(); extern int wl_length(); extern void wl_free(); extern void wl_print(); extern void wl_sort(); extern wordlist *wl_append(); extern wordlist *wl_build(); extern wordlist *wl_copy(); extern wordlist *wl_range(); extern wordlist *wl_nthelem(); extern wordlist *wl_reverse(); extern wordlist *wl_splice(); /* Externs from libc */ extern char *getenv(); extern int errno; extern char *sys_errlist[]; extern char *calloc(); extern char *mktemp(); extern char *getenv(); extern char *malloc(); extern char *realloc(); extern char *getwd(); extern long random(); extern int atoi(); extern int bzero(); extern char *rindex(); extern char *index(); extern int kill(); extern int getpid(); extern int qsort(); extern int rand(); extern void exit(); extern void bcopy(); #ifdef BSD #ifndef clearerr extern void clearerr(); #endif /* clearerr */ #endif /* BSD */ #ifndef HAS_PERROR /* lattice and ibm cc declares this in stdio.h, and differently.... */ extern void perror(); #endif extern void srandom(); #ifdef BSD extern char *sbrk(); extern char *timezone(); extern char *asctime(); extern struct tm *localtime(); #endif /*BSD*/ /* Should use BSIZE instead of BUFSIZ... */ #define BSIZE 512 /* Some standard macros. */ #define eq(a,b) (!strcmp((a), (b))) #define isalphanum(c) (isalpha(c) || isdigit(c)) #define alloc(strname) ((struct strname *) tmalloc(sizeof(struct strname))) #ifdef MALLOCTRACE #define tfree(ptr) { if (ptr) mem_free((char *) ptr); ptr = 0; } #else /*MALLOCTRACE*/ #define tfree(ptr) { if (ptr) free((char *) ptr); ptr = 0; } extern void free(); #endif /*MALLOCTRACE*/ #define hexnum(c) ((((c) >= '0') && ((c) <= '9')) ? ((c) - '0') : ((((c) >= \ 'a') && ((c) <= 'f')) ? ((c) - 'a' + 10) : ((((c) >= 'A') && \ ((c) <= 'F')) ? ((c) - 'A' + 10) : 0))) #ifndef BSD #define random rand #define srandom srand #endif /*BSD*/ #ifdef VMS #define EXIT_NORMAL 1 #define EXIT_BAD 0 #else /* VMS */ #define EXIT_NORMAL 0 #define EXIT_BAD 1 #endif /*VMS*/ #endif /*not _STD_H_*/ 0707070124060340621006440006700000000000011777770500302371600004200000010347spice3c1/spice3/include/cswdefs.h/* * Copyright (c) 1985 Gordon M. Jacobs */ #ifndef CSW #define CSW "CSWdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:35:05 $ " #include "ifsim.h" #include "gendefs.h" #include "cktdefs.h" #include "complex.h" /* structures used to describe current controlled switches */ /* information to describe each instance */ typedef struct sCSWinstance { struct sCSWmodel *CSWmodPtr; /* backpointer to model */ struct sCSWinstance *CSWnextInstance; /* pointer to next instance of * current model*/ IFuid CSWname; /* pointer to character string naming this instance */ int CSWposNode; /* number of positive node of switch */ int CSWnegNode; /* number of negative node of switch */ int CSWcontBranch; /* number of branch of controlling current */ IFuid CSWcontName; /* name of controlling source */ double *CSWposPosptr; /* pointer to sparse matrix diagonal at (positive,positive) for switch conductance */ double *CSWnegPosptr; /* pointer to sparse matrix offdiagonal at (neagtive,positive) for switch conductance */ double *CSWposNegptr; /* pointer to sparse matrix offdiagonal at (positive,neagtive) for switch conductance */ double *CSWnegNegptr; /* pointer to sparse matrix diagonal at (neagtive,neagtive) for switch conductance */ int CSWstate; /* pointer to start of switch's section of state vector */ double CSWcond; /* current conductance of switch */ unsigned CSWzero_stateGiven : 1; /* flag to indicate initial state */ } CSWinstance ; /* data per model */ #define CSW_ON_CONDUCTANCE 1.0 /* default on conductance = 1 mho */ #define CSW_OFF_CONDUCTANCE ckt->CKTgmin /* default off conductance */ #define CSW_NUM_STATES 1 typedef struct sCSWmodel { /* model structure for a switch */ int CSWmodType; /* type index of this device type */ struct sCSWmodel *CSWnextModel; /* pointer to next possible model in * linked list */ CSWinstance *CSWinstances; /* pointer to list of instances that have this * model */ IFuid CSWmodName; /* pointer to character string naming this model */ double CSWonResistance; /* switch "on" resistance */ double CSWoffResistance; /* switch "off" resistance */ double CSWiThreshold; /* switching threshold current */ double CSWiHysteresis; /* switching hysteresis current */ double CSWonConduct; /* switch "on" conductance */ double CSWoffConduct; /* switch "off" conductance */ unsigned CSWonGiven : 1; /* flag to indicate on-resistance was specified */ unsigned CSWoffGiven : 1;/* flag to indicate off-resistance was " */ unsigned CSWthreshGiven : 1;/* flag to indicate threshold volt was given */ unsigned CSWhystGiven : 1; /* flag to indicate hysteresis volt was given */ } CSWmodel; /* device parameters */ #define CSW_CONTROL 1 #define CSW_IC_ON 2 #define CSW_IC_OFF 3 #define CSW_POS_NODE 4 #define CSW_NEG_NODE 5 #define CSW_CURRENT 6 #define CSW_POWER 7 /* model parameters */ #define CSW_CSW 101 #define CSW_RON 102 #define CSW_ROFF 103 #define CSW_ITH 104 #define CSW_IHYS 105 #define CSW_GON 106 #define CSW_GOFF 107 /* device questions */ /* model questions */ #ifdef __STDC__ extern int CSWask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int CSWacLoad(GENmodel*,CKTcircuit*); extern int CSWdelete(GENmodel*,IFuid,GENinstance**); extern void CSWdestroy(GENmodel**); extern int CSWload(GENmodel*,CKTcircuit*); extern int CSWmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int CSWmDelete(GENmodel**,IFuid,GENmodel*); extern int CSWmParam(int,IFvalue*,GENmodel*); extern int CSWparam(int,IFvalue*,GENinstance*,IFvalue*); extern int CSWpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int CSWsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int CSWask(); extern int CSWacLoad(); extern int CSWdelete(); extern void CSWdestroy(); extern int CSWload(); extern int CSWmAsk(); extern int CSWmDelete(); extern int CSWmParam(); extern int CSWparam(); extern int CSWpzLoad(); extern int CSWsetup(); #endif /* stdc */ #endif /*CSW*/ 0707070124060340631006440006700000000000011777770500302371600004200000014766spice3c1/spice3/include/devdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef DEV #define DEV "DEVdefs.h $Revision: 1.5 $ on $Date: 89/03/07 11:34:10 $ " #include "optdefs.h" #include "gendefs.h" #include "ifsim.h" #include "cktdefs.h" #include "complex.h" #ifdef __STDC__ double DEVlimvds(double,double); double DEVpnjlim(double,double,double,double,int*); double DEVfetlim(double,double,double); void DEVcmeyer(double,double,double,double,double,double,double,double,double, double,double,double*,double*,double*,double,double,double,double); void DEVqmeyer(double,double,double,double,double,double*,double*,double*, double,double); void DEVcap(CKTcircuit*, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, double, double, double, double*, double*, double); double DEVpred(CKTcircuit*,int); #else /* stdc */ double DEVlimvds(); double DEVpnjlim(); double DEVfetlim(); void DEVcmeyer(); void DEVqmeyer(); void DEVcap(); double DEVpred(); #endif /* stdc */ typedef struct SPICEdev { IFdevice DEVpublic; #ifdef __STDC__ int (*DEVparam)(int,IFvalue*,GENinstance*,IFvalue *); /* routine to input a parameter to a device instance */ int (*DEVmodParam)(int,IFvalue*,GENmodel*); /* routine to input a paramater to a model */ int (*DEVload)(GENmodel*,CKTcircuit*); /* routine to load the device into the matrix */ int (*DEVsetup)(SMPmatrix*,GENmodel*,CKTcircuit*,int*); /* setup routine to preprocess devices once before soloution begins */ int (*DEVpzSetup)(SMPmatrix*,GENmodel*,CKTcircuit*,int*); /* setup routine to process devices specially for pz analysis */ int (*DEVtemperature)(GENmodel*,CKTcircuit*); /* subroutine to do temperature dependent setup processing */ int (*DEVtrunc)(GENmodel*,CKTcircuit*,double*); /* subroutine to perform truncation error calc. */ int (*DEVfindBranch)(CKTcircuit*,GENmodel*,IFuid); /* subroutine to search for device branch eq.s */ int (*DEVacLoad)(GENmodel*,CKTcircuit*); /* ac analysis loading function */ int (*DEVaccept)(CKTcircuit*,GENmodel*); /* subroutine to call on acceptance of a timepoint */ void (*DEVdestroy)(GENmodel**); /* subroutine to destroy all models and instances */ int (*DEVmodDelete)(GENmodel**,IFuid,GENmodel*); /* subroutine to delete a model and all instances */ int (*DEVdelete)(GENmodel*,IFuid,GENinstance**); /* subroutine to delete an instance */ int (*DEVsetic)(GENmodel*,CKTcircuit*); /* routine to pick up device init conds from rhs */ int (*DEVask)(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); /* routine to ask about device details*/ int (*DEVmodAsk)(CKTcircuit*,GENmodel*,int,IFvalue*); /* routine to ask about model details*/ int (*DEVpzLoad)(GENmodel*,CKTcircuit*,SPcomplex*); /* routine to load for pole-zero analysis */ int (*DEVconvTest)(GENmodel*,CKTcircuit*); /* convergence test function */ int (*DEVsenSetup)(SENstruct*,GENmodel*); /* routine to setup the device sensitivity info */ int (*DEVsenLoad)(GENmodel*,CKTcircuit*); /* routine to load the device sensitivity info */ int (*DEVsenUpdate)(GENmodel*,CKTcircuit*); /* routine to update the device sensitivity info */ int (*DEVsenAcLoad)(GENmodel*,CKTcircuit*); /* routine to load the device ac sensitivity info */ void (*DEVsenPrint)(GENmodel*,CKTcircuit*); /* subroutine to print out sensitivity info */ int (*DEVsenTrunc)(GENmodel*,CKTcircuit*,double*); /* subroutine to print out sensitivity info */ #else /* stdc */ int (*DEVparam)(); /* routine to input a parameter to a device instance */ int (*DEVmodParam)(); /* routine to input a paramater to a model */ int (*DEVload)(); /* routine to load the device into the matrix */ int (*DEVsetup)(); /* setup routine to preprocess devices once before * soloution begins */ int (*DEVpzSetup)(); /* setup routine to process devices specially for * pz analysis */ int (*DEVtemperature)(); /* subroutine to do temperature dependent * setup processing */ int (*DEVtrunc)(); /* subroutine to perform truncation error calc. */ int (*DEVfindBranch)(); /* subroutine to search for device branch eq.s */ int (*DEVacLoad)(); /* ac analysis loading function */ int (*DEVaccept)(); /* subroutine to call on acceptance of a timepoint */ void (*DEVdestroy)(); /* subroutine to destroy all models and instances */ int (*DEVmodDelete)(); /* subroutine to delete a model and all instances */ int (*DEVdelete)(); /* subroutine to delete an instance */ int (*DEVsetic)(); /* routine to pick up device init conds from rhs */ int (*DEVask)(); /* routine to ask about device details*/ int (*DEVmodAsk)(); /* routine to ask about model details*/ int (*DEVpzLoad)(); /* routine to load for pole-zero analysis */ int (*DEVconvTest)(); /* convergence test function */ int (*DEVsenSetup)(); /* routine to setup the device sensitivity info */ int (*DEVsenLoad)(); /* routine to load the device sensitivity info */ int (*DEVsenUpdate)(); /* routine to update the device sensitivity info */ int (*DEVsenAcLoad)(); /* routine to load the device ac sensitivity info*/ void (*DEVsenPrint)(); /* subroutine to print out sensitivity info */ int (*DEVsenTrunc)(); /* subroutine to print out sensitivity info */ #endif /* stdc */ int DEVinstSize; /* size of an instance */ int DEVmodSize; /* size of a model */ } SPICEdev; /* instance of structure for each possible type of * device */ /* * these are for the IBM PC which gets upset by the long description * strings used in IFparm definitions because they add up to more than * 64k of static data */ #ifndef MINDATA #define IP(a,b,c,d) { a , b , c|IF_SET , d } #define OP(a,b,c,d) { a , b , c|IF_ASK , d } #define IOP(a,b,c,d) { a , b , c|IF_SET|IF_ASK , d } #define P(a,b,c,d) { a , b , c , d } #else /* MINDATA */ #define IP(a,b,c,d) { a , b , c|IF_SET , "" } #define OP(a,b,c,d) { a , b , c|IF_ASK , "" } #define IOP(a,b,c,d) { a , b , c|IF_SET|IF_ASK , "" } #define P(a,b,c,d) { a , b , c , "" } #endif /* MINDATA */ #endif /*DEV*/ 0707070124060340641006440006700000000000011777770500302371600004200000020076spice3c1/spice3/include/diodefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef DIO #define DIO "DIOdefs.h $Revision: 1.4 $ on $Date: 88/11/16 21:54:10 $ " #include "ifsim.h" #include "gendefs.h" #include "cktdefs.h" #include "complex.h" /* data structures used to describe diodes */ /* information needed per instance */ typedef struct sDIOinstance { struct sDIOmodel *DIOmodPtr; /* backpointer to model */ struct sDIOinstance *DIOnextInstance; /* pointer to next instance of * current model*/ IFuid DIOname; /* pointer to character string naming this instance */ int DIOposNode; /* number of positive node of diode */ int DIOnegNode; /* number of negative node of diode */ int DIOposPrimeNode; /* number of positive prime node of diode */ double *DIOposPosPrimePtr; /* pointer to sparse matrix at * (positive,positive prime) */ double *DIOnegPosPrimePtr; /* pointer to sparse matrix at * (negative,positive prime) */ double *DIOposPrimePosPtr; /* pointer to sparse matrix at * (positive prime,positive) */ double *DIOposPrimeNegPtr; /* pointer to sparse matrix at * (positive prime,negative) */ double *DIOposPosPtr; /* pointer to sparse matrix at * (positive,positive) */ double *DIOnegNegPtr; /* pointer to sparse matrix at * (negative,negative) */ double *DIOposPrimePosPrimePtr; /* pointer to sparse matrix at * (positive prime,positive prime) */ double DIOcap; /* stores the diode capacitance */ double *DIOsens; /* stores the perturbed values of geq and ceq in ac sensitivity analyis */ #define DIOsenGeq DIOsens /* stores the perturbed values of geq */ #define DIOsenCeq DIOsens + 3 /* stores the perturbed values of ceq */ #define DIOdphidp DIOsens + 6 int DIOstate; /* pointer to start of state vector for diode */ #define DIOvoltage DIOstate #define DIOcurrent DIOstate+1 #define DIOconduct DIOstate+2 #define DIOcapCharge DIOstate+3 #define DIOcapCurrent DIOstate+4 #define DIOsensxp DIOstate+5 /* charge sensitivities and their derivatives. * +6 for the derivatives - pointer to the * beginning of the array */ int DIOsenParmNo ; /* parameter # for sensitivity use; * set equal to 0 if not a design parameter*/ unsigned DIOoff : 1; /* 'off' flag for diode */ unsigned DIOareaGiven : 1; /* flag to indicate area was specified */ unsigned DIOinitCondGiven : 1; /* flag to indicate ic was specified */ unsigned DIOsenPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ unsigned DIOtempGiven : 1; /* flag to indicate temperature was specified */ double DIOarea; /* area factor for the diode */ double DIOinitCond; /* initial condition */ double DIOtemp; /* temperature of the instance */ double DIOtJctPot; /* temperature adjusted junction potential */ double DIOtJctCap; /* temperature adjusted junction capacitance */ double DIOtDepCap; /* temperature adjusted transition point in */ /* the curve matching (Fc * Vj ) */ double DIOtSatCur; /* temperature adjusted saturation current */ double DIOtVcrit; /* temperature adjusted V crit */ double DIOtF1; /* temperature adjusted f1 */ double DIOtBrkdwnV; /* temperature adjusted breakdown voltage */ } DIOinstance ; /* per model data */ typedef struct sDIOmodel { /* model structure for a diode */ int DIOmodType; /* type index of this device type */ struct sDIOmodel *DIOnextModel; /* pointer to next possible model in * linked list */ DIOinstance * DIOinstances; /* pointer to list of instances * that have this model */ IFuid DIOmodName; /* pointer to character string naming this model */ unsigned DIOsatCurGiven : 1; unsigned DIOresistGiven : 1; unsigned DIOemissionCoeffGiven : 1; unsigned DIOtransitTimeGiven : 1; unsigned DIOjunctionCapGiven : 1; unsigned DIOjunctionPotGiven : 1; unsigned DIOgradingCoeffGiven : 1; unsigned DIOactivationEnergyGiven : 1; unsigned DIOsaturationCurrentExpGiven : 1; unsigned DIOdepletionCapCoeffGiven : 1; unsigned DIObreakdownVoltageGiven : 1; unsigned DIObreakdownCurrentGiven : 1; unsigned DIOnomTempGiven : 1; double DIOsatCur; /* saturation current */ double DIOresist; /* ohmic series resistance */ double DIOconductance; /* conductance corresponding to ohmic R */ double DIOemissionCoeff; /* emission coefficient (N) */ double DIOtransitTime; /* transit time (TT) */ double DIOjunctionCap; /* Junction Capacitance (Cj0) */ double DIOjunctionPot; /* Junction Potential (Vj) or (PB) */ double DIOgradingCoeff; /* grading coefficient (m) */ double DIOactivationEnergy; /* activation energy (EG) */ double DIOsaturationCurrentExp; /* Saturation current exponential (XTI) */ double DIOdepletionCapCoeff; /* Depletion Cap fraction coefficient (FC)*/ double DIObreakdownVoltage; /* Voltage at reverse breakdown */ double DIObreakdownCurrent; /* Current at above voltage */ double DIOf2; /* coefficient for capacitance equation precomputation */ double DIOf3; /* coefficient for capacitance equation precomputation */ double DIOnomTemp; /* nominal temperature (temp at which parms measured */ } DIOmodel; /* device parameters */ #define DIO_AREA 1 #define DIO_IC 2 #define DIO_OFF 3 #define DIO_CURRENT 4 #define DIO_VOLTAGE 5 #define DIO_CHARGE 6 #define DIO_CAPCUR 7 #define DIO_CONDUCT 8 #define DIO_AREA_SENS 9 #define DIO_POWER 10 #define DIO_TEMP 11 #define DIO_QUEST_SENS_REAL 12 #define DIO_QUEST_SENS_IMAG 13 #define DIO_QUEST_SENS_MAG 14 #define DIO_QUEST_SENS_PH 15 #define DIO_QUEST_SENS_CPLX 16 #define DIO_QUEST_SENS_DC 17 /* model parameters */ #define DIO_MOD_IS 101 #define DIO_MOD_RS 102 #define DIO_MOD_N 103 #define DIO_MOD_TT 104 #define DIO_MOD_CJO 105 #define DIO_MOD_VJ 106 #define DIO_MOD_M 107 #define DIO_MOD_EG 108 #define DIO_MOD_XTI 109 #define DIO_MOD_FC 110 #define DIO_MOD_BV 111 #define DIO_MOD_IBV 112 #define DIO_MOD_D 113 #define DIO_MOD_COND 114 #define DIO_MOD_TNOM 115 #ifdef __STDC__ extern int DIOacLoad(GENmodel*,CKTcircuit*); extern int DIOask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int DIOconvTest(GENmodel *,CKTcircuit*); extern int DIOdelete(GENmodel*,IFuid,GENinstance**); extern void DIOdestroy(GENmodel**); extern int DIOgetic(GENmodel*,CKTcircuit*); extern int DIOload(GENmodel*,CKTcircuit*); extern int DIOmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int DIOmDelete(GENmodel**,IFuid,GENmodel*); extern int DIOmParam(int,IFvalue*,GENmodel*); extern int DIOparam(int,IFvalue*,GENinstance*,IFvalue*); extern int DIOpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int DIOsAcLoad(GENmodel*,CKTcircuit*); extern int DIOsLoad(GENmodel*,CKTcircuit*); extern int DIOsSetup(SENstruct*,GENmodel*); extern void DIOsPrint(GENmodel*,CKTcircuit*); extern int DIOsUpdate(GENmodel*,CKTcircuit*); extern int DIOsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int DIOtemp(GENmodel*,CKTcircuit*); extern int DIOtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int DIOacLoad(); extern int DIOask(); extern int DIOconvTest(); extern int DIOdelete(); extern void DIOdestroy(); extern int DIOgetic(); extern int DIOload(); extern int DIOmAsk(); extern int DIOmDelete(); extern int DIOmParam(); extern int DIOparam(); extern int DIOpzLoad(); extern int DIOsAcLoad(); extern int DIOsLoad(); extern int DIOsSetup(); extern void DIOsPrint(); extern int DIOsUpdate(); extern int DIOsetup(); extern int DIOtemp(); extern int DIOtrunc(); #endif /* stdc */ #endif /*DIO*/ 0707070124060340651006440006700000000000011777770500302371600004300000003157spice3c1/spice3/include/ftecmath.h /* RCS Info: $Revision: 1.3 $ on $Date: 88/11/16 21:54:12 $ * $Source: /ic3/quarles/shared/include/RCS/FTEcmath.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * Macros for complex mathematical functions. */ /* Some defines used mainly in cmath.c. */ #define alloc_c(len) ((complex *) tmalloc((len) * sizeof (complex))) #define alloc_d(len) ((double *) tmalloc((len) * sizeof (double))) #define FTEcabs(d) (((d) < 0.0) ? - (d) : (d)) #define cph(c) (atan2(imagpart(c), (realpart(c)))) #define cmag(c) (sqrt(imagpart(c) * imagpart(c) + realpart(c) * realpart(c))) #define radtodeg(c) (cx_degrees ? ((c) / 3.14159265358979323846 * 180) : (c)) #define degtorad(c) (cx_degrees ? ((c) * 3.14159265358979323846 / 180) : (c)) #define rcheck(cond, name) if (!(cond)) { \ fprintf(cp_err, "Error: argument out of range for %s\n", name); \ return (NULL); } /* Here's a gross one. */ #ifndef SHORTMACRO #define cdiv(r1, i1, r2, i2, r3, i3) \ { \ double r, s; \ if (FTEcabs(r2) > FTEcabs(i2)) { \ r = (i2) / (r2); \ s = (r2) + r * (i2); \ (r3) = ((r1) + r * (i1)) / s; \ (i3) = ((i1) - r * (r1)) / s; \ } else { \ r = (r2) / (i2); \ s = (i2) + r * (r2); \ (r3) = (r * (r1) + (i1)) / s; \ (i3) = (r * (i1) - (r1)) / s; \ } \ } #else #define cdiv(r1, i1, r2, i2, r3, i3) cx_cdiv(r1, i1, r2, i2, &r3, &i3) extern void cx_cdiv(); #endif 0707070124060340661006440006700000000000011777770500302371600004600000004414spice3c1/spice3/include/fteconstant.h /* RCS Info: $Revision: 1.5 $ on $Date: 88/11/17 02:35:17 $ * $Source: /ic3/quarles/shared/include/RCS/FTEconstant.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * Some spice constants. */ /* Vector types. */ #ifndef _CONSTANTS_ #define _CONSTANTS_ #define SV_NOTYPE 0 #define SV_TIME 1 #define SV_FREQUENCY 2 #define SV_VOLTAGE 3 #define SV_CURRENT 4 #define SV_OUTPUT_NOISE 5 #define SV_INPUT_NOISE 6 #define SV_HD2 7 #define SV_HD3 8 #define SV_DIM2 9 #define SV_SIM2 10 #define SV_DIM3 11 #define SV_POLE 12 #define SV_ZERO 13 #define SV_SPARAM 14 /* Dvec flags. */ #define VF_REAL (1 << 0) /* The data is real. */ #define VF_COMPLEX (1 << 1) /* The data is complex. */ #define VF_ACCUM (1 << 2) /* writedata should save this vector. */ #define VF_PLOT (1 << 3) /* writedata should incrementally plot it. */ #define VF_PRINT (1 << 4) /* writedata should print this vector. */ #define VF_MINGIVEN (1 << 5) /* The v_minsignal value is valid. */ #define VF_MAXGIVEN (1 << 6) /* The v_maxsignal value is valid. */ #define VF_PERMANENT (1 << 7) /* Don't garbage collect this vector. */ /* Grid types. */ /* #define GRID_NONE 0 #define GRID_LIN 1 #define GRID_LOGLOG 2 #define GRID_XLOG 3 #define GRID_YLOG 4 #define GRID_POLAR 5 #define GRID_SMITH 6 */ typedef enum { GRID_NONE = 0, GRID_LIN = 1, GRID_LOGLOG = 2, GRID_XLOG = 3, GRID_YLOG = 4, GRID_POLAR = 5, GRID_SMITH = 6, } GRIDTYPE; /* Plot types. */ /* #define PLOT_LIN 0 #define PLOT_COMB 1 #define PLOT_POINT 2 */ typedef enum { PLOT_LIN = 0, PLOT_COMB = 1, PLOT_POINT = 2, } PLOTTYPE; /* The types for command completion keywords. Note that these constants * are built into cmdtab.c, so DON'T change them unless you want to * change all of the bitmasks in cp_coms. * Note that this is spice- and nutmeg- dependent. */ #define CT_FILENAME 0 #define CT_CKTNAMES 2 #define CT_COMMANDS 3 #define CT_DBNUMS 4 #define CT_DEVNAMES 5 #define CT_LISTINGARGS 6 #define CT_NODENAMES 7 #define CT_PLOT 8 #define CT_PLOTKEYWORDS 9 #define CT_RUSEARGS 10 #define CT_STOPARGS 11 #define CT_UDFUNCS 12 #define CT_VARIABLES 13 #define CT_VECTOR 14 #define CT_TYPENAMES 16 #endif 0707070124060340671006440006700000000000011777770500302371600004200000005545spice3c1/spice3/include/ftedata.h /* RCS Info: $Revision: 1.5 $ on $Date: 88/11/17 02:35:21 $ * $Source: /ic3/quarles/shared/include/RCS/FTEdata.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * Structures used for representing spice data in nutmeg. */ #ifndef FTEdata_h #define FTEdata_h #include "cpstd.h" /* for struct complex */ #ifndef CMS #include "fteconstant.h" #else /* CMS */ #include "fteconst.h" #endif /* CMS */ /* A (possibly multi-dimensional) data vector. The data is represented * internally by a 1-d array. The number of dimensions and the size * of each dimension is recorded, along with v_length, the total size of * the array. If the dimensionality is 0 or 1, v_length is significant * instead of v_numdims and v_dims, and the vector is handled in the old * manner. */ #define MAXDIMS 8 struct dvec { char *v_name; /* Same as so_vname. */ int v_type; /* Same as so_vtype. */ short v_flags; /* Flags (a combination of VF_*). */ double *v_realdata; /* Real data. */ complex *v_compdata; /* Complex data. */ double v_minsignal; /* Minimum value to plot. */ double v_maxsignal; /* Maximum value to plot. */ GRIDTYPE v_gridtype; /* One of GRID_*. */ PLOTTYPE v_plottype; /* One of PLOT_*. */ int v_length; /* Length of the vector. */ int v_rlength; /* How much space we really have. */ int v_outindex; /* Index if writedata is building the vector. */ int v_linestyle; /* What line style we are using. */ int v_color; /* What color we are using. */ char *v_defcolor; /* The name of a color to use. */ int v_numdims; /* How many dims -- 0 = scalar (len = 1). */ int v_dims[MAXDIMS]; /* The actual size in each dimension. */ struct plot *v_plot; /* The plot structure (if it has one). */ struct dvec *v_next; /* Link for list of plot vectors. */ struct dvec *v_link2; /* Extra link for things like print. */ struct dvec *v_scale; /* If this has a non-standard scale... */ } ; #define isreal(v) ((v)->v_flags & VF_REAL) #define iscomplex(v) ((v)->v_flags & VF_COMPLEX) /* The information for a particular set of vectors that come from one * plot. */ struct plot { char *pl_title; /* The title card. */ char *pl_date; /* Date. */ char *pl_name; /* The plot name. */ char *pl_typename; /* Tran1, op2, etc. */ struct dvec *pl_dvecs; /* The data vectors in this plot. */ struct dvec *pl_scale; /* The "scale" for the rest of the vectors. */ struct plot *pl_next; /* List of plots. */ wordlist *pl_commands; /* Commands to execute for this plot. */ struct variable *pl_env;/* The 'environment' for this plot. */ char *pl_ccom; /* The ccom struct for this plot. */ bool pl_written; /* Some or all of the vecs have been saved. */ } ; #endif /* FTEdata_h */ 0707070124060340701006440006700000000000011777770500302371600004500000000422spice3c1/spice3/include/ftedbgraph.h /* $Header: FTEdbgraph.h,v 1.2 88/11/17 02:35:23 quarles Exp $ Copyright 1987 Jeffrey M. Hsu External definitions for the graph database module. */ extern GRAPH *currentgraph; extern GRAPH *NewGraph(); extern GRAPH *FindGraph(); extern GRAPH *CopyGraph(); 0707070124060340711006440006700000000000011777770500302371600004300000003334spice3c1/spice3/include/ftedebug.h /* RCS Info: $Revision: 1.4 $ on $Date: 88/11/17 02:35:26 $ * $Source: /ic3/quarles/shared/include/RCS/FTEdebug.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * Stuff for debugging a spice run. Debugging information will be printed * on the standard output. */ #define DB_TRACENODE 1 /* Print the value of a node every iteration. */ #define DB_TRACEALL 2 /* Trace all nodes. */ #define DB_STOPAFTER 3 /* Break after this many iterations. */ #define DB_STOPWHEN 4 /* Break when a node reaches this value. */ #define DB_IPLOT 5 /* Incrementally plot the stuff. */ #define DB_IPLOTALL 6 /* Incrementally plot everything. */ #define DB_SAVE 7 /* Save a node. */ #define DB_SAVEALL 8 /* Save everything. */ /* These only make sense in the real case, so always use realpart(). It's too * bad that we have to say "ge" instead of ">=", etc, but cshpar takes * the <>'s... */ #define DBC_EQU 1 /* == (eq) */ #define DBC_NEQ 2 /* != (ne) */ #define DBC_GT 3 /* > (gt) */ #define DBC_LT 4 /* < (lt) */ #define DBC_GTE 5 /* >= (ge) */ #define DBC_LTE 6 /* <= (le) */ struct dbcomm { int db_number; /* The number of this debugging command. */ char db_type; /* One of the above. */ char *db_nodename1; /* What node. */ char *db_nodename2; /* What node. */ int db_iteration; /* For the DB_STOPAFTER command. */ char db_op; /* For DB_STOPWHEN. */ double db_value1; /* If this is DB_STOPWHEN. */ double db_value2; /* If this is DB_STOPWHEN. */ int db_graphid; /* If iplot, id of graph. */ struct dbcomm *db_also; /* Link for conjunctions. */ struct dbcomm *db_next; /* List of active debugging commands. */ } ; 0707070124060340721006440006700000000000011777770500302371600004200000004055spice3c1/spice3/include/ftedefs.h /* RCS Info: $Revision: 1.5 $ on $Date: 89/02/01 14:56:23 $ * $Source: /ic3/quarles/shared/include/RCS/FTEdefs.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * General front end stuff. */ #ifndef FTEdefs_h #define FTEdefs_h #define DEF_WIDTH 80 /* Line printer width. */ #define DEF_HEIGHT 60 /* Line printer height. */ #define IPOINTMIN 20 /* When we start plotting incremental plots. */ #include "fteparse.h" #include "fteinp.h" /* The curcuits that are currently available to the user. */ struct circ { char *ci_name; /* What the circuit can be called. */ char *ci_ckt; /* The CKTcircuit structure. */ char *ci_symtab; /* The INP symbol table. */ struct line *ci_deck; /* The input deck. */ struct line *ci_origdeck;/* The input deck, before subckt expansion. */ struct line *ci_options;/* The .option cards from the deck... */ struct variable *ci_vars; /* ... and the parsed versions. */ bool ci_inprogress; /* We are in a break now. */ bool ci_runonce; /* So com_run can to a reset if necessary... */ wordlist *ci_commands; /* Things to do when this circuit is done. */ struct circ *ci_next; /* The next in the list. */ char *ci_nodes; /* ccom structs for the nodes... */ char *ci_devices; /* and devices in the circuit. */ char *ci_filename; /* Where this circuit came from. */ char *ci_defTask; /* the default task for this circuit */ char *ci_specTask; /* the special task for command line jobs */ char *ci_curTask; /* the most recent task for this circuit */ char *ci_defOpt; /* the default options anal. for this circuit */ char *ci_specOpt; /* the special options anal. for command line jobs */ char *ci_curOpt; /* the most recent options anal. for the circuit */ } ; struct subcirc { char *sc_name; /* Whatever... */ } ; #define mylog10(xx) (((xx) > 0.0) ? log10(xx) : (- log10(HUGE))) #ifndef CMS #include "fteextern.h" #else /* CMS */ #include "fteexter.h" #endif /* CMS */ #endif /* FTEdefs_h */ 0707070124060340731006440006700000000000011777770500302371700004400000001405spice3c1/spice3/include/ftedevice.h /* $Header: FTEdevice.h,v 1.2 88/11/17 02:35:31 quarles Exp $ Copyright 1987 Jeffrey M. Hsu The display device structure. */ typedef struct { char *name; int minx, miny; int width, height; /* in screen coordinate system */ int numlinestyles, numcolors; /* number supported */ int (*Init)(); int (*NewViewport)(); int (*Close)(); int (*Clear)(); int (*DrawLine)(); int (*Arc)(); int (*Text)(); int (*DefineColor)(); int (*DefineLinestyle)(); int (*SetLinestyle)(); int (*SetColor)(); int (*Update)(); /* int (*NDCtoScreen)(); */ int (*Track)(); int (*MakeMenu)(); int (*MakeDialog)(); int (*Input)(); int (*DatatoScreen)(); } DISPDEVICE; extern DISPDEVICE *dispdev; 0707070124060340741006440006700000000000011777770500302371700004400000023300spice3c1/spice3/include/fteextern.h /* RCS Info: $Revision: 1.5 $ on $Date: 89/02/03 11:23:00 $ * $Source: /ic3/quarles/shared/include/RCS/FTEextern.h,v $ * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group * * Definitions for all external symbols in FTE. */ #ifndef FTEextern_h #define FTEextern_h /* needed to find out what the interface structures look like */ #include "ifsim.h" #include "fteparse.h" #include "cpdefs.h" #include "ftedefs.h" #include "fteinp.h" /* agraf.c */ extern void ft_agraf(); /* arg.c */ extern int arg_plot(); extern int arg_display(); extern int arg_print(); extern int arg_let(); extern int arg_load(); extern int arg_set(); /* aspice.c */ extern void com_aspice(); extern void com_jobs(); extern void com_rspice(); extern void ft_checkkids(); /* binary.c */ extern void braw_write(); extern struct plot *braw_read(); /* breakpoint.c */ extern bool ft_bpcheck(); extern void com_delete(); extern void com_iplot(); extern void com_save(); extern void com_step(); extern void com_stop(); extern void com_sttus(); extern void com_trce(); extern void ft_trquery(); /* circuits.c */ extern struct circ *ft_curckt; extern struct circ *ft_circuits; extern struct subcirc *ft_subcircuits; extern void ft_setccirc(); extern void ft_newcirc(); extern void ft_newsubcirc(); /* clip.c */ extern bool clip_line(); extern bool clip_to_circle(); /* cmath1.c */ extern bool cx_degrees; extern char *cx_mag(); extern char *cx_ph(); extern char *cx_j(); extern char *cx_real(); extern char *cx_imag(); extern char *cx_pos(); extern char *cx_db(); extern char *cx_log(); extern char *cx_ln(); extern char *cx_exp(); extern char *cx_sqrt(); extern char *cx_sin(); extern char *cx_cos(); /* cmath2.c */ extern char *cx_tan(); extern char *cx_atan(); extern char *cx_norm(); extern char *cx_uminus(); extern char *cx_rnd(); extern char *cx_mean(); extern char *cx_length(); extern char *cx_vector(); extern char *cx_unitvec(); extern char *cx_plus(); extern char *cx_minus(); extern char *cx_times(); extern char *cx_mod(); /* cmath3.c */ extern char *cx_divide(); extern char *cx_comma(); extern char *cx_power(); extern char *cx_eq(); extern char *cx_gt(); extern char *cx_lt(); extern char *cx_ge(); extern char *cx_le(); extern char *cx_ne(); /* cmath4.c */ extern char *cx_and(); extern char *cx_or(); extern char *cx_not(); extern char *cx_interpolate(); /* cmdtab.c */ extern struct comm cp_coms[]; /* compose.c */ extern void com_compose(); /* cpinterface.c symbols declared in CPextern.h */ /* debugcoms.c */ extern void com_dump(); extern void com_state(); /* define.c */ extern struct pnode *ft_substdef(); extern void com_define(); extern void com_undefine(); extern void ft_pnode(); /* device.c */ extern void com_show(); extern void com_alter(); /* diff.c */ extern void com_diff(); /* doplot.c */ extern void com_asciiplot(); extern void com_hardcopy(); extern void com_plot(); /* dotcards.c */ extern bool ft_acctprint; extern bool ft_listprint; extern bool ft_nopage; extern bool ft_nodesprint; extern bool ft_optsprint; extern void ft_cktcoms(); extern void ft_dotsaves(); extern void ft_savedotargs(); /* error.c */ extern void fatal(); extern void fperror(); extern void ft_sperror(); extern char ErrorMessage[]; /* evaluate.c */ extern struct dvec *op_and(); extern struct dvec *op_comma(); extern struct dvec *op_divide(); extern struct dvec *op_eq(); extern struct dvec *ft_evaluate(); extern struct dvec *op_ge(); extern struct dvec *op_gt(); extern struct dvec *op_le(); extern struct dvec *op_lt(); extern struct dvec *op_minus(); extern struct dvec *op_mod(); extern struct dvec *op_ne(); extern struct dvec *op_not(); extern struct dvec *op_or(); extern struct dvec *op_ind(); extern struct dvec *op_plus(); extern struct dvec *op_power(); extern struct dvec *op_times(); extern struct dvec *op_uminus(); extern struct dvec *op_range(); /* fourier.c */ extern void com_fourier(); /* ginterface.c */ extern bool gi_init(); extern bool gi_endpause; extern bool gi_rottext; extern int gi_fntheight; extern int gi_fntwidth; extern int gi_maxx; extern int gi_maxy; extern int gi_nolst; extern int gi_nocolors; extern int gi_package; extern void gi_arc(); extern void gi_clearscreen(); extern void gi_close(); extern void gi_drawline(); extern void gi_redraw(); extern void gi_setcolor(); extern void gi_resetcolor(); extern void gi_setlinestyle(); extern void gi_text(); extern void gi_update(); /* graf.c */ extern bool gr_gmode; extern bool gr_hmode; extern bool gr_init(); extern void gr_clean(); extern void gr_end(); extern void gr_iplot(); extern void gr_iplot_end(); extern void gr_pmsg(); extern void gr_point(); extern void gr_start(); extern double gr_xrange[2]; extern double gr_yrange[2]; extern int gr_xmargin; extern int gr_ymargin; extern int gr_xcenter; extern int gr_ycenter; extern int gr_radius; extern bool gr_circular; /* grid.c */ extern void gr_fixgrid(); /* input.c */ extern void com_edit(); extern void com_listing(); extern void com_source(); extern void inp_dodeck(); extern void inp_source(); extern void inp_spsource(); extern void inp_casefix(); extern void inp_list(); extern void inp_readall(); extern FILE *inp_pathopen(); /* interpolate.c */ extern bool ft_interpolate(); extern bool ft_polyfit(); extern double ft_peval(); extern void com_linearize(); /* mfbinterface.c */ extern void mi_arc(); extern bool mi_init(); extern void mi_clearscreen(); extern void mi_close(); extern void mi_drawline(); extern void mi_resetcolor(); extern void mi_setcolor(); extern void mi_setlinestyle(); extern void mi_text(); extern void mi_update(); /* misccoms.c */ extern void com_bug(); extern void com_ahelp(); extern void com_ghelp(); extern void com_help(); extern void com_quit(); extern void com_version(); extern int hcomp(); /* numparse.c */ extern bool ft_strictnumparse; extern double *ft_numparse(); /* options.c */ extern bool ft_simdb; extern bool ft_parsedb; extern bool ft_evdb; extern bool ft_vecdb; extern bool ft_grdb; extern bool ft_gidb; extern bool ft_controldb; extern bool ft_asyncdb; extern char *ft_setkwords[]; extern struct line *inp_getopts(); extern struct variable *cp_enqvar(); extern struct variable *cp_uservars(); extern int cp_userset(); /* parse.c */ extern struct func ft_funcs[]; extern struct func func_not; extern struct func func_uminus; extern struct pnode *ft_getpnames(); /* plotcurve.c */ extern int ft_findpoint(); extern double *ft_minmax(); extern void ft_graf(); /* plotinterface.c */ extern void pi_arc(); extern bool pi_init(); extern void pi_clearscreen(); extern void pi_close(); extern void pi_drawline(); extern void pi_resetcolor(); extern void pi_setcolor(); extern void pi_setlinestyle(); extern void pi_text(); extern void pi_update(); /* postcoms.c */ extern void com_cross(); extern void com_display(); extern void com_let(); extern void com_unlet(); extern void com_load(); extern void com_print(); extern void com_write(); extern void com_destroy(); extern void com_splot(); /* rawfile.c */ extern int raw_prec; extern void raw_write(); extern struct plot *raw_read(); /* resource.c */ extern void com_rusage(); extern void ft_ckspace(); /* runcoms.c */ extern void com_ac(); extern void com_dc(); extern void com_op(); extern void com_pz(); extern void com_sens(); extern void com_rset(); extern void com_resume(); extern void com_run(); extern void com_tran(); extern void com_scirc(); extern void ft_dorun(); /* spice.c & nutmeg.c */ extern bool menumode; extern bool ft_batchmode; extern bool ft_nutmeg; extern bool ft_servermode; extern IFsimulator *ft_sim; extern char *ft_rawfile; extern char *cp_program; extern int ft_sigintr(); extern void main(); /* spiceif.c & nutmegif.c */ extern bool if_tranparams(); extern char *if_errstring(); extern char *if_inpdeck(); extern int if_run(); extern int if_sens_run(); extern struct variable *if_getparam(); extern void if_cktfree(); extern void if_dump(); extern void if_option(); extern void if_setndnames(); extern void if_setparam(); extern struct variable *if_getstat(); /* subckt.c */ extern struct line *inp_deckcopy(); extern struct line *inp_subcktexpand(); extern int inp_numnodes(); /* types.c */ extern void com_dftype(); extern void com_stype(); extern char *ft_typabbrev(); extern char *ft_typenames(); extern char *ft_plotabbrev(); extern int ft_typnum(); /* vectors.c */ extern bool vec_eq(); extern int plot_num; extern struct dvec *vec_fromplot(); extern struct dvec *vec_copy(); extern struct dvec *vec_get(); extern struct dvec *vec_mkfamily(); extern struct plot *plot_cur; extern struct plot *plot_alloc(); extern struct plot *plot_list; extern int plotl_changed; extern void plot_add(); extern void vec_free(); extern void vec_gc(); extern void ft_loadfile(); extern void vec_new(); extern void plot_docoms(); extern void vec_remove(); extern void ft_sdatafree(); extern void plot_setcur(); extern void plot_new(); extern char *vec_basename(); extern bool plot_prefix(); /* writedata.c */ extern bool ft_intrpt; extern bool ft_setflag; extern int wrd_close(); extern int wrd_command(); extern int wrd_cptime; extern int wrd_end(); extern int wrd_init(); extern int wrd_limpts; extern int wrd_open(); extern int wrd_output(); extern int wrd_point(); extern int wrd_pt2(); extern int wrd_run(); extern int wrd_stopnow(); extern void wrd_chtrace(); extern void wrd_error(); extern void wrd_version(); extern wordlist *wrd_saves; /* xinterface.c */ extern void xi_arc(); extern bool xi_init(); extern bool xi_dump(); extern void xi_clearscreen(); extern void xi_close(); extern void xi_drawline(); extern void xi_resetcolor(); extern void xi_setcolor(); extern void xi_setlinestyle(); extern void xi_text(); extern void xi_update(); extern void xi_zoomdata(); extern struct screen *screens; extern void com_clearplot(); #endif /* FTEextern_h */ 0707070124060340751006440006700000000000011777770500302371700004200000000533spice3c1/spice3/include/ftegraf.h /* RCS Info: $Revision: 1.2 $ on $Date: 87/10/06 16:52:00 $ * $Source: /ic3/quarles/shared/include/RCS/FTEgraf.h,v $ * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group * * Definitions common to the various graphics modules. */ #define G_NONE 0 #define G_HCOPY 1 #define G_TERM 2 #define G_MFB 3 #define G_X 4 0707070124060340761006440006700000000000011777770500302371700004300000007410spice3c1/spice3/include/ftegraph.h /* $Header: FTEgraph.h,v 1.2 88/11/17 02:35:39 quarles Exp $ Copyright (c) 1988 Jeffrey M. Hsu This file contains the graph structure. */ #ifndef _GRAPH_H_ #define _GRAPH_H_ #ifndef CMS #include "fteconstant.h" #else /* CMS */ #include "fteconst.h" #endif /* CMS */ #include "ftedata.h" /* for struct dvec */ /* Device-independent data structure for plots. */ #define NUMCOLORS 20 /* list of data vectors being displayed */ struct dveclist { struct dvec *vector; struct dveclist *next; }; typedef struct graph { int graphid; struct dveclist *plotdata; /* normalized data */ char *plotname; /* name of plot this graph is in */ int onevalue; /* boolean variable, true if plotting one value against itself (real vs imaginary) */ int degree; /* degree of polynomial interpretation */ int currentcolor; int linestyle; struct { int height, width; } viewport; int viewportxoff; /* x offset of viewport w/in graph */ int viewportyoff; /* y offset of viewport w/in graph */ struct { int xpos; /* x position of graph in screen coord */ int ypos; /* y position of graph in screen coord */ int width; /* width of window on screen */ int height; /* height of window on screen */ } absolute; struct { double xmin, ymin, xmax, ymax; /* cache: width = xmax - xmin height = ymax - ymin */ double width, height; } datawindow; /* note: this int is device dependent */ int colors[NUMCOLORS]; /* cache (datawindow size) / (viewport size) */ double aspectratiox, aspectratioy; int ticmarks; /* mark every ticmark'th point */ int fontwidth, fontheight; /* for use in grid */ PLOTTYPE plottype; /* defined in FTEconstant.h */ struct { GRIDTYPE gridtype; /* defined in FTEconstant.h */ int circular; /* TRUE if circular plot area */ union { struct { char units[16]; /* unit labels */ int spacing, numspace, distance, lowlimit, highlimit, mult; int onedec; /* a boolean */ int hacked; /* true if hi - lo already hacked up */ } lin; struct { int hmt, lmt, decsp, subs, pp; } log; struct { int radius, center; } circular; /* bogus, rework when write polar grids, etc */ } xaxis, yaxis; int xdatatype, ydatatype; double xdelta, ydelta; /* if non-zero, user-specified deltas */ char *xlabel, *ylabel; } grid; int numbuttons; /* number of buttons */ struct { int id; char *message; } *buttons; int buttonsxoff; /* viewportxoff + x size of viewport */ int buttonsyoff; struct { int width, height; char message[161]; /* two lines of text */ } messagebox; int messagexoff; int messageyoff; /* characters the user typed on graph */ /* note: think up better names */ struct _keyed { char *text; int x, y; int colorindex; /* index into colors array */ struct _keyed *next; } *keyed; /* for zoomin */ char *commandline; /* Ick, ick, ick. Need to have device dependent info here because otherwise every device implementation would need to handle their own device dependent analog of GRAPH. I want a language with generics. Use pointer so we don't have to include device dependent header files here. Space here is allocated by NewViewport and de-allocated by DestroyGraph. */ char *devdep; } GRAPH; #define NEWGRAPH (GRAPH *) calloc(1, sizeof(GRAPH)) #define rnd(x) (int) ((x)+0.5) #endif /* notdef _GRAPH_H_ */ 0707070124060340771006440006700000000000011777770500302371700004200000000506spice3c1/spice3/include/ftehelp.h /* Copyright (c) 1987 Jeffrey M. Hsu Defines for help. */ #define E_HASPLOTS 1 #define E_NOPLOTS 2 #define E_HASGRAPHS 4 #define E_MENUMODE 8 #define E_BEGINNING 4096 #define E_INTERMED 8192 #define E_ADVANCED 16384 #define E_ALWAYS 32768 /* default is intermediate level */ #define E_DEFHMASK 8192 0707070124060341001006440006700000000000011777770500302371700004100000001061spice3c1/spice3/include/fteinp.h /* RCS Info: $Revision: 1.3 $ on $Date: 88/11/16 21:54:36 $ * $Source: /ic3/quarles/shared/include/RCS/FTEinp.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * Note that this definition must be the same as struct card in INPdefs.h... */ #ifndef FTEinput_h #define FTEinput_h struct line { int li_linenum; char *li_line; char *li_error; struct line *li_next; struct line *li_actual; } ; /* Listing types. */ #define LS_LOGICAL 1 #define LS_PHYSICAL 2 #define LS_DECK 3 #endif /* FTEinput_h */ 0707070124060341011006440006700000000000011777770500302372000004300000001660spice3c1/spice3/include/fteinput.h /* $Header: FTEinput.h,v 1.2 88/11/17 02:35:47 quarles Exp $ Copyright 1988 Jeffrey M. Hsu Defs to use the Input routine. char_option is used by the lexer and the command interpreter response.reply contains a pointer to a character button_option is used by the menu system and the help package response.reply contains the button number click_option is used in the X10 version for the hardcopy command response.reply is the associated graph structure */ #ifndef _INPUT_H_ #define _INPUT_H_ #include #include "ftegraph.h" typedef enum { error_option, /* a reply option only */ button_option, char_option, click_option, } OPTION; typedef struct request { OPTION option; FILE *fp; } REQUEST; typedef struct response { OPTION option; union { int ch; GRAPH *graph; int button; } reply; } RESPONSE; #endif /* notdef _INPUT_H_ */ 0707070124060341021006440006700000000000011777770500302372000004300000004733spice3c1/spice3/include/fteparse.h /* RCS Info: $Revision: 1.2 $ on $Date: 87/10/06 16:52:06 $ * $Source: /ic3/quarles/shared/include/RCS/FTEparse.h,v $ * Copyright (c) 1985 Wayne A. Christopher, U. C. Berkeley CAD Group * * Stuff for parsing -- used by the parser and in ft_evaluate(). */ #ifndef FTEPARSE #define FTEPARSE #include "ftedata.h" struct pnode { char *pn_name; /* If non-NULL, the name. */ struct dvec *pn_value; /* Non-NULL in a terminal node. */ struct func *pn_func; /* Non-NULL is a function. */ struct op *pn_op; /* Operation if the above two NULL. */ struct pnode *pn_left; /* Left branch or function argument. */ struct pnode *pn_right; /* Right branch. */ struct pnode *pn_next; /* For expression lists. */ } ; /* Operations. These should really be considered functions. */ struct op { int op_num; /* From parser #defines. */ char *op_name; /* Printing name. */ char op_arity; /* One or two. */ struct dvec *(*op_func)(); /* The function to do the work. */ } ; /* The functions that are available. */ struct func { char *fu_name; /* The print name of the function. */ char *(*fu_func)(); /* The function. */ } ; /* User-definable functions. The idea of ud_name is that the args are * kept in strings after the name, all seperated by '\0's. There * will be ud_arity of them. */ struct udfunc { char *ud_name; /* The name. */ int ud_arity; /* The arity of the function. */ struct pnode *ud_text; /* The definition. */ struct udfunc *ud_next; /* Link pointer. */ } ; #define MAXARITY 32 /* Parser elements. */ struct element { int e_token; /* One of the below. */ int e_type; /* If the token is VALUE. */ union { char *un_string; double un_double; struct pnode *un_pnode; } e_un; #define e_string e_un.un_string #define e_double e_un.un_double #define e_indices e_un.un_indices #define e_pnode e_un.un_pnode }; /* See the table in parse.c */ #define END 0 #define PLUS 1 #define MINUS 2 #define TIMES 3 #define MOD 4 #define DIVIDE 5 #define POWER 6 #define UMINUS 7 #define LPAREN 8 #define RPAREN 9 #define COMMA 10 #define VALUE 11 #define EQ 12 #define GT 13 #define LT 14 #define GE 15 #define LE 16 #define NE 17 #define AND 18 #define OR 19 #define NOT 20 #define IND 21 #define RANGE 22 #define NUM 1 #define STRING 2 #define PNODE 3 #endif /* FTEPARSE */ 0707070124060341031006440006700000000000011777770500302372000004600000000573spice3c1/spice3/include/fteredirect.h /* $Header: FTEredirect.h,v 1.3 88/11/16 21:54:38 quarles Exp $ Copyright (c) 1987 Jeffrey M. Hsu This include files intercepts call that may output to the screen. */ #ifdef MENU #ifndef DIRECT #define fprintf myfprintf #define printf myprintf #define fflush myfflush #ifdef putc #undef putc #endif #define putc myputc #define fputs myfputs #endif #endif 0707070124060341041006440006700000000000011777770500302372000004200000002512spice3c1/spice3/include/gendefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef GEN #define GEN "GENdefs.h $Revision: 1.4 $ on $Date: 88/11/17 02:35:55 $ " #include "ifsim.h" /* definitions used to describe generic devices */ /* information used to describe a single instance */ typedef struct sGENinstance { struct sGENmodel *GENmodPtr; /* backpointer to model */ struct sGENinstance *GENnextInstance; /* pointer to next instance of * current model*/ IFuid GENname; /* pointer to character string naming this instance */ int GENnode1; /* appropriate node numbers */ int GENnode2; /* appropriate node numbers */ int GENnode3; /* appropriate node numbers */ int GENnode4; /* appropriate node numbers */ int GENnode5; /* appropriate node numbers */ } GENinstance ; /* per model data */ typedef struct sGENmodel { /* model structure for a resistor */ int GENmodType; /* type index of this device type */ struct sGENmodel *GENnextModel; /* pointer to next possible model in * linked list */ GENinstance * GENinstances; /* pointer to list of instances that have this * model */ IFuid GENmodName; /* pointer to character string naming this model */ } GENmodel; #endif /*GEN*/ 0707070124060341051006440006700000000000011777770500302372000004200000007476spice3c1/spice3/include/hlpdefs.h /* RCS Info: $Revision: 1.8 $ on $Date: 89/04/25 20:44:28 $ * $Source: /ic3/quarles/shared/include/RCS/HLPdefs.h,v $ * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group * faustus@cad.berkeley.edu, ucbvax!faustus * Permission is granted to modify and re-distribute this code in any manner * as long as this notice is preserved. All standard disclaimers apply. * * Definitions for the help system. */ #ifdef GI_X #ifndef RootWindow /* I know, this may become a variable someday... */ #include #endif #endif #ifdef GI_X11 #include #endif typedef struct fplace { char *filename; long fpos; FILE *fp; } fplace; typedef struct button { char *text; fplace *tag; /* Why isn't used for anything? */ int x; int y; int width; int height; } button; struct hlp_index { char subject[64]; long fpos; }; typedef struct toplink { char *description; /* really the subject */ fplace *place; struct toplink *next; button button; } toplink; typedef struct topic { char *subject; char *title; fplace *place; wordlist *text; char *chartext; toplink *subtopics; toplink *seealso; int xposition; int yposition; struct topic *parent; struct topic *children; struct topic *next; struct topic *winlink; struct topic *readlink; int numlines; int maxcols; int curtopline; #ifdef GI_X Window win; int lines; int cols; int xpix; int ypix; int sublabypos; int salabypos; button but_quit; button but_delete; button but_next; button but_prev; #endif /*GI_X*/ #ifdef GI_X11 Widget shellwidget, formwidget, titlewidget, buttonwidget, textwidget, seelabelwidget, sublabelwidget, seeboxwidget, subboxwidget; #endif } topic; typedef struct handle { topic *parent; toplink *result; } handle; #define REG_FONT "timrom12" #define BOLD_FONT "timrom12b" #define ITALIC_FONT "timrom12i" #define TITLE_FONT "accordb" #define BUTTON_FONT "6x10" #define X_INCR 20 #define Y_INCR 20 #define BORDER_WIDTH 3 #define INT_BORDER 10 #define BUTTON_XPAD 4 #define BUTTON_YPAD 2 #define START_XPOS 100 #define START_YPOS 100 /* If the MAX_LINES and SCROLL_INCR are different, it is very confusing... */ #define MIN_COLS 40 #define MAX_COLS 90 #define MAX_LINES 25 #define SCROLL_INCR 25 #define BS_LEFT 0 #define BS_CENTER 1 #define BS_UNIF 2 #ifdef HELPPATH /* use #define from prefix.h if available */ #define DEFPATH HELPPATH #else #ifdef UNIX #define DEFPATH "/cad/lib/spice3/helpdir" #endif #ifdef IBMPC #define DEFPATH "\\cad\\lib\\spice3\\helpdir" #endif #ifdef VMS #define DEFPATH "DUA1:[FAUSTUS.SPICE3.LIB.HELPDIR]" #endif #endif /* External symbols. */ /* help.c */ extern void hlp_main(); extern char *hlp_directory; extern FILE *hlp_fopen(); extern fplace *findglobalsubject(); /* readhelp.c */ extern topic *hlp_read(); extern void hlp_free(); extern void hlp_pathfix(); extern long findsubject(); extern bool hlp_approvedfile(); /* provide.c */ extern void hlp_provide(); extern bool hlp_usex; /* xdisplay.c */ extern bool hlp_xdisplay(); extern void hlp_xclosedisplay(); extern toplink *hlp_xhandle(); extern void hlp_killfamily(); extern void hlp_fixchildren(); extern void hlp_xkillwin(); extern void hlp_xwait(); extern char *hlp_regfontname; extern char *hlp_boldfontname; extern char *hlp_italicfontname; extern char *hlp_titlefontname; extern char *hlp_buttonfontname; extern int hlp_initxpos; extern int hlp_initypos; extern int hlp_buttonstyle; /* extern bool hlp_using_x; */ extern char *hlp_displayname; /* textdisplay.c */ extern bool hlp_tdisplay(); extern toplink *hlp_thandle(); extern void hlp_tkillwin(); extern int hlp_width; 0707070124060341061006440006700000000000011777770500302372000004400000005162spice3c1/spice3/include/iferrmsgs.h /* * Copyright (c) 1986 Thomas L. Quarles */ #ifndef IFERRMSGS #define IFERRMSGS "IFerrmsgs.h $Revision: 1.3 $ on $Date: 88/11/16 21:54:44 $" /* common error message descriptions */ #define E_PAUSE -1 /* pausing on demand */ #define OK 0 #define E_PANIC 1 /* vague internal error for "can't get here" cases */ #define E_EXISTS 2 /* warning/error - attempt to create duplicate */ /* instance or model. Old one reused instead */ #define E_NODEV 3 /* attempt to modify a non-existant instance */ #define E_NOMOD 4 /* attempt to modify a non-existant model */ #define E_NOANAL 5 /* attempt to modify a non-existant analysis */ #define E_NOTERM 6 /* attempt to bind to a non-existant terminal */ #define E_BADPARM 7 /* attempt to specify a non-existant parameter */ #define E_NOMEM 8 /* insufficient memory available - VERY FATAL */ #define E_NODECON 9 /* warning/error - node already connected, old */ /* connection replaced */ #define E_UNSUPP 10 /* the specified operation is unsupported by the */ /* simulator */ #define E_PARMVAL 11 /* the parameter value specified is illegal */ #define E_NOTEMPTY 12 /* deleted still referenced item. */ #define E_NOCHANGE 13 /* simulator can't tolerate any more topology changes */ #define E_NOTFOUND 14 /* simulator can't find something it was looking for */ #define E_BAD_DOMAIN 15 /* output interface begin/end domain calls mismatched */ #define E_PRIVATE 100 /* messages above this number are private to */ /* the simulator and MUST be accompanied by */ /* a proper setting of errMsg */ /* this constant should be added to all such messages */ /* to ensure error free operation if it must be */ /* changed in the future */ extern char *errMsg; /* descriptive message about what went wrong */ /* MUST be malloc()'d - front end will free() */ /* this should be a detailed message,and is assumed */ /* malloc()'d so that you will feel free to add */ /* lots of descriptive information with sprintf*/ extern char *errRtn; /* name of the routine declaring error */ /* should not be malloc()'d, will not be free()'d */ /* This should be a simple constant in your routine */ /* and thus can be set correctly even if we run out */ /* of memory */ #endif /*IFERRMSGS*/ 0707070124060341071006440006700000000000011777770500302372000004000000046117spice3c1/spice3/include/ifsim.h/* * Copyright (c) 1986 Thomas L. Quarles */ #ifndef IFSIMULATOR #define IFSIMULATOR "IFsim.h $Revision: 1.7 $ on $Date: 88/12/16 19:33:25 $" /* * We don't always have access to an ANSI C compiler yet, so we * make the following convenient definition * */ #ifdef __STDC__ /* using an ansi C compiler, so we have the void* construct */ typedef void GENERIC; #else /* not using an ansi C compiler, so we have to use char* as the */ /* most generic pointer type */ typedef char GENERIC; #endif /* * structure: IFparm * * * The structure used to describe all values passed * between the front end and the simulator when there is any * possibility one argument of the function could have more * than one type. * * keyword is provided for the front end and is the token * the user is expected to label the data with. * * id is an integer intended to uniquely identify the parameter * to the simulator * * dataType is an integer which indicates the type of argument * that must be passed for this parameter * * description is a longer description intended for help menus * the description should all fit on one line, but should * give a knowledgable user a good idea what the parameter is * used for. */ typedef struct sIFparm { char *keyword; int id; int dataType; char *description; } IFparm; /* * * datatype: IFuid * * unique identifier for all name-type data in the simulator. * this permits the front end to use something other than * a unique, fully qualified character string to identify * an object. * */ typedef GENERIC *IFuid; /* * * types for IFnewUid * */ #define UID_ANALYSIS 0x1 #define UID_TASK 0x2 #define UID_INSTANCE 0x4 #define UID_MODEL 0x8 #define UID_SIGNAL 0x10 #define UID_OTHER 0x20 /* * dataType values: * * Note: These structures are put together by ORing together the * appropriate bits from the fields below as is shown for the vector * types. * IF_REQUIRED indicates that the parameter must be specified. * The front end does not NEED to check for this, but can to save time, * since failure to do so will cause the simulator to fail. * IF_SET indicates that the specified item is an input parameter. * IF_ASK indicates that the specified item is something the simulator * can provide information about. * IF_SET and IF_ASK are NOT mutually exclusive. * if IF_SET and IF_ASK are both zero, it indicates a parameter that * the simulator recoginizes are being a reasonable paremeter, but * which this simulator does not implement. */ #define IF_FLAG 0x1 #define IF_INTEGER 0x2 #define IF_REAL 0x4 #define IF_COMPLEX 0x8 #define IF_NODE 0x10 #define IF_STRING 0x20 #define IF_INSTANCE 0x40 #define IF_PARSETREE 0x80 /* indicates that for a query the integer field will have a selector * in it to pick a sub-field */ #define IF_SELECT 0x800 #define IF_VSELECT 0x400 /* indicates a vector of the specified type */ #define IF_VECTOR 0x8000 #define IF_FLAGVEC (IF_FLAG|IF_VECTOR) #define IF_INTVEC (IF_INTEGER|IF_VECTOR) #define IF_REALVEC (IF_REAL|IF_VECTOR) #define IF_CPLXVEC (IF_COMPLEX|IF_VECTOR) #define IF_NODEVEC (IF_NODE|IF_VECTOR) #define IF_STRINGVEC (IF_STRING|IF_VECTOR) #define IF_INSTVEC (IF_INSTANCE|IF_VECTOR) #define IF_REQUIRED 0x4000 #define IF_VARTYPES 0x80ff #define IF_SET 0x2000 #define IF_ASK 0x1000 /* If you AND with IF_UNIMP_MASK and get 0, it is recognized, but not * implemented */ #define IF_UNIMP_MASK 0x3000 /* Structure: IFparseTree * * This structure is returned by the parser for a IF_PARSETREE valued * parameter and describes the information that the simulator needs * to know about the parse tree in order to use it. * It is expected that the front end will have a more extensive * structure which this structure will be a prefix of. * * Note that the function pointer is provided as a hook for * versions which may want to compile code for the parse trees * if they are used heavily. * */ typedef struct sIFparseTree { int numVars; /* number of variables used */ int *varTypes; /* array of types of variables */ union uIFvalue * vars; /* array of structures describing values */ #ifdef __STDC__ int ((*IFeval)(struct sIFparseTree*,double*,double*,double*)); #else int ((*IFeval)()); /* function to call to get evaluated */ #endif /* STDC */ } IFparseTree; /* * Structure: IFvalue * * structure used to pass the values corresponding to the above * dataType. All types are passed in one of these structures, with * relatively simple rules concerning the handling of the structure. * * whoever makes the subroutine call allocates a single instance of the * structure. The basic data structure belongs to you, and you * should arrange to free it when appropriate. * * The responsibilities of the data supplier are: * Any vectors referenced by the structure are to be malloc()'d * and are assumed to have been turned over to the recipient and * thus should not be re-used or free()'d. * * The responsibilities of the data recipient are: * scalar valued data is to be copied by the recipient * vector valued data is now the property of the recipient, * and must be free()'d when no longer needed. * * Character strings are a special case: Since it is assumed * that all character strings are directly descended from input * tokens, it is assumed that they are static, thus nobody * frees them until the circuit is deleted, when the front end * may do so. * * EVERYBODY's responsibility is to be SURE that the right data * is filled in and read out of the structure as per the IFparm * structure describing the parameter being passed. Programs * neglecting this rule are fated to die of data corruption * */ /* * Some preliminary definitions: * * IFnode's are returned by the simulator, thus we don't really * know what they look like, just that we get to carry pointers * to them around all the time, and will need to save them occasionally * */ typedef GENERIC * IFnode; /* * and of course, the standard complex data type */ typedef struct sIFcomplex { double real; double imag; } IFcomplex; typedef union uIFvalue { int iValue; /* integer or flag valued data */ double rValue; /* real valued data */ IFcomplex cValue; /* complex valued data */ char *sValue; /* string valued data */ IFuid uValue; /* UID valued data */ IFnode nValue; /* node valued data */ IFparseTree *tValue; /* parse tree */ struct { int numValue; /* length of vector */ union { int *iVec; /* pointer to integer vector */ double *rVec; /* pointer to real vector */ IFcomplex *cVec;/* pointer to complex vector */ char **sVec; /* pointer to string vector */ IFuid *uVec; /* pointer to UID vector */ IFnode *nVec; /* pointer to node vector */ }vec; }v; } IFvalue; /* * structure: IFdevice * * This structure contains all the information available to the * front end about a particular device. The simulator will * present the front end with an array of pointers to these structures * which it will use to determine legal device types and parameters. * * Note to simulators: you are passing an array of pointers to * these structures, so you may in fact make this the first component * in a larger, more complex structure which includes other data * which you need, but which is not needed in the common * front end interface. * */ typedef struct sIFdevice { char *name; /* name of this type of device */ char *description; /* description of this type of device */ int terms; /* number of terminals on this device */ int numNames; /* number of names in termNames */ char **termNames; /* pointer to array of pointers to names */ /* array contains 'terms' pointers */ int numInstanceParms; /* number of instance parameter descriptors */ IFparm *instanceParms; /* array of instance parameter descriptors */ int numModelParms; /* number of model parameter descriptors */ IFparm *modelParms; /* array of model parameter descriptors */ } IFdevice; /* * Structure: IFanalysis * * This structure contains all the information available to the * front end about a particular analysis type. The simulator will * present the front end with an array of pointers to these structures * which it will use to determine legal analysis types and parameters. * * Note to simulators: As for IFdevice above, you pass an array of pointers * to these, so you can make this structure a prefix to a larger structure * which you use internally. * */ typedef struct sIFanalysis { char *name; /* name of this analysis type */ char *description; /* description of this type of analysis */ int numParms; /* number of analysis parameter descriptors */ IFparm *analysisParms; /* array of analysis parameter descriptors */ } IFanalysis; /* * Structure: IFsimulator * * This is what we have been leading up to all along. * This structure describes a simulator to the front end, and is * returned from the SIMinit command to the front end. * This is where all those neat structures we described in the first * few hundred lines of this file come from. * */ typedef struct sIFsimulator { char *simulator; /* the simulator's name */ char *description; /* description of this simulator */ char *version; /* version or revision level of simulator*/ #ifdef __STDC__ int ((*newCircuit)(GENERIC **)); /* create new circuit */ int ((*deleteCircuit)(GENERIC *)); /* destroy old circuit's data structures*/ int ((*newNode)(GENERIC *,GENERIC**,IFuid)); /* create new node */ int ((*groundNode)(GENERIC*,GENERIC**,IFuid)); /* create ground node */ int ((*bindNode)(GENERIC *,GENERIC*,int,GENERIC*)); /* bind a node to a terminal */ int ((*findNode)(GENERIC *,GENERIC**,IFuid)); /* find a node by name */ int ((*instToNode)(GENERIC *,GENERIC *,int,GENERIC **,IFuid *)); /* find the node attached to a terminal */ int ((*setNodeParm)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* set a parameter on a node */ int ((*askNodeQuest)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* ask a question about a node */ int ((*deleteNode)(GENERIC*,GENERIC*)); /* delete a node from the circuit */ int ((*newInstance)(GENERIC*,GENERIC*,GENERIC**,IFuid)); /* create new instance */ int ((*setInstanceParm)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* set a parameter on an instance */ int ((*askInstanceQuest)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* ask a question about an instance */ int ((*findInstance)(GENERIC*,int*,GENERIC**,IFuid,GENERIC*,IFuid)); /* find a specific instance */ int ((*deleteInstance)(GENERIC*,GENERIC*)); /* delete an instance from the circuit */ int ((*newModel)(GENERIC*,int,GENERIC**,IFuid)); /* create new model */ int ((*setModelParm)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* set a parameter on a model */ int ((*askModelQuest)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* ask a questions about a model */ int ((*findModel)(GENERIC*,int*,GENERIC**,IFuid)); /* find a specific model */ int ((*deleteModel)(GENERIC*,GENERIC*)); /* delete a model from the circuit*/ int ((*newTask)(GENERIC*,GENERIC**,IFuid)); /* create a new task */ int ((*newAnalysis)(GENERIC*,int,IFuid,GENERIC**,GENERIC*)); /* create new analysis within a task */ int ((*setAnalysisParm)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* set a parameter on an analysis */ int ((*askAnalysisQuest)(GENERIC*,GENERIC*,int,IFvalue*,IFvalue*)); /* ask a question about an analysis */ int ((*findAnalysis)(GENERIC*,int*,GENERIC**,IFuid,GENERIC*,IFuid)); /* find a specific analysis */ int ((*findTask)(GENERIC*,GENERIC**,IFuid)); /* find a specific task */ int ((*deleteTask)(GENERIC*,GENERIC*)); /* delete a task */ int ((*doAnalyses)(GENERIC*,int,GENERIC*)); /* run a specified task */ #else int ((*newCircuit)()); /* create new circuit */ int ((*deleteCircuit)()); /* destroy old circuit's data structures */ int ((*newNode)()); /* create new node */ int ((*groundNode)()); /* create ground node */ int ((*bindNode)()); /* bind a node to a terminal */ int ((*findNode)()); /* find a node by name */ int ((*instToNode)()); /* find the node attached to a terminal */ int ((*setNodeParm)()); /* set a parameter on a node */ int ((*askNodeQuest)()); /* ask a question about a node */ int ((*deleteNode)()); /* delete a node from the circuit */ int ((*newInstance)()); /* create new instance */ int ((*setInstanceParm)()); /* set a parameter on an instance */ int ((*askInstanceQuest)()); /* ask a question about an instance */ int ((*findInstance)()); /* find a specific instance */ int ((*deleteInstance)()); /* delete an instance from the circuit */ int ((*newModel)()); /* create new model */ int ((*setModelParm)()); /* set a parameter on a model */ int ((*askModelQuest)()); /* ask a questions about a model */ int ((*findModel)()); /* find a specific model */ int ((*deleteModel)()); /* delete a model from the circuit*/ int ((*newTask)()); /* create a new task */ int ((*newAnalysis)()); /* create new analysis within a task */ int ((*setAnalysisParm)()); /* set a parameter on an analysis */ int ((*askAnalysisQuest)()); /* ask a question about an analysis */ int ((*findAnalysis)()); /* find a specific analysis */ int ((*findTask)()); /* find a specific task */ int ((*deleteTask)()); /* delete a task */ int ((*doAnalyses)()); /* run a specified task */ #endif /* STDC */ int numDevices; /* number of device types supported */ IFdevice **devices; /* array of device type descriptors */ int numAnalyses; /* number of analysis types supported */ IFanalysis **analyses; /* array of analysis type descriptors */ int numNodeParms; /* number of node parameters supported */ IFparm *nodeParms; /* array of node parameter descriptors */ int numSpecSigs; /* number of special signals legal in parse trees */ char **specSigs; /* names of special signals legal in parse trees */ } IFsimulator; /* * Structure: IFfrontEnd * * This structure provides the simulator with all the information * it needs about the front end. This is the entire set of * front end and back end related routines the simulator * should know about. * */ typedef struct sIFfrontEnd { #ifdef __STDC__ int ((*IFnewUid)(GENERIC*,IFuid*,IFuid,char*,int,GENERIC**)); /* create a new UID in the circuit */ int ((*IFpauseTest)(void)); /* should we stop now? */ double ((*IFseconds)(void)); /* what time is it? */ int ((*IFerror)(int,char*,IFuid*)); /* output an error or warning message */ int ((*OUTpBeginPlot)(GENERIC*,GENERIC*,IFuid,IFuid,int, int,IFuid*,int,GENERIC**)); /* start pointwise output plot */ int ((*OUTpData)(GENERIC*,IFvalue*,IFvalue*)); /* data for pointwise plot */ int ((*OUTwBeginPlot)(GENERIC*,GENERIC*,IFuid,IFuid,int, int,IFuid*,int,GENERIC**)); /* start windowed output plot */ int ((*OUTwReference)(GENERIC*,IFvalue*,GENERIC**)); /* independent vector for windowed plot */ int ((*OUTwData)(GENERIC*,int,IFvalue*,GENERIC*)); /* data for windowed plot */ int ((*OUTwEnd)(GENERIC*)); /* signal end of windows */ int ((*OUTendPlot)(GENERIC*)); /* end of plot */ int ((*OUTbeginDomain)(GENERIC*,IFuid,int,IFvalue*)); /* start nested domain */ int ((*OUTendDomain)(GENERIC*)); /* end nested domain */ int ((*OUTattributes)(GENERIC *,IFuid*,int,IFvalue*)); /* specify output attributes of node */ #else /* not STDC */ int ((*IFnewUid)()); /* create a new UID in the circuit */ int ((*IFpauseTest)()); /* should we stop now? */ double ((*IFseconds)()); /* what time is it? */ int ((*IFerror)()); /* output an error or warning message */ int ((*OUTpBeginPlot)()); /* start pointwise output plot */ int ((*OUTpData)()); /* data for pointwise plot */ int ((*OUTwBeginPlot)()); /* start windowed output plot */ int ((*OUTwReference)()); /* independent vector for windowed plot */ int ((*OUTwData)()); /* data for windowed plot */ int ((*OUTwEnd)()); /* signal end of windows */ int ((*OUTendPlot)()); /* end of plot */ int ((*OUTbeginDomain)()); /* start nested domain */ int ((*OUTendDomain)()); /* end nested domain */ int ((*OUTattributes)()); /* specify output attributes of node */ #endif /* STDC */ } IFfrontEnd; /* flags for the first argument to IFerror */ #define ERR_WARNING 0x1 #define ERR_FATAL 0x2 #define ERR_PANIC 0x4 #define ERR_INFO 0x8 /* valid values for the second argument to doAnalyses */ /* continue the analysis from where we left off */ #define RESUME 0 /* start everything over from the beginning of this task*/ #define RESTART 1 /* abandon the current analysis and go on the the next in the task*/ #define SKIPTONEXT 2 #endif /*IFSIMULATOR*/ 0707070124060341101006440006700000000000011777770500302372000004200000016265spice3c1/spice3/include/inddefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef IND #define IND "INDdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:36:06 $ " /* turn on mutual inductor code */ #define MUTUAL #include "ifsim.h" #include "complex.h" #include "gendefs.h" #include "cktdefs.h" /* structures used to descrive inductors */ /* information needed for each instance */ typedef struct sINDinstance { struct sINDmodel *INDmodPtr; /* backpointer to model */ struct sINDinstance *INDnextInstance; /* pointer to next instance of * current model*/ IFuid INDname; /* pointer to character string naming this instance */ int INDposNode; /* number of positive node of inductor */ int INDnegNode; /* number of negative node of inductor */ int INDbrEq; /* number of the branch equation added for current */ int INDstate; /* pointer to beginning of state vector for inductor */ double INDinduct; /* inductance */ double INDinitCond; /* initial inductor voltage if specified */ #define INDflux INDstate /* flux in the inductor */ #define INDvolt INDstate+1 /* voltage - save an entry in table */ #define INDsensxp INDstate+2 /* charge sensitivities and their derivatives. +3 for the derivatives - pointer to the beginning of the array */ double *INDposIbrptr; /* pointer to sparse matrix diagonal at * (positive,branch eq) */ double *INDnegIbrptr; /* pointer to sparse matrix diagonal at * (negative,branch eq) */ double *INDibrNegptr; /* pointer to sparse matrix offdiagonal at * (branch eq,negative) */ double *INDibrPosptr; /* pointer to sparse matrix offdiagonal at * (branch eq,positive) */ double *INDibrIbrptr; /* pointer to sparse matrix offdiagonal at * (branch eq,branch eq) */ unsigned INDindGiven : 1; /* flag to indicate inductance was specified */ unsigned INDicGiven : 1; /* flag to indicate init. cond. was specified */ int INDsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } INDinstance ; /* per model data */ typedef struct sINDmodel { /* model structure for an inductor */ int INDmodType; /* type index of this device type */ struct sINDmodel *INDnextModel; /* pointer to next possible model in * linked list */ INDinstance * INDinstances; /* pointer to list of instances that have this * model */ IFuid INDmodName; /* pointer to character string naming this model */ } INDmodel; #ifdef MUTUAL /* structures used to describe mutual inductors */ /* information needed for each instance */ typedef struct sMUTinstance { struct sMUTmodel *MUTmodPtr; /* backpointer to model */ struct sMUTinstance *MUTnextInstance; /* pointer to next instance of * current model*/ IFuid MUTname; /* pointer to character string naming this instance */ double MUTcoupling; /* mutual inductance input by user */ double MUTfactor; /* mutual inductance scaled for internal use */ IFuid MUTindName1; /* name of coupled inductor 1 */ IFuid MUTindName2; /* name of coupled inductor 2 */ INDinstance *MUTind1; /* pointer to coupled inductor 1 */ INDinstance *MUTind2; /* pointer to coupled inductor 2 */ double *MUTbr1br2; /* pointers to off-diagonal intersections of */ double *MUTbr2br1; /* current branch equations in matrix */ unsigned MUTindGiven : 1; /* flag to indicate inductance was specified */ int MUTsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } MUTinstance ; /* per model data */ typedef struct sMUTmodel { /* model structure for a mutual inductor */ int MUTmodType; /* type index of this device type */ struct sMUTmodel *MUTnextModel; /* pointer to next possible model in * linked list */ MUTinstance * MUTinstances; /* pointer to list of instances that have this * model */ IFuid MUTmodName; /* pointer to character string naming this model */ } MUTmodel; #endif /*MUTUAL*/ /* device parameters */ #define IND_IND 1 #define IND_IC 2 #define IND_FLUX 3 #define IND_VOLT 4 #define IND_IND_SENS 5 #define IND_CURRENT 6 #define IND_POWER 7 /* model parameters */ /* device questions */ #define IND_QUEST_SENS_REAL 201 #define IND_QUEST_SENS_IMAG 202 #define IND_QUEST_SENS_MAG 203 #define IND_QUEST_SENS_PH 204 #define IND_QUEST_SENS_CPLX 205 #define IND_QUEST_SENS_DC 206 #ifdef MUTUAL /* device parameters */ #define MUT_COEFF 401 #define MUT_IND1 402 #define MUT_IND2 403 #define MUT_COEFF_SENS 404 /* model parameters */ /* device questions */ #define MUT_QUEST_SENS_REAL 601 #define MUT_QUEST_SENS_IMAG 602 #define MUT_QUEST_SENS_MAG 603 #define MUT_QUEST_SENS_PH 604 #define MUT_QUEST_SENS_CPLX 605 #define MUT_QUEST_SENS_DC 606 #endif /*MUTUAL*/ #ifdef __STDC__ extern int INDacLoad(GENmodel*,CKTcircuit*); extern int INDask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int INDdelete(GENmodel*,IFuid,GENinstance**); extern void INDdestroy(GENmodel**); extern int INDload(GENmodel*,CKTcircuit*); extern int INDmDelete(GENmodel**,IFuid,GENmodel*); extern int INDparam(int,IFvalue*,GENinstance*,IFvalue*); extern int INDpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int INDsAcLoad(GENmodel*,CKTcircuit*); extern int INDsLoad(GENmodel*,CKTcircuit*); extern void INDsPrint(GENmodel*,CKTcircuit*); extern int INDsSetup(SENstruct*,GENmodel*); extern int INDsUpdate(GENmodel*,CKTcircuit*); extern int INDsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int INDtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int INDacLoad(); extern int INDask(); extern int INDdelete(); extern void INDdestroy(); extern int INDload(); extern int INDmDelete(); extern int INDparam(); extern int INDpzLoad(); extern int INDsAcLoad(); extern int INDsLoad(); extern void INDsPrint(); extern int INDsSetup(); extern int INDsUpdate(); extern int INDsetup(); extern int INDtrunc(); #endif /* stdc */ #ifdef MUTUAL #ifdef __STDC__ extern int MUTacLoad(GENmodel*,CKTcircuit*); extern int MUTask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int MUTdelete(GENmodel*,IFuid,GENinstance**); extern void MUTdestroy(GENmodel**); extern int MUTmDelete(GENmodel**,IFuid,GENmodel*); extern int MUTparam(int,IFvalue*,GENinstance*,IFvalue*); extern int MUTpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern void MUTsPrint(GENmodel*,CKTcircuit*); extern int MUTsSetup(SENstruct*,GENmodel*); extern int MUTsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int MUTacLoad(); extern int MUTask(); extern int MUTdelete(); extern void MUTdestroy(); extern int MUTmDelete(); extern int MUTparam(); extern int MUTpzLoad(); extern void MUTsPrint(); extern int MUTsSetup(); extern int MUTsetup(); #endif /* stdc */ #endif /*MUTUAL*/ #endif /*IND*/ 0707070124060341111006440006700000000000011777770500302372000004200000011562spice3c1/spice3/include/inpdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef INP #define INP "INPdefs.h $Revision: 1.5 $ on $Date: 89/01/13 15:28:52 $ " /* structure declarations used by either/both input package */ #include "ifsim.h" #include "gendefs.h" #ifndef CMS #include "inpparsetree.h" #else /* CMS */ #include "inpparse.h" #endif /* CMS */ struct INPtab { char *t_ent; struct INPtab *t_next; }; struct INPnTab { char *t_ent; GENERIC* t_node; struct INPnTab *t_next; }; typedef struct sINPtables{ struct INPtab **INPsymtab; struct INPnTab **INPtermsymtab; int INPsize; int INPtermsize; GENERIC *defAmod; GENERIC *defBmod; GENERIC *defCmod; GENERIC *defDmod; GENERIC *defEmod; GENERIC *defFmod; GENERIC *defGmod; GENERIC *defHmod; GENERIC *defImod; GENERIC *defJmod; GENERIC *defKmod; GENERIC *defLmod; GENERIC *defMmod; GENERIC *defNmod; GENERIC *defOmod; GENERIC *defPmod; GENERIC *defQmod; GENERIC *defRmod; GENERIC *defSmod; GENERIC *defTmod; GENERIC *defUmod; GENERIC *defVmod; GENERIC *defWmod; GENERIC *defYmod; GENERIC *defZmod; } INPtables; typedef struct card{ int linenum; char *line; char *error; struct card *nextcard; struct card *actualLine; } card; /* structure used to save models in after they are read during pass 1 */ typedef struct sINPmodel{ IFuid INPmodName; /* uid of model */ int INPmodType; /* type index of device type */ struct sINPmodel *INPnextModel; /* link to next model */ int INPmodUsed; /* flag to indicate it has already been used */ card *INPmodLine; /* pointer to line describing model */ GENERIC *INPmodfast; /* high speed pointer to model for access */ } INPmodel; /* listing types - used for debug listings */ #define LOGICAL 1 #define PHYSICAL 2 #ifdef __STDC__ int IFnewUid(GENERIC*,IFuid*,IFuid,char*,int,GENERIC**); int INPaName(char*,IFvalue*,GENERIC*,int*,char*,GENERIC**,IFsimulator*,int*, IFvalue*); int INPapName(GENERIC*,int,GENERIC*,char*,IFvalue*); void INPcaseFix(char*); char * INPdevParse(char**,GENERIC*,int,GENERIC*,double*,int*,INPtables*); char *INPdomodel(GENERIC *,card*, INPtables*); void INPdoOpts(GENERIC*,GENERIC*,card*,INPtables*); char *INPerrCat(char *, char *); char *INPerror(int); double INPevaluate(char**,int*,int); char * INPfindLev(char*,int*); char * INPgetMod(GENERIC*,char*,INPmodel**,INPtables*); int INPgetTok(char**,char**,int); void INPgetTree(char**,INPparseTree**,GENERIC*,INPtables*); IFvalue * INPgetValue(GENERIC*,char**,int,INPtables*); int INPgndInsert(GENERIC*,char**,INPtables*,GENERIC**); int INPinsert(char**,INPtables*); int INPlookMod(char*); int INPmakeMod(char*,int,card*); char *INPmkTemp(char*); void INPpas1(GENERIC*,card*,INPtables*); void INPpas2(GENERIC*,card*,INPtables*,GENERIC *); int INPpName(char*,IFvalue*,GENERIC*,int,GENERIC*); int INPtermInsert(GENERIC*,char**,INPtables*,GENERIC**); int INPmkTerm(GENERIC*,char**,INPtables*,GENERIC**); int INPtypelook(char*); void INP2B(GENERIC*,INPtables*,card*); void INP2C(GENERIC*,INPtables*,card*); void INP2D(GENERIC*,INPtables*,card*); void INP2E(GENERIC*,INPtables*,card*); void INP2F(GENERIC*,INPtables*,card*); void INP2G(GENERIC*,INPtables*,card*); void INP2H(GENERIC*,INPtables*,card*); void INP2I(GENERIC*,INPtables*,card*); void INP2J(GENERIC*,INPtables*,card*); void INP2K(GENERIC*,INPtables*,card*); void INP2L(GENERIC*,INPtables*,card*); void INP2M(GENERIC*,INPtables*,card*); void INP2Q(GENERIC*,INPtables*,card*,GENERIC*); void INP2R(GENERIC*,INPtables*,card*); void INP2S(GENERIC*,INPtables*,card*); void INP2T(GENERIC*,INPtables*,card*); void INP2U(GENERIC*,INPtables*,card*); void INP2V(GENERIC*,INPtables*,card*); void INP2W(GENERIC*,INPtables*,card*); void INP2Z(GENERIC*,INPtables*,card*); int INP2dot(GENERIC*,INPtables*,card*,GENERIC*,GENERIC*); INPtables *INPtabInit(int); void INPkillMods(void); void INPtabEnd(INPtables *); #else /* stdc */ int IFnewUid(); int INPaName(); IFvalue * INPgetValue(); INPtables *INPtabInit(); char * INPdevParse(); char * INPdomodel(); char * INPerrCat(); char * INPfindLev(); char * INPgetMod(); char *INPerror(); char *INPmkTemp(); double INPevaluate(); int INPapName(); int INPgetTitle(); int INPgetTok(); int INPgndInsert(); int INPlookMod(); int INPmakeMod(); int INPpName(); int INPreadAll(); int INPtermInsert(); int INPmkTerm(); int INPtypelook(); void INPcaseFix(); void INPdoOpts(); int INPinsert(); void INPkillMods(); void INPlist(); void INPpas1() ; void INPpas2() ; void INPtabEnd(); void INPptPrint(); void INPgetTree(); void INP2B(); void INP2C(); void INP2D(); void INP2E(); void INP2F(); void INP2G(); void INP2H(); void INP2I(); void INP2J(); void INP2K(); void INP2L(); void INP2M(); void INP2Q(); void INP2R(); void INP2S(); void INP2T(); void INP2U(); void INP2V(); void INP2W(); void INP2Z(); int INP2dot(); #endif /* stdc */ #endif /*INP*/ 0707070124060341121006440006700000000000011777770500302372000004200000002012spice3c1/spice3/include/inpmacs.h/* a couple of macros to make much of the input code * much much shorter and easier to handle. * * First, call the simulator function 'func', giving it the arglist * 'args' (must have its own parens!) and check the error returned. * If necessary, get the proper error message and tack it on the current * error */ #define IFC(func,args)\ error=(*(ft_sim->func))args;\ if(error)current->error = INPerrCat(current->error,INPerror(error)); /* and one for calling more General functions that still return an * error code as above */ #define GCA(func,args)\ error=func args;\ if(error)current->error = INPerrCat(current->error,INPerror(error)); /* and one for putting our own error messages onto the current * line's error string */ #define LITERR(text) current->error=INPerrCat(current->error,INPmkTemp(text)); /* and now a special one for calling INPdevParse which returns an * already concatenated list of error messages or NUL */ #define PARSECALL(args)\ current->error = INPerrCat(current->error,INPdevParse args ); 0707070124060341131006440006700000000000011777770500302372000004700000010670spice3c1/spice3/include/inpparsetree.h /* RCS Info: $Revision: 1.3 $ on $Date: 88/11/17 02:36:14 $ * $Source: /ic3/quarles/shared/include/RCS/INPparseTree.h,v $ * Copyright (c) 1987 Wayne A. Christopher, U. C. Berkeley CAD Group * faustus@cad.berkeley.edu, ucbvax!faustus * * These definitions specify the format of the parse tree parameter type. * The first four are the elements of IFparseTree, defined in IFsim.h. */ #include "ifsim.h" #ifndef INP_PARSE #define INP_PARSE /* This is the parameter value passed to the device routines. To get the * value of the function, where tree is a pointer to the INPparseTree, * result is a pointer to where you want the result, derivs is a pointer to * an vector of numVars doubles, and vals is a pointer to the selected * elements from the RHS, do * tree->p.IFeval(&tree, result, vals, derivs) * This routine will return either OK, E_PARMVAL, or E_PANIC. If an error * is reported the eval function will have printed something to standard * out before returning. */ typedef struct INPparseTree { IFparseTree p; struct INPparseNode *tree; /* The real stuff. */ struct INPparseNode **derivs; /* The derivative parse trees. */ } INPparseTree; /* This is what is passed as the actual parameter value. The fields will all * be filled in as needed. * * Values with names like v(something) and i(something) are treated specially. * They are considered voltages at nodes and branch currents through * voltage sources, respectively. The corresponding parameters will be of * type IF_NODE and IF_INSTANCE, respectively. */ typedef struct INPparseNode { int type; /* One of PT_*, below. */ struct INPparseNode *left; /* Left operand, or single operand. */ struct INPparseNode *right; /* Right operand, if there is one. */ double constant; /* If INP_CONSTANT. */ int valueIndex; /* If INP_VAR, index into vars array. */ char *funcname; /* If INP_FUNCTION, name of function, */ int funcnum; /* ... one of PTF_*, */ double (*function)(); /* ... and pointer to the function. */ } INPparseNode; /* These are the possible types of nodes we can have in the parse tree. The * numbers for the ops 1 - 5 have to be the same as the token numbers, * below. */ #define PT_PLACEHOLDER 0 /* For i(something) ... */ #define PT_PLUS 1 #define PT_MINUS 2 #define PT_TIMES 3 #define PT_DIVIDE 4 #define PT_POWER 5 #define PT_FUNCTION 6 #define PT_CONSTANT 7 #define PT_VAR 8 /* These are the functions that we support. */ #define PTF_ACOS 0 #define PTF_ACOSH 1 #define PTF_ASIN 2 #define PTF_ASINH 3 #define PTF_ATAN 4 #define PTF_ATANH 5 #define PTF_COS 6 #define PTF_COSH 7 #define PTF_EXP 8 #define PTF_LN 9 #define PTF_LOG 10 #define PTF_SIN 11 #define PTF_SINH 12 #define PTF_SQRT 13 #define PTF_TAN 14 #define PTF_TANH 15 #define PTF_UMINUS 16 /* The following things are used by the parser -- these are the token types the * lexer returns... */ #define TOK_END 0 #define TOK_PLUS 1 #define TOK_MINUS 2 #define TOK_TIMES 3 #define TOK_DIVIDE 4 #define TOK_POWER 5 #define TOK_UMINUS 6 #define TOK_LPAREN 7 #define TOK_RPAREN 8 #define TOK_VALUE 9 /* And the types for value tokens... */ #define TYP_NUM 0 #define TYP_STRING 1 #define TYP_PNODE 2 /* A parser stack element. */ typedef struct PTelement { int token; int type; union { char *string; double real; INPparseNode *pnode; } value; } PTelement ; #define PT_STACKSIZE 200 /* These are things defined in PTfunctions.c */ extern double PTplus(); extern double PTminus(); extern double PTtimes(); extern double PTdivide(); extern double PTpower(); extern double PTacos(); #ifdef HASATRIGH extern double PTacosh(); #endif /* HASATRIGH */ extern double PTasin(); #ifdef HASATRIGH extern double PTasinh(); #endif /* HASATRIGH */ extern double PTatan(); #ifdef HASATRIGH extern double PTatanh(); #endif /* HASATRIGH */ extern double PTcos(); extern double PTcosh(); extern double PTexp(); extern double PTln(); extern double PTlog(); extern double PTsin(); extern double PTsinh(); extern double PTsqrt(); extern double PTtan(); extern double PTtanh(); extern double PTuminus(); /* And in IFeval.c */ #ifdef __STDC__ extern int IFeval(IFparseTree *, double*, double*, double*); #else /* stdc */ extern int IFeval(); #endif /* stdc */ #endif 0707070124060341141006440006700000000000011777770500302372100004300000007062spice3c1/spice3/include/isrcdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef ISRC #define ISRC "ISRCdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:36:17 $ " #include "ifsim.h" #include "complex.h" #include "cktdefs.h" #include "gendefs.h" /* structures used to describe current sources */ /* information needed per source instance */ typedef struct sISRCinstance { struct sISRCmodel *ISRCmodPtr; /* backpointer to model */ struct sISRCinstance *ISRCnextInstance; /* pointer to next instance of *current model*/ IFuid ISRCname; /* pointer to character string naming this instance */ int ISRCnegNode; /* number of negative node of source */ int ISRCposNode; /* number of positive node of source */ int ISRCfunctionType; /* code number of function type for source */ int ISRCfunctionOrder; /* order of the function for the source */ double *ISRCcoeffs; /* pointer to array of coefficients */ double ISRCdcValue; /* DC and TRANSIENT value of source */ double ISRCacPhase; /* AC phase angle */ double ISRCacMag; /* AC magnitude */ double ISRCacReal; /* AC real part */ double ISRCacImag; /* AC imaginary */ unsigned ISRCdcGiven :1 ; /* flag to indicate dc value given */ unsigned ISRCacGiven :1 ; /* flag to indicate ac keyword given */ unsigned ISRCacMGiven :1 ; /* flag to indicate ac magnitude given */ unsigned ISRCacPGiven :1 ; /* flag to indicate ac phase given */ unsigned ISRCfuncTGiven :1 ; /* flag to indicate function type given */ unsigned ISRCcoeffsGiven :1 ; /* flag to indicate function coeffs given */ } ISRCinstance ; /* per model data */ typedef struct sISRCmodel { /* model structure for a resistor */ int ISRCmodType; /* type index of this device type */ struct sISRCmodel *ISRCnextModel; /* pointer to next possible model *in linked list */ ISRCinstance * ISRCinstances; /* pointer to list of instances * that have this model */ IFuid ISRCmodName; /* pointer to character string naming this model */ } ISRCmodel; /* source types */ #ifndef PULSE #define PULSE 1 #define SINE 2 #define EXP 3 #define SFFM 4 #define PWL 5 #endif /*PULSE*/ /* device parameters */ #define ISRC_DC 1 #define ISRC_AC_MAG 2 #define ISRC_AC_PHASE 3 #define ISRC_AC 4 #define ISRC_PULSE 5 #define ISRC_SINE 6 #define ISRC_EXP 7 #define ISRC_PWL 8 #define ISRC_SFFM 9 #define ISRC_NEG_NODE 10 #define ISRC_POS_NODE 11 #define ISRC_AC_REAL 12 #define ISRC_AC_IMAG 13 #define ISRC_FCN_TYPE 14 #define ISRC_FCN_ORDER 15 #define ISRC_FCN_COEFFS 16 #define ISRC_POWER 17 /* model parameters */ /* device questions */ /* model questions */ #ifdef __STDC__ extern int ISRCaccept(CKTcircuit*,GENmodel*); extern int ISRCacLoad(GENmodel*,CKTcircuit*); extern int ISRCask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int ISRCdelete(GENmodel*,IFuid,GENinstance**); extern void ISRCdestroy(GENmodel**); extern int ISRCload(GENmodel*,CKTcircuit*); extern int ISRCmDelete(GENmodel**,IFuid,GENmodel*); extern int ISRCparam(int,IFvalue*,GENinstance*,IFvalue*); extern int ISRCpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int ISRCtemp(GENmodel*,CKTcircuit*); #else /* stdc */ extern int ISRCaccept(); extern int ISRCacLoad(); extern int ISRCask(); extern int ISRCdelete(); extern void ISRCdestroy(); extern int ISRCload(); extern int ISRCmDelete(); extern int ISRCparam(); extern int ISRCpzLoad(); extern int ISRCtemp(); #endif /* stdc */ #endif /*ISRC*/ 0707070124060341151006440006700000000000011777770500302372100004300000020554spice3c1/spice3/include/jfetdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef JFET #define JFET "JFETdefs.h $Revision: 1.3 $ on $Date: 88/11/16 21:55:16 $ " #include "ifsim.h" #include "gendefs.h" #include "cktdefs.h" #include "complex.h" /* structures used to describe Junction Field Effect Transistors */ /* information used to describe a single instance */ typedef struct sJFETinstance { struct sJFETmodel *JFETmodPtr; /* backpointer to model */ struct sJFETinstance *JFETnextInstance; /* pointer to next instance of * current model*/ IFuid JFETname; /* pointer to character string naming this instance */ int JFETdrainNode; /* number of drain node of jfet */ int JFETgateNode; /* number of gate node of jfet */ int JFETsourceNode; /* number of source node of jfet */ int JFETdrainPrimeNode; /* number of internal drain node of jfet */ int JFETsourcePrimeNode; /* number of internal source node of jfet */ double *JFETdrainDrainPrimePtr; /* pointer to sparse matrix at * (drain,drain prime) */ double *JFETgateDrainPrimePtr; /* pointer to sparse matrix at * (gate,drain prime) */ double *JFETgateSourcePrimePtr; /* pointer to sparse matrix at * (gate,source prime) */ double *JFETsourceSourcePrimePtr; /* pointer to sparse matrix at * (source,source prime) */ double *JFETdrainPrimeDrainPtr; /* pointer to sparse matrix at * (drain prime,drain) */ double *JFETdrainPrimeGatePtr; /* pointer to sparse matrix at * (drain prime,gate) */ double *JFETdrainPrimeSourcePrimePtr; /* pointer to sparse matrix * (drain prime,source prime) */ double *JFETsourcePrimeGatePtr; /* pointer to sparse matrix at * (source prime,gate) */ double *JFETsourcePrimeSourcePtr; /* pointer to sparse matrix at * (source prime,source) */ double *JFETsourcePrimeDrainPrimePtr; /* pointer to sparse matrix * (source prime,drain prime) */ double *JFETdrainDrainPtr; /* pointer to sparse matrix at * (drain,drain) */ double *JFETgateGatePtr; /* pointer to sparse matrix at * (gate,gate) */ double *JFETsourceSourcePtr; /* pointer to sparse matrix at * (source,source) */ double *JFETdrainPrimeDrainPrimePtr; /* pointer to sparse matrix * (drain prime,drain prime) */ double *JFETsourcePrimeSourcePrimePtr; /* pointer to sparse matrix * (source prime,source prime) */ int JFETstate; /* pointer to start of state vector for jfet */ #define JFETvgs JFETstate #define JFETvgd JFETstate+1 #define JFETcg JFETstate+2 #define JFETcd JFETstate+3 #define JFETcgd JFETstate+4 #define JFETgm JFETstate+5 #define JFETgds JFETstate+6 #define JFETggs JFETstate+7 #define JFETggd JFETstate+8 #define JFETqgs JFETstate+9 #define JFETcqgs JFETstate+10 #define JFETqgd JFETstate+11 #define JFETcqgd JFETstate+12 unsigned JFEToff :1; /* 'off' flag for jfet */ unsigned JFETareaGiven : 1; /* flag to indicate area was specified */ unsigned JFETicVDSGiven : 1; /* initial condition given flag for V D-S*/ unsigned JFETicVGSGiven : 1; /* initial condition given flag for V G-S*/ unsigned JFETtempGiven : 1; /* flag to indicate instance temp given */ double JFETarea; /* area factor for the jfet */ double JFETicVDS; /* initial condition voltage D-S*/ double JFETicVGS; /* initial condition voltage G-S*/ double JFETtemp; /* operating temperature */ double JFETtSatCur; /* temperature adjusted saturation current */ double JFETtGatePot; /* temperature adjusted gate potential */ double JFETtCGS; /* temperature corrected G-S capacitance */ double JFETtCGD; /* temperature corrected G-D capacitance */ double JFETcorDepCap; /* joining point of the fwd bias dep. cap eq.s */ double JFETvcrit; /* critical voltage for the instance */ double JFETf1; /* coefficient of capacitance polynomial exp */ } JFETinstance ; /* per model data */ typedef struct sJFETmodel { /* model structure for a jfet */ int JFETmodType; /* type index of this device type */ struct sJFETmodel *JFETnextModel; /* pointer to next possible model in * linked list */ JFETinstance * JFETinstances; /* pointer to list of instances * that have this model */ IFuid JFETmodName; /* pointer to character string naming this model */ int JFETtype; double JFETthreshold; double JFETbeta; double JFETlModulation; double JFETdrainResist; double JFETsourceResist; double JFETcapGS; double JFETcapGD; double JFETgatePotential; double JFETgateSatCurrent; double JFETdepletionCapCoeff; double JFETdrainConduct; double JFETsourceConduct; double JFETf2; double JFETf3; double JFETtnom; /* temperature at which parameters were measured */ unsigned JFETthresholdGiven : 1; unsigned JFETbetaGiven : 1; unsigned JFETlModulationGiven : 1; unsigned JFETdrainResistGiven : 1; unsigned JFETsourceResistGiven : 1; unsigned JFETcapGSGiven : 1; unsigned JFETcapGDGiven : 1; unsigned JFETgatePotentialGiven : 1; unsigned JFETgateSatCurrentGiven : 1; unsigned JFETdepletionCapCoeffGiven : 1; unsigned JFETtnomGiven : 1; /* user specified Tnom for model */ } JFETmodel; #ifndef NJF #define NJF 1 #define PJF -1 #endif /*NJF*/ /* device parameters */ #define JFET_AREA 1 #define JFET_IC_VDS 2 #define JFET_IC_VGS 3 #define JFET_IC 4 #define JFET_OFF 5 #define JFET_TEMP 6 /* model parameters */ #define JFET_MOD_VTO 101 #define JFET_MOD_BETA 102 #define JFET_MOD_LAMBDA 103 #define JFET_MOD_RD 104 #define JFET_MOD_RS 105 #define JFET_MOD_CGS 106 #define JFET_MOD_CGD 107 #define JFET_MOD_PB 108 #define JFET_MOD_IS 109 #define JFET_MOD_FC 110 #define JFET_MOD_NJF 111 #define JFET_MOD_PJF 112 #define JFET_MOD_TNOM 113 /* device questions */ #define JFET_DRAINNODE 301 #define JFET_GATENODE 302 #define JFET_SOURCENODE 303 #define JFET_DRAINPRIMENODE 304 #define JFET_SOURCEPRIMENODE 305 #define JFET_VGS 306 #define JFET_VGD 307 #define JFET_CG 308 #define JFET_CD 309 #define JFET_CGD 310 #define JFET_GM 311 #define JFET_GDS 312 #define JFET_GGS 313 #define JFET_GGD 314 #define JFET_QGS 315 #define JFET_CQGS 316 #define JFET_QGD 317 #define JFET_CQGD 318 #define JFET_CS 319 #define JFET_POWER 320 /* model questions */ #define JFET_MOD_DRAINCONDUCT 301 #define JFET_MOD_SOURCECONDUCT 302 #define JFET_MOD_DEPLETIONCAP 303 #define JFET_MOD_VCRIT 304 /* function definitions */ #ifdef __STDC__ extern int JFETacLoad(GENmodel*,CKTcircuit*); extern int JFETask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int JFETdelete(GENmodel*,IFuid,GENinstance**); extern void JFETdestroy(GENmodel**); extern int JFETgetic(GENmodel*,CKTcircuit*); extern int JFETload(GENmodel*,CKTcircuit*); extern int JFETmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int JFETmDelete(GENmodel**,IFuid,GENmodel*); extern int JFETmParam(int,IFvalue*,GENmodel*); extern int JFETparam(int,IFvalue*,GENinstance*,IFvalue*); extern int JFETpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int JFETsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int JFETtemp(GENmodel*,CKTcircuit*); extern int JFETtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int JFETacLoad(); extern int JFETask(); extern int JFETdelete(); extern void JFETdestroy(); extern int JFETgetic(); extern int JFETload(); extern int JFETmAsk(); extern int JFETmDelete(); extern int JFETmParam(); extern int JFETparam(); extern int JFETpzLoad(); extern int JFETsetup(); extern int JFETtemp(); extern int JFETtrunc(); #endif /* stdc */ #endif /*JFET*/ 0707070124060341161006440006700000000000011777770500302372100004200000000747spice3c1/spice3/include/jobdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef JOBdef #define JOBdef "JOBdefs.h $Revision: 1.3 $ on $Date: 88/11/16 21:55:17 $ " #include "ifsim.h" typedef struct sJOB{ int JOBtype; /* type of job */ struct sJOB *JOBnextJob; /* next job in list */ IFuid JOBname; /* name of this job */ } JOB; typedef struct { IFanalysis public; int size; int (*(setParm))(); int (*(askQuest))(); }SPICEanalysis; #endif /*JOBdef*/ 0707070124060341171006440006700000000000011777770500302372100004100000000007spice3c1/spice3/include/make.com$ exit 0707070124060341201006440006700000000000011777770500302372200004200000016724spice3c1/spice3/include/mesdefs.h/* * Copyright (c) 1985 S. Hwang */ #ifndef MES #define MES "MESdefs.h $Revision: 1.7 $ on $Date: 88/11/17 02:36:30 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* structures used to describe MESFET Transistors */ /* information used to describe a single instance */ typedef struct sMESinstance { struct sMESmodel *MESmodPtr; /* backpointer to model */ struct sMESinstance *MESnextInstance; /* pointer to next instance of * current model*/ IFuid MESname; /* pointer to character string naming this instance */ int MESdrainNode; /* number of drain node of mesfet */ int MESgateNode; /* number of gate node of mesfet */ int MESsourceNode; /* number of source node of mesfet */ int MESdrainPrimeNode; /* number of internal drain node of mesfet */ int MESsourcePrimeNode; /* number of internal source node of mesfet */ double MESarea; /* area factor for the mesfet */ double MESicVDS; /* initial condition voltage D-S*/ double MESicVGS; /* initial condition voltage G-S*/ double *MESdrainDrainPrimePtr; /* pointer to sparse matrix at * (drain,drain prime) */ double *MESgateDrainPrimePtr; /* pointer to sparse matrix at * (gate,drain prime) */ double *MESgateSourcePrimePtr; /* pointer to sparse matrix at * (gate,source prime) */ double *MESsourceSourcePrimePtr; /* pointer to sparse matrix at * (source,source prime) */ double *MESdrainPrimeDrainPtr; /* pointer to sparse matrix at * (drain prime,drain) */ double *MESdrainPrimeGatePtr; /* pointer to sparse matrix at * (drain prime,gate) */ double *MESdrainPrimeSourcePrimePtr; /* pointer to sparse matrix * (drain prime,source prime) */ double *MESsourcePrimeGatePtr; /* pointer to sparse matrix at * (source prime,gate) */ double *MESsourcePrimeSourcePtr; /* pointer to sparse matrix at * (source prime,source) */ double *MESsourcePrimeDrainPrimePtr; /* pointer to sparse matrix * (source prime,drain prime) */ double *MESdrainDrainPtr; /* pointer to sparse matrix at * (drain,drain) */ double *MESgateGatePtr; /* pointer to sparse matrix at * (gate,gate) */ double *MESsourceSourcePtr; /* pointer to sparse matrix at * (source,source) */ double *MESdrainPrimeDrainPrimePtr; /* pointer to sparse matrix * (drain prime,drain prime) */ double *MESsourcePrimeSourcePrimePtr; /* pointer to sparse matrix * (source prime,source prime) */ int MESstate; /* pointer to start of state vector for mesfet */ #define MESvgs MESstate #define MESvgd MESstate+1 #define MEScg MESstate+2 #define MEScd MESstate+3 #define MEScgd MESstate+4 #define MESgm MESstate+5 #define MESgds MESstate+6 #define MESggs MESstate+7 #define MESggd MESstate+8 #define MESqgs MESstate+9 #define MEScqgs MESstate+10 #define MESqgd MESstate+11 #define MEScqgd MESstate+12 int MESoff; /* 'off' flag for mesfet */ unsigned MESareaGiven : 1; /* flag to indicate area was specified */ unsigned MESicVDSGiven : 1; /* initial condition given flag for V D-S*/ unsigned MESicVGSGiven : 1; /* initial condition given flag for V G-S*/ } MESinstance ; /* per model data */ typedef struct sMESmodel { /* model structure for a mesfet */ int MESmodType; /* type index of this device type */ struct sMESmodel *MESnextModel; /* pointer to next possible model in * linked list */ MESinstance * MESinstances; /* pointer to list of instances * that have this model */ IFuid MESmodName; /* pointer to character string naming this model */ int MEStype; double MESthreshold; double MESalpha; double MESbeta; double MESlModulation; double MESb; double MESdrainResist; double MESsourceResist; double MEScapGS; double MEScapGD; double MESgatePotential; double MESgateSatCurrent; double MESdepletionCapCoeff; double MESdrainConduct; double MESsourceConduct; double MESdepletionCap; double MESf1; double MESf2; double MESf3; double MESvcrit; unsigned MESthresholdGiven : 1; unsigned MESalphaGiven : 1; unsigned MESbetaGiven : 1; unsigned MESlModulationGiven : 1; unsigned MESbGiven : 1; unsigned MESdrainResistGiven : 1; unsigned MESsourceResistGiven : 1; unsigned MEScapGSGiven : 1; unsigned MEScapGDGiven : 1; unsigned MESgatePotentialGiven : 1; unsigned MESgateSatCurrentGiven : 1; unsigned MESdepletionCapCoeffGiven : 1; } MESmodel; #ifndef NMF #define NMF 1 #define PMF -1 #endif /*NMF*/ /* device parameters */ #define MES_AREA 1 #define MES_IC_VDS 2 #define MES_IC_VGS 3 #define MES_IC 4 #define MES_OFF 5 #define MES_CS 6 #define MES_POWER 7 /* model parameters */ #define MES_MOD_VTO 101 #define MES_MOD_ALPHA 102 #define MES_MOD_BETA 103 #define MES_MOD_LAMBDA 104 #define MES_MOD_B 105 #define MES_MOD_RD 106 #define MES_MOD_RS 107 #define MES_MOD_CGS 108 #define MES_MOD_CGD 109 #define MES_MOD_PB 110 #define MES_MOD_IS 111 #define MES_MOD_FC 112 #define MES_MOD_NMF 113 #define MES_MOD_PMF 114 /* device questions */ #define MES_DRAINNODE 201 #define MES_GATENODE 202 #define MES_SOURCENODE 203 #define MES_DRAINPRIMENODE 204 #define MES_SOURCEPRIMENODE 205 #define MES_VGS 206 #define MES_VGD 207 #define MES_CG 208 #define MES_CD 209 #define MES_CGD 210 #define MES_GM 211 #define MES_GDS 212 #define MES_GGS 213 #define MES_GGD 214 #define MES_QGS 215 #define MES_CQGS 216 #define MES_QGD 217 #define MES_CQGD 218 /* model questions */ #define MES_MOD_DRAINCONDUCT 301 #define MES_MOD_SOURCECONDUCT 302 #define MES_MOD_DEPLETIONCAP 303 #define MES_MOD_VCRIT 304 #ifdef __STDC__ extern int MESacLoad(GENmodel*,CKTcircuit*); extern int MESask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int MESdelete(GENmodel*,IFuid,GENinstance**); extern void MESdestroy(GENmodel**); extern int MESgetic(GENmodel*,CKTcircuit*); extern int MESload(GENmodel*,CKTcircuit*); extern int MESmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int MESmDelete(GENmodel**,IFuid,GENmodel*); extern int MESmParam(int,IFvalue*,GENmodel*); extern int MESparam(int,IFvalue*,GENinstance*,IFvalue*); extern int MESpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int MESsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int MEStemp(GENmodel*,CKTcircuit*); extern int MEStrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int MESacLoad(); extern int MESask(); extern int MESdelete(); extern void MESdestroy(); extern int MESgetic(); extern int MESload(); extern int MESmAsk(); extern int MESmDelete(); extern int MESmParam(); extern int MESparam(); extern int MESpzLoad(); extern int MESsetup(); extern int MEStemp(); extern int MEStrunc(); #endif /* stdc */ #endif /*MES*/ 0707070124060341211006440006700000000000011777770500302372200004300000044771spice3c1/spice3/include/mos1defs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef MOS1 #define MOS1 "MOS1defs.h $Revision: 1.5 $ on $Date: 88/11/17 02:36:36 $" #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* declarations for level 1 MOSFETs */ /* information needed for each instance */ typedef struct sMOS1instance { struct sMOS1model *sMOS1modPtr; /* backpointer to model */ struct sMOS1instance *MOS1nextInstance; /* pointer to next instance of *current model*/ IFuid MOS1name; /* pointer to character string naming this instance */ int MOS1dNode; /* number of the gate node of the mosfet */ int MOS1gNode; /* number of the gate node of the mosfet */ int MOS1sNode; /* number of the source node of the mosfet */ int MOS1bNode; /* number of the bulk node of the mosfet */ int MOS1dNodePrime; /* number of the internal drain node of the mosfet */ int MOS1sNodePrime; /* number of the internal source node of the mosfet */ double MOS1l; /* the length of the channel region */ double MOS1w; /* the width of the channel region */ double MOS1drainArea; /* the area of the drain diffusion */ double MOS1sourceArea; /* the area of the source diffusion */ double MOS1drainSquares; /* the length of the drain in squares */ double MOS1sourceSquares; /* the length of the source in squares */ double MOS1drainPerimiter; double MOS1sourcePerimiter; double MOS1sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS1drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS1temp; /* operating temperature of this instance */ double MOS1tTransconductance; /* temperature corrected transconductance*/ double MOS1tSurfMob; /* temperature corrected surface mobility */ double MOS1tPhi; /* temperature corrected Phi */ double MOS1tVto; /* temperature corrected Vto */ double MOS1tSatCur; /* temperature corrected saturation Cur. */ double MOS1tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS1tCbd; /* temperature corrected B-D Capacitance */ double MOS1tCbs; /* temperature corrected B-S Capacitance */ double MOS1tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS1tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS1tBulkPot; /* temperature corrected Bulk potential */ double MOS1tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS1tVbi; /* temperature adjusted Vbi */ double MOS1icVBS; /* initial condition B-S voltage */ double MOS1icVDS; /* initial condition D-S voltage */ double MOS1icVGS; /* initial condition G-S voltage */ double MOS1von; double MOS1vdsat; double MOS1sourceVcrit; /* Vcrit for pos. vds */ double MOS1drainVcrit; /* Vcrit for pos. vds */ double MOS1cd; double MOS1cbs; double MOS1cbd; double MOS1gmbs; double MOS1gm; double MOS1gds; double MOS1gbd; double MOS1gbs; double MOS1capbd; double MOS1capbs; double MOS1Cbd; double MOS1Cbdsw; double MOS1Cbs; double MOS1Cbssw; double MOS1f2d; double MOS1f3d; double MOS1f4d; double MOS1f2s; double MOS1f3s; double MOS1f4s; int MOS1mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS1off:1; /* non-zero to indicate device is off for dc analysis*/ unsigned MOS1tempGiven :1; /* instance temperature specified */ unsigned MOS1lGiven :1; unsigned MOS1wGiven :1; unsigned MOS1drainAreaGiven :1; unsigned MOS1sourceAreaGiven :1; unsigned MOS1drainSquaresGiven :1; unsigned MOS1sourceSquaresGiven :1; unsigned MOS1drainPerimiterGiven :1; unsigned MOS1sourcePerimiterGiven :1; unsigned MOS1dNodePrimeSet :1; unsigned MOS1sNodePrimeSet :1; unsigned MOS1icVBSGiven :1; unsigned MOS1icVDSGiven :1; unsigned MOS1icVGSGiven :1; unsigned MOS1vonGiven :1; unsigned MOS1vdsatGiven :1; unsigned MOS1modeGiven :1; double *MOS1DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS1GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS1SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS1BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS1DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS1SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS1DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS1GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS1GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS1GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS1SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS1BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS1BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS1DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS1DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS1BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS1DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS1SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS1SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS1DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS1SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS1SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS1states; /* index into state table for this device */ #define MOS1vbd MOS1states+ 0 /* bulk-drain voltage */ #define MOS1vbs MOS1states+ 1 /* bulk-source voltage */ #define MOS1vgs MOS1states+ 2 /* gate-source voltage */ #define MOS1vds MOS1states+ 3 /* drain-source voltage */ #define MOS1capgs MOS1states+4 /* gate-source capacitor value */ #define MOS1qgs MOS1states+ 5 /* gate-source capacitor charge */ #define MOS1cqgs MOS1states+ 6 /* gate-source capacitor current */ #define MOS1capgd MOS1states+ 7 /* gate-drain capacitor value */ #define MOS1qgd MOS1states+ 8 /* gate-drain capacitor charge */ #define MOS1cqgd MOS1states+ 9 /* gate-drain capacitor current */ #define MOS1capgb MOS1states+10 /* gate-bulk capacitor value */ #define MOS1qgb MOS1states+ 11 /* gate-bulk capacitor charge */ #define MOS1cqgb MOS1states+ 12 /* gate-bulk capacitor current */ #define MOS1qbd MOS1states+ 13 /* bulk-drain capacitor charge */ #define MOS1cqbd MOS1states+ 14 /* bulk-drain capacitor current */ #define MOS1qbs MOS1states+ 15 /* bulk-source capacitor charge */ #define MOS1cqbs MOS1states+ 16 /* bulk-source capacitor current */ #define MOS1numStates 17 #define MOS1sensxpgs MOS1states+17 /* charge sensitivities and their derivatives. +18 for the derivatives: pointer to the beginning of the array */ #define MOS1sensxpgd MOS1states+19 #define MOS1sensxpgb MOS1states+21 #define MOS1sensxpbs MOS1states+23 #define MOS1sensxpbd MOS1states+25 #define MOS1numSenStates 10 int MOS1senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ unsigned MOS1sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS1sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS1senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double MOS1cgs; double MOS1cgd; double MOS1cgb; double *MOS1sens; #define MOS1senCgs MOS1sens /* contains pertured values of cgs */ #define MOS1senCgd MOS1sens + 6 /* contains perturbed values of cgd*/ #define MOS1senCgb MOS1sens + 12 /* contains perturbed values of cgb*/ #define MOS1senCbd MOS1sens + 18 /* contains perturbed values of cbd*/ #define MOS1senCbs MOS1sens + 24 /* contains perturbed values of cbs*/ #define MOS1senGds MOS1sens + 30 /* contains perturbed values of gds*/ #define MOS1senGbs MOS1sens + 36 /* contains perturbed values of gbs*/ #define MOS1senGbd MOS1sens + 42 /* contains perturbed values of gbd*/ #define MOS1senGm MOS1sens + 48 /* contains perturbed values of gm*/ #define MOS1senGmbs MOS1sens + 54 /* contains perturbed values of gmbs*/ #define MOS1dphigs_dl MOS1sens + 60 #define MOS1dphigd_dl MOS1sens + 61 #define MOS1dphigb_dl MOS1sens + 62 #define MOS1dphibs_dl MOS1sens + 63 #define MOS1dphibd_dl MOS1sens + 64 #define MOS1dphigs_dw MOS1sens + 65 #define MOS1dphigd_dw MOS1sens + 66 #define MOS1dphigb_dw MOS1sens + 67 #define MOS1dphibs_dw MOS1sens + 68 #define MOS1dphibd_dw MOS1sens + 69 } MOS1instance ; /* per model data */ /* NOTE: parameters marked 'input - use xxxx' are paramters for * which a temperature correction is applied in MOS1temp, thus * the MOS1xxxx value in the per-instance structure should be used * instead in all calculations */ typedef struct sMOS1model { /* model structure for a resistor */ int MOS1modType; /* type index to this device type */ struct sMOS1model *MOS1nextModel; /* pointer to next possible model *in linked list */ MOS1instance * MOS1instances; /* pointer to list of instances * that have this model */ IFuid MOS1modName; /* pointer to character string naming this model */ int MOS1type; /* device type : 1 = nmos, -1 = pmos */ double MOS1tnom; /* temperature at which parameters measured */ double MOS1latDiff; double MOS1jctSatCurDensity; /* input - use tSatCurDens */ double MOS1jctSatCur; /* input - use tSatCur */ double MOS1drainResistance; double MOS1sourceResistance; double MOS1sheetResistance; double MOS1transconductance; /* input - use tTransconductance */ double MOS1gateSourceOverlapCapFactor; double MOS1gateDrainOverlapCapFactor; double MOS1gateBulkOverlapCapFactor; double MOS1oxideCapFactor; double MOS1vt0; /* input - use tVto */ double MOS1capBD; /* input - use tCbd */ double MOS1capBS; /* input - use tCbs */ double MOS1bulkCapFactor; /* input - use tCj */ double MOS1sideWallCapFactor; /* input - use tCjsw */ double MOS1bulkJctPotential; /* input - use tBulkPot */ double MOS1bulkJctBotGradingCoeff; double MOS1bulkJctSideGradingCoeff; double MOS1fwdCapDepCoeff; double MOS1phi; /* input - use tPhi */ double MOS1gamma; double MOS1lambda; double MOS1substrateDoping; int MOS1gateType; double MOS1surfaceStateDensity; double MOS1oxideThickness; double MOS1surfaceMobility; /* input - use tSurfMob */ unsigned MOS1typeGiven :1; unsigned MOS1latDiffGiven :1; unsigned MOS1jctSatCurDensityGiven :1; unsigned MOS1jctSatCurGiven :1; unsigned MOS1drainResistanceGiven :1; unsigned MOS1sourceResistanceGiven :1; unsigned MOS1sheetResistanceGiven :1; unsigned MOS1transconductanceGiven :1; unsigned MOS1gateSourceOverlapCapFactorGiven :1; unsigned MOS1gateDrainOverlapCapFactorGiven :1; unsigned MOS1gateBulkOverlapCapFactorGiven :1; unsigned MOS1vt0Given :1; unsigned MOS1capBDGiven :1; unsigned MOS1capBSGiven :1; unsigned MOS1bulkCapFactorGiven :1; unsigned MOS1sideWallCapFactorGiven :1; unsigned MOS1bulkJctPotentialGiven :1; unsigned MOS1bulkJctBotGradingCoeffGiven :1; unsigned MOS1bulkJctSideGradingCoeffGiven :1; unsigned MOS1fwdCapDepCoeffGiven :1; unsigned MOS1phiGiven :1; unsigned MOS1gammaGiven :1; unsigned MOS1lambdaGiven :1; unsigned MOS1substrateDopingGiven :1; unsigned MOS1gateTypeGiven :1; unsigned MOS1surfaceStateDensityGiven :1; unsigned MOS1oxideThicknessGiven :1; unsigned MOS1surfaceMobilityGiven :1; unsigned MOS1tnomGiven :1; } MOS1model; #ifndef NMOS #define NMOS 1 #define PMOS -1 #endif /*NMOS*/ /* device parameters */ #define MOS1_W 1 #define MOS1_L 2 #define MOS1_AS 3 #define MOS1_AD 4 #define MOS1_PS 5 #define MOS1_PD 6 #define MOS1_NRS 7 #define MOS1_NRD 8 #define MOS1_OFF 9 #define MOS1_IC 10 #define MOS1_IC_VBS 11 #define MOS1_IC_VDS 12 #define MOS1_IC_VGS 13 #define MOS1_W_SENS 14 #define MOS1_L_SENS 15 #define MOS1_CB 16 #define MOS1_CG 17 #define MOS1_CS 18 #define MOS1_POWER 19 #define MOS1_TEMP 20 /* model paramerers */ #define MOS1_MOD_VTO 101 #define MOS1_MOD_KP 102 #define MOS1_MOD_GAMMA 103 #define MOS1_MOD_PHI 104 #define MOS1_MOD_LAMBDA 105 #define MOS1_MOD_RD 106 #define MOS1_MOD_RS 107 #define MOS1_MOD_CBD 108 #define MOS1_MOD_CBS 109 #define MOS1_MOD_IS 110 #define MOS1_MOD_PB 111 #define MOS1_MOD_CGSO 112 #define MOS1_MOD_CGDO 113 #define MOS1_MOD_CGBO 114 #define MOS1_MOD_CJ 115 #define MOS1_MOD_MJ 116 #define MOS1_MOD_CJSW 117 #define MOS1_MOD_MJSW 118 #define MOS1_MOD_JS 119 #define MOS1_MOD_TOX 120 #define MOS1_MOD_LD 121 #define MOS1_MOD_RSH 122 #define MOS1_MOD_U0 123 #define MOS1_MOD_FC 124 #define MOS1_MOD_NSUB 125 #define MOS1_MOD_TPG 126 #define MOS1_MOD_NSS 127 #define MOS1_MOD_NMOS 128 #define MOS1_MOD_PMOS 129 #define MOS1_MOD_TNOM 130 /* device questions */ #define MOS1_CGS 201 #define MOS1_CGD 202 #define MOS1_DNODE 203 #define MOS1_GNODE 204 #define MOS1_SNODE 205 #define MOS1_BNODE 206 #define MOS1_DNODEPRIME 207 #define MOS1_SNODEPRIME 208 #define MOS1_SOURCECONDUCT 209 #define MOS1_DRAINCONDUCT 210 #define MOS1_VON 211 #define MOS1_VDSAT 212 #define MOS1_SOURCEVCRIT 213 #define MOS1_DRAINVCRIT 214 #define MOS1_CD 215 #define MOS1_CBS 216 #define MOS1_CBD 217 #define MOS1_GMBS 218 #define MOS1_GM 219 #define MOS1_GDS 220 #define MOS1_GBD 221 #define MOS1_GBS 222 #define MOS1_CAPBD 223 #define MOS1_CAPBS 224 #define MOS1_CAPZEROBIASBD 225 #define MOS1_CAPZEROBIASBDSW 226 #define MOS1_CAPZEROBIASBS 227 #define MOS1_CAPZEROBIASBSSW 228 #define MOS1_VBD 229 #define MOS1_VBS 230 #define MOS1_VGS 231 #define MOS1_VDS 232 #define MOS1_CAPGS 233 #define MOS1_QGS 234 #define MOS1_CQGS 235 #define MOS1_CAPGD 236 #define MOS1_QGD 237 #define MOS1_CQGD 238 #define MOS1_CAPGB 239 #define MOS1_QGB 240 #define MOS1_CQGB 241 #define MOS1_QBD 242 #define MOS1_CQBD 243 #define MOS1_QBS 244 #define MOS1_CQBS 245 #define MOS1_L_SENS_REAL 246 #define MOS1_L_SENS_IMAG 247 #define MOS1_L_SENS_MAG 248 #define MOS1_L_SENS_PH 249 #define MOS1_L_SENS_CPLX 250 #define MOS1_W_SENS_REAL 251 #define MOS1_W_SENS_IMAG 252 #define MOS1_W_SENS_MAG 253 #define MOS1_W_SENS_PH 254 #define MOS1_W_SENS_CPLX 255 #define MOS1_L_SENS_DC 256 #define MOS1_W_SENS_DC 257 /* model questions */ #ifdef __STDC__ extern int MOS1acLoad(GENmodel *,CKTcircuit*); extern int MOS1ask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int MOS1delete(GENmodel*,IFuid,GENinstance**); extern void MOS1destroy(GENmodel**); extern int MOS1getic(GENmodel*,CKTcircuit*); extern int MOS1load(GENmodel*,CKTcircuit*); extern int MOS1mAsk(CKTcircuit *,GENmodel *,int,IFvalue*); extern int MOS1mDelete(GENmodel**,IFuid,GENmodel*); extern int MOS1mParam(int,IFvalue*,GENmodel*); extern int MOS1param(int,IFvalue*,GENinstance*,IFvalue*); extern int MOS1pzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int MOS1sAcLoad(GENmodel*,CKTcircuit*); extern int MOS1sLoad(GENmodel*,CKTcircuit*); extern void MOS1sPrint(GENmodel*,CKTcircuit*); extern int MOS1sSetup(SENstruct*,GENmodel*); extern int MOS1sUpdate(GENmodel*,CKTcircuit*); extern int MOS1setup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int MOS1temp(GENmodel*,CKTcircuit*); extern int MOS1trunc(GENmodel*,CKTcircuit*,double*); extern int MOS1convTest(GENmodel*,CKTcircuit*); #else /* stdc */ extern int MOS1acLoad(); extern int MOS1ask(); extern int MOS1delete(); extern void MOS1destroy(); extern int MOS1getic(); extern int MOS1load(); extern int MOS1mAsk(); extern int MOS1mDelete(); extern int MOS1mParam(); extern int MOS1param(); extern int MOS1pzLoad(); extern int MOS1sAcLoad(); extern int MOS1sLoad(); extern void MOS1sPrint(); extern int MOS1sSetup(); extern int MOS1sUpdate(); extern int MOS1setup(); extern int MOS1temp(); extern int MOS1trunc(); extern int MOS1convTest(); #endif /* stdc */ #endif /*MOS1*/ 0707070124060341221006440006700000000000011777770500302372200004300000046372spice3c1/spice3/include/mos2defs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef MOS2 #define MOS2 "MOS2defs.h $Revision: 1.7 $ on $Date: 88/11/16 21:55:21 $" #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* declarations for level 2 MOSFETs */ /* information needed for each instance */ typedef struct sMOS2instance { struct sMOS2model *MOS2modPtr; /* backpointer to model */ struct sMOS2instance *MOS2nextInstance; /* pointer to next instance of *current model*/ IFuid MOS2name; /* pointer to character string naming this instance */ int MOS2dNode; /* number of the gate node of the mosfet */ int MOS2gNode; /* number of the gate node of the mosfet */ int MOS2sNode; /* number of the source node of the mosfet */ int MOS2bNode; /* number of the bulk node of the mosfet */ int MOS2dNodePrime; /* number of the internal drain node of the mosfet */ int MOS2sNodePrime; /* number of the internal source node of the mosfet */ int MOS2mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS2off :1;/* non-zero to indicate device is off for dc analysis*/ unsigned MOS2lGiven :1; unsigned MOS2wGiven :1; unsigned MOS2drainAreaGiven :1; unsigned MOS2sourceAreaGiven :1; unsigned MOS2drainSquaresGiven :1; unsigned MOS2sourceSquaresGiven :1; unsigned MOS2drainPerimiterGiven :1; unsigned MOS2sourcePerimiterGiven :1; unsigned MOS2dNodePrimeSet :1; unsigned MOS2sNodePrimeSet :1; unsigned MOS2icVBSGiven :1; unsigned MOS2icVDSGiven :1; unsigned MOS2icVGSGiven :1; unsigned MOS2vonGiven :1; unsigned MOS2vdsatGiven :1; unsigned MOS2tempGiven :1; /* per-instance temperature specified? */ unsigned MOS2sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS2sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS2senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double *MOS2DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS2GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS2SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS2BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS2DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS2SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS2DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS2GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS2GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS2GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS2SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS2BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS2BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS2DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS2DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS2BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS2DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS2SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS2SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS2DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS2SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS2SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS2states; /* index into state table for this device */ #define MOS2vbd MOS2states+ 0 /* bulk-drain voltage */ #define MOS2vbs MOS2states+ 1 /* bulk-source voltage */ #define MOS2vgs MOS2states+ 2 /* gate-source voltage */ #define MOS2vds MOS2states+ 3 /* drain-source voltage */ #define MOS2capgs MOS2states+4 /* gate-source capacitor value */ #define MOS2qgs MOS2states+ 5 /* gate-source capacitor charge */ #define MOS2cqgs MOS2states+ 6 /* gate-source capacitor current */ #define MOS2capgd MOS2states+ 7 /* gate-drain capacitor value */ #define MOS2qgd MOS2states+ 8 /* gate-drain capacitor charge */ #define MOS2cqgd MOS2states+ 9 /* gate-drain capacitor current */ #define MOS2capgb MOS2states+10 /* gate-bulk capacitor value */ #define MOS2qgb MOS2states+ 11 /* gate-bulk capacitor charge */ #define MOS2cqgb MOS2states+ 12 /* gate-bulk capacitor current */ #define MOS2qbd MOS2states+ 13 /* bulk-drain capacitor charge */ #define MOS2cqbd MOS2states+ 14 /* bulk-drain capacitor current */ #define MOS2qbs MOS2states+ 15 /* bulk-source capacitor charge */ #define MOS2cqbs MOS2states+ 16 /* bulk-source capacitor current */ #define MOS2numStates 17 #define MOS2sensxpgs MOS2states+17 /* charge sensitivities and their derivatives +18 for the derivatives - pointer to the beginning of the array */ #define MOS2sensxpgd MOS2states+19 #define MOS2sensxpgb MOS2states+21 #define MOS2sensxpbs MOS2states+23 #define MOS2sensxpbd MOS2states+25 #define MOS2numSenStates 10 int MOS2senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ double MOS2cgs; double MOS2cgd; double MOS2cgb; double *MOS2sens; #define MOS2senCgs MOS2sens /* contains pertured values of cgs */ #define MOS2senCgd MOS2sens + 6 /* contains perturbed values of cgd*/ #define MOS2senCgb MOS2sens + 12 /* contains perturbed values of cgb*/ #define MOS2senCbd MOS2sens + 18 /* contains perturbed values of cbd*/ #define MOS2senCbs MOS2sens + 24 /* contains perturbed values of cbs*/ #define MOS2senGds MOS2sens + 30 /* contains perturbed values of gds*/ #define MOS2senGbs MOS2sens + 36 /* contains perturbed values of gbs*/ #define MOS2senGbd MOS2sens + 42 /* contains perturbed values of gbd*/ #define MOS2senGm MOS2sens + 48 /* contains perturbed values of gm*/ #define MOS2senGmbs MOS2sens + 54 /* contains perturbed values of gmbs*/ #define MOS2dphigs_dl MOS2sens + 60 #define MOS2dphigd_dl MOS2sens + 61 #define MOS2dphigb_dl MOS2sens + 62 #define MOS2dphibs_dl MOS2sens + 63 #define MOS2dphibd_dl MOS2sens + 64 #define MOS2dphigs_dw MOS2sens + 65 #define MOS2dphigd_dw MOS2sens + 66 #define MOS2dphigb_dw MOS2sens + 67 #define MOS2dphibs_dw MOS2sens + 68 #define MOS2dphibd_dw MOS2sens + 69 double MOS2temp; /* temperature at which this instance operates */ double MOS2tTransconductance; /* temperature corrected transconductance*/ double MOS2tSurfMob; /* temperature corrected surface mobility */ double MOS2tPhi; /* temperature corrected Phi */ double MOS2tVto; /* temperature corrected Vto */ double MOS2tSatCur; /* temperature corrected saturation Cur. */ double MOS2tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS2tCbd; /* temperature corrected B-D Capacitance */ double MOS2tCbs; /* temperature corrected B-S Capacitance */ double MOS2tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS2tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS2tBulkPot; /* temperature corrected Bulk potential */ double MOS2tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS2tVbi; /* temperature adjusted Vbi */ double MOS2l; /* the length of the channel region */ double MOS2w; /* the width of the channel region */ double MOS2drainArea; /* the area of the drain diffusion */ double MOS2sourceArea; /* the area of the source diffusion */ double MOS2drainSquares; /* the length of the drain in squares */ double MOS2sourceSquares; /* the length of the source in squares */ double MOS2drainPerimiter; double MOS2sourcePerimiter; double MOS2sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS2drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS2icVBS; /* initial condition B-S voltage */ double MOS2icVDS; /* initial condition D-S voltage */ double MOS2icVGS; /* initial condition G-S voltage */ double MOS2von; double MOS2vdsat; double MOS2sourceVcrit; /* Vcrit for pos. vds */ double MOS2drainVcrit; /* Vcrit for pos. vds */ double MOS2cd; double MOS2cbs; double MOS2cbd; double MOS2gmbs; double MOS2gm; double MOS2gds; double MOS2gbd; double MOS2gbs; double MOS2capbd; double MOS2capbs; double MOS2Cbd; double MOS2Cbdsw; double MOS2Cbs; double MOS2Cbssw; double MOS2f2d; double MOS2f3d; double MOS2f4d; double MOS2f2s; double MOS2f3s; double MOS2f4s; } MOS2instance ; /* per model data */ /* NOTE: parameters makred 'input - use xxxx' are parameters for * which a temperature correction is applied in MOS2temp, thus * the MOS3xxxx value in the per-instance structure should be used * instead in all calculations */ typedef struct sMOS2model { /* model structure for a resistor */ int MOS2modType; /* type index of this device type */ struct sMOS2model *MOS2nextModel; /* pointer to next possible model *in linked list */ MOS2instance * MOS2instances; /* pointer to list of instances * that have this model */ IFuid MOS2modName; /* pointer to character string naming this model */ int MOS2type; /* device type : 1 = nmos, -1 = pmos */ int MOS2gateType; double MOS2tnom; /* temperature at which parms were measured */ double MOS2latDiff; double MOS2jctSatCurDensity; /* input - use tSatCurDens */ double MOS2jctSatCur; /* input - use tSatCur */ double MOS2drainResistance; double MOS2sourceResistance; double MOS2sheetResistance; double MOS2transconductance; /* input - use tTransconductance */ double MOS2gateSourceOverlapCapFactor; double MOS2gateDrainOverlapCapFactor; double MOS2gateBulkOverlapCapFactor; double MOS2oxideCapFactor; double MOS2vt0; /* input - use tVto */ double MOS2capBD; /* input - use tCbd */ double MOS2capBS; /* input - use tCbs */ double MOS2bulkCapFactor; /* input - use tCj */ double MOS2sideWallCapFactor; /* input - use tCjsw */ double MOS2bulkJctPotential; /* input - use tBulkPot */ double MOS2bulkJctBotGradingCoeff; double MOS2bulkJctSideGradingCoeff; double MOS2fwdCapDepCoeff; double MOS2phi; /* input - use tPhi */ double MOS2gamma; double MOS2lambda; double MOS2substrateDoping; double MOS2surfaceStateDensity; double MOS2fastSurfaceStateDensity; /* nfs */ double MOS2oxideThickness; double MOS2surfaceMobility; double MOS2narrowFactor; /* delta */ double MOS2critFieldExp; /* uexp */ double MOS2critField; /* ucrit */ double MOS2maxDriftVel; /* vmax */ double MOS2xd; double MOS2junctionDepth; /* xj */ double MOS2channelCharge; /* neff */ unsigned MOS2tnomGiven :1; /* user specified parm. meas. temp */ unsigned MOS2typeGiven :1; unsigned MOS2latDiffGiven :1; unsigned MOS2jctSatCurDensityGiven :1; unsigned MOS2jctSatCurGiven :1; unsigned MOS2drainResistanceGiven :1; unsigned MOS2sourceResistanceGiven :1; unsigned MOS2sheetResistanceGiven :1; unsigned MOS2transconductanceGiven :1; unsigned MOS2gateSourceOverlapCapFactorGiven :1; unsigned MOS2gateDrainOverlapCapFactorGiven :1; unsigned MOS2gateBulkOverlapCapFactorGiven :1; unsigned MOS2vt0Given :1; unsigned MOS2capBDGiven :1; unsigned MOS2capBSGiven :1; unsigned MOS2bulkCapFactorGiven :1; unsigned MOS2sideWallCapFactorGiven :1; unsigned MOS2bulkJctPotentialGiven :1; unsigned MOS2bulkJctBotGradingCoeffGiven :1; unsigned MOS2bulkJctSideGradingCoeffGiven :1; unsigned MOS2fwdCapDepCoeffGiven :1; unsigned MOS2phiGiven :1; unsigned MOS2gammaGiven :1; unsigned MOS2lambdaGiven :1; unsigned MOS2substrateDopingGiven :1; unsigned MOS2gateTypeGiven :1; unsigned MOS2surfaceStateDensityGiven :1; unsigned MOS2fastSurfaceStateDensityGiven :1; /* nfs */ unsigned MOS2oxideThicknessGiven :1; unsigned MOS2surfaceMobilityGiven :1; unsigned MOS2narrowFactorGiven :1; /* delta */ unsigned MOS2critFieldExpGiven :1; /* uexp */ unsigned MOS2critFieldGiven :1; /* ucrit */ unsigned MOS2maxDriftVelGiven :1; /* vmax */ unsigned MOS2junctionDepthGiven :1; /* xj */ unsigned MOS2channelChargeGiven :1; /* neff */ } MOS2model; #ifndef NMOS #define NMOS 1 #define PMOS -1 #endif /*NMOS*/ /* device parameters */ #define MOS2_W 1 #define MOS2_L 2 #define MOS2_AS 3 #define MOS2_AD 4 #define MOS2_PS 5 #define MOS2_PD 6 #define MOS2_NRS 7 #define MOS2_NRD 8 #define MOS2_OFF 9 #define MOS2_IC 10 #define MOS2_IC_VBS 11 #define MOS2_IC_VDS 12 #define MOS2_IC_VGS 13 #define MOS2_W_SENS 14 #define MOS2_L_SENS 15 #define MOS2_CB 16 #define MOS2_CG 17 #define MOS2_CS 18 #define MOS2_POWER 19 #define MOS2_CGS 20 #define MOS2_CGD 21 #define MOS2_DNODE 22 #define MOS2_GNODE 23 #define MOS2_SNODE 24 #define MOS2_BNODE 25 #define MOS2_DNODEPRIME 26 #define MOS2_SNODEPRIME 27 #define MOS2_SOURCECONDUCT 28 #define MOS2_DRAINCONDUCT 29 #define MOS2_VON 30 #define MOS2_VDSAT 31 #define MOS2_SOURCEVCRIT 32 #define MOS2_DRAINVCRIT 33 #define MOS2_CD 34 #define MOS2_CBS 35 #define MOS2_CBD 36 #define MOS2_GMBS 37 #define MOS2_GM 38 #define MOS2_GDS 39 #define MOS2_GBD 40 #define MOS2_GBS 41 #define MOS2_CAPBD 42 #define MOS2_CAPBS 43 #define MOS2_CAPZEROBIASBD 44 #define MOS2_CAPZEROBIASBDSW 45 #define MOS2_CAPZEROBIASBS 46 #define MOS2_CAPZEROBIASBSSW 47 #define MOS2_VBD 48 #define MOS2_VBS 49 #define MOS2_VGS 50 #define MOS2_VDS 51 #define MOS2_CAPGS 52 #define MOS2_QGS 53 #define MOS2_CQGS 54 #define MOS2_CAPGD 55 #define MOS2_QGD 56 #define MOS2_CQGD 57 #define MOS2_CAPGB 58 #define MOS2_QGB 59 #define MOS2_CQGB 60 #define MOS2_QBD 61 #define MOS2_CQBD 62 #define MOS2_QBS 63 #define MOS2_CQBS 64 #define MOS2_W_SENS_REAL 65 #define MOS2_W_SENS_IMAG 66 #define MOS2_W_SENS_MAG 67 #define MOS2_W_SENS_PH 68 #define MOS2_W_SENS_CPLX 69 #define MOS2_L_SENS_REAL 70 #define MOS2_L_SENS_IMAG 71 #define MOS2_L_SENS_MAG 72 #define MOS2_L_SENS_PH 73 #define MOS2_L_SENS_CPLX 74 #define MOS2_L_SENS_DC 75 #define MOS2_W_SENS_DC 76 #define MOS2_TEMP 77 /* model paramerers */ #define MOS2_MOD_VTO 101 #define MOS2_MOD_KP 102 #define MOS2_MOD_GAMMA 103 #define MOS2_MOD_PHI 104 #define MOS2_MOD_LAMBDA 105 #define MOS2_MOD_RD 106 #define MOS2_MOD_RS 107 #define MOS2_MOD_CBD 108 #define MOS2_MOD_CBS 109 #define MOS2_MOD_IS 110 #define MOS2_MOD_PB 111 #define MOS2_MOD_CGSO 112 #define MOS2_MOD_CGDO 113 #define MOS2_MOD_CGBO 114 #define MOS2_MOD_CJ 115 #define MOS2_MOD_MJ 116 #define MOS2_MOD_CJSW 117 #define MOS2_MOD_MJSW 118 #define MOS2_MOD_JS 119 #define MOS2_MOD_TOX 120 #define MOS2_MOD_LD 121 #define MOS2_MOD_RSH 122 #define MOS2_MOD_U0 123 #define MOS2_MOD_FC 124 #define MOS2_MOD_NSUB 125 #define MOS2_MOD_TPG 126 #define MOS2_MOD_NSS 127 #define MOS2_MOD_NFS 128 #define MOS2_MOD_DELTA 129 #define MOS2_MOD_UEXP 130 #define MOS2_MOD_VMAX 131 #define MOS2_MOD_XJ 132 #define MOS2_MOD_NEFF 133 #define MOS2_MOD_UCRIT 134 #define MOS2_MOD_NMOS 135 #define MOS2_MOD_PMOS 136 #define MOS2_MOD_TNOM 137 /* model questions */ #ifdef __STDC__ extern int MOS2acLoad(GENmodel*,CKTcircuit*); extern int MOS2ask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int MOS2convTest(GENmodel*,CKTcircuit*); extern int MOS2delete(GENmodel*,IFuid,GENinstance**); extern void MOS2destroy(GENmodel**); extern int MOS2getic(GENmodel*,CKTcircuit*); extern int MOS2load(GENmodel*,CKTcircuit*); extern int MOS2mDelete(GENmodel**,IFuid,GENmodel*); extern int MOS2mParam(int,IFvalue*,GENmodel*); extern int MOS2param(int,IFvalue*,GENinstance*,IFvalue*); extern int MOS2pzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int MOS2sAcLoad(GENmodel*,CKTcircuit*); extern int MOS2sLoad(GENmodel*,CKTcircuit*); extern void MOS2sPrint(GENmodel*,CKTcircuit*); extern int MOS2sSetup(SENstruct*,GENmodel*); extern int MOS2sUpdate(GENmodel*,CKTcircuit*); extern int MOS2setup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int MOS2temp(GENmodel*,CKTcircuit*); extern int MOS2trunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int MOS2acLoad(); extern int MOS2ask(); extern int MOS2convTest(); extern int MOS2delete(); extern void MOS2destroy(); extern int MOS2getic(); extern int MOS2load(); extern int MOS2mDelete(); extern int MOS2mParam(); extern int MOS2param(); extern int MOS2pzLoad(); extern int MOS2sAcLoad(); extern int MOS2sLoad(); extern void MOS2sPrint(); extern int MOS2sSetup(); extern int MOS2sUpdate(); extern int MOS2setup(); extern int MOS2temp(); extern int MOS2trunc(); #endif /* stdc */ #endif /*MOS2*/ 0707070124060341231006440006700000000000011777770500302372200004300000046524spice3c1/spice3/include/mos3defs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef MOS3 #define MOS3 "MOS3defs.h $Revision: 1.4 $ on $Date: 88/11/16 21:55:23 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* declarations for level 3 MOSFETs */ /* information needed for each instance */ typedef struct sMOS3instance { struct sMOS3model *MOS3modPtr; /* backpointer to model */ struct sMOS3instance *MOS3nextInstance; /* pointer to next instance of *current model*/ IFuid MOS3name; /* pointer to character string naming this instance */ int MOS3dNode; /* number of the gate node of the mosfet */ int MOS3gNode; /* number of the gate node of the mosfet */ int MOS3sNode; /* number of the source node of the mosfet */ int MOS3bNode; /* number of the bulk node of the mosfet */ int MOS3dNodePrime; /* number of the internal drain node of the mosfet */ int MOS3sNodePrime; /* number of the internal source node of the mosfet */ double MOS3l; /* the length of the channel region */ double MOS3w; /* the width of the channel region */ double MOS3drainArea; /* the area of the drain diffusion */ double MOS3sourceArea; /* the area of the source diffusion */ double MOS3drainSquares; /* the length of the drain in squares */ double MOS3sourceSquares; /* the length of the source in squares */ double MOS3drainPerimiter; double MOS3sourcePerimiter; double MOS3sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS3drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS3temp; /* operating temperature of this instance */ double MOS3tTransconductance; /* temperature corrected transconductance*/ double MOS3tSurfMob; /* temperature corrected surface mobility */ double MOS3tPhi; /* temperature corrected Phi */ double MOS3tVto; /* temperature corrected Vto */ double MOS3tSatCur; /* temperature corrected saturation Cur. */ double MOS3tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS3tCbd; /* temperature corrected B-D Capacitance */ double MOS3tCbs; /* temperature corrected B-S Capacitance */ double MOS3tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS3tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS3tBulkPot; /* temperature corrected Bulk potential */ double MOS3tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS3tVbi; /* temperature adjusted Vbi */ double MOS3icVBS; /* initial condition B-S voltage */ double MOS3icVDS; /* initial condition D-S voltage */ double MOS3icVGS; /* initial condition G-S voltage */ double MOS3von; double MOS3vdsat; double MOS3sourceVcrit; /* vcrit for pos. vds */ double MOS3drainVcrit; /* vcrit for neg. vds */ double MOS3cd; double MOS3cbs; double MOS3cbd; double MOS3gmbs; double MOS3gm; double MOS3gds; double MOS3gbd; double MOS3gbs; double MOS3capbd; double MOS3capbs; double MOS3Cbd; double MOS3Cbdsw; double MOS3Cbs; double MOS3Cbssw; double MOS3f2d; double MOS3f3d; double MOS3f4d; double MOS3f2s; double MOS3f3s; double MOS3f4s; int MOS3mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS3off :1;/* non-zero to indicate device is off for dc analysis*/ unsigned MOS3tempGiven :1; /* instance temperature specified */ unsigned MOS3lGiven :1; unsigned MOS3wGiven :1; unsigned MOS3drainAreaGiven :1; unsigned MOS3sourceAreaGiven :1; unsigned MOS3drainSquaresGiven :1; unsigned MOS3sourceSquaresGiven :1; unsigned MOS3drainPerimiterGiven :1; unsigned MOS3sourcePerimiterGiven :1; unsigned MOS3dNodePrimeSet :1; unsigned MOS3sNodePrimeSet :1; unsigned MOS3icVBSGiven :1; unsigned MOS3icVDSGiven :1; unsigned MOS3icVGSGiven :1; unsigned MOS3vonGiven :1; unsigned MOS3vdsatGiven :1; unsigned MOS3modeGiven :1; double *MOS3DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS3GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS3SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS3BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS3DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS3SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS3DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS3GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS3GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS3GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS3SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS3BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS3BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS3DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS3DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS3BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS3DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS3SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS3SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS3DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS3SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS3SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS3states; /* index into state table for this device */ #define MOS3vbd MOS3states+ 0 #define MOS3vbs MOS3states+ 1 #define MOS3vgs MOS3states+ 2 #define MOS3vds MOS3states+ 3 /* meyer capacitances */ #define MOS3capgs MOS3states+ 4 /* gate-source capacitor value */ #define MOS3qgs MOS3states+ 5 /* gate-source capacitor charge */ #define MOS3cqgs MOS3states+ 6 /* gate-source capacitor current */ #define MOS3capgd MOS3states+ 7 /* gate-drain capacitor value */ #define MOS3qgd MOS3states+ 8 /* gate-drain capacitor charge */ #define MOS3cqgd MOS3states+ 9 /* gate-drain capacitor current */ #define MOS3capgb MOS3states+ 10/* gate-bulk capacitor value */ #define MOS3qgb MOS3states+ 11 /* gate-bulk capacitor charge */ #define MOS3cqgb MOS3states+ 12 /* gate-bulk capacitor current */ /* diode capacitances */ #define MOS3qbd MOS3states+ 13 /* bulk-drain capacitor charge */ #define MOS3cqbd MOS3states+ 14 /* bulk-drain capacitor current */ #define MOS3qbs MOS3states+ 15 /* bulk-source capacitor charge */ #define MOS3cqbs MOS3states+ 16 /* bulk-source capacitor current */ #define MOS3NUMSTATES 17 #define MOS3sensxpgs MOS3states+17 /* charge sensitivities and their derivatives +18 for the derivatives - pointer to the beginning of the array */ #define MOS3sensxpgd MOS3states+19 #define MOS3sensxpgb MOS3states+21 #define MOS3sensxpbs MOS3states+23 #define MOS3sensxpbd MOS3states+25 #define MOS3numSenStates 10 int MOS3senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ unsigned MOS3sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS3sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS3senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double MOS3cgs; double MOS3cgd; double MOS3cgb; double *MOS3sens; #define MOS3senGdpr MOS3sens #define MOS3senGspr MOS3sens + 1 #define MOS3senCgs MOS3sens + 2 /* contains pertured values of cgs */ #define MOS3senCgd MOS3sens + 8 /* contains perturbed values of cgd*/ #define MOS3senCgb MOS3sens + 14 /* contains perturbed values of cgb*/ #define MOS3senCbd MOS3sens + 20 /* contains perturbed values of cbd*/ #define MOS3senCbs MOS3sens + 26 /* contains perturbed values of cbs*/ #define MOS3senGds MOS3sens + 32 /* contains perturbed values of gds*/ #define MOS3senGbs MOS3sens + 38 /* contains perturbed values of gbs*/ #define MOS3senGbd MOS3sens + 44 /* contains perturbed values of gbd*/ #define MOS3senGm MOS3sens + 50 /* contains perturbed values of gm*/ #define MOS3senGmbs MOS3sens + 56 /* contains perturbed values of gmbs*/ #define MOS3dphigs_dl MOS3sens + 62 #define MOS3dphigd_dl MOS3sens + 63 #define MOS3dphigb_dl MOS3sens + 64 #define MOS3dphibs_dl MOS3sens + 65 #define MOS3dphibd_dl MOS3sens + 66 #define MOS3dphigs_dw MOS3sens + 67 #define MOS3dphigd_dw MOS3sens + 68 #define MOS3dphigb_dw MOS3sens + 69 #define MOS3dphibs_dw MOS3sens + 70 #define MOS3dphibd_dw MOS3sens + 71 } MOS3instance ; /* per model data */ /* NOTE: parameters marked 'input - use xxxx' are paramters for * which a temperature correction is applied in MOS3temp, thus * the MOS3xxxx value in the per-instance structure should be used * instead in all calculations */ typedef struct sMOS3model { /* model structure for a resistor */ int MOS3modType; /* type index of this device type */ struct sMOS3model *MOS3nextModel; /* pointer to next possible model *in linked list */ MOS3instance * MOS3instances; /* pointer to list of instances * that have this model */ IFuid MOS3modName; /* pointer to character string naming this model */ int MOS3type; /* device type : 1 = nmos, -1 = pmos */ double MOS3tnom; /* temperature at which parameters measured */ double MOS3latDiff; double MOS3jctSatCurDensity; /* input - use tSatCurDens*/ double MOS3jctSatCur; /* input - use tSatCur instead */ double MOS3drainResistance; double MOS3sourceResistance; double MOS3sheetResistance; double MOS3transconductance; /* input - use tTransconductance */ double MOS3gateSourceOverlapCapFactor; double MOS3gateDrainOverlapCapFactor; double MOS3gateBulkOverlapCapFactor; double MOS3oxideCapFactor; double MOS3vt0; /* input - use tVto */ double MOS3capBD; /* input - use tCbs */ double MOS3capBS; /* input - use tCbd */ double MOS3bulkCapFactor; /* input - use tCj */ double MOS3sideWallCapFactor; /* input - use tCjsw */ double MOS3bulkJctPotential; /* input - use tBulkPot */ double MOS3bulkJctBotGradingCoeff; double MOS3bulkJctSideGradingCoeff; double MOS3fwdCapDepCoeff; double MOS3phi; /* input - use tPhi */ double MOS3gamma; double MOS3substrateDoping; int MOS3gateType; double MOS3surfaceStateDensity; double MOS3oxideThickness; double MOS3surfaceMobility; /* input - use tSurfMob */ double MOS3eta; double MOS3junctionDepth; double MOS3coeffDepLayWidth; /* xd */ double MOS3narrowFactor; /* delta */ double MOS3delta; /* input delta */ double MOS3fastSurfaceStateDensity; /* nfs */ double MOS3theta; /* theta */ double MOS3maxDriftVel; /* vmax */ double MOS3alpha; /* alpha */ double MOS3kappa; /* kappa */ unsigned MOS3typeGiven :1; unsigned MOS3latDiffGiven :1; unsigned MOS3jctSatCurDensityGiven :1; unsigned MOS3jctSatCurGiven :1; unsigned MOS3drainResistanceGiven :1; unsigned MOS3sourceResistanceGiven :1; unsigned MOS3sheetResistanceGiven :1; unsigned MOS3transconductanceGiven :1; unsigned MOS3gateSourceOverlapCapFactorGiven :1; unsigned MOS3gateDrainOverlapCapFactorGiven :1; unsigned MOS3gateBulkOverlapCapFactorGiven :1; unsigned MOS3vt0Given :1; unsigned MOS3capBDGiven :1; unsigned MOS3capBSGiven :1; unsigned MOS3bulkCapFactorGiven :1; unsigned MOS3sideWallCapFactorGiven :1; unsigned MOS3bulkJctPotentialGiven :1; unsigned MOS3bulkJctBotGradingCoeffGiven :1; unsigned MOS3bulkJctSideGradingCoeffGiven :1; unsigned MOS3fwdCapDepCoeffGiven :1; unsigned MOS3phiGiven :1; unsigned MOS3gammaGiven :1; unsigned MOS3substrateDopingGiven :1; unsigned MOS3gateTypeGiven :1; unsigned MOS3surfaceStateDensityGiven :1; unsigned MOS3oxideThicknessGiven :1; unsigned MOS3surfaceMobilityGiven :1; unsigned MOS3etaGiven :1; unsigned MOS3junctionDepthGiven :1; unsigned MOS3deltaGiven :1; /* delta */ unsigned MOS3fastSurfaceStateDensityGiven :1; /* nfs */ unsigned MOS3thetaGiven :1; /* theta */ unsigned MOS3maxDriftVelGiven :1; /* vmax */ unsigned MOS3kappaGiven :1; /* kappa */ unsigned MOS3tnomGiven :1; /* Tnom was given? */ } MOS3model; #ifndef NMOS #define NMOS 1 #define PMOS -1 #endif /*NMOS*/ /* device parameters */ #define MOS3_W 1 #define MOS3_L 2 #define MOS3_AS 3 #define MOS3_AD 4 #define MOS3_PS 5 #define MOS3_PD 6 #define MOS3_NRS 7 #define MOS3_NRD 8 #define MOS3_OFF 9 #define MOS3_IC 10 #define MOS3_IC_VBS 11 #define MOS3_IC_VDS 12 #define MOS3_IC_VGS 13 #define MOS3_W_SENS 14 #define MOS3_L_SENS 15 #define MOS3_CB 16 #define MOS3_CG 17 #define MOS3_CS 18 #define MOS3_POWER 19 #define MOS3_CGS 20 #define MOS3_CGD 21 #define MOS3_DNODE 22 #define MOS3_GNODE 23 #define MOS3_SNODE 24 #define MOS3_BNODE 25 #define MOS3_DNODEPRIME 26 #define MOS3_SNODEPRIME 27 #define MOS3_SOURCECONDUCT 28 #define MOS3_DRAINCONDUCT 29 #define MOS3_VON 30 #define MOS3_VDSAT 31 #define MOS3_SOURCEVCRIT 32 #define MOS3_DRAINVCRIT 33 #define MOS3_CD 34 #define MOS3_CBS 35 #define MOS3_CBD 36 #define MOS3_GMBS 37 #define MOS3_GM 38 #define MOS3_GDS 39 #define MOS3_GBD 40 #define MOS3_GBS 41 #define MOS3_CAPBD 42 #define MOS3_CAPBS 43 #define MOS3_CAPZEROBIASBD 44 #define MOS3_CAPZEROBIASBDSW 45 #define MOS3_CAPZEROBIASBS 46 #define MOS3_CAPZEROBIASBSSW 47 #define MOS3_VBD 48 #define MOS3_VBS 49 #define MOS3_VGS 50 #define MOS3_VDS 51 #define MOS3_CAPGS 52 #define MOS3_QGS 53 #define MOS3_CQGS 54 #define MOS3_CAPGD 55 #define MOS3_QGD 56 #define MOS3_CQGD 57 #define MOS3_CAPGB 58 #define MOS3_QGB 59 #define MOS3_CQGB 60 #define MOS3_QBD 61 #define MOS3_CQBD 62 #define MOS3_QBS 63 #define MOS3_CQBS 64 #define MOS3_W_SENS_REAL 65 #define MOS3_W_SENS_IMAG 66 #define MOS3_W_SENS_MAG 67 #define MOS3_W_SENS_PH 68 #define MOS3_W_SENS_CPLX 69 #define MOS3_L_SENS_REAL 70 #define MOS3_L_SENS_IMAG 71 #define MOS3_L_SENS_MAG 72 #define MOS3_L_SENS_PH 73 #define MOS3_L_SENS_CPLX 74 #define MOS3_W_SENS_DC 75 #define MOS3_L_SENS_DC 76 #define MOS3_TEMP 77 /* model parameters */ #define MOS3_MOD_VTO 101 #define MOS3_MOD_KP 102 #define MOS3_MOD_GAMMA 103 #define MOS3_MOD_PHI 104 #define MOS3_MOD_RD 105 #define MOS3_MOD_RS 106 #define MOS3_MOD_CBD 107 #define MOS3_MOD_CBS 108 #define MOS3_MOD_IS 109 #define MOS3_MOD_PB 110 #define MOS3_MOD_CGSO 111 #define MOS3_MOD_CGDO 112 #define MOS3_MOD_CGBO 113 #define MOS3_MOD_RSH 114 #define MOS3_MOD_CJ 115 #define MOS3_MOD_MJ 116 #define MOS3_MOD_CJSW 117 #define MOS3_MOD_MJSW 118 #define MOS3_MOD_JS 119 #define MOS3_MOD_TOX 120 #define MOS3_MOD_LD 121 #define MOS3_MOD_U0 122 #define MOS3_MOD_FC 123 #define MOS3_MOD_NSUB 124 #define MOS3_MOD_TPG 125 #define MOS3_MOD_NSS 126 #define MOS3_MOD_ETA 127 #define MOS3_MOD_DELTA 128 #define MOS3_MOD_NFS 129 #define MOS3_MOD_THETA 130 #define MOS3_MOD_VMAX 131 #define MOS3_MOD_KAPPA 132 #define MOS3_MOD_NMOS 133 #define MOS3_MOD_PMOS 134 #define MOS3_MOD_XJ 135 #define MOS3_MOD_UEXP 136 #define MOS3_MOD_NEFF 137 #define MOS3_MOD_XD 138 #define MOS3_MOD_ALPHA 139 #define MOS3_DELTA 140 #define MOS3_MOD_TNOM 141 /* device questions */ /* model questions */ #ifdef __STDC__ extern int MOS3acLoad(GENmodel*,CKTcircuit*); extern int MOS3ask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int MOS3convTest(GENmodel *,CKTcircuit *); extern int MOS3delete(GENmodel*,IFuid,GENinstance**); extern void MOS3destroy(GENmodel**); extern int MOS3getic(GENmodel*,CKTcircuit*); extern int MOS3load(GENmodel*,CKTcircuit*); extern int MOS3mAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int MOS3mDelete(GENmodel**,IFuid,GENmodel*); extern int MOS3mParam(int,IFvalue*,GENmodel*); extern int MOS3param(int,IFvalue*,GENinstance*,IFvalue*); extern int MOS3pzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int MOS3sAcLoad(GENmodel*,CKTcircuit*); extern int MOS3sLoad(GENmodel*,CKTcircuit*); extern void MOS3sPrint(GENmodel*,CKTcircuit*); extern int MOS3sSetup(SENstruct*,GENmodel*); extern int MOS3sUpdate(GENmodel*,CKTcircuit*); extern int MOS3setup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int MOS3temp(GENmodel*,CKTcircuit*); extern int MOS3trunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int MOS3acLoad(); extern int MOS3ask(); extern int MOS3convTest(); extern int MOS3delete(); extern void MOS3destroy(); extern int MOS3getic(); extern int MOS3load(); extern int MOS3mAsk(); extern int MOS3mDelete(); extern int MOS3mParam(); extern int MOS3param(); extern int MOS3pzLoad(); extern int MOS3sAcLoad(); extern int MOS3sLoad(); extern void MOS3sPrint(); extern int MOS3sSetup(); extern int MOS3sUpdate(); extern int MOS3setup(); extern int MOS3temp(); extern int MOS3trunc(); #endif /* stdc */ #endif /*MOS3*/ 0707070124060341241006440006700000000000011777770500302372300004100000573664spice3c1/spice3/include/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh HFILES = \ acdefs.h\ asrcdefs.h\ bjtdefs.h\ bsimdefs.h\ capdefs.h\ cccsdefs.h\ ccvsdefs.h\ cktdefs.h\ const.h\ cpdefs.h\ cpextern.h\ cpstd.h\ cswdefs.h\ devdefs.h\ diodefs.h\ ftecmath.h\ fteconstant.h\ ftedata.h\ ftedbgraph.h\ ftedebug.h\ ftedefs.h\ ftedevice.h\ fteextern.h\ ftegraf.h\ ftegraph.h\ ftehelp.h\ fteinp.h\ fteinput.h\ fteparse.h\ fteredirect.h\ gendefs.h\ hlpdefs.h\ iferrmsgs.h\ ifsim.h\ inddefs.h\ inpdefs.h\ inpmacs.h\ inpparsetree.h\ isrcdefs.h\ jfetdefs.h\ jobdefs.h\ mesdefs.h\ mos1defs.h\ mos2defs.h\ mos3defs.h\ optdefs.h\ opdefs.h\ pzdefs.h\ resdefs.h\ sendefs.h\ smpdefs.h\ sperror.h\ swdefs.h\ tfdefs.h\ trandefs.h\ tradefs.h\ trcvdefs.h\ tskdefs.h\ urcdefs.h\ vccsdefs.h\ vcvsdefs.h\ vsrcdefs.h\ complex.h\ prefix.h\ prefixbsd.h\ prefixcms.h\ prefixhpux.h\ prefixpc.h\ prefixvms.h\ suffix.h\ suffixbsd.h\ suffixcms.h\ suffixhpux.h\ suffixpc.h\ suffixvms.h\ util.h\ version.h VMSFILES= TARGET = DUMMY DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${HFILES} ALLFILES= ${SOURCE} makefile INCLUDE= CFLAGS = -pg -O -I${INCLUDE} LINTFLAGS= -u -DDEBUG -I${INCLUDE} LDFLAGS = -z DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} -c $*.c source: ${SOURCE} tags opt: ${SOURCE} tags reopt: ${SOURCE} tags library: ${TARGET}.a ${TARGET}.a: ${COBJS} # ar r ${TARGET}.a $? # ranlib ${TARGET}.a ${TARGET}: ${COBJS} ${CC} ${CFLAGS} -o ${TARGET} ${COBJS} ${LDFLAGS} lint: ${SOURCE} lint ${LINTFLAGS} ${CFILES} qgrind: ${SOURCE} qgrind -lc ${HFILES} vgrind: ${SOURCE} vgrind -lc ${HFILES} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags ../*/*.c > /dev/null 2>&1 clean: -rm -f ${COBJS} -rm -f ${CFILES} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${HFILES}: co ${VERSION} $@ # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ acan.c\ acaskquest.c\ acsetparm.c\ cktaccept.c\ cktacct.c\ cktacdump.c\ cktacload.c\ cktask.c\ cktaskanalq.c\ cktasknodqst.c\ cktbindnode.c\ cktbreakdump.c\ cktclrbreak.c\ cktconvtest.c\ cktcrtelt.c\ cktdeltask.c\ cktdestroy.c\ cktdltinst.c\ cktdltmod.c\ cktdltnod.c\ cktdojob.c\ cktdump.c\ cktfndanal.c\ cktfndbranch.c\ cktfnddev.c\ cktfndmod.c\ cktfndnode.c\ cktfndtask.c\ cktground.c\ cktinit.c\ cktic.c\ cktinst2node.c\ cktlinkeq.c\ cktload.c\ cktmkcur.c\ cktmknode.c\ cktmkvolt.c\ cktmapnode.c\ cktmodask.c\ cktmodcrt.c\ cktmodparam.c\ cktnames.c\ cktnewanal.c\ cktneweq.c\ cktnewnode.c\ cktnewtask.c\ cktnodname.c\ cktnum2nod.c\ cktop.c\ cktparam.c\ cktpmodname.c\ cktpname.c\ cktpzload.c\ cktpzsetup.c\ cktsenac.c\ cktsencomp.c\ cktsendctran.c\ cktsenload.c\ cktsenprint.c\ cktsensetup.c\ cktsenupdate.c\ cktsetanalpm.c\ cktsetbreak.c\ cktsetnodpm.c\ cktsetopt.c\ cktsetup.c\ ckttemp.c\ cktterr.c\ ckttrunc.c\ ckttypelook.c\ spiinit.c\ dcoaskquest.c\ dcosetparm.c\ dctaskquest.c\ dctsetparm.c\ dcop.c\ dctran.c\ dctrcurv.c\ senstartup.c\ sensetparm.c\ senaskquest.c\ sendestroy.c\ sperror.c\ pzan.c\ pzaskquest.c\ pzsetparm.c\ tfanal.c\ tfsetparm.c\ tfaskquest.c\ tranaskquest.c\ transetparm.c COBJS = \ acan.o\ acaskquest.o\ acsetparm.o\ cktaccept.o\ cktacct.o\ cktacdump.o\ cktacload.o\ cktask.o\ cktaskanalq.o\ cktasknodqst.o\ cktbindnode.o\ cktbreakdump.o\ cktclrbreak.o\ cktconvtest.o\ cktcrtelt.o\ cktdeltask.o\ cktdestroy.o\ cktdltinst.o\ cktdltmod.o\ cktdltnod.o\ cktdojob.o\ cktdump.o\ cktfndanal.o\ cktfndbranch.o\ cktfnddev.o\ cktfndmod.o\ cktfndnode.o\ cktfndtask.o\ cktground.o\ cktinit.o\ cktic.o\ cktinst2node.o\ cktlinkeq.o\ cktload.o\ cktmkcur.o\ cktmknode.o\ cktmkvolt.o\ cktmapnode.o\ cktmodask.o\ cktmodcrt.o\ cktmodparam.o\ cktnames.o\ cktnewanal.o\ cktneweq.o\ cktnewnode.o\ cktnewtask.o\ cktnodname.o\ cktnum2nod.o\ cktop.o\ cktparam.o\ cktpmodname.o\ cktpname.o\ cktpzload.o\ cktpzsetup.o\ cktsenac.o\ cktsencomp.o\ cktsendctran.o\ cktsenload.o\ cktsenprint.o\ cktsensetup.o\ cktsenupdate.o\ cktsetanalpm.o\ cktsetbreak.o\ cktsetnodpm.o\ cktsetopt.o\ cktsetup.o\ ckttemp.o\ cktterr.o\ ckttrunc.o\ ckttypelook.o\ spiinit.o\ dcoaskquest.o\ dcosetparm.o\ dctaskquest.o\ dctsetparm.o\ dcop.o\ dctran.o\ dctrcurv.o\ senstartup.o\ sensetparm.o\ senaskquest.o\ sendestroy.o\ sperror.o\ pzan.o\ pzaskquest.o\ pzsetparm.o\ tfanal.o\ tfsetparm.o\ tfaskquest.o\ tranaskquest.o\ transetparm.o TARGET = ../ckt DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} ${PG} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../lint/llib-lckt.ln lint ${LINTFLAGS} ${LINTLIBS} ../lint/llib-l*.ln ${CFILES} lint -Cckt ${LINTFLAGS} ${CFILES} mv llib-lckt.ln ../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags ../*/*.c > /dev/null 2>&1 clean: -rm -f ${COBJS} -rm -f ${TARGET}.a install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE acan.o: ../include/acdefs.h acan.o: ../include/cktdefs.h acan.o: ../include/gendefs.h acan.o: ../include/iferrmsgs.h acan.o: ../include/ifsim.h acan.o: ../include/jobdefs.h acan.o: ../include/optdefs.h acan.o: ../include/pzdefs.h acan.o: ../include/sendefs.h acan.o: ../include/smpdefs.h acan.o: ../include/sperror.h acan.o: ../include/trcvdefs.h acan.o: ../include/tskdefs.h acan.o: ../include/complex.h acan.o: ../include/prefix.h acan.o: ../include/suffix.h acan.o: ../include/util.h acaskquest.o: ../include/acdefs.h acaskquest.o: ../include/cktdefs.h acaskquest.o: ../include/gendefs.h acaskquest.o: ../include/iferrmsgs.h acaskquest.o: ../include/ifsim.h acaskquest.o: ../include/jobdefs.h acaskquest.o: ../include/optdefs.h acaskquest.o: ../include/pzdefs.h acaskquest.o: ../include/sendefs.h acaskquest.o: ../include/smpdefs.h acaskquest.o: ../include/trcvdefs.h acaskquest.o: ../include/tskdefs.h acaskquest.o: ../include/complex.h acaskquest.o: ../include/prefix.h acaskquest.o: ../include/suffix.h acsetparm.o: ../include/acdefs.h acsetparm.o: ../include/cktdefs.h acsetparm.o: ../include/gendefs.h acsetparm.o: ../include/iferrmsgs.h acsetparm.o: ../include/ifsim.h acsetparm.o: ../include/jobdefs.h acsetparm.o: ../include/optdefs.h acsetparm.o: ../include/pzdefs.h acsetparm.o: ../include/sendefs.h acsetparm.o: ../include/smpdefs.h acsetparm.o: ../include/trcvdefs.h acsetparm.o: ../include/tskdefs.h acsetparm.o: ../include/complex.h acsetparm.o: ../include/prefix.h acsetparm.o: ../include/suffix.h cktaccept.o: ../include/acdefs.h cktaccept.o: ../include/cktdefs.h cktaccept.o: ../include/devdefs.h cktaccept.o: ../include/gendefs.h cktaccept.o: ../include/iferrmsgs.h cktaccept.o: ../include/ifsim.h cktaccept.o: ../include/jobdefs.h cktaccept.o: ../include/optdefs.h cktaccept.o: ../include/pzdefs.h cktaccept.o: ../include/sendefs.h cktaccept.o: ../include/smpdefs.h cktaccept.o: ../include/sperror.h cktaccept.o: ../include/trcvdefs.h cktaccept.o: ../include/tskdefs.h cktaccept.o: ../include/complex.h cktaccept.o: ../include/prefix.h cktaccept.o: ../include/suffix.h cktaccept.o: ../include/util.h cktacct.o: ../include/acdefs.h cktacct.o: ../include/cktdefs.h cktacct.o: ../include/const.h cktacct.o: ../include/gendefs.h cktacct.o: ../include/ifsim.h cktacct.o: ../include/jobdefs.h cktacct.o: ../include/optdefs.h cktacct.o: ../include/pzdefs.h cktacct.o: ../include/sendefs.h cktacct.o: ../include/smpdefs.h cktacct.o: ../include/trcvdefs.h cktacct.o: ../include/tskdefs.h cktacct.o: ../include/complex.h cktacct.o: ../include/prefix.h cktacct.o: ../include/suffix.h cktacct.o: ../include/util.h cktacdump.o: ../include/acdefs.h cktacdump.o: ../include/cktdefs.h cktacdump.o: ../include/gendefs.h cktacdump.o: ../include/iferrmsgs.h cktacdump.o: ../include/ifsim.h cktacdump.o: ../include/jobdefs.h cktacdump.o: ../include/optdefs.h cktacdump.o: ../include/pzdefs.h cktacdump.o: ../include/sendefs.h cktacdump.o: ../include/smpdefs.h cktacdump.o: ../include/trcvdefs.h cktacdump.o: ../include/tskdefs.h cktacdump.o: ../include/complex.h cktacdump.o: ../include/prefix.h cktacdump.o: ../include/suffix.h cktacdump.o: ../include/util.h cktacload.o: ../include/acdefs.h cktacload.o: ../include/cktdefs.h cktacload.o: ../include/devdefs.h cktacload.o: ../include/gendefs.h cktacload.o: ../include/iferrmsgs.h cktacload.o: ../include/ifsim.h cktacload.o: ../include/jobdefs.h cktacload.o: ../include/optdefs.h cktacload.o: ../include/pzdefs.h cktacload.o: ../include/sendefs.h cktacload.o: ../include/smpdefs.h cktacload.o: ../include/sperror.h cktacload.o: ../include/trcvdefs.h cktacload.o: ../include/tskdefs.h cktacload.o: ../include/complex.h cktacload.o: ../include/prefix.h cktacload.o: ../include/suffix.h cktask.o: ../include/acdefs.h cktask.o: ../include/cktdefs.h cktask.o: ../include/devdefs.h cktask.o: ../include/gendefs.h cktask.o: ../include/iferrmsgs.h cktask.o: ../include/ifsim.h cktask.o: ../include/jobdefs.h cktask.o: ../include/optdefs.h cktask.o: ../include/pzdefs.h cktask.o: ../include/sendefs.h cktask.o: ../include/smpdefs.h cktask.o: ../include/sperror.h cktask.o: ../include/trcvdefs.h cktask.o: ../include/tskdefs.h cktask.o: ../include/complex.h cktask.o: ../include/prefix.h cktask.o: ../include/suffix.h cktask.o: ../include/util.h cktaskanalq.o: ../include/acdefs.h cktaskanalq.o: ../include/cktdefs.h cktaskanalq.o: ../include/gendefs.h cktaskanalq.o: ../include/iferrmsgs.h cktaskanalq.o: ../include/ifsim.h cktaskanalq.o: ../include/jobdefs.h cktaskanalq.o: ../include/optdefs.h cktaskanalq.o: ../include/pzdefs.h cktaskanalq.o: ../include/sendefs.h cktaskanalq.o: ../include/smpdefs.h cktaskanalq.o: ../include/trcvdefs.h cktaskanalq.o: ../include/tskdefs.h cktaskanalq.o: ../include/complex.h cktaskanalq.o: ../include/prefix.h cktaskanalq.o: ../include/suffix.h cktaskanalq.o: ../include/util.h cktasknodqst.o: ../include/acdefs.h cktasknodqst.o: ../include/cktdefs.h cktasknodqst.o: ../include/gendefs.h cktasknodqst.o: ../include/iferrmsgs.h cktasknodqst.o: ../include/ifsim.h cktasknodqst.o: ../include/jobdefs.h cktasknodqst.o: ../include/optdefs.h cktasknodqst.o: ../include/pzdefs.h cktasknodqst.o: ../include/sendefs.h cktasknodqst.o: ../include/smpdefs.h cktasknodqst.o: ../include/trcvdefs.h cktasknodqst.o: ../include/tskdefs.h cktasknodqst.o: ../include/complex.h cktasknodqst.o: ../include/prefix.h cktasknodqst.o: ../include/suffix.h cktasknodqst.o: ../include/util.h cktbindnode.o: ../include/acdefs.h cktbindnode.o: ../include/cktdefs.h cktbindnode.o: ../include/devdefs.h cktbindnode.o: ../include/gendefs.h cktbindnode.o: ../include/iferrmsgs.h cktbindnode.o: ../include/ifsim.h cktbindnode.o: ../include/jobdefs.h cktbindnode.o: ../include/optdefs.h cktbindnode.o: ../include/pzdefs.h cktbindnode.o: ../include/sendefs.h cktbindnode.o: ../include/smpdefs.h cktbindnode.o: ../include/sperror.h cktbindnode.o: ../include/trcvdefs.h cktbindnode.o: ../include/tskdefs.h cktbindnode.o: ../include/complex.h cktbindnode.o: ../include/prefix.h cktbindnode.o: ../include/suffix.h cktbindnode.o: ../include/util.h cktbreakdump.o: ../include/acdefs.h cktbreakdump.o: ../include/cktdefs.h cktbreakdump.o: ../include/gendefs.h cktbreakdump.o: ../include/ifsim.h cktbreakdump.o: ../include/jobdefs.h cktbreakdump.o: ../include/optdefs.h cktbreakdump.o: ../include/pzdefs.h cktbreakdump.o: ../include/sendefs.h cktbreakdump.o: ../include/smpdefs.h cktbreakdump.o: ../include/trcvdefs.h cktbreakdump.o: ../include/tskdefs.h cktbreakdump.o: ../include/complex.h cktbreakdump.o: ../include/prefix.h cktbreakdump.o: ../include/suffix.h cktbreakdump.o: ../include/util.h cktclrbreak.o: ../include/acdefs.h cktclrbreak.o: ../include/cktdefs.h cktclrbreak.o: ../include/gendefs.h cktclrbreak.o: ../include/iferrmsgs.h cktclrbreak.o: ../include/ifsim.h cktclrbreak.o: ../include/jobdefs.h cktclrbreak.o: ../include/optdefs.h cktclrbreak.o: ../include/pzdefs.h cktclrbreak.o: ../include/sendefs.h cktclrbreak.o: ../include/smpdefs.h cktclrbreak.o: ../include/sperror.h cktclrbreak.o: ../include/trcvdefs.h cktclrbreak.o: ../include/tskdefs.h cktclrbreak.o: ../include/complex.h cktclrbreak.o: ../include/prefix.h cktclrbreak.o: ../include/suffix.h cktclrbreak.o: ../include/util.h cktconvtest.o: ../include/acdefs.h cktconvtest.o: ../include/cktdefs.h cktconvtest.o: ../include/devdefs.h cktconvtest.o: ../include/gendefs.h cktconvtest.o: ../include/iferrmsgs.h cktconvtest.o: ../include/ifsim.h cktconvtest.o: ../include/jobdefs.h cktconvtest.o: ../include/optdefs.h cktconvtest.o: ../include/pzdefs.h cktconvtest.o: ../include/sendefs.h cktconvtest.o: ../include/smpdefs.h cktconvtest.o: ../include/sperror.h cktconvtest.o: ../include/trcvdefs.h cktconvtest.o: ../include/tskdefs.h cktconvtest.o: ../include/complex.h cktconvtest.o: ../include/prefix.h cktconvtest.o: ../include/suffix.h cktcrtelt.o: ../include/acdefs.h cktcrtelt.o: ../include/cktdefs.h cktcrtelt.o: ../include/devdefs.h cktcrtelt.o: ../include/gendefs.h cktcrtelt.o: ../include/iferrmsgs.h cktcrtelt.o: ../include/ifsim.h cktcrtelt.o: ../include/jobdefs.h cktcrtelt.o: ../include/optdefs.h cktcrtelt.o: ../include/pzdefs.h cktcrtelt.o: ../include/sendefs.h cktcrtelt.o: ../include/smpdefs.h cktcrtelt.o: ../include/sperror.h cktcrtelt.o: ../include/trcvdefs.h cktcrtelt.o: ../include/tskdefs.h cktcrtelt.o: ../include/complex.h cktcrtelt.o: ../include/prefix.h cktcrtelt.o: ../include/suffix.h cktcrtelt.o: ../include/util.h cktdeltask.o: ../include/iferrmsgs.h cktdeltask.o: ../include/ifsim.h cktdeltask.o: ../include/jobdefs.h cktdeltask.o: ../include/tskdefs.h cktdeltask.o: ../include/prefix.h cktdeltask.o: ../include/suffix.h cktdeltask.o: ../include/util.h cktdestroy.o: ../include/acdefs.h cktdestroy.o: ../include/cktdefs.h cktdestroy.o: ../include/devdefs.h cktdestroy.o: ../include/gendefs.h cktdestroy.o: ../include/iferrmsgs.h cktdestroy.o: ../include/ifsim.h cktdestroy.o: ../include/jobdefs.h cktdestroy.o: ../include/optdefs.h cktdestroy.o: ../include/pzdefs.h cktdestroy.o: ../include/sendefs.h cktdestroy.o: ../include/smpdefs.h cktdestroy.o: ../include/sperror.h cktdestroy.o: ../include/trcvdefs.h cktdestroy.o: ../include/tskdefs.h cktdestroy.o: ../include/complex.h cktdestroy.o: ../include/prefix.h cktdestroy.o: ../include/suffix.h cktdestroy.o: ../include/util.h cktdltinst.o: ../include/acdefs.h cktdltinst.o: ../include/cktdefs.h cktdltinst.o: ../include/gendefs.h cktdltinst.o: ../include/iferrmsgs.h cktdltinst.o: ../include/ifsim.h cktdltinst.o: ../include/jobdefs.h cktdltinst.o: ../include/optdefs.h cktdltinst.o: ../include/pzdefs.h cktdltinst.o: ../include/sendefs.h cktdltinst.o: ../include/smpdefs.h cktdltinst.o: ../include/sperror.h cktdltinst.o: ../include/trcvdefs.h cktdltinst.o: ../include/tskdefs.h cktdltinst.o: ../include/complex.h cktdltinst.o: ../include/prefix.h cktdltinst.o: ../include/suffix.h cktdltinst.o: ../include/util.h cktdltmod.o: ../include/acdefs.h cktdltmod.o: ../include/cktdefs.h cktdltmod.o: ../include/gendefs.h cktdltmod.o: ../include/iferrmsgs.h cktdltmod.o: ../include/ifsim.h cktdltmod.o: ../include/jobdefs.h cktdltmod.o: ../include/optdefs.h cktdltmod.o: ../include/pzdefs.h cktdltmod.o: ../include/sendefs.h cktdltmod.o: ../include/smpdefs.h cktdltmod.o: ../include/sperror.h cktdltmod.o: ../include/trcvdefs.h cktdltmod.o: ../include/tskdefs.h cktdltmod.o: ../include/complex.h cktdltmod.o: ../include/prefix.h cktdltmod.o: ../include/suffix.h cktdltmod.o: ../include/util.h cktdltnod.o: ../include/acdefs.h cktdltnod.o: ../include/cktdefs.h cktdltnod.o: ../include/gendefs.h cktdltnod.o: ../include/iferrmsgs.h cktdltnod.o: ../include/ifsim.h cktdltnod.o: ../include/jobdefs.h cktdltnod.o: ../include/optdefs.h cktdltnod.o: ../include/pzdefs.h cktdltnod.o: ../include/sendefs.h cktdltnod.o: ../include/smpdefs.h cktdltnod.o: ../include/sperror.h cktdltnod.o: ../include/trcvdefs.h cktdltnod.o: ../include/tskdefs.h cktdltnod.o: ../include/complex.h cktdltnod.o: ../include/prefix.h cktdltnod.o: ../include/suffix.h cktdltnod.o: ../include/util.h cktdojob.o: ../include/acdefs.h cktdojob.o: ../include/cktdefs.h cktdojob.o: ../include/gendefs.h cktdojob.o: ../include/iferrmsgs.h cktdojob.o: ../include/ifsim.h cktdojob.o: ../include/jobdefs.h cktdojob.o: ../include/optdefs.h cktdojob.o: ../include/pzdefs.h cktdojob.o: ../include/sendefs.h cktdojob.o: ../include/smpdefs.h cktdojob.o: ../include/sperror.h cktdojob.o: ../include/trandefs.h cktdojob.o: ../include/trcvdefs.h cktdojob.o: ../include/tskdefs.h cktdojob.o: ../include/complex.h cktdojob.o: ../include/prefix.h cktdojob.o: ../include/suffix.h cktdojob.o: ../include/util.h cktdump.o: ../include/acdefs.h cktdump.o: ../include/cktdefs.h cktdump.o: ../include/gendefs.h cktdump.o: ../include/ifsim.h cktdump.o: ../include/jobdefs.h cktdump.o: ../include/optdefs.h cktdump.o: ../include/pzdefs.h cktdump.o: ../include/sendefs.h cktdump.o: ../include/smpdefs.h cktdump.o: ../include/trcvdefs.h cktdump.o: ../include/tskdefs.h cktdump.o: ../include/complex.h cktdump.o: ../include/prefix.h cktdump.o: ../include/suffix.h cktfndanal.o: ../include/acdefs.h cktfndanal.o: ../include/cktdefs.h cktfndanal.o: ../include/gendefs.h cktfndanal.o: ../include/iferrmsgs.h cktfndanal.o: ../include/ifsim.h cktfndanal.o: ../include/jobdefs.h cktfndanal.o: ../include/optdefs.h cktfndanal.o: ../include/pzdefs.h cktfndanal.o: ../include/sendefs.h cktfndanal.o: ../include/smpdefs.h cktfndanal.o: ../include/sperror.h cktfndanal.o: ../include/trcvdefs.h cktfndanal.o: ../include/tskdefs.h cktfndanal.o: ../include/complex.h cktfndanal.o: ../include/prefix.h cktfndanal.o: ../include/suffix.h cktfndbranch.o: ../include/acdefs.h cktfndbranch.o: ../include/cktdefs.h cktfndbranch.o: ../include/devdefs.h cktfndbranch.o: ../include/gendefs.h cktfndbranch.o: ../include/ifsim.h cktfndbranch.o: ../include/jobdefs.h cktfndbranch.o: ../include/optdefs.h cktfndbranch.o: ../include/pzdefs.h cktfndbranch.o: ../include/sendefs.h cktfndbranch.o: ../include/smpdefs.h cktfndbranch.o: ../include/trcvdefs.h cktfndbranch.o: ../include/tskdefs.h cktfndbranch.o: ../include/complex.h cktfndbranch.o: ../include/prefix.h cktfndbranch.o: ../include/suffix.h cktfnddev.o: ../include/acdefs.h cktfnddev.o: ../include/cktdefs.h cktfnddev.o: ../include/gendefs.h cktfnddev.o: ../include/iferrmsgs.h cktfnddev.o: ../include/ifsim.h cktfnddev.o: ../include/jobdefs.h cktfnddev.o: ../include/optdefs.h cktfnddev.o: ../include/pzdefs.h cktfnddev.o: ../include/sendefs.h cktfnddev.o: ../include/smpdefs.h cktfnddev.o: ../include/sperror.h cktfnddev.o: ../include/trcvdefs.h cktfnddev.o: ../include/tskdefs.h cktfnddev.o: ../include/complex.h cktfnddev.o: ../include/prefix.h cktfnddev.o: ../include/suffix.h cktfnddev.o: ../include/util.h cktfndmod.o: ../include/acdefs.h cktfndmod.o: ../include/cktdefs.h cktfndmod.o: ../include/gendefs.h cktfndmod.o: ../include/iferrmsgs.h cktfndmod.o: ../include/ifsim.h cktfndmod.o: ../include/jobdefs.h cktfndmod.o: ../include/optdefs.h cktfndmod.o: ../include/pzdefs.h cktfndmod.o: ../include/sendefs.h cktfndmod.o: ../include/smpdefs.h cktfndmod.o: ../include/sperror.h cktfndmod.o: ../include/trcvdefs.h cktfndmod.o: ../include/tskdefs.h cktfndmod.o: ../include/complex.h cktfndmod.o: ../include/prefix.h cktfndmod.o: ../include/suffix.h cktfndmod.o: ../include/util.h cktfndnode.o: ../include/acdefs.h cktfndnode.o: ../include/cktdefs.h cktfndnode.o: ../include/gendefs.h cktfndnode.o: ../include/iferrmsgs.h cktfndnode.o: ../include/ifsim.h cktfndnode.o: ../include/jobdefs.h cktfndnode.o: ../include/optdefs.h cktfndnode.o: ../include/pzdefs.h cktfndnode.o: ../include/sendefs.h cktfndnode.o: ../include/smpdefs.h cktfndnode.o: ../include/sperror.h cktfndnode.o: ../include/trcvdefs.h cktfndnode.o: ../include/tskdefs.h cktfndnode.o: ../include/complex.h cktfndnode.o: ../include/prefix.h cktfndnode.o: ../include/suffix.h cktfndtask.o: ../include/acdefs.h cktfndtask.o: ../include/cktdefs.h cktfndtask.o: ../include/gendefs.h cktfndtask.o: ../include/iferrmsgs.h cktfndtask.o: ../include/ifsim.h cktfndtask.o: ../include/jobdefs.h cktfndtask.o: ../include/optdefs.h cktfndtask.o: ../include/pzdefs.h cktfndtask.o: ../include/sendefs.h cktfndtask.o: ../include/smpdefs.h cktfndtask.o: ../include/sperror.h cktfndtask.o: ../include/trcvdefs.h cktfndtask.o: ../include/tskdefs.h cktfndtask.o: ../include/complex.h cktfndtask.o: ../include/prefix.h cktfndtask.o: ../include/suffix.h cktfndtask.o: ../include/util.h cktground.o: ../include/acdefs.h cktground.o: ../include/cktdefs.h cktground.o: ../include/gendefs.h cktground.o: ../include/iferrmsgs.h cktground.o: ../include/ifsim.h cktground.o: ../include/jobdefs.h cktground.o: ../include/optdefs.h cktground.o: ../include/pzdefs.h cktground.o: ../include/sendefs.h cktground.o: ../include/smpdefs.h cktground.o: ../include/sperror.h cktground.o: ../include/trcvdefs.h cktground.o: ../include/tskdefs.h cktground.o: ../include/complex.h cktground.o: ../include/prefix.h cktground.o: ../include/suffix.h cktground.o: ../include/util.h cktinit.o: ../include/acdefs.h cktinit.o: ../include/cktdefs.h cktinit.o: ../include/const.h cktinit.o: ../include/gendefs.h cktinit.o: ../include/iferrmsgs.h cktinit.o: ../include/ifsim.h cktinit.o: ../include/jobdefs.h cktinit.o: ../include/optdefs.h cktinit.o: ../include/pzdefs.h cktinit.o: ../include/sendefs.h cktinit.o: ../include/smpdefs.h cktinit.o: ../include/sperror.h cktinit.o: ../include/trcvdefs.h cktinit.o: ../include/tskdefs.h cktinit.o: ../include/complex.h cktinit.o: ../include/prefix.h cktinit.o: ../include/suffix.h cktinit.o: ../include/util.h cktic.o: ../include/acdefs.h cktic.o: ../include/cktdefs.h cktic.o: ../include/devdefs.h cktic.o: ../include/gendefs.h cktic.o: ../include/iferrmsgs.h cktic.o: ../include/ifsim.h cktic.o: ../include/jobdefs.h cktic.o: ../include/optdefs.h cktic.o: ../include/pzdefs.h cktic.o: ../include/sendefs.h cktic.o: ../include/smpdefs.h cktic.o: ../include/sperror.h cktic.o: ../include/trcvdefs.h cktic.o: ../include/tskdefs.h cktic.o: ../include/complex.h cktic.o: ../include/prefix.h cktic.o: ../include/suffix.h cktic.o: ../include/util.h cktinst2node.o: ../include/acdefs.h cktinst2node.o: ../include/cktdefs.h cktinst2node.o: ../include/devdefs.h cktinst2node.o: ../include/gendefs.h cktinst2node.o: ../include/iferrmsgs.h cktinst2node.o: ../include/ifsim.h cktinst2node.o: ../include/jobdefs.h cktinst2node.o: ../include/optdefs.h cktinst2node.o: ../include/pzdefs.h cktinst2node.o: ../include/sendefs.h cktinst2node.o: ../include/smpdefs.h cktinst2node.o: ../include/sperror.h cktinst2node.o: ../include/trcvdefs.h cktinst2node.o: ../include/tskdefs.h cktinst2node.o: ../include/complex.h cktinst2node.o: ../include/prefix.h cktinst2node.o: ../include/suffix.h cktlinkeq.o: ../include/acdefs.h cktlinkeq.o: ../include/cktdefs.h cktlinkeq.o: ../include/gendefs.h cktlinkeq.o: ../include/iferrmsgs.h cktlinkeq.o: ../include/ifsim.h cktlinkeq.o: ../include/jobdefs.h cktlinkeq.o: ../include/optdefs.h cktlinkeq.o: ../include/pzdefs.h cktlinkeq.o: ../include/sendefs.h cktlinkeq.o: ../include/smpdefs.h cktlinkeq.o: ../include/trcvdefs.h cktlinkeq.o: ../include/tskdefs.h cktlinkeq.o: ../include/complex.h cktlinkeq.o: ../include/prefix.h cktlinkeq.o: ../include/suffix.h cktlinkeq.o: ../include/util.h cktload.o: ../include/acdefs.h cktload.o: ../include/cktdefs.h cktload.o: ../include/devdefs.h cktload.o: ../include/gendefs.h cktload.o: ../include/iferrmsgs.h cktload.o: ../include/ifsim.h cktload.o: ../include/jobdefs.h cktload.o: ../include/optdefs.h cktload.o: ../include/pzdefs.h cktload.o: ../include/sendefs.h cktload.o: ../include/smpdefs.h cktload.o: ../include/sperror.h cktload.o: ../include/trcvdefs.h cktload.o: ../include/tskdefs.h cktload.o: ../include/complex.h cktload.o: ../include/prefix.h cktload.o: ../include/suffix.h cktmkcur.o: ../include/acdefs.h cktmkcur.o: ../include/cktdefs.h cktmkcur.o: ../include/gendefs.h cktmkcur.o: ../include/iferrmsgs.h cktmkcur.o: ../include/ifsim.h cktmkcur.o: ../include/jobdefs.h cktmkcur.o: ../include/optdefs.h cktmkcur.o: ../include/pzdefs.h cktmkcur.o: ../include/sendefs.h cktmkcur.o: ../include/smpdefs.h cktmkcur.o: ../include/sperror.h cktmkcur.o: ../include/trcvdefs.h cktmkcur.o: ../include/tskdefs.h cktmkcur.o: ../include/complex.h cktmkcur.o: ../include/prefix.h cktmkcur.o: ../include/suffix.h cktmkcur.o: ../include/util.h cktmknode.o: ../include/acdefs.h cktmknode.o: ../include/cktdefs.h cktmknode.o: ../include/gendefs.h cktmknode.o: ../include/iferrmsgs.h cktmknode.o: ../include/ifsim.h cktmknode.o: ../include/jobdefs.h cktmknode.o: ../include/optdefs.h cktmknode.o: ../include/pzdefs.h cktmknode.o: ../include/sendefs.h cktmknode.o: ../include/smpdefs.h cktmknode.o: ../include/trcvdefs.h cktmknode.o: ../include/tskdefs.h cktmknode.o: ../include/complex.h cktmknode.o: ../include/prefix.h cktmknode.o: ../include/suffix.h cktmknode.o: ../include/util.h cktmkvolt.o: ../include/acdefs.h cktmkvolt.o: ../include/cktdefs.h cktmkvolt.o: ../include/gendefs.h cktmkvolt.o: ../include/iferrmsgs.h cktmkvolt.o: ../include/ifsim.h cktmkvolt.o: ../include/jobdefs.h cktmkvolt.o: ../include/optdefs.h cktmkvolt.o: ../include/pzdefs.h cktmkvolt.o: ../include/sendefs.h cktmkvolt.o: ../include/smpdefs.h cktmkvolt.o: ../include/sperror.h cktmkvolt.o: ../include/trcvdefs.h cktmkvolt.o: ../include/tskdefs.h cktmkvolt.o: ../include/complex.h cktmkvolt.o: ../include/prefix.h cktmkvolt.o: ../include/suffix.h cktmkvolt.o: ../include/util.h cktmapnode.o: ../include/acdefs.h cktmapnode.o: ../include/cktdefs.h cktmapnode.o: ../include/gendefs.h cktmapnode.o: ../include/iferrmsgs.h cktmapnode.o: ../include/ifsim.h cktmapnode.o: ../include/jobdefs.h cktmapnode.o: ../include/optdefs.h cktmapnode.o: ../include/pzdefs.h cktmapnode.o: ../include/sendefs.h cktmapnode.o: ../include/smpdefs.h cktmapnode.o: ../include/sperror.h cktmapnode.o: ../include/trcvdefs.h cktmapnode.o: ../include/tskdefs.h cktmapnode.o: ../include/complex.h cktmapnode.o: ../include/prefix.h cktmapnode.o: ../include/suffix.h cktmodask.o: ../include/acdefs.h cktmodask.o: ../include/cktdefs.h cktmodask.o: ../include/devdefs.h cktmodask.o: ../include/gendefs.h cktmodask.o: ../include/iferrmsgs.h cktmodask.o: ../include/ifsim.h cktmodask.o: ../include/jobdefs.h cktmodask.o: ../include/optdefs.h cktmodask.o: ../include/pzdefs.h cktmodask.o: ../include/sendefs.h cktmodask.o: ../include/smpdefs.h cktmodask.o: ../include/sperror.h cktmodask.o: ../include/trcvdefs.h cktmodask.o: ../include/tskdefs.h cktmodask.o: ../include/complex.h cktmodask.o: ../include/prefix.h cktmodask.o: ../include/suffix.h cktmodask.o: ../include/util.h cktmodcrt.o: ../include/acdefs.h cktmodcrt.o: ../include/cktdefs.h cktmodcrt.o: ../include/devdefs.h cktmodcrt.o: ../include/gendefs.h cktmodcrt.o: ../include/iferrmsgs.h cktmodcrt.o: ../include/ifsim.h cktmodcrt.o: ../include/jobdefs.h cktmodcrt.o: ../include/optdefs.h cktmodcrt.o: ../include/pzdefs.h cktmodcrt.o: ../include/sendefs.h cktmodcrt.o: ../include/smpdefs.h cktmodcrt.o: ../include/sperror.h cktmodcrt.o: ../include/trcvdefs.h cktmodcrt.o: ../include/tskdefs.h cktmodcrt.o: ../include/complex.h cktmodcrt.o: ../include/prefix.h cktmodcrt.o: ../include/suffix.h cktmodcrt.o: ../include/util.h cktmodparam.o: ../include/acdefs.h cktmodparam.o: ../include/cktdefs.h cktmodparam.o: ../include/devdefs.h cktmodparam.o: ../include/gendefs.h cktmodparam.o: ../include/iferrmsgs.h cktmodparam.o: ../include/ifsim.h cktmodparam.o: ../include/jobdefs.h cktmodparam.o: ../include/optdefs.h cktmodparam.o: ../include/pzdefs.h cktmodparam.o: ../include/sendefs.h cktmodparam.o: ../include/smpdefs.h cktmodparam.o: ../include/sperror.h cktmodparam.o: ../include/trcvdefs.h cktmodparam.o: ../include/tskdefs.h cktmodparam.o: ../include/complex.h cktmodparam.o: ../include/prefix.h cktmodparam.o: ../include/suffix.h cktmodparam.o: ../include/util.h cktnames.o: ../include/acdefs.h cktnames.o: ../include/cktdefs.h cktnames.o: ../include/gendefs.h cktnames.o: ../include/iferrmsgs.h cktnames.o: ../include/ifsim.h cktnames.o: ../include/jobdefs.h cktnames.o: ../include/optdefs.h cktnames.o: ../include/pzdefs.h cktnames.o: ../include/sendefs.h cktnames.o: ../include/smpdefs.h cktnames.o: ../include/trcvdefs.h cktnames.o: ../include/tskdefs.h cktnames.o: ../include/complex.h cktnames.o: ../include/prefix.h cktnames.o: ../include/suffix.h cktnames.o: ../include/util.h cktnewanal.o: ../include/iferrmsgs.h cktnewanal.o: ../include/ifsim.h cktnewanal.o: ../include/jobdefs.h cktnewanal.o: ../include/tskdefs.h cktnewanal.o: ../include/prefix.h cktnewanal.o: ../include/suffix.h cktnewanal.o: ../include/util.h cktneweq.o: ../include/acdefs.h cktneweq.o: ../include/cktdefs.h cktneweq.o: ../include/gendefs.h cktneweq.o: ../include/iferrmsgs.h cktneweq.o: ../include/ifsim.h cktneweq.o: ../include/jobdefs.h cktneweq.o: ../include/optdefs.h cktneweq.o: ../include/pzdefs.h cktneweq.o: ../include/sendefs.h cktneweq.o: ../include/smpdefs.h cktneweq.o: ../include/trcvdefs.h cktneweq.o: ../include/tskdefs.h cktneweq.o: ../include/complex.h cktneweq.o: ../include/prefix.h cktneweq.o: ../include/suffix.h cktneweq.o: ../include/util.h cktnewnode.o: ../include/acdefs.h cktnewnode.o: ../include/cktdefs.h cktnewnode.o: ../include/gendefs.h cktnewnode.o: ../include/iferrmsgs.h cktnewnode.o: ../include/ifsim.h cktnewnode.o: ../include/jobdefs.h cktnewnode.o: ../include/optdefs.h cktnewnode.o: ../include/pzdefs.h cktnewnode.o: ../include/sendefs.h cktnewnode.o: ../include/smpdefs.h cktnewnode.o: ../include/trcvdefs.h cktnewnode.o: ../include/tskdefs.h cktnewnode.o: ../include/complex.h cktnewnode.o: ../include/prefix.h cktnewnode.o: ../include/suffix.h cktnewnode.o: ../include/util.h cktnewtask.o: ../include/acdefs.h cktnewtask.o: ../include/cktdefs.h cktnewtask.o: ../include/gendefs.h cktnewtask.o: ../include/iferrmsgs.h cktnewtask.o: ../include/ifsim.h cktnewtask.o: ../include/jobdefs.h cktnewtask.o: ../include/optdefs.h cktnewtask.o: ../include/pzdefs.h cktnewtask.o: ../include/sendefs.h cktnewtask.o: ../include/smpdefs.h cktnewtask.o: ../include/trcvdefs.h cktnewtask.o: ../include/tskdefs.h cktnewtask.o: ../include/complex.h cktnewtask.o: ../include/prefix.h cktnewtask.o: ../include/suffix.h cktnewtask.o: ../include/util.h cktnodname.o: ../include/acdefs.h cktnodname.o: ../include/cktdefs.h cktnodname.o: ../include/gendefs.h cktnodname.o: ../include/ifsim.h cktnodname.o: ../include/jobdefs.h cktnodname.o: ../include/optdefs.h cktnodname.o: ../include/pzdefs.h cktnodname.o: ../include/sendefs.h cktnodname.o: ../include/smpdefs.h cktnodname.o: ../include/trcvdefs.h cktnodname.o: ../include/tskdefs.h cktnodname.o: ../include/complex.h cktnodname.o: ../include/prefix.h cktnodname.o: ../include/suffix.h cktnum2nod.o: ../include/acdefs.h cktnum2nod.o: ../include/cktdefs.h cktnum2nod.o: ../include/gendefs.h cktnum2nod.o: ../include/iferrmsgs.h cktnum2nod.o: ../include/ifsim.h cktnum2nod.o: ../include/jobdefs.h cktnum2nod.o: ../include/optdefs.h cktnum2nod.o: ../include/pzdefs.h cktnum2nod.o: ../include/sendefs.h cktnum2nod.o: ../include/smpdefs.h cktnum2nod.o: ../include/sperror.h cktnum2nod.o: ../include/trcvdefs.h cktnum2nod.o: ../include/tskdefs.h cktnum2nod.o: ../include/complex.h cktnum2nod.o: ../include/prefix.h cktnum2nod.o: ../include/suffix.h cktop.o: ../include/acdefs.h cktop.o: ../include/cktdefs.h cktop.o: ../include/gendefs.h cktop.o: ../include/ifsim.h cktop.o: ../include/jobdefs.h cktop.o: ../include/optdefs.h cktop.o: ../include/pzdefs.h cktop.o: ../include/sendefs.h cktop.o: ../include/smpdefs.h cktop.o: ../include/trcvdefs.h cktop.o: ../include/tskdefs.h cktop.o: ../include/complex.h cktop.o: ../include/prefix.h cktop.o: ../include/suffix.h cktop.o: ../include/util.h cktparam.o: ../include/acdefs.h cktparam.o: ../include/cktdefs.h cktparam.o: ../include/devdefs.h cktparam.o: ../include/gendefs.h cktparam.o: ../include/iferrmsgs.h cktparam.o: ../include/ifsim.h cktparam.o: ../include/jobdefs.h cktparam.o: ../include/optdefs.h cktparam.o: ../include/pzdefs.h cktparam.o: ../include/sendefs.h cktparam.o: ../include/smpdefs.h cktparam.o: ../include/sperror.h cktparam.o: ../include/trcvdefs.h cktparam.o: ../include/tskdefs.h cktparam.o: ../include/complex.h cktparam.o: ../include/prefix.h cktparam.o: ../include/suffix.h cktparam.o: ../include/util.h cktpmodname.o: ../include/acdefs.h cktpmodname.o: ../include/cktdefs.h cktpmodname.o: ../include/devdefs.h cktpmodname.o: ../include/gendefs.h cktpmodname.o: ../include/iferrmsgs.h cktpmodname.o: ../include/ifsim.h cktpmodname.o: ../include/jobdefs.h cktpmodname.o: ../include/optdefs.h cktpmodname.o: ../include/pzdefs.h cktpmodname.o: ../include/sendefs.h cktpmodname.o: ../include/smpdefs.h cktpmodname.o: ../include/sperror.h cktpmodname.o: ../include/trcvdefs.h cktpmodname.o: ../include/tskdefs.h cktpmodname.o: ../include/complex.h cktpmodname.o: ../include/prefix.h cktpmodname.o: ../include/suffix.h cktpmodname.o: ../include/util.h cktpname.o: ../include/acdefs.h cktpname.o: ../include/cktdefs.h cktpname.o: ../include/devdefs.h cktpname.o: ../include/gendefs.h cktpname.o: ../include/iferrmsgs.h cktpname.o: ../include/ifsim.h cktpname.o: ../include/jobdefs.h cktpname.o: ../include/optdefs.h cktpname.o: ../include/pzdefs.h cktpname.o: ../include/sendefs.h cktpname.o: ../include/smpdefs.h cktpname.o: ../include/sperror.h cktpname.o: ../include/trcvdefs.h cktpname.o: ../include/tskdefs.h cktpname.o: ../include/complex.h cktpname.o: ../include/prefix.h cktpname.o: ../include/suffix.h cktpname.o: ../include/util.h cktpzload.o: ../include/acdefs.h cktpzload.o: ../include/cktdefs.h cktpzload.o: ../include/devdefs.h cktpzload.o: ../include/gendefs.h cktpzload.o: ../include/iferrmsgs.h cktpzload.o: ../include/ifsim.h cktpzload.o: ../include/jobdefs.h cktpzload.o: ../include/optdefs.h cktpzload.o: ../include/pzdefs.h cktpzload.o: ../include/sendefs.h cktpzload.o: ../include/smpdefs.h cktpzload.o: ../include/sperror.h cktpzload.o: ../include/trcvdefs.h cktpzload.o: ../include/tskdefs.h cktpzload.o: ../include/complex.h cktpzload.o: ../include/prefix.h cktpzload.o: ../include/suffix.h cktpzsetup.o: ../include/acdefs.h cktpzsetup.o: ../include/cktdefs.h cktpzsetup.o: ../include/devdefs.h cktpzsetup.o: ../include/gendefs.h cktpzsetup.o: ../include/iferrmsgs.h cktpzsetup.o: ../include/ifsim.h cktpzsetup.o: ../include/jobdefs.h cktpzsetup.o: ../include/optdefs.h cktpzsetup.o: ../include/pzdefs.h cktpzsetup.o: ../include/sendefs.h cktpzsetup.o: ../include/smpdefs.h cktpzsetup.o: ../include/sperror.h cktpzsetup.o: ../include/trcvdefs.h cktpzsetup.o: ../include/tskdefs.h cktpzsetup.o: ../include/complex.h cktpzsetup.o: ../include/prefix.h cktpzsetup.o: ../include/suffix.h cktpzsetup.o: ../include/util.h cktsenac.o: ../include/acdefs.h cktsenac.o: ../include/cktdefs.h cktsenac.o: ../include/devdefs.h cktsenac.o: ../include/gendefs.h cktsenac.o: ../include/iferrmsgs.h cktsenac.o: ../include/ifsim.h cktsenac.o: ../include/jobdefs.h cktsenac.o: ../include/optdefs.h cktsenac.o: ../include/pzdefs.h cktsenac.o: ../include/sendefs.h cktsenac.o: ../include/smpdefs.h cktsenac.o: ../include/sperror.h cktsenac.o: ../include/trandefs.h cktsenac.o: ../include/trcvdefs.h cktsenac.o: ../include/tskdefs.h cktsenac.o: ../include/complex.h cktsenac.o: ../include/prefix.h cktsenac.o: ../include/suffix.h cktsencomp.o: ../include/acdefs.h cktsencomp.o: ../include/cktdefs.h cktsencomp.o: ../include/devdefs.h cktsencomp.o: ../include/gendefs.h cktsencomp.o: ../include/iferrmsgs.h cktsencomp.o: ../include/ifsim.h cktsencomp.o: ../include/jobdefs.h cktsencomp.o: ../include/optdefs.h cktsencomp.o: ../include/pzdefs.h cktsencomp.o: ../include/sendefs.h cktsencomp.o: ../include/smpdefs.h cktsencomp.o: ../include/sperror.h cktsencomp.o: ../include/trandefs.h cktsencomp.o: ../include/trcvdefs.h cktsencomp.o: ../include/tskdefs.h cktsencomp.o: ../include/complex.h cktsencomp.o: ../include/prefix.h cktsencomp.o: ../include/suffix.h cktsendctran.o: ../include/acdefs.h cktsendctran.o: ../include/cktdefs.h cktsendctran.o: ../include/devdefs.h cktsendctran.o: ../include/gendefs.h cktsendctran.o: ../include/iferrmsgs.h cktsendctran.o: ../include/ifsim.h cktsendctran.o: ../include/jobdefs.h cktsendctran.o: ../include/optdefs.h cktsendctran.o: ../include/pzdefs.h cktsendctran.o: ../include/sendefs.h cktsendctran.o: ../include/smpdefs.h cktsendctran.o: ../include/sperror.h cktsendctran.o: ../include/trandefs.h cktsendctran.o: ../include/trcvdefs.h cktsendctran.o: ../include/tskdefs.h cktsendctran.o: ../include/complex.h cktsendctran.o: ../include/prefix.h cktsendctran.o: ../include/suffix.h cktsenload.o: ../include/acdefs.h cktsenload.o: ../include/cktdefs.h cktsenload.o: ../include/devdefs.h cktsenload.o: ../include/gendefs.h cktsenload.o: ../include/iferrmsgs.h cktsenload.o: ../include/ifsim.h cktsenload.o: ../include/jobdefs.h cktsenload.o: ../include/optdefs.h cktsenload.o: ../include/pzdefs.h cktsenload.o: ../include/sendefs.h cktsenload.o: ../include/smpdefs.h cktsenload.o: ../include/sperror.h cktsenload.o: ../include/trandefs.h cktsenload.o: ../include/trcvdefs.h cktsenload.o: ../include/tskdefs.h cktsenload.o: ../include/complex.h cktsenload.o: ../include/prefix.h cktsenload.o: ../include/suffix.h cktsenprint.o: ../include/acdefs.h cktsenprint.o: ../include/cktdefs.h cktsenprint.o: ../include/devdefs.h cktsenprint.o: ../include/gendefs.h cktsenprint.o: ../include/iferrmsgs.h cktsenprint.o: ../include/ifsim.h cktsenprint.o: ../include/jobdefs.h cktsenprint.o: ../include/optdefs.h cktsenprint.o: ../include/pzdefs.h cktsenprint.o: ../include/sendefs.h cktsenprint.o: ../include/smpdefs.h cktsenprint.o: ../include/sperror.h cktsenprint.o: ../include/trandefs.h cktsenprint.o: ../include/trcvdefs.h cktsenprint.o: ../include/tskdefs.h cktsenprint.o: ../include/complex.h cktsenprint.o: ../include/prefix.h cktsenprint.o: ../include/suffix.h cktsensetup.o: ../include/acdefs.h cktsensetup.o: ../include/cktdefs.h cktsensetup.o: ../include/devdefs.h cktsensetup.o: ../include/gendefs.h cktsensetup.o: ../include/iferrmsgs.h cktsensetup.o: ../include/ifsim.h cktsensetup.o: ../include/jobdefs.h cktsensetup.o: ../include/optdefs.h cktsensetup.o: ../include/pzdefs.h cktsensetup.o: ../include/sendefs.h cktsensetup.o: ../include/smpdefs.h cktsensetup.o: ../include/sperror.h cktsensetup.o: ../include/trandefs.h cktsensetup.o: ../include/trcvdefs.h cktsensetup.o: ../include/tskdefs.h cktsensetup.o: ../include/complex.h cktsensetup.o: ../include/prefix.h cktsensetup.o: ../include/suffix.h cktsenupdate.o: ../include/acdefs.h cktsenupdate.o: ../include/cktdefs.h cktsenupdate.o: ../include/devdefs.h cktsenupdate.o: ../include/gendefs.h cktsenupdate.o: ../include/iferrmsgs.h cktsenupdate.o: ../include/ifsim.h cktsenupdate.o: ../include/jobdefs.h cktsenupdate.o: ../include/optdefs.h cktsenupdate.o: ../include/pzdefs.h cktsenupdate.o: ../include/sendefs.h cktsenupdate.o: ../include/smpdefs.h cktsenupdate.o: ../include/sperror.h cktsenupdate.o: ../include/trandefs.h cktsenupdate.o: ../include/trcvdefs.h cktsenupdate.o: ../include/tskdefs.h cktsenupdate.o: ../include/complex.h cktsenupdate.o: ../include/prefix.h cktsenupdate.o: ../include/suffix.h cktsetanalpm.o: ../include/acdefs.h cktsetanalpm.o: ../include/cktdefs.h cktsetanalpm.o: ../include/gendefs.h cktsetanalpm.o: ../include/iferrmsgs.h cktsetanalpm.o: ../include/ifsim.h cktsetanalpm.o: ../include/jobdefs.h cktsetanalpm.o: ../include/optdefs.h cktsetanalpm.o: ../include/pzdefs.h cktsetanalpm.o: ../include/sendefs.h cktsetanalpm.o: ../include/smpdefs.h cktsetanalpm.o: ../include/trcvdefs.h cktsetanalpm.o: ../include/tskdefs.h cktsetanalpm.o: ../include/complex.h cktsetanalpm.o: ../include/prefix.h cktsetanalpm.o: ../include/suffix.h cktsetanalpm.o: ../include/util.h cktsetbreak.o: ../include/acdefs.h cktsetbreak.o: ../include/cktdefs.h cktsetbreak.o: ../include/gendefs.h cktsetbreak.o: ../include/iferrmsgs.h cktsetbreak.o: ../include/ifsim.h cktsetbreak.o: ../include/jobdefs.h cktsetbreak.o: ../include/optdefs.h cktsetbreak.o: ../include/pzdefs.h cktsetbreak.o: ../include/sendefs.h cktsetbreak.o: ../include/smpdefs.h cktsetbreak.o: ../include/sperror.h cktsetbreak.o: ../include/trcvdefs.h cktsetbreak.o: ../include/tskdefs.h cktsetbreak.o: ../include/complex.h cktsetbreak.o: ../include/prefix.h cktsetbreak.o: ../include/suffix.h cktsetbreak.o: ../include/util.h cktsetnodpm.o: ../include/acdefs.h cktsetnodpm.o: ../include/cktdefs.h cktsetnodpm.o: ../include/gendefs.h cktsetnodpm.o: ../include/iferrmsgs.h cktsetnodpm.o: ../include/ifsim.h cktsetnodpm.o: ../include/jobdefs.h cktsetnodpm.o: ../include/optdefs.h cktsetnodpm.o: ../include/pzdefs.h cktsetnodpm.o: ../include/sendefs.h cktsetnodpm.o: ../include/smpdefs.h cktsetnodpm.o: ../include/trcvdefs.h cktsetnodpm.o: ../include/tskdefs.h cktsetnodpm.o: ../include/complex.h cktsetnodpm.o: ../include/prefix.h cktsetnodpm.o: ../include/suffix.h cktsetnodpm.o: ../include/util.h cktsetopt.o: ../include/acdefs.h cktsetopt.o: ../include/cktdefs.h cktsetopt.o: ../include/const.h cktsetopt.o: ../include/gendefs.h cktsetopt.o: ../include/iferrmsgs.h cktsetopt.o: ../include/ifsim.h cktsetopt.o: ../include/jobdefs.h cktsetopt.o: ../include/optdefs.h cktsetopt.o: ../include/pzdefs.h cktsetopt.o: ../include/sendefs.h cktsetopt.o: ../include/smpdefs.h cktsetopt.o: ../include/sperror.h cktsetopt.o: ../include/trcvdefs.h cktsetopt.o: ../include/tskdefs.h cktsetopt.o: ../include/complex.h cktsetopt.o: ../include/prefix.h cktsetopt.o: ../include/suffix.h cktsetopt.o: ../include/util.h cktsetup.o: ../include/acdefs.h cktsetup.o: ../include/cktdefs.h cktsetup.o: ../include/devdefs.h cktsetup.o: ../include/gendefs.h cktsetup.o: ../include/iferrmsgs.h cktsetup.o: ../include/ifsim.h cktsetup.o: ../include/jobdefs.h cktsetup.o: ../include/optdefs.h cktsetup.o: ../include/pzdefs.h cktsetup.o: ../include/sendefs.h cktsetup.o: ../include/smpdefs.h cktsetup.o: ../include/sperror.h cktsetup.o: ../include/trcvdefs.h cktsetup.o: ../include/tskdefs.h cktsetup.o: ../include/complex.h cktsetup.o: ../include/prefix.h cktsetup.o: ../include/suffix.h cktsetup.o: ../include/util.h ckttemp.o: ../include/acdefs.h ckttemp.o: ../include/cktdefs.h ckttemp.o: ../include/const.h ckttemp.o: ../include/devdefs.h ckttemp.o: ../include/gendefs.h ckttemp.o: ../include/iferrmsgs.h ckttemp.o: ../include/ifsim.h ckttemp.o: ../include/jobdefs.h ckttemp.o: ../include/optdefs.h ckttemp.o: ../include/pzdefs.h ckttemp.o: ../include/sendefs.h ckttemp.o: ../include/smpdefs.h ckttemp.o: ../include/sperror.h ckttemp.o: ../include/trcvdefs.h ckttemp.o: ../include/tskdefs.h ckttemp.o: ../include/complex.h ckttemp.o: ../include/prefix.h ckttemp.o: ../include/suffix.h cktterr.o: ../include/acdefs.h cktterr.o: ../include/cktdefs.h cktterr.o: ../include/gendefs.h cktterr.o: ../include/ifsim.h cktterr.o: ../include/jobdefs.h cktterr.o: ../include/optdefs.h cktterr.o: ../include/pzdefs.h cktterr.o: ../include/sendefs.h cktterr.o: ../include/smpdefs.h cktterr.o: ../include/trcvdefs.h cktterr.o: ../include/tskdefs.h cktterr.o: ../include/complex.h cktterr.o: ../include/prefix.h cktterr.o: ../include/suffix.h cktterr.o: ../include/util.h ckttrunc.o: ../include/acdefs.h ckttrunc.o: ../include/cktdefs.h ckttrunc.o: ../include/devdefs.h ckttrunc.o: ../include/gendefs.h ckttrunc.o: ../include/iferrmsgs.h ckttrunc.o: ../include/ifsim.h ckttrunc.o: ../include/jobdefs.h ckttrunc.o: ../include/optdefs.h ckttrunc.o: ../include/pzdefs.h ckttrunc.o: ../include/sendefs.h ckttrunc.o: ../include/smpdefs.h ckttrunc.o: ../include/sperror.h ckttrunc.o: ../include/trcvdefs.h ckttrunc.o: ../include/tskdefs.h ckttrunc.o: ../include/complex.h ckttrunc.o: ../include/prefix.h ckttrunc.o: ../include/suffix.h ckttrunc.o: ../include/util.h ckttypelook.o: ../include/acdefs.h ckttypelook.o: ../include/cktdefs.h ckttypelook.o: ../include/devdefs.h ckttypelook.o: ../include/gendefs.h ckttypelook.o: ../include/ifsim.h ckttypelook.o: ../include/jobdefs.h ckttypelook.o: ../include/optdefs.h ckttypelook.o: ../include/pzdefs.h ckttypelook.o: ../include/sendefs.h ckttypelook.o: ../include/smpdefs.h ckttypelook.o: ../include/trcvdefs.h ckttypelook.o: ../include/tskdefs.h ckttypelook.o: ../include/complex.h ckttypelook.o: ../include/prefix.h ckttypelook.o: ../include/suffix.h spiinit.o: ../include/acdefs.h spiinit.o: ../include/cktdefs.h spiinit.o: ../include/const.h spiinit.o: ../include/devdefs.h spiinit.o: ../include/gendefs.h spiinit.o: ../include/iferrmsgs.h spiinit.o: ../include/ifsim.h spiinit.o: ../include/jobdefs.h spiinit.o: ../include/optdefs.h spiinit.o: ../include/pzdefs.h spiinit.o: ../include/sendefs.h spiinit.o: ../include/smpdefs.h spiinit.o: ../include/sperror.h spiinit.o: ../include/trcvdefs.h spiinit.o: ../include/tskdefs.h spiinit.o: ../include/complex.h spiinit.o: ../include/prefix.h spiinit.o: ../include/suffix.h spiinit.o: ../include/util.h dcoaskquest.o: ../include/acdefs.h dcoaskquest.o: ../include/cktdefs.h dcoaskquest.o: ../include/gendefs.h dcoaskquest.o: ../include/iferrmsgs.h dcoaskquest.o: ../include/ifsim.h dcoaskquest.o: ../include/jobdefs.h dcoaskquest.o: ../include/optdefs.h dcoaskquest.o: ../include/opdefs.h dcoaskquest.o: ../include/pzdefs.h dcoaskquest.o: ../include/sendefs.h dcoaskquest.o: ../include/smpdefs.h dcoaskquest.o: ../include/trcvdefs.h dcoaskquest.o: ../include/tskdefs.h dcoaskquest.o: ../include/complex.h dcoaskquest.o: ../include/prefix.h dcoaskquest.o: ../include/suffix.h dcosetparm.o: ../include/acdefs.h dcosetparm.o: ../include/cktdefs.h dcosetparm.o: ../include/gendefs.h dcosetparm.o: ../include/iferrmsgs.h dcosetparm.o: ../include/ifsim.h dcosetparm.o: ../include/jobdefs.h dcosetparm.o: ../include/optdefs.h dcosetparm.o: ../include/opdefs.h dcosetparm.o: ../include/pzdefs.h dcosetparm.o: ../include/sendefs.h dcosetparm.o: ../include/smpdefs.h dcosetparm.o: ../include/trcvdefs.h dcosetparm.o: ../include/tskdefs.h dcosetparm.o: ../include/complex.h dcosetparm.o: ../include/prefix.h dcosetparm.o: ../include/suffix.h dctaskquest.o: ../include/acdefs.h dctaskquest.o: ../include/cktdefs.h dctaskquest.o: ../include/gendefs.h dctaskquest.o: ../include/iferrmsgs.h dctaskquest.o: ../include/ifsim.h dctaskquest.o: ../include/jobdefs.h dctaskquest.o: ../include/optdefs.h dctaskquest.o: ../include/pzdefs.h dctaskquest.o: ../include/sendefs.h dctaskquest.o: ../include/smpdefs.h dctaskquest.o: ../include/trcvdefs.h dctaskquest.o: ../include/tskdefs.h dctaskquest.o: ../include/complex.h dctaskquest.o: ../include/prefix.h dctaskquest.o: ../include/suffix.h dctsetparm.o: ../include/acdefs.h dctsetparm.o: ../include/cktdefs.h dctsetparm.o: ../include/gendefs.h dctsetparm.o: ../include/iferrmsgs.h dctsetparm.o: ../include/ifsim.h dctsetparm.o: ../include/jobdefs.h dctsetparm.o: ../include/optdefs.h dctsetparm.o: ../include/pzdefs.h dctsetparm.o: ../include/sendefs.h dctsetparm.o: ../include/smpdefs.h dctsetparm.o: ../include/trcvdefs.h dctsetparm.o: ../include/tskdefs.h dctsetparm.o: ../include/complex.h dctsetparm.o: ../include/prefix.h dctsetparm.o: ../include/suffix.h dctsetparm.o: ../include/util.h dcop.o: ../include/acdefs.h dcop.o: ../include/cktdefs.h dcop.o: ../include/gendefs.h dcop.o: ../include/iferrmsgs.h dcop.o: ../include/ifsim.h dcop.o: ../include/jobdefs.h dcop.o: ../include/optdefs.h dcop.o: ../include/pzdefs.h dcop.o: ../include/sendefs.h dcop.o: ../include/smpdefs.h dcop.o: ../include/sperror.h dcop.o: ../include/trcvdefs.h dcop.o: ../include/tskdefs.h dcop.o: ../include/complex.h dcop.o: ../include/prefix.h dcop.o: ../include/suffix.h dcop.o: ../include/util.h dctran.o: ../include/acdefs.h dctran.o: ../include/cktdefs.h dctran.o: ../include/gendefs.h dctran.o: ../include/iferrmsgs.h dctran.o: ../include/ifsim.h dctran.o: ../include/jobdefs.h dctran.o: ../include/optdefs.h dctran.o: ../include/pzdefs.h dctran.o: ../include/sendefs.h dctran.o: ../include/smpdefs.h dctran.o: ../include/sperror.h dctran.o: ../include/trandefs.h dctran.o: ../include/trcvdefs.h dctran.o: ../include/tskdefs.h dctran.o: ../include/complex.h dctran.o: ../include/prefix.h dctran.o: ../include/suffix.h dctran.o: ../include/util.h dctrcurv.o: ../include/acdefs.h dctrcurv.o: ../include/cktdefs.h dctrcurv.o: ../include/gendefs.h dctrcurv.o: ../include/iferrmsgs.h dctrcurv.o: ../include/ifsim.h dctrcurv.o: ../include/isrcdefs.h dctrcurv.o: ../include/jobdefs.h dctrcurv.o: ../include/optdefs.h dctrcurv.o: ../include/pzdefs.h dctrcurv.o: ../include/sendefs.h dctrcurv.o: ../include/smpdefs.h dctrcurv.o: ../include/sperror.h dctrcurv.o: ../include/trcvdefs.h dctrcurv.o: ../include/tskdefs.h dctrcurv.o: ../include/vsrcdefs.h dctrcurv.o: ../include/complex.h dctrcurv.o: ../include/prefix.h dctrcurv.o: ../include/suffix.h dctrcurv.o: ../include/util.h senstartup.o: ../include/acdefs.h senstartup.o: ../include/cktdefs.h senstartup.o: ../include/const.h senstartup.o: ../include/gendefs.h senstartup.o: ../include/iferrmsgs.h senstartup.o: ../include/ifsim.h senstartup.o: ../include/jobdefs.h senstartup.o: ../include/optdefs.h senstartup.o: ../include/pzdefs.h senstartup.o: ../include/sendefs.h senstartup.o: ../include/smpdefs.h senstartup.o: ../include/sperror.h senstartup.o: ../include/trcvdefs.h senstartup.o: ../include/tskdefs.h senstartup.o: ../include/complex.h senstartup.o: ../include/prefix.h senstartup.o: ../include/suffix.h senstartup.o: ../include/util.h sensetparm.o: ../include/acdefs.h sensetparm.o: ../include/cktdefs.h sensetparm.o: ../include/gendefs.h sensetparm.o: ../include/iferrmsgs.h sensetparm.o: ../include/ifsim.h sensetparm.o: ../include/jobdefs.h sensetparm.o: ../include/optdefs.h sensetparm.o: ../include/pzdefs.h sensetparm.o: ../include/sendefs.h sensetparm.o: ../include/smpdefs.h sensetparm.o: ../include/trcvdefs.h sensetparm.o: ../include/tskdefs.h sensetparm.o: ../include/complex.h sensetparm.o: ../include/prefix.h sensetparm.o: ../include/suffix.h sensetparm.o: ../include/util.h senaskquest.o: ../include/acdefs.h senaskquest.o: ../include/cktdefs.h senaskquest.o: ../include/gendefs.h senaskquest.o: ../include/iferrmsgs.h senaskquest.o: ../include/ifsim.h senaskquest.o: ../include/jobdefs.h senaskquest.o: ../include/optdefs.h senaskquest.o: ../include/pzdefs.h senaskquest.o: ../include/sendefs.h senaskquest.o: ../include/smpdefs.h senaskquest.o: ../include/trcvdefs.h senaskquest.o: ../include/tskdefs.h senaskquest.o: ../include/complex.h senaskquest.o: ../include/prefix.h senaskquest.o: ../include/suffix.h sendestroy.o: ../include/acdefs.h sendestroy.o: ../include/cktdefs.h sendestroy.o: ../include/devdefs.h sendestroy.o: ../include/gendefs.h sendestroy.o: ../include/iferrmsgs.h sendestroy.o: ../include/ifsim.h sendestroy.o: ../include/jobdefs.h sendestroy.o: ../include/optdefs.h sendestroy.o: ../include/pzdefs.h sendestroy.o: ../include/sendefs.h sendestroy.o: ../include/smpdefs.h sendestroy.o: ../include/sperror.h sendestroy.o: ../include/trcvdefs.h sendestroy.o: ../include/tskdefs.h sendestroy.o: ../include/complex.h sendestroy.o: ../include/prefix.h sendestroy.o: ../include/suffix.h sendestroy.o: ../include/util.h sperror.o: ../include/acdefs.h sperror.o: ../include/cktdefs.h sperror.o: ../include/gendefs.h sperror.o: ../include/iferrmsgs.h sperror.o: ../include/ifsim.h sperror.o: ../include/jobdefs.h sperror.o: ../include/optdefs.h sperror.o: ../include/pzdefs.h sperror.o: ../include/sendefs.h sperror.o: ../include/smpdefs.h sperror.o: ../include/sperror.h sperror.o: ../include/trcvdefs.h sperror.o: ../include/tskdefs.h sperror.o: ../include/complex.h sperror.o: ../include/prefix.h sperror.o: ../include/suffix.h sperror.o: ../include/util.h pzan.o: ../include/acdefs.h pzan.o: ../include/cktdefs.h pzan.o: ../include/gendefs.h pzan.o: ../include/iferrmsgs.h pzan.o: ../include/ifsim.h pzan.o: ../include/jobdefs.h pzan.o: ../include/optdefs.h pzan.o: ../include/pzdefs.h pzan.o: ../include/sendefs.h pzan.o: ../include/smpdefs.h pzan.o: ../include/sperror.h pzan.o: ../include/trandefs.h pzan.o: ../include/trcvdefs.h pzan.o: ../include/tskdefs.h pzan.o: ../include/complex.h pzan.o: ../include/prefix.h pzan.o: ../include/suffix.h pzan.o: ../include/util.h pzaskquest.o: ../include/acdefs.h pzaskquest.o: ../include/cktdefs.h pzaskquest.o: ../include/gendefs.h pzaskquest.o: ../include/iferrmsgs.h pzaskquest.o: ../include/ifsim.h pzaskquest.o: ../include/jobdefs.h pzaskquest.o: ../include/optdefs.h pzaskquest.o: ../include/pzdefs.h pzaskquest.o: ../include/sendefs.h pzaskquest.o: ../include/smpdefs.h pzaskquest.o: ../include/trcvdefs.h pzaskquest.o: ../include/tskdefs.h pzaskquest.o: ../include/complex.h pzaskquest.o: ../include/prefix.h pzaskquest.o: ../include/suffix.h pzsetparm.o: ../include/acdefs.h pzsetparm.o: ../include/cktdefs.h pzsetparm.o: ../include/gendefs.h pzsetparm.o: ../include/iferrmsgs.h pzsetparm.o: ../include/ifsim.h pzsetparm.o: ../include/jobdefs.h pzsetparm.o: ../include/optdefs.h pzsetparm.o: ../include/pzdefs.h pzsetparm.o: ../include/sendefs.h pzsetparm.o: ../include/smpdefs.h pzsetparm.o: ../include/trcvdefs.h pzsetparm.o: ../include/tskdefs.h pzsetparm.o: ../include/complex.h pzsetparm.o: ../include/prefix.h pzsetparm.o: ../include/suffix.h tfanal.o: ../include/acdefs.h tfanal.o: ../include/cktdefs.h tfanal.o: ../include/gendefs.h tfanal.o: ../include/iferrmsgs.h tfanal.o: ../include/ifsim.h tfanal.o: ../include/jobdefs.h tfanal.o: ../include/optdefs.h tfanal.o: ../include/pzdefs.h tfanal.o: ../include/sendefs.h tfanal.o: ../include/smpdefs.h tfanal.o: ../include/sperror.h tfanal.o: ../include/tfdefs.h tfanal.o: ../include/trcvdefs.h tfanal.o: ../include/tskdefs.h tfanal.o: ../include/complex.h tfanal.o: ../include/prefix.h tfanal.o: ../include/suffix.h tfanal.o: ../include/util.h tfsetparm.o: ../include/acdefs.h tfsetparm.o: ../include/cktdefs.h tfsetparm.o: ../include/gendefs.h tfsetparm.o: ../include/iferrmsgs.h tfsetparm.o: ../include/ifsim.h tfsetparm.o: ../include/jobdefs.h tfsetparm.o: ../include/optdefs.h tfsetparm.o: ../include/pzdefs.h tfsetparm.o: ../include/sendefs.h tfsetparm.o: ../include/smpdefs.h tfsetparm.o: ../include/tfdefs.h tfsetparm.o: ../include/trcvdefs.h tfsetparm.o: ../include/tskdefs.h tfsetparm.o: ../include/complex.h tfsetparm.o: ../include/prefix.h tfsetparm.o: ../include/suffix.h tfsetparm.o: ../include/util.h tfaskquest.o: ../include/acdefs.h tfaskquest.o: ../include/cktdefs.h tfaskquest.o: ../include/gendefs.h tfaskquest.o: ../include/iferrmsgs.h tfaskquest.o: ../include/ifsim.h tfaskquest.o: ../include/jobdefs.h tfaskquest.o: ../include/optdefs.h tfaskquest.o: ../include/pzdefs.h tfaskquest.o: ../include/sendefs.h tfaskquest.o: ../include/smpdefs.h tfaskquest.o: ../include/trcvdefs.h tfaskquest.o: ../include/tskdefs.h tfaskquest.o: ../include/complex.h tfaskquest.o: ../include/prefix.h tfaskquest.o: ../include/suffix.h tranaskquest.o: ../include/acdefs.h tranaskquest.o: ../include/cktdefs.h tranaskquest.o: ../include/gendefs.h tranaskquest.o: ../include/iferrmsgs.h tranaskquest.o: ../include/ifsim.h tranaskquest.o: ../include/jobdefs.h tranaskquest.o: ../include/optdefs.h tranaskquest.o: ../include/pzdefs.h tranaskquest.o: ../include/sendefs.h tranaskquest.o: ../include/smpdefs.h tranaskquest.o: ../include/trandefs.h tranaskquest.o: ../include/trcvdefs.h tranaskquest.o: ../include/tskdefs.h tranaskquest.o: ../include/complex.h tranaskquest.o: ../include/prefix.h tranaskquest.o: ../include/suffix.h transetparm.o: ../include/acdefs.h transetparm.o: ../include/cktdefs.h transetparm.o: ../include/gendefs.h transetparm.o: ../include/iferrmsgs.h transetparm.o: ../include/ifsim.h transetparm.o: ../include/jobdefs.h transetparm.o: ../include/optdefs.h transetparm.o: ../include/pzdefs.h transetparm.o: ../include/sendefs.h transetparm.o: ../include/smpdefs.h transetparm.o: ../include/trandefs.h transetparm.o: ../include/trcvdefs.h transetparm.o: ../include/tskdefs.h transetparm.o: ../include/complex.h transetparm.o: ../include/prefix.h transetparm.o: ../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ asrc.c\ asrcask.c\ asrcacload.c\ asrcconvtest.c\ asrcdelete.c\ asrcdestroy.c\ asrcfindbr.c\ asrcload.c\ asrcmdelete.c\ asrcparam.c\ asrcpzload.c\ asrcsetup.c COBJS = \ asrc.o\ asrcask.o\ asrcacload.o\ asrcconvtest.o\ asrcdelete.o\ asrcdestroy.o\ asrcfindbr.o\ asrcload.o\ asrcmdelete.o\ asrcparam.o\ asrcpzload.o\ asrcsetup.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} ${PG} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lasrc.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Casrc ${LINTFLAGS} ${CFILES} mv llib-lasrc.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep #cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE asrc.o: ../../include/acdefs.h asrc.o: ../../include/asrcdefs.h asrc.o: ../../include/cktdefs.h asrc.o: ../../include/devdefs.h asrc.o: ../../include/gendefs.h asrc.o: ../../include/ifsim.h asrc.o: ../../include/jobdefs.h asrc.o: ../../include/optdefs.h asrc.o: ../../include/pzdefs.h asrc.o: ../../include/sendefs.h asrc.o: ../../include/smpdefs.h asrc.o: ../../include/trcvdefs.h asrc.o: ../../include/tskdefs.h asrc.o: ../../include/complex.h asrc.o: ../../include/prefix.h asrc.o: ../../include/suffix.h asrc.o: ../../include/util.h asrcask.o: ../../include/acdefs.h asrcask.o: ../../include/asrcdefs.h asrcask.o: ../../include/cktdefs.h asrcask.o: ../../include/devdefs.h asrcask.o: ../../include/gendefs.h asrcask.o: ../../include/iferrmsgs.h asrcask.o: ../../include/ifsim.h asrcask.o: ../../include/jobdefs.h asrcask.o: ../../include/optdefs.h asrcask.o: ../../include/pzdefs.h asrcask.o: ../../include/sendefs.h asrcask.o: ../../include/smpdefs.h asrcask.o: ../../include/sperror.h asrcask.o: ../../include/trcvdefs.h asrcask.o: ../../include/tskdefs.h asrcask.o: ../../include/complex.h asrcask.o: ../../include/prefix.h asrcask.o: ../../include/suffix.h asrcask.o: ../../include/util.h asrcacload.o: ../../include/acdefs.h asrcacload.o: ../../include/asrcdefs.h asrcacload.o: ../../include/cktdefs.h asrcacload.o: ../../include/gendefs.h asrcacload.o: ../../include/iferrmsgs.h asrcacload.o: ../../include/ifsim.h asrcacload.o: ../../include/jobdefs.h asrcacload.o: ../../include/optdefs.h asrcacload.o: ../../include/pzdefs.h asrcacload.o: ../../include/sendefs.h asrcacload.o: ../../include/smpdefs.h asrcacload.o: ../../include/sperror.h asrcacload.o: ../../include/trcvdefs.h asrcacload.o: ../../include/tskdefs.h asrcacload.o: ../../include/complex.h asrcacload.o: ../../include/prefix.h asrcacload.o: ../../include/suffix.h asrcacload.o: ../../include/util.h asrcconvtest.o: ../../include/acdefs.h asrcconvtest.o: ../../include/asrcdefs.h asrcconvtest.o: ../../include/cktdefs.h asrcconvtest.o: ../../include/gendefs.h asrcconvtest.o: ../../include/iferrmsgs.h asrcconvtest.o: ../../include/ifsim.h asrcconvtest.o: ../../include/jobdefs.h asrcconvtest.o: ../../include/optdefs.h asrcconvtest.o: ../../include/pzdefs.h asrcconvtest.o: ../../include/sendefs.h asrcconvtest.o: ../../include/smpdefs.h asrcconvtest.o: ../../include/sperror.h asrcconvtest.o: ../../include/trcvdefs.h asrcconvtest.o: ../../include/tskdefs.h asrcconvtest.o: ../../include/complex.h asrcconvtest.o: ../../include/prefix.h asrcconvtest.o: ../../include/suffix.h asrcconvtest.o: ../../include/util.h asrcdelete.o: ../../include/acdefs.h asrcdelete.o: ../../include/asrcdefs.h asrcdelete.o: ../../include/cktdefs.h asrcdelete.o: ../../include/gendefs.h asrcdelete.o: ../../include/iferrmsgs.h asrcdelete.o: ../../include/ifsim.h asrcdelete.o: ../../include/jobdefs.h asrcdelete.o: ../../include/optdefs.h asrcdelete.o: ../../include/pzdefs.h asrcdelete.o: ../../include/sendefs.h asrcdelete.o: ../../include/smpdefs.h asrcdelete.o: ../../include/sperror.h asrcdelete.o: ../../include/trcvdefs.h asrcdelete.o: ../../include/tskdefs.h asrcdelete.o: ../../include/complex.h asrcdelete.o: ../../include/prefix.h asrcdelete.o: ../../include/suffix.h asrcdelete.o: ../../include/util.h asrcdestroy.o: ../../include/acdefs.h asrcdestroy.o: ../../include/asrcdefs.h asrcdestroy.o: ../../include/cktdefs.h asrcdestroy.o: ../../include/gendefs.h asrcdestroy.o: ../../include/ifsim.h asrcdestroy.o: ../../include/jobdefs.h asrcdestroy.o: ../../include/optdefs.h asrcdestroy.o: ../../include/pzdefs.h asrcdestroy.o: ../../include/sendefs.h asrcdestroy.o: ../../include/smpdefs.h asrcdestroy.o: ../../include/trcvdefs.h asrcdestroy.o: ../../include/tskdefs.h asrcdestroy.o: ../../include/complex.h asrcdestroy.o: ../../include/prefix.h asrcdestroy.o: ../../include/suffix.h asrcdestroy.o: ../../include/util.h asrcfindbr.o: ../../include/acdefs.h asrcfindbr.o: ../../include/asrcdefs.h asrcfindbr.o: ../../include/cktdefs.h asrcfindbr.o: ../../include/gendefs.h asrcfindbr.o: ../../include/iferrmsgs.h asrcfindbr.o: ../../include/ifsim.h asrcfindbr.o: ../../include/jobdefs.h asrcfindbr.o: ../../include/optdefs.h asrcfindbr.o: ../../include/pzdefs.h asrcfindbr.o: ../../include/sendefs.h asrcfindbr.o: ../../include/smpdefs.h asrcfindbr.o: ../../include/sperror.h asrcfindbr.o: ../../include/trcvdefs.h asrcfindbr.o: ../../include/tskdefs.h asrcfindbr.o: ../../include/complex.h asrcfindbr.o: ../../include/prefix.h asrcfindbr.o: ../../include/suffix.h asrcfindbr.o: ../../include/util.h asrcload.o: ../../include/acdefs.h asrcload.o: ../../include/asrcdefs.h asrcload.o: ../../include/cktdefs.h asrcload.o: ../../include/gendefs.h asrcload.o: ../../include/iferrmsgs.h asrcload.o: ../../include/ifsim.h asrcload.o: ../../include/jobdefs.h asrcload.o: ../../include/optdefs.h asrcload.o: ../../include/pzdefs.h asrcload.o: ../../include/sendefs.h asrcload.o: ../../include/smpdefs.h asrcload.o: ../../include/sperror.h asrcload.o: ../../include/trcvdefs.h asrcload.o: ../../include/tskdefs.h asrcload.o: ../../include/complex.h asrcload.o: ../../include/prefix.h asrcload.o: ../../include/suffix.h asrcload.o: ../../include/util.h asrcmdelete.o: ../../include/acdefs.h asrcmdelete.o: ../../include/asrcdefs.h asrcmdelete.o: ../../include/cktdefs.h asrcmdelete.o: ../../include/gendefs.h asrcmdelete.o: ../../include/iferrmsgs.h asrcmdelete.o: ../../include/ifsim.h asrcmdelete.o: ../../include/jobdefs.h asrcmdelete.o: ../../include/optdefs.h asrcmdelete.o: ../../include/pzdefs.h asrcmdelete.o: ../../include/sendefs.h asrcmdelete.o: ../../include/smpdefs.h asrcmdelete.o: ../../include/sperror.h asrcmdelete.o: ../../include/trcvdefs.h asrcmdelete.o: ../../include/tskdefs.h asrcmdelete.o: ../../include/complex.h asrcmdelete.o: ../../include/prefix.h asrcmdelete.o: ../../include/suffix.h asrcmdelete.o: ../../include/util.h asrcparam.o: ../../include/acdefs.h asrcparam.o: ../../include/asrcdefs.h asrcparam.o: ../../include/cktdefs.h asrcparam.o: ../../include/gendefs.h asrcparam.o: ../../include/iferrmsgs.h asrcparam.o: ../../include/ifsim.h asrcparam.o: ../../include/jobdefs.h asrcparam.o: ../../include/optdefs.h asrcparam.o: ../../include/pzdefs.h asrcparam.o: ../../include/sendefs.h asrcparam.o: ../../include/smpdefs.h asrcparam.o: ../../include/sperror.h asrcparam.o: ../../include/trcvdefs.h asrcparam.o: ../../include/tskdefs.h asrcparam.o: ../../include/complex.h asrcparam.o: ../../include/prefix.h asrcparam.o: ../../include/suffix.h asrcparam.o: ../../include/util.h asrcpzload.o: ../../include/acdefs.h asrcpzload.o: ../../include/asrcdefs.h asrcpzload.o: ../../include/cktdefs.h asrcpzload.o: ../../include/gendefs.h asrcpzload.o: ../../include/iferrmsgs.h asrcpzload.o: ../../include/ifsim.h asrcpzload.o: ../../include/jobdefs.h asrcpzload.o: ../../include/optdefs.h asrcpzload.o: ../../include/pzdefs.h asrcpzload.o: ../../include/sendefs.h asrcpzload.o: ../../include/smpdefs.h asrcpzload.o: ../../include/sperror.h asrcpzload.o: ../../include/trcvdefs.h asrcpzload.o: ../../include/tskdefs.h asrcpzload.o: ../../include/complex.h asrcpzload.o: ../../include/prefix.h asrcpzload.o: ../../include/suffix.h asrcpzload.o: ../../include/util.h asrcsetup.o: ../../include/acdefs.h asrcsetup.o: ../../include/asrcdefs.h asrcsetup.o: ../../include/cktdefs.h asrcsetup.o: ../../include/gendefs.h asrcsetup.o: ../../include/iferrmsgs.h asrcsetup.o: ../../include/ifsim.h asrcsetup.o: ../../include/jobdefs.h asrcsetup.o: ../../include/optdefs.h asrcsetup.o: ../../include/pzdefs.h asrcsetup.o: ../../include/sendefs.h asrcsetup.o: ../../include/smpdefs.h asrcsetup.o: ../../include/sperror.h asrcsetup.o: ../../include/trcvdefs.h asrcsetup.o: ../../include/tskdefs.h asrcsetup.o: ../../include/complex.h asrcsetup.o: ../../include/prefix.h asrcsetup.o: ../../include/suffix.h asrcsetup.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ jfet.c\ jfetask.c\ jfetacload.c\ jfetdelete.c\ jfetdestroy.c\ jfetgetic.c\ jfetload.c\ jfetmask.c\ jfetmdelete.c\ jfetmparam.c\ jfetparam.c\ jfetpzload.c\ jfetsetup.c\ jfettemp.c\ jfettrunc.c COBJS = \ jfet.o\ jfetask.o\ jfetacload.o\ jfetdelete.o\ jfetdestroy.o\ jfetgetic.o\ jfetload.o\ jfetmask.o\ jfetmdelete.o\ jfetmparam.o\ jfetparam.o\ jfetpzload.o\ jfetsetup.o\ jfettemp.o\ jfettrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG= CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-ljfet.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cjfet ${LINTFLAGS} ${CFILES} mv llib-ljfet.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE jfet.o: ../../include/acdefs.h jfet.o: ../../include/cktdefs.h jfet.o: ../../include/devdefs.h jfet.o: ../../include/gendefs.h jfet.o: ../../include/ifsim.h jfet.o: ../../include/jfetdefs.h jfet.o: ../../include/jobdefs.h jfet.o: ../../include/optdefs.h jfet.o: ../../include/pzdefs.h jfet.o: ../../include/sendefs.h jfet.o: ../../include/smpdefs.h jfet.o: ../../include/trcvdefs.h jfet.o: ../../include/tskdefs.h jfet.o: ../../include/complex.h jfet.o: ../../include/prefix.h jfet.o: ../../include/suffix.h jfetask.o: ../../include/acdefs.h jfetask.o: ../../include/cktdefs.h jfetask.o: ../../include/const.h jfetask.o: ../../include/devdefs.h jfetask.o: ../../include/gendefs.h jfetask.o: ../../include/iferrmsgs.h jfetask.o: ../../include/ifsim.h jfetask.o: ../../include/jfetdefs.h jfetask.o: ../../include/jobdefs.h jfetask.o: ../../include/optdefs.h jfetask.o: ../../include/pzdefs.h jfetask.o: ../../include/sendefs.h jfetask.o: ../../include/smpdefs.h jfetask.o: ../../include/sperror.h jfetask.o: ../../include/trcvdefs.h jfetask.o: ../../include/tskdefs.h jfetask.o: ../../include/complex.h jfetask.o: ../../include/prefix.h jfetask.o: ../../include/suffix.h jfetask.o: ../../include/util.h jfetacload.o: ../../include/acdefs.h jfetacload.o: ../../include/cktdefs.h jfetacload.o: ../../include/gendefs.h jfetacload.o: ../../include/iferrmsgs.h jfetacload.o: ../../include/ifsim.h jfetacload.o: ../../include/jfetdefs.h jfetacload.o: ../../include/jobdefs.h jfetacload.o: ../../include/optdefs.h jfetacload.o: ../../include/pzdefs.h jfetacload.o: ../../include/sendefs.h jfetacload.o: ../../include/smpdefs.h jfetacload.o: ../../include/sperror.h jfetacload.o: ../../include/trcvdefs.h jfetacload.o: ../../include/tskdefs.h jfetacload.o: ../../include/complex.h jfetacload.o: ../../include/prefix.h jfetacload.o: ../../include/suffix.h jfetacload.o: ../../include/util.h jfetdelete.o: ../../include/acdefs.h jfetdelete.o: ../../include/cktdefs.h jfetdelete.o: ../../include/gendefs.h jfetdelete.o: ../../include/iferrmsgs.h jfetdelete.o: ../../include/ifsim.h jfetdelete.o: ../../include/jfetdefs.h jfetdelete.o: ../../include/jobdefs.h jfetdelete.o: ../../include/optdefs.h jfetdelete.o: ../../include/pzdefs.h jfetdelete.o: ../../include/sendefs.h jfetdelete.o: ../../include/smpdefs.h jfetdelete.o: ../../include/sperror.h jfetdelete.o: ../../include/trcvdefs.h jfetdelete.o: ../../include/tskdefs.h jfetdelete.o: ../../include/complex.h jfetdelete.o: ../../include/prefix.h jfetdelete.o: ../../include/suffix.h jfetdelete.o: ../../include/util.h jfetdestroy.o: ../../include/acdefs.h jfetdestroy.o: ../../include/cktdefs.h jfetdestroy.o: ../../include/gendefs.h jfetdestroy.o: ../../include/ifsim.h jfetdestroy.o: ../../include/jfetdefs.h jfetdestroy.o: ../../include/jobdefs.h jfetdestroy.o: ../../include/optdefs.h jfetdestroy.o: ../../include/pzdefs.h jfetdestroy.o: ../../include/sendefs.h jfetdestroy.o: ../../include/smpdefs.h jfetdestroy.o: ../../include/trcvdefs.h jfetdestroy.o: ../../include/tskdefs.h jfetdestroy.o: ../../include/complex.h jfetdestroy.o: ../../include/prefix.h jfetdestroy.o: ../../include/suffix.h jfetdestroy.o: ../../include/util.h jfetgetic.o: ../../include/acdefs.h jfetgetic.o: ../../include/cktdefs.h jfetgetic.o: ../../include/gendefs.h jfetgetic.o: ../../include/iferrmsgs.h jfetgetic.o: ../../include/ifsim.h jfetgetic.o: ../../include/jfetdefs.h jfetgetic.o: ../../include/jobdefs.h jfetgetic.o: ../../include/optdefs.h jfetgetic.o: ../../include/pzdefs.h jfetgetic.o: ../../include/sendefs.h jfetgetic.o: ../../include/smpdefs.h jfetgetic.o: ../../include/sperror.h jfetgetic.o: ../../include/trcvdefs.h jfetgetic.o: ../../include/tskdefs.h jfetgetic.o: ../../include/complex.h jfetgetic.o: ../../include/prefix.h jfetgetic.o: ../../include/suffix.h jfetload.o: ../../include/acdefs.h jfetload.o: ../../include/cktdefs.h jfetload.o: ../../include/const.h jfetload.o: ../../include/devdefs.h jfetload.o: ../../include/gendefs.h jfetload.o: ../../include/iferrmsgs.h jfetload.o: ../../include/ifsim.h jfetload.o: ../../include/jfetdefs.h jfetload.o: ../../include/jobdefs.h jfetload.o: ../../include/optdefs.h jfetload.o: ../../include/pzdefs.h jfetload.o: ../../include/sendefs.h jfetload.o: ../../include/smpdefs.h jfetload.o: ../../include/sperror.h jfetload.o: ../../include/trandefs.h jfetload.o: ../../include/trcvdefs.h jfetload.o: ../../include/tskdefs.h jfetload.o: ../../include/complex.h jfetload.o: ../../include/prefix.h jfetload.o: ../../include/suffix.h jfetload.o: ../../include/util.h jfetmask.o: ../../include/acdefs.h jfetmask.o: ../../include/cktdefs.h jfetmask.o: ../../include/const.h jfetmask.o: ../../include/devdefs.h jfetmask.o: ../../include/gendefs.h jfetmask.o: ../../include/iferrmsgs.h jfetmask.o: ../../include/ifsim.h jfetmask.o: ../../include/jfetdefs.h jfetmask.o: ../../include/jobdefs.h jfetmask.o: ../../include/optdefs.h jfetmask.o: ../../include/pzdefs.h jfetmask.o: ../../include/sendefs.h jfetmask.o: ../../include/smpdefs.h jfetmask.o: ../../include/sperror.h jfetmask.o: ../../include/trcvdefs.h jfetmask.o: ../../include/tskdefs.h jfetmask.o: ../../include/complex.h jfetmask.o: ../../include/prefix.h jfetmask.o: ../../include/suffix.h jfetmdelete.o: ../../include/acdefs.h jfetmdelete.o: ../../include/cktdefs.h jfetmdelete.o: ../../include/gendefs.h jfetmdelete.o: ../../include/iferrmsgs.h jfetmdelete.o: ../../include/ifsim.h jfetmdelete.o: ../../include/jfetdefs.h jfetmdelete.o: ../../include/jobdefs.h jfetmdelete.o: ../../include/optdefs.h jfetmdelete.o: ../../include/pzdefs.h jfetmdelete.o: ../../include/sendefs.h jfetmdelete.o: ../../include/smpdefs.h jfetmdelete.o: ../../include/sperror.h jfetmdelete.o: ../../include/trcvdefs.h jfetmdelete.o: ../../include/tskdefs.h jfetmdelete.o: ../../include/complex.h jfetmdelete.o: ../../include/prefix.h jfetmdelete.o: ../../include/suffix.h jfetmdelete.o: ../../include/util.h jfetmparam.o: ../../include/acdefs.h jfetmparam.o: ../../include/cktdefs.h jfetmparam.o: ../../include/const.h jfetmparam.o: ../../include/gendefs.h jfetmparam.o: ../../include/iferrmsgs.h jfetmparam.o: ../../include/ifsim.h jfetmparam.o: ../../include/jfetdefs.h jfetmparam.o: ../../include/jobdefs.h jfetmparam.o: ../../include/optdefs.h jfetmparam.o: ../../include/pzdefs.h jfetmparam.o: ../../include/sendefs.h jfetmparam.o: ../../include/smpdefs.h jfetmparam.o: ../../include/sperror.h jfetmparam.o: ../../include/trcvdefs.h jfetmparam.o: ../../include/tskdefs.h jfetmparam.o: ../../include/complex.h jfetmparam.o: ../../include/prefix.h jfetmparam.o: ../../include/suffix.h jfetmparam.o: ../../include/util.h jfetparam.o: ../../include/acdefs.h jfetparam.o: ../../include/cktdefs.h jfetparam.o: ../../include/const.h jfetparam.o: ../../include/gendefs.h jfetparam.o: ../../include/iferrmsgs.h jfetparam.o: ../../include/ifsim.h jfetparam.o: ../../include/jfetdefs.h jfetparam.o: ../../include/jobdefs.h jfetparam.o: ../../include/optdefs.h jfetparam.o: ../../include/pzdefs.h jfetparam.o: ../../include/sendefs.h jfetparam.o: ../../include/smpdefs.h jfetparam.o: ../../include/sperror.h jfetparam.o: ../../include/trcvdefs.h jfetparam.o: ../../include/tskdefs.h jfetparam.o: ../../include/complex.h jfetparam.o: ../../include/prefix.h jfetparam.o: ../../include/suffix.h jfetparam.o: ../../include/util.h jfetpzload.o: ../../include/acdefs.h jfetpzload.o: ../../include/cktdefs.h jfetpzload.o: ../../include/gendefs.h jfetpzload.o: ../../include/iferrmsgs.h jfetpzload.o: ../../include/ifsim.h jfetpzload.o: ../../include/jfetdefs.h jfetpzload.o: ../../include/jobdefs.h jfetpzload.o: ../../include/optdefs.h jfetpzload.o: ../../include/pzdefs.h jfetpzload.o: ../../include/sendefs.h jfetpzload.o: ../../include/smpdefs.h jfetpzload.o: ../../include/sperror.h jfetpzload.o: ../../include/trcvdefs.h jfetpzload.o: ../../include/tskdefs.h jfetpzload.o: ../../include/complex.h jfetpzload.o: ../../include/prefix.h jfetpzload.o: ../../include/suffix.h jfetsetup.o: ../../include/acdefs.h jfetsetup.o: ../../include/cktdefs.h jfetsetup.o: ../../include/const.h jfetsetup.o: ../../include/gendefs.h jfetsetup.o: ../../include/iferrmsgs.h jfetsetup.o: ../../include/ifsim.h jfetsetup.o: ../../include/jfetdefs.h jfetsetup.o: ../../include/jobdefs.h jfetsetup.o: ../../include/optdefs.h jfetsetup.o: ../../include/pzdefs.h jfetsetup.o: ../../include/sendefs.h jfetsetup.o: ../../include/smpdefs.h jfetsetup.o: ../../include/sperror.h jfetsetup.o: ../../include/trcvdefs.h jfetsetup.o: ../../include/tskdefs.h jfetsetup.o: ../../include/complex.h jfetsetup.o: ../../include/prefix.h jfetsetup.o: ../../include/suffix.h jfetsetup.o: ../../include/util.h jfettemp.o: ../../include/acdefs.h jfettemp.o: ../../include/cktdefs.h jfettemp.o: ../../include/const.h jfettemp.o: ../../include/gendefs.h jfettemp.o: ../../include/iferrmsgs.h jfettemp.o: ../../include/ifsim.h jfettemp.o: ../../include/jfetdefs.h jfettemp.o: ../../include/jobdefs.h jfettemp.o: ../../include/optdefs.h jfettemp.o: ../../include/pzdefs.h jfettemp.o: ../../include/sendefs.h jfettemp.o: ../../include/smpdefs.h jfettemp.o: ../../include/sperror.h jfettemp.o: ../../include/trcvdefs.h jfettemp.o: ../../include/tskdefs.h jfettemp.o: ../../include/complex.h jfettemp.o: ../../include/prefix.h jfettemp.o: ../../include/suffix.h jfettemp.o: ../../include/util.h jfettrunc.o: ../../include/acdefs.h jfettrunc.o: ../../include/cktdefs.h jfettrunc.o: ../../include/gendefs.h jfettrunc.o: ../../include/iferrmsgs.h jfettrunc.o: ../../include/ifsim.h jfettrunc.o: ../../include/jfetdefs.h jfettrunc.o: ../../include/jobdefs.h jfettrunc.o: ../../include/optdefs.h jfettrunc.o: ../../include/pzdefs.h jfettrunc.o: ../../include/sendefs.h jfettrunc.o: ../../include/smpdefs.h jfettrunc.o: ../../include/sperror.h jfettrunc.o: ../../include/trcvdefs.h jfettrunc.o: ../../include/tskdefs.h jfettrunc.o: ../../include/complex.h jfettrunc.o: ../../include/prefix.h jfettrunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mes.c\ mesacload.c\ mesask.c\ mesdelete.c\ mesdestroy.c\ mesgetic.c\ mesload.c\ mesmask.c\ mesmdelete.c\ mesmparam.c\ mesparam.c\ mespzload.c\ messetup.c\ mestemp.c\ mestrunc.c COBJS = \ mes.o\ mesacload.o\ mesask.o\ mesdelete.o\ mesdestroy.o\ mesgetic.o\ mesload.o\ mesmask.o\ mesmdelete.o\ mesmparam.o\ mesparam.o\ mespzload.o\ messetup.o\ mestemp.o\ mestrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lnm -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmes.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmes ${LINTFLAGS} ${CFILES} mv llib-lmes.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE mes.o: ../../include/acdefs.h mes.o: ../../include/cktdefs.h mes.o: ../../include/devdefs.h mes.o: ../../include/gendefs.h mes.o: ../../include/ifsim.h mes.o: ../../include/jobdefs.h mes.o: ../../include/mesdefs.h mes.o: ../../include/optdefs.h mes.o: ../../include/pzdefs.h mes.o: ../../include/sendefs.h mes.o: ../../include/smpdefs.h mes.o: ../../include/trcvdefs.h mes.o: ../../include/tskdefs.h mes.o: ../../include/complex.h mes.o: ../../include/prefix.h mes.o: ../../include/suffix.h mesacload.o: ../../include/acdefs.h mesacload.o: ../../include/cktdefs.h mesacload.o: ../../include/gendefs.h mesacload.o: ../../include/iferrmsgs.h mesacload.o: ../../include/ifsim.h mesacload.o: ../../include/jobdefs.h mesacload.o: ../../include/mesdefs.h mesacload.o: ../../include/optdefs.h mesacload.o: ../../include/pzdefs.h mesacload.o: ../../include/sendefs.h mesacload.o: ../../include/smpdefs.h mesacload.o: ../../include/sperror.h mesacload.o: ../../include/trcvdefs.h mesacload.o: ../../include/tskdefs.h mesacload.o: ../../include/complex.h mesacload.o: ../../include/prefix.h mesacload.o: ../../include/suffix.h mesacload.o: ../../include/util.h mesask.o: ../../include/acdefs.h mesask.o: ../../include/cktdefs.h mesask.o: ../../include/devdefs.h mesask.o: ../../include/gendefs.h mesask.o: ../../include/iferrmsgs.h mesask.o: ../../include/ifsim.h mesask.o: ../../include/jobdefs.h mesask.o: ../../include/mesdefs.h mesask.o: ../../include/optdefs.h mesask.o: ../../include/pzdefs.h mesask.o: ../../include/sendefs.h mesask.o: ../../include/smpdefs.h mesask.o: ../../include/sperror.h mesask.o: ../../include/trcvdefs.h mesask.o: ../../include/tskdefs.h mesask.o: ../../include/complex.h mesask.o: ../../include/prefix.h mesask.o: ../../include/suffix.h mesask.o: ../../include/util.h mesdelete.o: ../../include/acdefs.h mesdelete.o: ../../include/cktdefs.h mesdelete.o: ../../include/gendefs.h mesdelete.o: ../../include/iferrmsgs.h mesdelete.o: ../../include/ifsim.h mesdelete.o: ../../include/jobdefs.h mesdelete.o: ../../include/mesdefs.h mesdelete.o: ../../include/optdefs.h mesdelete.o: ../../include/pzdefs.h mesdelete.o: ../../include/sendefs.h mesdelete.o: ../../include/smpdefs.h mesdelete.o: ../../include/sperror.h mesdelete.o: ../../include/trcvdefs.h mesdelete.o: ../../include/tskdefs.h mesdelete.o: ../../include/complex.h mesdelete.o: ../../include/prefix.h mesdelete.o: ../../include/suffix.h mesdelete.o: ../../include/util.h mesdestroy.o: ../../include/acdefs.h mesdestroy.o: ../../include/cktdefs.h mesdestroy.o: ../../include/gendefs.h mesdestroy.o: ../../include/ifsim.h mesdestroy.o: ../../include/jobdefs.h mesdestroy.o: ../../include/mesdefs.h mesdestroy.o: ../../include/optdefs.h mesdestroy.o: ../../include/pzdefs.h mesdestroy.o: ../../include/sendefs.h mesdestroy.o: ../../include/smpdefs.h mesdestroy.o: ../../include/trcvdefs.h mesdestroy.o: ../../include/tskdefs.h mesdestroy.o: ../../include/complex.h mesdestroy.o: ../../include/prefix.h mesdestroy.o: ../../include/suffix.h mesdestroy.o: ../../include/util.h mesgetic.o: ../../include/acdefs.h mesgetic.o: ../../include/cktdefs.h mesgetic.o: ../../include/gendefs.h mesgetic.o: ../../include/iferrmsgs.h mesgetic.o: ../../include/ifsim.h mesgetic.o: ../../include/jobdefs.h mesgetic.o: ../../include/mesdefs.h mesgetic.o: ../../include/optdefs.h mesgetic.o: ../../include/pzdefs.h mesgetic.o: ../../include/sendefs.h mesgetic.o: ../../include/smpdefs.h mesgetic.o: ../../include/sperror.h mesgetic.o: ../../include/trcvdefs.h mesgetic.o: ../../include/tskdefs.h mesgetic.o: ../../include/complex.h mesgetic.o: ../../include/prefix.h mesgetic.o: ../../include/suffix.h mesgetic.o: ../../include/util.h mesload.o: ../../include/acdefs.h mesload.o: ../../include/cktdefs.h mesload.o: ../../include/const.h mesload.o: ../../include/devdefs.h mesload.o: ../../include/gendefs.h mesload.o: ../../include/iferrmsgs.h mesload.o: ../../include/ifsim.h mesload.o: ../../include/jobdefs.h mesload.o: ../../include/mesdefs.h mesload.o: ../../include/optdefs.h mesload.o: ../../include/pzdefs.h mesload.o: ../../include/sendefs.h mesload.o: ../../include/smpdefs.h mesload.o: ../../include/sperror.h mesload.o: ../../include/trandefs.h mesload.o: ../../include/trcvdefs.h mesload.o: ../../include/tskdefs.h mesload.o: ../../include/complex.h mesload.o: ../../include/prefix.h mesload.o: ../../include/suffix.h mesload.o: ../../include/util.h mesmask.o: ../../include/acdefs.h mesmask.o: ../../include/cktdefs.h mesmask.o: ../../include/devdefs.h mesmask.o: ../../include/gendefs.h mesmask.o: ../../include/iferrmsgs.h mesmask.o: ../../include/ifsim.h mesmask.o: ../../include/jobdefs.h mesmask.o: ../../include/mesdefs.h mesmask.o: ../../include/optdefs.h mesmask.o: ../../include/pzdefs.h mesmask.o: ../../include/sendefs.h mesmask.o: ../../include/smpdefs.h mesmask.o: ../../include/sperror.h mesmask.o: ../../include/trcvdefs.h mesmask.o: ../../include/tskdefs.h mesmask.o: ../../include/complex.h mesmask.o: ../../include/prefix.h mesmask.o: ../../include/suffix.h mesmdelete.o: ../../include/acdefs.h mesmdelete.o: ../../include/cktdefs.h mesmdelete.o: ../../include/gendefs.h mesmdelete.o: ../../include/iferrmsgs.h mesmdelete.o: ../../include/ifsim.h mesmdelete.o: ../../include/jobdefs.h mesmdelete.o: ../../include/mesdefs.h mesmdelete.o: ../../include/optdefs.h mesmdelete.o: ../../include/pzdefs.h mesmdelete.o: ../../include/sendefs.h mesmdelete.o: ../../include/smpdefs.h mesmdelete.o: ../../include/sperror.h mesmdelete.o: ../../include/trcvdefs.h mesmdelete.o: ../../include/tskdefs.h mesmdelete.o: ../../include/complex.h mesmdelete.o: ../../include/prefix.h mesmdelete.o: ../../include/suffix.h mesmdelete.o: ../../include/util.h mesmparam.o: ../../include/acdefs.h mesmparam.o: ../../include/cktdefs.h mesmparam.o: ../../include/gendefs.h mesmparam.o: ../../include/iferrmsgs.h mesmparam.o: ../../include/ifsim.h mesmparam.o: ../../include/jobdefs.h mesmparam.o: ../../include/mesdefs.h mesmparam.o: ../../include/optdefs.h mesmparam.o: ../../include/pzdefs.h mesmparam.o: ../../include/sendefs.h mesmparam.o: ../../include/smpdefs.h mesmparam.o: ../../include/sperror.h mesmparam.o: ../../include/trcvdefs.h mesmparam.o: ../../include/tskdefs.h mesmparam.o: ../../include/complex.h mesmparam.o: ../../include/prefix.h mesmparam.o: ../../include/suffix.h mesmparam.o: ../../include/util.h mesparam.o: ../../include/acdefs.h mesparam.o: ../../include/cktdefs.h mesparam.o: ../../include/gendefs.h mesparam.o: ../../include/iferrmsgs.h mesparam.o: ../../include/ifsim.h mesparam.o: ../../include/jobdefs.h mesparam.o: ../../include/mesdefs.h mesparam.o: ../../include/optdefs.h mesparam.o: ../../include/pzdefs.h mesparam.o: ../../include/sendefs.h mesparam.o: ../../include/smpdefs.h mesparam.o: ../../include/sperror.h mesparam.o: ../../include/trcvdefs.h mesparam.o: ../../include/tskdefs.h mesparam.o: ../../include/complex.h mesparam.o: ../../include/prefix.h mesparam.o: ../../include/suffix.h mesparam.o: ../../include/util.h mespzload.o: ../../include/acdefs.h mespzload.o: ../../include/cktdefs.h mespzload.o: ../../include/gendefs.h mespzload.o: ../../include/iferrmsgs.h mespzload.o: ../../include/ifsim.h mespzload.o: ../../include/jobdefs.h mespzload.o: ../../include/mesdefs.h mespzload.o: ../../include/optdefs.h mespzload.o: ../../include/pzdefs.h mespzload.o: ../../include/sendefs.h mespzload.o: ../../include/smpdefs.h mespzload.o: ../../include/sperror.h mespzload.o: ../../include/trcvdefs.h mespzload.o: ../../include/tskdefs.h mespzload.o: ../../include/complex.h mespzload.o: ../../include/prefix.h mespzload.o: ../../include/suffix.h mespzload.o: ../../include/util.h messetup.o: ../../include/acdefs.h messetup.o: ../../include/cktdefs.h messetup.o: ../../include/const.h messetup.o: ../../include/gendefs.h messetup.o: ../../include/iferrmsgs.h messetup.o: ../../include/ifsim.h messetup.o: ../../include/jobdefs.h messetup.o: ../../include/mesdefs.h messetup.o: ../../include/optdefs.h messetup.o: ../../include/pzdefs.h messetup.o: ../../include/sendefs.h messetup.o: ../../include/smpdefs.h messetup.o: ../../include/sperror.h messetup.o: ../../include/trcvdefs.h messetup.o: ../../include/tskdefs.h messetup.o: ../../include/complex.h messetup.o: ../../include/prefix.h messetup.o: ../../include/suffix.h messetup.o: ../../include/util.h mestemp.o: ../../include/acdefs.h mestemp.o: ../../include/cktdefs.h mestemp.o: ../../include/const.h mestemp.o: ../../include/gendefs.h mestemp.o: ../../include/iferrmsgs.h mestemp.o: ../../include/ifsim.h mestemp.o: ../../include/jobdefs.h mestemp.o: ../../include/mesdefs.h mestemp.o: ../../include/optdefs.h mestemp.o: ../../include/pzdefs.h mestemp.o: ../../include/sendefs.h mestemp.o: ../../include/smpdefs.h mestemp.o: ../../include/sperror.h mestemp.o: ../../include/trcvdefs.h mestemp.o: ../../include/tskdefs.h mestemp.o: ../../include/complex.h mestemp.o: ../../include/prefix.h mestemp.o: ../../include/suffix.h mestemp.o: ../../include/util.h mestrunc.o: ../../include/acdefs.h mestrunc.o: ../../include/cktdefs.h mestrunc.o: ../../include/gendefs.h mestrunc.o: ../../include/iferrmsgs.h mestrunc.o: ../../include/ifsim.h mestrunc.o: ../../include/jobdefs.h mestrunc.o: ../../include/mesdefs.h mestrunc.o: ../../include/optdefs.h mestrunc.o: ../../include/pzdefs.h mestrunc.o: ../../include/sendefs.h mestrunc.o: ../../include/smpdefs.h mestrunc.o: ../../include/sperror.h mestrunc.o: ../../include/trcvdefs.h mestrunc.o: ../../include/tskdefs.h mestrunc.o: ../../include/complex.h mestrunc.o: ../../include/prefix.h mestrunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mos1.c\ mos1acload.c\ mos1ask.c\ mos1convtest.c\ mos1delete.c\ mos1destroy.c\ mos1getic.c\ mos1load.c\ mos1mask.c\ mos1mdelete.c\ mos1mparam.c\ mos1param.c\ mos1pzload.c\ mos1sacload.c\ mos1sload.c\ mos1sprint.c\ mos1ssetup.c\ mos1supdate.c\ mos1setup.c\ mos1temp.c\ mos1trunc.c COBJS = \ mos1.o\ mos1acload.o\ mos1ask.o\ mos1convtest.o\ mos1delete.o\ mos1destroy.o\ mos1getic.o\ mos1load.o\ mos1mask.o\ mos1mdelete.o\ mos1mparam.o\ mos1param.o\ mos1pzload.o\ mos1sacload.o\ mos1sload.o\ mos1sprint.o\ mos1ssetup.o\ mos1supdate.o\ mos1setup.o\ mos1temp.o\ mos1trunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS = -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmos1.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmos1 ${LINTFLAGS} ${CFILES} mv llib-lmos1.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ acan.c\ acaskquest.c\ acsetparm.c\ cktaccept.c\ cktacct.c\ cktacdump.c\ cktacload.c\ cktask.c\ cktaskanalq.c\ cktasknodqst.c\ cktbindnode.c\ cktbreakdump.c\ cktclrbreak.c\ cktconvtest.c\ cktcrtelt.c\ cktdeltask.c\ cktdestroy.c\ cktdltinst.c\ cktdltmod.c\ cktdltnod.c\ cktdojob.c\ cktdump.c\ cktfndanal.c\ cktfndbranch.c\ cktfnddev.c\ cktfndmod.c\ cktfndnode.c\ cktfndtask.c\ cktground.c\ cktinit.c\ cktic.c\ cktinst2node.c\ cktlinkeq.c\ cktload.c\ cktmkcur.c\ cktmknode.c\ cktmkvolt.c\ cktmapnode.c\ cktmodask.c\ cktmodcrt.c\ cktmodparam.c\ cktnames.c\ cktnewanal.c\ cktneweq.c\ cktnewnode.c\ cktnewtask.c\ cktnodname.c\ cktnum2nod.c\ cktop.c\ cktparam.c\ cktpmodname.c\ cktpname.c\ cktpzload.c\ cktpzsetup.c\ cktsenac.c\ cktsencomp.c\ cktsendctran.c\ cktsenload.c\ cktsenprint.c\ cktsensetup.c\ cktsenupdate.c\ cktsetanalpm.c\ cktsetbreak.c\ cktsetnodpm.c\ cktsetopt.c\ cktsetup.c\ ckttemp.c\ cktterr.c\ ckttrunc.c\ ckttypelook.c\ spiinit.c\ dcoaskquest.c\ dcosetparm.c\ dctaskquest.c\ dctsetparm.c\ dcop.c\ dctran.c\ dctrcurv.c\ senstartup.c\ sensetparm.c\ senaskquest.c\ sendestroy.c\ sperror.c\ pzan.c\ pzaskquest.c\ pzsetparm.c\ tfanal.c\ tfsetparm.c\ tfaskquest.c\ tranaskquest.c\ transetparm.c COBJS = \ acan.o\ acaskquest.o\ acsetparm.o\ cktaccept.o\ cktacct.o\ cktacdump.o\ cktacload.o\ cktask.o\ cktaskanalq.o\ cktasknodqst.o\ cktbindnode.o\ cktbreakdump.o\ cktclrbreak.o\ cktconvtest.o\ cktcrtelt.o\ cktdeltask.o\ cktdestroy.o\ cktdltinst.o\ cktdltmod.o\ cktdltnod.o\ cktdojob.o\ cktdump.o\ cktfndanal.o\ cktfndbranch.o\ cktfnddev.o\ cktfndmod.o\ cktfndnode.o\ cktfndtask.o\ cktground.o\ cktinit.o\ cktic.o\ cktinst2node.o\ cktlinkeq.o\ cktload.o\ cktmkcur.o\ cktmknode.o\ cktmkvolt.o\ cktmapnode.o\ cktmodask.o\ cktmodcrt.o\ cktmodparam.o\ cktnames.o\ cktnewanal.o\ cktneweq.o\ cktnewnode.o\ cktnewtask.o\ cktnodname.o\ cktnum2nod.o\ cktop.o\ cktparam.o\ cktpmodname.o\ cktpname.o\ cktpzload.o\ cktpzsetup.o\ cktsenac.o\ cktsencomp.o\ cktsendctran.o\ cktsenload.o\ cktsenprint.o\ cktsensetup.o\ cktsenupdate.o\ cktsetanalpm.o\ cktsetbreak.o\ cktsetnodpm.o\ cktsetopt.o\ cktsetup.o\ ckttemp.o\ cktterr.o\ ckttrunc.o\ ckttypelook.o\ spiinit.o\ dcoaskquest.o\ dcosetparm.o\ dctaskquest.o\ dctsetparm.o\ dcop.o\ dctran.o\ dctrcurv.o\ senstartup.o\ sensetparm.o\ senaskquest.o\ sendestroy.o\ sperror.o\ pzan.o\ pzaskquest.o\ pzsetparm.o\ tfanal.o\ tfsetparm.o\ tfaskquest.o\ tranaskquest.o\ transetparm.o TARGET = ../ckt DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} ${PG} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../lint/llib-lckt.ln lint ${LINTFLAGS} ${LINTLIBS} ../lint/llib-l*.ln ${CFILES} lint -Cckt ${LINTFLAGS} ${CFILES} mv llib-lckt.ln ../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags ../*/*.c > /dev/null 2>&1 clean: -rm -f ${COBJS} -rm -f ${TARGET}.a install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE acan.o: ../include/acdefs.h acan.o: ../include/cktdefs.h acan.o: ../include/gendefs.h acan.o: ../include/iferrmsgs.h acan.o: ../include/ifsim.h acan.o: ../include/jobdefs.h acan.o: ../include/optdefs.h acan.o: ../include/pzdefs.h acan.o: ../include/sendefs.h acan.o: ../include/smpdefs.h acan.o: ../include/sperror.h acan.o: ../include/trcvdefs.h acan.o: ../include/tskdefs.h acan.o: ../include/complex.h acan.o: ../include/prefix.h acan.o: ../include/suffix.h acan.o: ../include/util.h acaskquest.o: ../include/acdefs.h acaskquest.o: ../include/cktdefs.h acaskquest.o: ../include/gendefs.h acaskquest.o: ../include/iferrmsgs.h acaskquest.o: ../include/ifsim.h acaskquest.o: ../include/jobdefs.h acaskquest.o: ../include/optdefs.h acaskquest.o: ../include/pzdefs.h acaskquest.o: ../include/sendefs.h acaskquest.o: ../include/smpdefs.h acaskquest.o: ../include/trcvdefs.h acaskquest.o: ../include/tskdefs.h acaskquest.o: ../include/complex.h acaskquest.o: ../include/prefix.h acaskquest.o: ../include/suffix.h acsetparm.o: ../include/acdefs.h acsetparm.o: ../include/cktdefs.h acsetparm.o: ../include/gendefs.h acsetparm.o: ../include/iferrmsgs.h acsetparm.o: ../include/ifsim.h acsetparm.o: ../include/jobdefs.h acsetparm.o: ../include/optdefs.h acsetparm.o: ../include/pzdefs.h acsetparm.o: ../include/sendefs.h acsetparm.o: ../include/smpdefs.h acsetparm.o: ../include/trcvdefs.h acsetparm.o: ../include/tskdefs.h acsetparm.o: ../include/complex.h acsetparm.o: ../include/prefix.h acsetparm.o: ../include/suffix.h cktaccept.o: ../include/acdefs.h cktaccept.o: ../include/cktdefs.h cktaccept.o: ../include/devdefs.h cktaccept.o: ../include/gendefs.h cktaccept.o: ../include/iferrmsgs.h cktaccept.o: ../include/ifsim.h cktaccept.o: ../include/jobdefs.h cktaccept.o: ../include/optdefs.h cktaccept.o: ../include/pzdefs.h cktaccept.o: ../include/sendefs.h cktaccept.o: ../include/smpdefs.h cktaccept.o: ../include/sperror.h cktaccept.o: ../include/trcvdefs.h cktaccept.o: ../include/tskdefs.h cktaccept.o: ../include/complex.h cktaccept.o: ../include/prefix.h cktaccept.o: ../include/suffix.h cktaccept.o: ../include/util.h cktacct.o: ../include/acdefs.h cktacct.o: ../include/cktdefs.h cktacct.o: ../include/const.h cktacct.o: ../include/gendefs.h cktacct.o: ../include/ifsim.h cktacct.o: ../include/jobdefs.h cktacct.o: ../include/optdefs.h cktacct.o: ../include/pzdefs.h cktacct.o: ../include/sendefs.h cktacct.o: ../include/smpdefs.h cktacct.o: ../include/trcvdefs.h cktacct.o: ../include/tskdefs.h cktacct.o: ../include/complex.h cktacct.o: ../include/prefix.h cktacct.o: ../include/suffix.h cktacct.o: ../include/util.h cktacdump.o: ../include/acdefs.h cktacdump.o: ../include/cktdefs.h cktacdump.o: ../include/gendefs.h cktacdump.o: ../include/iferrmsgs.h cktacdump.o: ../include/ifsim.h cktacdump.o: ../include/jobdefs.h cktacdump.o: ../include/optdefs.h cktacdump.o: ../include/pzdefs.h cktacdump.o: ../include/sendefs.h cktacdump.o: ../include/smpdefs.h cktacdump.o: ../include/trcvdefs.h cktacdump.o: ../include/tskdefs.h cktacdump.o: ../include/complex.h cktacdump.o: ../include/prefix.h cktacdump.o: ../include/suffix.h cktacdump.o: ../include/util.h cktacload.o: ../include/acdefs.h cktacload.o: ../include/cktdefs.h cktacload.o: ../include/devdefs.h cktacload.o: ../include/gendefs.h cktacload.o: ../include/iferrmsgs.h cktacload.o: ../include/ifsim.h cktacload.o: ../include/jobdefs.h cktacload.o: ../include/optdefs.h cktacload.o: ../include/pzdefs.h cktacload.o: ../include/sendefs.h cktacload.o: ../include/smpdefs.h cktacload.o: ../include/sperror.h cktacload.o: ../include/trcvdefs.h cktacload.o: ../include/tskdefs.h cktacload.o: ../include/complex.h cktacload.o: ../include/prefix.h cktacload.o: ../include/suffix.h cktask.o: ../include/acdefs.h cktask.o: ../include/cktdefs.h cktask.o: ../include/devdefs.h cktask.o: ../include/gendefs.h cktask.o: ../include/iferrmsgs.h cktask.o: ../include/ifsim.h cktask.o: ../include/jobdefs.h cktask.o: ../include/optdefs.h cktask.o: ../include/pzdefs.h cktask.o: ../include/sendefs.h cktask.o: ../include/smpdefs.h cktask.o: ../include/sperror.h cktask.o: ../include/trcvdefs.h cktask.o: ../include/tskdefs.h cktask.o: ../include/complex.h cktask.o: ../include/prefix.h cktask.o: ../include/suffix.h cktask.o: ../include/util.h cktaskanalq.o: ../include/acdefs.h cktaskanalq.o: ../include/cktdefs.h cktaskanalq.o: ../include/gendefs.h cktaskanalq.o: ../include/iferrmsgs.h cktaskanalq.o: ../include/ifsim.h cktaskanalq.o: ../include/jobdefs.h cktaskanalq.o: ../include/optdefs.h cktaskanalq.o: ../include/pzdefs.h cktaskanalq.o: ../include/sendefs.h cktaskanalq.o: ../include/smpdefs.h cktaskanalq.o: ../include/trcvdefs.h cktaskanalq.o: ../include/tskdefs.h cktaskanalq.o: ../include/complex.h cktaskanalq.o: ../include/prefix.h cktaskanalq.o: ../include/suffix.h cktaskanalq.o: ../include/util.h cktasknodqst.o: ../include/acdefs.h cktasknodqst.o: ../include/cktdefs.h cktasknodqst.o: ../include/gendefs.h cktasknodqst.o: ../include/iferrmsgs.h cktasknodqst.o: ../include/ifsim.h cktasknodqst.o: ../include/jobdefs.h cktasknodqst.o: ../include/optdefs.h cktasknodqst.o: ../include/pzdefs.h cktasknodqst.o: ../include/sendefs.h cktasknodqst.o: ../include/smpdefs.h cktasknodqst.o: ../include/trcvdefs.h cktasknodqst.o: ../include/tskdefs.h cktasknodqst.o: ../include/complex.h cktasknodqst.o: ../include/prefix.h cktasknodqst.o: ../include/suffix.h cktasknodqst.o: ../include/util.h cktbindnode.o: ../include/acdefs.h cktbindnode.o: ../include/cktdefs.h cktbindnode.o: ../include/devdefs.h cktbindnode.o: ../include/gendefs.h cktbindnode.o: ../include/iferrmsgs.h cktbindnode.o: ../include/ifsim.h cktbindnode.o: ../include/jobdefs.h cktbindnode.o: ../include/optdefs.h cktbindnode.o: ../include/pzdefs.h cktbindnode.o: ../include/sendefs.h cktbindnode.o: ../include/smpdefs.h cktbindnode.o: ../include/sperror.h cktbindnode.o: ../include/trcvdefs.h cktbindnode.o: ../include/tskdefs.h cktbindnode.o: ../include/complex.h cktbindnode.o: ../include/prefix.h cktbindnode.o: ../include/suffix.h cktbindnode.o: ../include/util.h cktbreakdump.o: ../include/acdefs.h cktbreakdump.o: ../include/cktdefs.h cktbreakdump.o: ../include/gendefs.h cktbreakdump.o: ../include/ifsim.h cktbreakdump.o: ../include/jobdefs.h cktbreakdump.o: ../include/optdefs.h cktbreakdump.o: ../include/pzdefs.h cktbreakdump.o: ../include/sendefs.h cktbreakdump.o: ../include/smpdefs.h cktbreakdump.o: ../include/trcvdefs.h cktbreakdump.o: ../include/tskdefs.h cktbreakdump.o: ../include/complex.h cktbreakdump.o: ../include/prefix.h cktbreakdump.o: ../include/suffix.h cktbreakdump.o: ../include/util.h cktclrbreak.o: ../include/acdefs.h cktclrbreak.o: ../include/cktdefs.h cktclrbreak.o: ../include/gendefs.h cktclrbreak.o: ../include/iferrmsgs.h cktclrbreak.o: ../include/ifsim.h cktclrbreak.o: ../include/jobdefs.h cktclrbreak.o: ../include/optdefs.h cktclrbreak.o: ../include/pzdefs.h cktclrbreak.o: ../include/sendefs.h cktclrbreak.o: ../include/smpdefs.h cktclrbreak.o: ../include/sperror.h cktclrbreak.o: ../include/trcvdefs.h cktclrbreak.o: ../include/tskdefs.h cktclrbreak.o: ../include/complex.h cktclrbreak.o: ../include/prefix.h cktclrbreak.o: ../include/suffix.h cktclrbreak.o: ../include/util.h cktconvtest.o: ../include/acdefs.h cktconvtest.o: ../include/cktdefs.h cktconvtest.o: ../include/devdefs.h cktconvtest.o: ../include/gendefs.h cktconvtest.o: ../include/iferrmsgs.h cktconvtest.o: ../include/ifsim.h cktconvtest.o: ../include/jobdefs.h cktconvtest.o: ../include/optdefs.h cktconvtest.o: ../include/pzdefs.h cktconvtest.o: ../include/sendefs.h cktconvtest.o: ../include/smpdefs.h cktconvtest.o: ../include/sperror.h cktconvtest.o: ../include/trcvdefs.h cktconvtest.o: ../include/tskdefs.h cktconvtest.o: ../include/complex.h cktconvtest.o: ../include/prefix.h cktconvtest.o: ../include/suffix.h cktcrtelt.o: ../include/acdefs.h cktcrtelt.o: ../include/cktdefs.h cktcrtelt.o: ../include/devdefs.h cktcrtelt.o: ../include/gendefs.h cktcrtelt.o: ../include/iferrmsgs.h cktcrtelt.o: ../include/ifsim.h cktcrtelt.o: ../include/jobdefs.h cktcrtelt.o: ../include/optdefs.h cktcrtelt.o: ../include/pzdefs.h cktcrtelt.o: ../include/sendefs.h cktcrtelt.o: ../include/smpdefs.h cktcrtelt.o: ../include/sperror.h cktcrtelt.o: ../include/trcvdefs.h cktcrtelt.o: ../include/tskdefs.h cktcrtelt.o: ../include/complex.h cktcrtelt.o: ../include/prefix.h cktcrtelt.o: ../include/suffix.h cktcrtelt.o: ../include/util.h cktdeltask.o: ../include/iferrmsgs.h cktdeltask.o: ../include/ifsim.h cktdeltask.o: ../include/jobdefs.h cktdeltask.o: ../include/tskdefs.h cktdeltask.o: ../include/prefix.h cktdeltask.o: ../include/suffix.h cktdeltask.o: ../include/util.h cktdestroy.o: ../include/acdefs.h cktdestroy.o: ../include/cktdefs.h cktdestroy.o: ../include/devdefs.h cktdestroy.o: ../include/gendefs.h cktdestroy.o: ../include/iferrmsgs.h cktdestroy.o: ../include/ifsim.h cktdestroy.o: ../include/jobdefs.h cktdestroy.o: ../include/optdefs.h cktdestroy.o: ../include/pzdefs.h cktdestroy.o: ../include/sendefs.h cktdestroy.o: ../include/smpdefs.h cktdestroy.o: ../include/sperror.h cktdestroy.o: ../include/trcvdefs.h cktdestroy.o: ../include/tskdefs.h cktdestroy.o: ../include/complex.h cktdestroy.o: ../include/prefix.h cktdestroy.o: ../include/suffix.h cktdestroy.o: ../include/util.h cktdltinst.o: ../include/acdefs.h cktdltinst.o: ../include/cktdefs.h cktdltinst.o: ../include/gendefs.h cktdltinst.o: ../include/iferrmsgs.h cktdltinst.o: ../include/ifsim.h cktdltinst.o: ../include/jobdefs.h cktdltinst.o: ../include/optdefs.h cktdltinst.o: ../include/pzdefs.h cktdltinst.o: ../include/sendefs.h cktdltinst.o: ../include/smpdefs.h cktdltinst.o: ../include/sperror.h cktdltinst.o: ../include/trcvdefs.h cktdltinst.o: ../include/tskdefs.h cktdltinst.o: ../include/complex.h cktdltinst.o: ../include/prefix.h cktdltinst.o: ../include/suffix.h cktdltinst.o: ../include/util.h cktdltmod.o: ../include/acdefs.h cktdltmod.o: ../include/cktdefs.h cktdltmod.o: ../include/gendefs.h cktdltmod.o: ../include/iferrmsgs.h cktdltmod.o: ../include/ifsim.h cktdltmod.o: ../include/jobdefs.h cktdltmod.o: ../include/optdefs.h cktdltmod.o: ../include/pzdefs.h cktdltmod.o: ../include/sendefs.h cktdltmod.o: ../include/smpdefs.h cktdltmod.o: ../include/sperror.h cktdltmod.o: ../include/trcvdefs.h cktdltmod.o: ../include/tskdefs.h cktdltmod.o: ../include/complex.h cktdltmod.o: ../include/prefix.h cktdltmod.o: ../include/suffix.h cktdltmod.o: ../include/util.h cktdltnod.o: ../include/acdefs.h cktdltnod.o: ../include/cktdefs.h cktdltnod.o: ../include/gendefs.h cktdltnod.o: ../include/iferrmsgs.h cktdltnod.o: ../include/ifsim.h cktdltnod.o: ../include/jobdefs.h cktdltnod.o: ../include/optdefs.h cktdltnod.o: ../include/pzdefs.h cktdltnod.o: ../include/sendefs.h cktdltnod.o: ../include/smpdefs.h cktdltnod.o: ../include/sperror.h cktdltnod.o: ../include/trcvdefs.h cktdltnod.o: ../include/tskdefs.h cktdltnod.o: ../include/complex.h cktdltnod.o: ../include/prefix.h cktdltnod.o: ../include/suffix.h cktdltnod.o: ../include/util.h cktdojob.o: ../include/acdefs.h cktdojob.o: ../include/cktdefs.h cktdojob.o: ../include/gendefs.h cktdojob.o: ../include/iferrmsgs.h cktdojob.o: ../include/ifsim.h cktdojob.o: ../include/jobdefs.h cktdojob.o: ../include/optdefs.h cktdojob.o: ../include/pzdefs.h cktdojob.o: ../include/sendefs.h cktdojob.o: ../include/smpdefs.h cktdojob.o: ../include/sperror.h cktdojob.o: ../include/trandefs.h cktdojob.o: ../include/trcvdefs.h cktdojob.o: ../include/tskdefs.h cktdojob.o: ../include/complex.h cktdojob.o: ../include/prefix.h cktdojob.o: ../include/suffix.h cktdojob.o: ../include/util.h cktdump.o: ../include/acdefs.h cktdump.o: ../include/cktdefs.h cktdump.o: ../include/gendefs.h cktdump.o: ../include/ifsim.h cktdump.o: ../include/jobdefs.h cktdump.o: ../include/optdefs.h cktdump.o: ../include/pzdefs.h cktdump.o: ../include/sendefs.h cktdump.o: ../include/smpdefs.h cktdump.o: ../include/trcvdefs.h cktdump.o: ../include/tskdefs.h cktdump.o: ../include/complex.h cktdump.o: ../include/prefix.h cktdump.o: ../include/suffix.h cktfndanal.o: ../include/acdefs.h cktfndanal.o: ../include/cktdefs.h cktfndanal.o: ../include/gendefs.h cktfndanal.o: ../include/iferrmsgs.h cktfndanal.o: ../include/ifsim.h cktfndanal.o: ../include/jobdefs.h cktfndanal.o: ../include/optdefs.h cktfndanal.o: ../include/pzdefs.h cktfndanal.o: ../include/sendefs.h cktfndanal.o: ../include/smpdefs.h cktfndanal.o: ../include/sperror.h cktfndanal.o: ../include/trcvdefs.h cktfndanal.o: ../include/tskdefs.h cktfndanal.o: ../include/complex.h cktfndanal.o: ../include/prefix.h cktfndanal.o: ../include/suffix.h cktfndbranch.o: ../include/acdefs.h cktfndbranch.o: ../include/cktdefs.h cktfndbranch.o: ../include/devdefs.h cktfndbranch.o: ../include/gendefs.h cktfndbranch.o: ../include/ifsim.h cktfndbranch.o: ../include/jobdefs.h cktfndbranch.o: ../include/optdefs.h cktfndbranch.o: ../include/pzdefs.h cktfndbranch.o: ../include/sendefs.h cktfndbranch.o: ../include/smpdefs.h cktfndbranch.o: ../include/trcvdefs.h cktfndbranch.o: ../include/tskdefs.h cktfndbranch.o: ../include/complex.h cktfndbranch.o: ../include/prefix.h cktfndbranch.o: ../include/suffix.h cktfnddev.o: ../include/acdefs.h cktfnddev.o: ../include/cktdefs.h cktfnddev.o: ../include/gendefs.h cktfnddev.o: ../include/iferrmsgs.h cktfnddev.o: ../include/ifsim.h cktfnddev.o: ../include/jobdefs.h cktfnddev.o: ../include/optdefs.h cktfnddev.o: ../include/pzdefs.h cktfnddev.o: ../include/sendefs.h cktfnddev.o: ../include/smpdefs.h cktfnddev.o: ../include/sperror.h cktfnddev.o: ../include/trcvdefs.h cktfnddev.o: ../include/tskdefs.h cktfnddev.o: ../include/complex.h cktfnddev.o: ../include/prefix.h cktfnddev.o: ../include/suffix.h cktfnddev.o: ../include/util.h cktfndmod.o: ../include/acdefs.h cktfndmod.o: ../include/cktdefs.h cktfndmod.o: ../include/gendefs.h cktfndmod.o: ../include/iferrmsgs.h cktfndmod.o: ../include/ifsim.h cktfndmod.o: ../include/jobdefs.h cktfndmod.o: ../include/optdefs.h cktfndmod.o: ../include/pzdefs.h cktfndmod.o: ../include/sendefs.h cktfndmod.o: ../include/smpdefs.h cktfndmod.o: ../include/sperror.h cktfndmod.o: ../include/trcvdefs.h cktfndmod.o: ../include/tskdefs.h cktfndmod.o: ../include/complex.h cktfndmod.o: ../include/prefix.h cktfndmod.o: ../include/suffix.h cktfndmod.o: ../include/util.h cktfndnode.o: ../include/acdefs.h cktfndnode.o: ../include/cktdefs.h cktfndnode.o: ../include/gendefs.h cktfndnode.o: ../include/iferrmsgs.h cktfndnode.o: ../include/ifsim.h cktfndnode.o: ../include/jobdefs.h cktfndnode.o: ../include/optdefs.h cktfndnode.o: ../include/pzdefs.h cktfndnode.o: ../include/sendefs.h cktfndnode.o: ../include/smpdefs.h cktfndnode.o: ../include/sperror.h cktfndnode.o: ../include/trcvdefs.h cktfndnode.o: ../include/tskdefs.h cktfndnode.o: ../include/complex.h cktfndnode.o: ../include/prefix.h cktfndnode.o: ../include/suffix.h cktfndtask.o: ../include/acdefs.h cktfndtask.o: ../include/cktdefs.h cktfndtask.o: ../include/gendefs.h cktfndtask.o: ../include/iferrmsgs.h cktfndtask.o: ../include/ifsim.h cktfndtask.o: ../include/jobdefs.h cktfndtask.o: ../include/optdefs.h cktfndtask.o: ../include/pzdefs.h cktfndtask.o: ../include/sendefs.h cktfndtask.o: ../include/smpdefs.h cktfndtask.o: ../include/sperror.h cktfndtask.o: ../include/trcvdefs.h cktfndtask.o: ../include/tskdefs.h cktfndtask.o: ../include/complex.h cktfndtask.o: ../include/prefix.h cktfndtask.o: ../include/suffix.h cktfndtask.o: ../include/util.h cktground.o: ../include/acdefs.h cktground.o: ../include/cktdefs.h cktground.o: ../include/gendefs.h cktground.o: ../include/iferrmsgs.h cktground.o: ../include/ifsim.h cktground.o: ../include/jobdefs.h cktground.o: ../include/optdefs.h cktground.o: ../include/pzdefs.h cktground.o: ../include/sendefs.h cktground.o: ../include/smpdefs.h cktground.o: ../include/sperror.h cktground.o: ../include/trcvdefs.h cktground.o: ../include/tskdefs.h cktground.o: ../include/complex.h cktground.o: ../include/prefix.h cktground.o: ../include/suffix.h cktground.o: ../include/util.h cktinit.o: ../include/acdefs.h cktinit.o: ../include/cktdefs.h cktinit.o: ../include/const.h cktinit.o: ../include/gendefs.h cktinit.o: ../include/iferrmsgs.h cktinit.o: ../include/ifsim.h cktinit.o: ../include/jobdefs.h cktinit.o: ../include/optdefs.h cktinit.o: ../include/pzdefs.h cktinit.o: ../include/sendefs.h cktinit.o: ../include/smpdefs.h cktinit.o: ../include/sperror.h cktinit.o: ../include/trcvdefs.h cktinit.o: ../include/tskdefs.h cktinit.o: ../include/complex.h cktinit.o: ../include/prefix.h cktinit.o: ../include/suffix.h cktinit.o: ../include/util.h cktic.o: ../include/acdefs.h cktic.o: ../include/cktdefs.h cktic.o: ../include/devdefs.h cktic.o: ../include/gendefs.h cktic.o: ../include/iferrmsgs.h cktic.o: ../include/ifsim.h cktic.o: ../include/jobdefs.h cktic.o: ../include/optdefs.h cktic.o: ../include/pzdefs.h cktic.o: ../include/sendefs.h cktic.o: ../include/smpdefs.h cktic.o: ../include/sperror.h cktic.o: ../include/trcvdefs.h cktic.o: ../include/tskdefs.h cktic.o: ../include/complex.h cktic.o: ../include/prefix.h cktic.o: ../include/suffix.h cktic.o: ../include/util.h cktinst2node.o: ../include/acdefs.h cktinst2node.o: ../include/cktdefs.h cktinst2node.o: ../include/devdefs.h cktinst2node.o: ../include/gendefs.h cktinst2node.o: ../include/iferrmsgs.h cktinst2node.o: ../include/ifsim.h cktinst2node.o: ../include/jobdefs.h cktinst2node.o: ../include/optdefs.h cktinst2node.o: ../include/pzdefs.h cktinst2node.o: ../include/sendefs.h cktinst2node.o: ../include/smpdefs.h cktinst2node.o: ../include/sperror.h cktinst2node.o: ../include/trcvdefs.h cktinst2node.o: ../include/tskdefs.h cktinst2node.o: ../include/complex.h cktinst2node.o: ../include/prefix.h cktinst2node.o: ../include/suffix.h cktlinkeq.o: ../include/acdefs.h cktlinkeq.o: ../include/cktdefs.h cktlinkeq.o: ../include/gendefs.h cktlinkeq.o: ../include/iferrmsgs.h cktlinkeq.o: ../include/ifsim.h cktlinkeq.o: ../include/jobdefs.h cktlinkeq.o: ../include/optdefs.h cktlinkeq.o: ../include/pzdefs.h cktlinkeq.o: ../include/sendefs.h cktlinkeq.o: ../include/smpdefs.h cktlinkeq.o: ../include/trcvdefs.h cktlinkeq.o: ../include/tskdefs.h cktlinkeq.o: ../include/complex.h cktlinkeq.o: ../include/prefix.h cktlinkeq.o: ../include/suffix.h cktlinkeq.o: ../include/util.h cktload.o: ../include/acdefs.h cktload.o: ../include/cktdefs.h cktload.o: ../include/devdefs.h cktload.o: ../include/gendefs.h cktload.o: ../include/iferrmsgs.h cktload.o: ../include/ifsim.h cktload.o: ../include/jobdefs.h cktload.o: ../include/optdefs.h cktload.o: ../include/pzdefs.h cktload.o: ../include/sendefs.h cktload.o: ../include/smpdefs.h cktload.o: ../include/sperror.h cktload.o: ../include/trcvdefs.h cktload.o: ../include/tskdefs.h cktload.o: ../include/complex.h cktload.o: ../include/prefix.h cktload.o: ../include/suffix.h cktmkcur.o: ../include/acdefs.h cktmkcur.o: ../include/cktdefs.h cktmkcur.o: ../include/gendefs.h cktmkcur.o: ../include/iferrmsgs.h cktmkcur.o: ../include/ifsim.h cktmkcur.o: ../include/jobdefs.h cktmkcur.o: ../include/optdefs.h cktmkcur.o: ../include/pzdefs.h cktmkcur.o: ../include/sendefs.h cktmkcur.o: ../include/smpdefs.h cktmkcur.o: ../include/sperror.h cktmkcur.o: ../include/trcvdefs.h cktmkcur.o: ../include/tskdefs.h cktmkcur.o: ../include/complex.h cktmkcur.o: ../include/prefix.h cktmkcur.o: ../include/suffix.h cktmkcur.o: ../include/util.h cktmknode.o: ../include/acdefs.h cktmknode.o: ../include/cktdefs.h cktmknode.o: ../include/gendefs.h cktmknode.o: ../include/iferrmsgs.h cktmknode.o: ../include/ifsim.h cktmknode.o: ../include/jobdefs.h cktmknode.o: ../include/optdefs.h cktmknode.o: ../include/pzdefs.h cktmknode.o: ../include/sendefs.h cktmknode.o: ../include/smpdefs.h cktmknode.o: ../include/trcvdefs.h cktmknode.o: ../include/tskdefs.h cktmknode.o: ../include/complex.h cktmknode.o: ../include/prefix.h cktmknode.o: ../include/suffix.h cktmknode.o: ../include/util.h cktmkvolt.o: ../include/acdefs.h cktmkvolt.o: ../include/cktdefs.h cktmkvolt.o: ../include/gendefs.h cktmkvolt.o: ../include/iferrmsgs.h cktmkvolt.o: ../include/ifsim.h cktmkvolt.o: ../include/jobdefs.h cktmkvolt.o: ../include/optdefs.h cktmkvolt.o: ../include/pzdefs.h cktmkvolt.o: ../include/sendefs.h cktmkvolt.o: ../include/smpdefs.h cktmkvolt.o: ../include/sperror.h cktmkvolt.o: ../include/trcvdefs.h cktmkvolt.o: ../include/tskdefs.h cktmkvolt.o: ../include/complex.h cktmkvolt.o: ../include/prefix.h cktmkvolt.o: ../include/suffix.h cktmkvolt.o: ../include/util.h cktmapnode.o: ../include/acdefs.h cktmapnode.o: ../include/cktdefs.h cktmapnode.o: ../include/gendefs.h cktmapnode.o: ../include/iferrmsgs.h cktmapnode.o: ../include/ifsim.h cktmapnode.o: ../include/jobdefs.h cktmapnode.o: ../include/optdefs.h cktmapnode.o: ../include/pzdefs.h cktmapnode.o: ../include/sendefs.h cktmapnode.o: ../include/smpdefs.h cktmapnode.o: ../include/sperror.h cktmapnode.o: ../include/trcvdefs.h cktmapnode.o: ../include/tskdefs.h cktmapnode.o: ../include/complex.h cktmapnode.o: ../include/prefix.h cktmapnode.o: ../include/suffix.h cktmodask.o: ../include/acdefs.h cktmodask.o: ../include/cktdefs.h cktmodask.o: ../include/devdefs.h cktmodask.o: ../include/gendefs.h cktmodask.o: ../include/iferrmsgs.h cktmodask.o: ../include/ifsim.h cktmodask.o: ../include/jobdefs.h cktmodask.o: ../include/optdefs.h cktmodask.o: ../include/pzdefs.h cktmodask.o: ../include/sendefs.h cktmodask.o: ../include/smpdefs.h cktmodask.o: ../include/sperror.h cktmodask.o: ../include/trcvdefs.h cktmodask.o: ../include/tskdefs.h cktmodask.o: ../include/complex.h cktmodask.o: ../include/prefix.h cktmodask.o: ../include/suffix.h cktmodask.o: ../include/util.h cktmodcrt.o: ../include/acdefs.h cktmodcrt.o: ../include/cktdefs.h cktmodcrt.o: ../include/devdefs.h cktmodcrt.o: ../include/gendefs.h cktmodcrt.o: ../include/iferrmsgs.h cktmodcrt.o: ../include/ifsim.h cktmodcrt.o: ../include/jobdefs.h cktmodcrt.o: ../include/optdefs.h cktmodcrt.o: ../include/pzdefs.h cktmodcrt.o: ../include/sendefs.h cktmodcrt.o: ../include/smpdefs.h cktmodcrt.o: ../include/sperror.h cktmodcrt.o: ../include/trcvdefs.h cktmodcrt.o: ../include/tskdefs.h cktmodcrt.o: ../include/complex.h cktmodcrt.o: ../include/prefix.h cktmodcrt.o: ../include/suffix.h cktmodcrt.o: ../include/util.h cktmodparam.o: ../include/acdefs.h cktmodparam.o: ../include/cktdefs.h cktmodparam.o: ../include/devdefs.h cktmodparam.o: ../include/gendefs.h cktmodparam.o: ../include/iferrmsgs.h cktmodparam.o: ../include/ifsim.h cktmodparam.o: ../include/jobdefs.h cktmodparam.o: ../include/optdefs.h cktmodparam.o: ../include/pzdefs.h cktmodparam.o: ../include/sendefs.h cktmodparam.o: ../include/smpdefs.h cktmodparam.o: ../include/sperror.h cktmodparam.o: ../include/trcvdefs.h cktmodparam.o: ../include/tskdefs.h cktmodparam.o: ../include/complex.h cktmodparam.o: ../include/prefix.h cktmodparam.o: ../include/suffix.h cktmodparam.o: ../include/util.h cktnames.o: ../include/acdefs.h cktnames.o: ../include/cktdefs.h cktnames.o: ../include/gendefs.h cktnames.o: ../include/iferrmsgs.h cktnames.o: ../include/ifsim.h cktnames.o: ../include/jobdefs.h cktnames.o: ../include/optdefs.h cktnames.o: ../include/pzdefs.h cktnames.o: ../include/sendefs.h cktnames.o: ../include/smpdefs.h cktnames.o: ../include/trcvdefs.h cktnames.o: ../include/tskdefs.h cktnames.o: ../include/complex.h cktnames.o: ../include/prefix.h cktnames.o: ../include/suffix.h cktnames.o: ../include/util.h cktnewanal.o: ../include/iferrmsgs.h cktnewanal.o: ../include/ifsim.h cktnewanal.o: ../include/jobdefs.h cktnewanal.o: ../include/tskdefs.h cktnewanal.o: ../include/prefix.h cktnewanal.o: ../include/suffix.h cktnewanal.o: ../include/util.h cktneweq.o: ../include/acdefs.h cktneweq.o: ../include/cktdefs.h cktneweq.o: ../include/gendefs.h cktneweq.o: ../include/iferrmsgs.h cktneweq.o: ../include/ifsim.h cktneweq.o: ../include/jobdefs.h cktneweq.o: ../include/optdefs.h cktneweq.o: ../include/pzdefs.h cktneweq.o: ../include/sendefs.h cktneweq.o: ../include/smpdefs.h cktneweq.o: ../include/trcvdefs.h cktneweq.o: ../include/tskdefs.h cktneweq.o: ../include/complex.h cktneweq.o: ../include/prefix.h cktneweq.o: ../include/suffix.h cktneweq.o: ../include/util.h cktnewnode.o: ../include/acdefs.h cktnewnode.o: ../include/cktdefs.h cktnewnode.o: ../include/gendefs.h cktnewnode.o: ../include/iferrmsgs.h cktnewnode.o: ../include/ifsim.h cktnewnode.o: ../include/jobdefs.h cktnewnode.o: ../include/optdefs.h cktnewnode.o: ../include/pzdefs.h cktnewnode.o: ../include/sendefs.h cktnewnode.o: ../include/smpdefs.h cktnewnode.o: ../include/trcvdefs.h cktnewnode.o: ../include/tskdefs.h cktnewnode.o: ../include/complex.h cktnewnode.o: ../include/prefix.h cktnewnode.o: ../include/suffix.h cktnewnode.o: ../include/util.h cktnewtask.o: ../include/acdefs.h cktnewtask.o: ../include/cktdefs.h cktnewtask.o: ../include/gendefs.h cktnewtask.o: ../include/iferrmsgs.h cktnewtask.o: ../include/ifsim.h cktnewtask.o: ../include/jobdefs.h cktnewtask.o: ../include/optdefs.h cktnewtask.o: ../include/pzdefs.h cktnewtask.o: ../include/sendefs.h cktnewtask.o: ../include/smpdefs.h cktnewtask.o: ../include/trcvdefs.h cktnewtask.o: ../include/tskdefs.h cktnewtask.o: ../include/complex.h cktnewtask.o: ../include/prefix.h cktnewtask.o: ../include/suffix.h cktnewtask.o: ../include/util.h cktnodname.o: ../include/acdefs.h cktnodname.o: ../include/cktdefs.h cktnodname.o: ../include/gendefs.h cktnodname.o: ../include/ifsim.h cktnodname.o: ../include/jobdefs.h cktnodname.o: ../include/optdefs.h cktnodname.o: ../include/pzdefs.h cktnodname.o: ../include/sendefs.h cktnodname.o: ../include/smpdefs.h cktnodname.o: ../include/trcvdefs.h cktnodname.o: ../include/tskdefs.h cktnodname.o: ../include/complex.h cktnodname.o: ../include/prefix.h cktnodname.o: ../include/suffix.h cktnum2nod.o: ../include/acdefs.h cktnum2nod.o: ../include/cktdefs.h cktnum2nod.o: ../include/gendefs.h cktnum2nod.o: ../include/iferrmsgs.h cktnum2nod.o: ../include/ifsim.h cktnum2nod.o: ../include/jobdefs.h cktnum2nod.o: ../include/optdefs.h cktnum2nod.o: ../include/pzdefs.h cktnum2nod.o: ../include/sendefs.h cktnum2nod.o: ../include/smpdefs.h cktnum2nod.o: ../include/sperror.h cktnum2nod.o: ../include/trcvdefs.h cktnum2nod.o: ../include/tskdefs.h cktnum2nod.o: ../include/complex.h cktnum2nod.o: ../include/prefix.h cktnum2nod.o: ../include/suffix.h cktop.o: ../include/acdefs.h cktop.o: ../include/cktdefs.h cktop.o: ../include/gendefs.h cktop.o: ../include/ifsim.h cktop.o: ../include/jobdefs.h cktop.o: ../include/optdefs.h cktop.o: ../include/pzdefs.h cktop.o: ../include/sendefs.h cktop.o: ../include/smpdefs.h cktop.o: ../include/trcvdefs.h cktop.o: ../include/tskdefs.h cktop.o: ../include/complex.h cktop.o: ../include/prefix.h cktop.o: ../include/suffix.h cktop.o: ../include/util.h cktparam.o: ../include/acdefs.h cktparam.o: ../include/cktdefs.h cktparam.o: ../include/devdefs.h cktparam.o: ../include/gendefs.h cktparam.o: ../include/iferrmsgs.h cktparam.o: ../include/ifsim.h cktparam.o: ../include/jobdefs.h cktparam.o: ../include/optdefs.h cktparam.o: ../include/pzdefs.h cktparam.o: ../include/sendefs.h cktparam.o: ../include/smpdefs.h cktparam.o: ../include/sperror.h cktparam.o: ../include/trcvdefs.h cktparam.o: ../include/tskdefs.h cktparam.o: ../include/complex.h cktparam.o: ../include/prefix.h cktparam.o: ../include/suffix.h cktparam.o: ../include/util.h cktpmodname.o: ../include/acdefs.h cktpmodname.o: ../include/cktdefs.h cktpmodname.o: ../include/devdefs.h cktpmodname.o: ../include/gendefs.h cktpmodname.o: ../include/iferrmsgs.h cktpmodname.o: ../include/ifsim.h cktpmodname.o: ../include/jobdefs.h cktpmodname.o: ../include/optdefs.h cktpmodname.o: ../include/pzdefs.h cktpmodname.o: ../include/sendefs.h cktpmodname.o: ../include/smpdefs.h cktpmodname.o: ../include/sperror.h cktpmodname.o: ../include/trcvdefs.h cktpmodname.o: ../include/tskdefs.h cktpmodname.o: ../include/complex.h cktpmodname.o: ../include/prefix.h cktpmodname.o: ../include/suffix.h cktpmodname.o: ../include/util.h cktpname.o: ../include/acdefs.h cktpname.o: ../include/cktdefs.h cktpname.o: ../include/devdefs.h cktpname.o: ../include/gendefs.h cktpname.o: ../include/iferrmsgs.h cktpname.o: ../include/ifsim.h cktpname.o: ../include/jobdefs.h cktpname.o: ../include/optdefs.h cktpname.o: ../include/pzdefs.h cktpname.o: ../include/sendefs.h cktpname.o: ../include/smpdefs.h cktpname.o: ../include/sperror.h cktpname.o: ../include/trcvdefs.h cktpname.o: ../include/tskdefs.h cktpname.o: ../include/complex.h cktpname.o: ../include/prefix.h cktpname.o: ../include/suffix.h cktpname.o: ../include/util.h cktpzload.o: ../include/acdefs.h cktpzload.o: ../include/cktdefs.h cktpzload.o: ../include/devdefs.h cktpzload.o: ../include/gendefs.h cktpzload.o: ../include/iferrmsgs.h cktpzload.o: ../include/ifsim.h cktpzload.o: ../include/jobdefs.h cktpzload.o: ../include/optdefs.h cktpzload.o: ../include/pzdefs.h cktpzload.o: ../include/sendefs.h cktpzload.o: ../include/smpdefs.h cktpzload.o: ../include/sperror.h cktpzload.o: ../include/trcvdefs.h cktpzload.o: ../include/tskdefs.h cktpzload.o: ../include/complex.h cktpzload.o: ../include/prefix.h cktpzload.o: ../include/suffix.h cktpzsetup.o: ../include/acdefs.h cktpzsetup.o: ../include/cktdefs.h cktpzsetup.o: ../include/devdefs.h cktpzsetup.o: ../include/gendefs.h cktpzsetup.o: ../include/iferrmsgs.h cktpzsetup.o: ../include/ifsim.h cktpzsetup.o: ../include/jobdefs.h cktpzsetup.o: ../include/optdefs.h cktpzsetup.o: ../include/pzdefs.h cktpzsetup.o: ../include/sendefs.h cktpzsetup.o: ../include/smpdefs.h cktpzsetup.o: ../include/sperror.h cktpzsetup.o: ../include/trcvdefs.h cktpzsetup.o: ../include/tskdefs.h cktpzsetup.o: ../include/complex.h cktpzsetup.o: ../include/prefix.h cktpzsetup.o: ../include/suffix.h cktpzsetup.o: ../include/util.h cktsenac.o: ../include/acdefs.h cktsenac.o: ../include/cktdefs.h cktsenac.o: ../include/devdefs.h cktsenac.o: ../include/gendefs.h cktsenac.o: ../include/iferrmsgs.h cktsenac.o: ../include/ifsim.h cktsenac.o: ../include/jobdefs.h cktsenac.o: ../include/optdefs.h cktsenac.o: ../include/pzdefs.h cktsenac.o: ../include/sendefs.h cktsenac.o: ../include/smpdefs.h cktsenac.o: ../include/sperror.h cktsenac.o: ../include/trandefs.h cktsenac.o: ../include/trcvdefs.h cktsenac.o: ../include/tskdefs.h cktsenac.o: ../include/complex.h cktsenac.o: ../include/prefix.h cktsenac.o: ../include/suffix.h cktsencomp.o: ../include/acdefs.h cktsencomp.o: ../include/cktdefs.h cktsencomp.o: ../include/devdefs.h cktsencomp.o: ../include/gendefs.h cktsencomp.o: ../include/iferrmsgs.h cktsencomp.o: ../include/ifsim.h cktsencomp.o: ../include/jobdefs.h cktsencomp.o: ../include/optdefs.h cktsencomp.o: ../include/pzdefs.h cktsencomp.o: ../include/sendefs.h cktsencomp.o: ../include/smpdefs.h cktsencomp.o: ../include/sperror.h cktsencomp.o: ../include/trandefs.h cktsencomp.o: ../include/trcvdefs.h cktsencomp.o: ../include/tskdefs.h cktsencomp.o: ../include/complex.h cktsencomp.o: ../include/prefix.h cktsencomp.o: ../include/suffix.h cktsendctran.o: ../include/acdefs.h cktsendctran.o: ../include/cktdefs.h cktsendctran.o: ../include/devdefs.h cktsendctran.o: ../include/gendefs.h cktsendctran.o: ../include/iferrmsgs.h cktsendctran.o: ../include/ifsim.h cktsendctran.o: ../include/jobdefs.h cktsendctran.o: ../include/optdefs.h cktsendctran.o: ../include/pzdefs.h cktsendctran.o: ../include/sendefs.h cktsendctran.o: ../include/smpdefs.h cktsendctran.o: ../include/sperror.h cktsendctran.o: ../include/trandefs.h cktsendctran.o: ../include/trcvdefs.h cktsendctran.o: ../include/tskdefs.h cktsendctran.o: ../include/complex.h cktsendctran.o: ../include/prefix.h cktsendctran.o: ../include/suffix.h cktsenload.o: ../include/acdefs.h cktsenload.o: ../include/cktdefs.h cktsenload.o: ../include/devdefs.h cktsenload.o: ../include/gendefs.h cktsenload.o: ../include/iferrmsgs.h cktsenload.o: ../include/ifsim.h cktsenload.o: ../include/jobdefs.h cktsenload.o: ../include/optdefs.h cktsenload.o: ../include/pzdefs.h cktsenload.o: ../include/sendefs.h cktsenload.o: ../include/smpdefs.h cktsenload.o: ../include/sperror.h cktsenload.o: ../include/trandefs.h cktsenload.o: ../include/trcvdefs.h cktsenload.o: ../include/tskdefs.h cktsenload.o: ../include/complex.h cktsenload.o: ../include/prefix.h cktsenload.o: ../include/suffix.h cktsenprint.o: ../include/acdefs.h cktsenprint.o: ../include/cktdefs.h cktsenprint.o: ../include/devdefs.h cktsenprint.o: ../include/gendefs.h cktsenprint.o: ../include/iferrmsgs.h cktsenprint.o: ../include/ifsim.h cktsenprint.o: ../include/jobdefs.h cktsenprint.o: ../include/optdefs.h cktsenprint.o: ../include/pzdefs.h cktsenprint.o: ../include/sendefs.h cktsenprint.o: ../include/smpdefs.h cktsenprint.o: ../include/sperror.h cktsenprint.o: ../include/trandefs.h cktsenprint.o: ../include/trcvdefs.h cktsenprint.o: ../include/tskdefs.h cktsenprint.o: ../include/complex.h cktsenprint.o: ../include/prefix.h cktsenprint.o: ../include/suffix.h cktsensetup.o: ../include/acdefs.h cktsensetup.o: ../include/cktdefs.h cktsensetup.o: ../include/devdefs.h cktsensetup.o: ../include/gendefs.h cktsensetup.o: ../include/iferrmsgs.h cktsensetup.o: ../include/ifsim.h cktsensetup.o: ../include/jobdefs.h cktsensetup.o: ../include/optdefs.h cktsensetup.o: ../include/pzdefs.h cktsensetup.o: ../include/sendefs.h cktsensetup.o: ../include/smpdefs.h cktsensetup.o: ../include/sperror.h cktsensetup.o: ../include/trandefs.h cktsensetup.o: ../include/trcvdefs.h cktsensetup.o: ../include/tskdefs.h cktsensetup.o: ../include/complex.h cktsensetup.o: ../include/prefix.h cktsensetup.o: ../include/suffix.h cktsenupdate.o: ../include/acdefs.h cktsenupdate.o: ../include/cktdefs.h cktsenupdate.o: ../include/devdefs.h cktsenupdate.o: ../include/gendefs.h cktsenupdate.o: ../include/iferrmsgs.h cktsenupdate.o: ../include/ifsim.h cktsenupdate.o: ../include/jobdefs.h cktsenupdate.o: ../include/optdefs.h cktsenupdate.o: ../include/pzdefs.h cktsenupdate.o: ../include/sendefs.h cktsenupdate.o: ../include/smpdefs.h cktsenupdate.o: ../include/sperror.h cktsenupdate.o: ../include/trandefs.h cktsenupdate.o: ../include/trcvdefs.h cktsenupdate.o: ../include/tskdefs.h cktsenupdate.o: ../include/complex.h cktsenupdate.o: ../include/prefix.h cktsenupdate.o: ../include/suffix.h cktsetanalpm.o: ../include/acdefs.h cktsetanalpm.o: ../include/cktdefs.h cktsetanalpm.o: ../include/gendefs.h cktsetanalpm.o: ../include/iferrmsgs.h cktsetanalpm.o: ../include/ifsim.h cktsetanalpm.o: ../include/jobdefs.h cktsetanalpm.o: ../include/optdefs.h cktsetanalpm.o: ../include/pzdefs.h cktsetanalpm.o: ../include/sendefs.h cktsetanalpm.o: ../include/smpdefs.h cktsetanalpm.o: ../include/trcvdefs.h cktsetanalpm.o: ../include/tskdefs.h cktsetanalpm.o: ../include/complex.h cktsetanalpm.o: ../include/prefix.h cktsetanalpm.o: ../include/suffix.h cktsetanalpm.o: ../include/util.h cktsetbreak.o: ../include/acdefs.h cktsetbreak.o: ../include/cktdefs.h cktsetbreak.o: ../include/gendefs.h cktsetbreak.o: ../include/iferrmsgs.h cktsetbreak.o: ../include/ifsim.h cktsetbreak.o: ../include/jobdefs.h cktsetbreak.o: ../include/optdefs.h cktsetbreak.o: ../include/pzdefs.h cktsetbreak.o: ../include/sendefs.h cktsetbreak.o: ../include/smpdefs.h cktsetbreak.o: ../include/sperror.h cktsetbreak.o: ../include/trcvdefs.h cktsetbreak.o: ../include/tskdefs.h cktsetbreak.o: ../include/complex.h cktsetbreak.o: ../include/prefix.h cktsetbreak.o: ../include/suffix.h cktsetbreak.o: ../include/util.h cktsetnodpm.o: ../include/acdefs.h cktsetnodpm.o: ../include/cktdefs.h cktsetnodpm.o: ../include/gendefs.h cktsetnodpm.o: ../include/iferrmsgs.h cktsetnodpm.o: ../include/ifsim.h cktsetnodpm.o: ../include/jobdefs.h cktsetnodpm.o: ../include/optdefs.h cktsetnodpm.o: ../include/pzdefs.h cktsetnodpm.o: ../include/sendefs.h cktsetnodpm.o: ../include/smpdefs.h cktsetnodpm.o: ../include/trcvdefs.h cktsetnodpm.o: ../include/tskdefs.h cktsetnodpm.o: ../include/complex.h cktsetnodpm.o: ../include/prefix.h cktsetnodpm.o: ../include/suffix.h cktsetnodpm.o: ../include/util.h cktsetopt.o: ../include/acdefs.h cktsetopt.o: ../include/cktdefs.h cktsetopt.o: ../include/const.h cktsetopt.o: ../include/gendefs.h cktsetopt.o: ../include/iferrmsgs.h cktsetopt.o: ../include/ifsim.h cktsetopt.o: ../include/jobdefs.h cktsetopt.o: ../include/optdefs.h cktsetopt.o: ../include/pzdefs.h cktsetopt.o: ../include/sendefs.h cktsetopt.o: ../include/smpdefs.h cktsetopt.o: ../include/sperror.h cktsetopt.o: ../include/trcvdefs.h cktsetopt.o: ../include/tskdefs.h cktsetopt.o: ../include/complex.h cktsetopt.o: ../include/prefix.h cktsetopt.o: ../include/suffix.h cktsetopt.o: ../include/util.h cktsetup.o: ../include/acdefs.h cktsetup.o: ../include/cktdefs.h cktsetup.o: ../include/devdefs.h cktsetup.o: ../include/gendefs.h cktsetup.o: ../include/iferrmsgs.h cktsetup.o: ../include/ifsim.h cktsetup.o: ../include/jobdefs.h cktsetup.o: ../include/optdefs.h cktsetup.o: ../include/pzdefs.h cktsetup.o: ../include/sendefs.h cktsetup.o: ../include/smpdefs.h cktsetup.o: ../include/sperror.h cktsetup.o: ../include/trcvdefs.h cktsetup.o: ../include/tskdefs.h cktsetup.o: ../include/complex.h cktsetup.o: ../include/prefix.h cktsetup.o: ../include/suffix.h cktsetup.o: ../include/util.h ckttemp.o: ../include/acdefs.h ckttemp.o: ../include/cktdefs.h ckttemp.o: ../include/const.h ckttemp.o: ../include/devdefs.h ckttemp.o: ../include/gendefs.h ckttemp.o: ../include/iferrmsgs.h ckttemp.o: ../include/ifsim.h ckttemp.o: ../include/jobdefs.h ckttemp.o: ../include/optdefs.h ckttemp.o: ../include/pzdefs.h ckttemp.o: ../include/sendefs.h ckttemp.o: ../include/smpdefs.h ckttemp.o: ../include/sperror.h ckttemp.o: ../include/trcvdefs.h ckttemp.o: ../include/tskdefs.h ckttemp.o: ../include/complex.h ckttemp.o: ../include/prefix.h ckttemp.o: ../include/suffix.h cktterr.o: ../include/acdefs.h cktterr.o: ../include/cktdefs.h cktterr.o: ../include/gendefs.h cktterr.o: ../include/ifsim.h cktterr.o: ../include/jobdefs.h cktterr.o: ../include/optdefs.h cktterr.o: ../include/pzdefs.h cktterr.o: ../include/sendefs.h cktterr.o: ../include/smpdefs.h cktterr.o: ../include/trcvdefs.h cktterr.o: ../include/tskdefs.h cktterr.o: ../include/complex.h cktterr.o: ../include/prefix.h cktterr.o: ../include/suffix.h cktterr.o: ../include/util.h ckttrunc.o: ../include/acdefs.h ckttrunc.o: ../include/cktdefs.h ckttrunc.o: ../include/devdefs.h ckttrunc.o: ../include/gendefs.h ckttrunc.o: ../include/iferrmsgs.h ckttrunc.o: ../include/ifsim.h ckttrunc.o: ../include/jobdefs.h ckttrunc.o: ../include/optdefs.h ckttrunc.o: ../include/pzdefs.h ckttrunc.o: ../include/sendefs.h ckttrunc.o: ../include/smpdefs.h ckttrunc.o: ../include/sperror.h ckttrunc.o: ../include/trcvdefs.h ckttrunc.o: ../include/tskdefs.h ckttrunc.o: ../include/complex.h ckttrunc.o: ../include/prefix.h ckttrunc.o: ../include/suffix.h ckttrunc.o: ../include/util.h ckttypelook.o: ../include/acdefs.h ckttypelook.o: ../include/cktdefs.h ckttypelook.o: ../include/devdefs.h ckttypelook.o: ../include/gendefs.h ckttypelook.o: ../include/ifsim.h ckttypelook.o: ../include/jobdefs.h ckttypelook.o: ../include/optdefs.h ckttypelook.o: ../include/pzdefs.h ckttypelook.o: ../include/sendefs.h ckttypelook.o: ../include/smpdefs.h ckttypelook.o: ../include/trcvdefs.h ckttypelook.o: ../include/tskdefs.h ckttypelook.o: ../include/complex.h ckttypelook.o: ../include/prefix.h ckttypelook.o: ../include/suffix.h spiinit.o: ../include/acdefs.h spiinit.o: ../include/cktdefs.h spiinit.o: ../include/const.h spiinit.o: ../include/devdefs.h spiinit.o: ../include/gendefs.h spiinit.o: ../include/iferrmsgs.h spiinit.o: ../include/ifsim.h spiinit.o: ../include/jobdefs.h spiinit.o: ../include/optdefs.h spiinit.o: ../include/pzdefs.h spiinit.o: ../include/sendefs.h spiinit.o: ../include/smpdefs.h spiinit.o: ../include/sperror.h spiinit.o: ../include/trcvdefs.h spiinit.o: ../include/tskdefs.h spiinit.o: ../include/complex.h spiinit.o: ../include/prefix.h spiinit.o: ../include/suffix.h spiinit.o: ../include/util.h dcoaskquest.o: ../include/acdefs.h dcoaskquest.o: ../include/cktdefs.h dcoaskquest.o: ../include/gendefs.h dcoaskquest.o: ../include/iferrmsgs.h dcoaskquest.o: ../include/ifsim.h dcoaskquest.o: ../include/jobdefs.h dcoaskquest.o: ../include/optdefs.h dcoaskquest.o: ../include/opdefs.h dcoaskquest.o: ../include/pzdefs.h dcoaskquest.o: ../include/sendefs.h dcoaskquest.o: ../include/smpdefs.h dcoaskquest.o: ../include/trcvdefs.h dcoaskquest.o: ../include/tskdefs.h dcoaskquest.o: ../include/complex.h dcoaskquest.o: ../include/prefix.h dcoaskquest.o: ../include/suffix.h dcosetparm.o: ../include/acdefs.h dcosetparm.o: ../include/cktdefs.h dcosetparm.o: ../include/gendefs.h dcosetparm.o: ../include/iferrmsgs.h dcosetparm.o: ../include/ifsim.h dcosetparm.o: ../include/jobdefs.h dcosetparm.o: ../include/optdefs.h dcosetparm.o: ../include/opdefs.h dcosetparm.o: ../include/pzdefs.h dcosetparm.o: ../include/sendefs.h dcosetparm.o: ../include/smpdefs.h dcosetparm.o: ../include/trcvdefs.h dcosetparm.o: ../include/tskdefs.h dcosetparm.o: ../include/complex.h dcosetparm.o: ../include/prefix.h dcosetparm.o: ../include/suffix.h dctaskquest.o: ../include/acdefs.h dctaskquest.o: ../include/cktdefs.h dctaskquest.o: ../include/gendefs.h dctaskquest.o: ../include/iferrmsgs.h dctaskquest.o: ../include/ifsim.h dctaskquest.o: ../include/jobdefs.h dctaskquest.o: ../include/optdefs.h dctaskquest.o: ../include/pzdefs.h dctaskquest.o: ../include/sendefs.h dctaskquest.o: ../include/smpdefs.h dctaskquest.o: ../include/trcvdefs.h dctaskquest.o: ../include/tskdefs.h dctaskquest.o: ../include/complex.h dctaskquest.o: ../include/prefix.h dctaskquest.o: ../include/suffix.h dctsetparm.o: ../include/acdefs.h dctsetparm.o: ../include/cktdefs.h dctsetparm.o: ../include/gendefs.h dctsetparm.o: ../include/iferrmsgs.h dctsetparm.o: ../include/ifsim.h dctsetparm.o: ../include/jobdefs.h dctsetparm.o: ../include/optdefs.h dctsetparm.o: ../include/pzdefs.h dctsetparm.o: ../include/sendefs.h dctsetparm.o: ../include/smpdefs.h dctsetparm.o: ../include/trcvdefs.h dctsetparm.o: ../include/tskdefs.h dctsetparm.o: ../include/complex.h dctsetparm.o: ../include/prefix.h dctsetparm.o: ../include/suffix.h dctsetparm.o: ../include/util.h dcop.o: ../include/acdefs.h dcop.o: ../include/cktdefs.h dcop.o: ../include/gendefs.h dcop.o: ../include/iferrmsgs.h dcop.o: ../include/ifsim.h dcop.o: ../include/jobdefs.h dcop.o: ../include/optdefs.h dcop.o: ../include/pzdefs.h dcop.o: ../include/sendefs.h dcop.o: ../include/smpdefs.h dcop.o: ../include/sperror.h dcop.o: ../include/trcvdefs.h dcop.o: ../include/tskdefs.h dcop.o: ../include/complex.h dcop.o: ../include/prefix.h dcop.o: ../include/suffix.h dcop.o: ../include/util.h dctran.o: ../include/acdefs.h dctran.o: ../include/cktdefs.h dctran.o: ../include/gendefs.h dctran.o: ../include/iferrmsgs.h dctran.o: ../include/ifsim.h dctran.o: ../include/jobdefs.h dctran.o: ../include/optdefs.h dctran.o: ../include/pzdefs.h dctran.o: ../include/sendefs.h dctran.o: ../include/smpdefs.h dctran.o: ../include/sperror.h dctran.o: ../include/trandefs.h dctran.o: ../include/trcvdefs.h dctran.o: ../include/tskdefs.h dctran.o: ../include/complex.h dctran.o: ../include/prefix.h dctran.o: ../include/suffix.h dctran.o: ../include/util.h dctrcurv.o: ../include/acdefs.h dctrcurv.o: ../include/cktdefs.h dctrcurv.o: ../include/gendefs.h dctrcurv.o: ../include/iferrmsgs.h dctrcurv.o: ../include/ifsim.h dctrcurv.o: ../include/isrcdefs.h dctrcurv.o: ../include/jobdefs.h dctrcurv.o: ../include/optdefs.h dctrcurv.o: ../include/pzdefs.h dctrcurv.o: ../include/sendefs.h dctrcurv.o: ../include/smpdefs.h dctrcurv.o: ../include/sperror.h dctrcurv.o: ../include/trcvdefs.h dctrcurv.o: ../include/tskdefs.h dctrcurv.o: ../include/vsrcdefs.h dctrcurv.o: ../include/complex.h dctrcurv.o: ../include/prefix.h dctrcurv.o: ../include/suffix.h dctrcurv.o: ../include/util.h senstartup.o: ../include/acdefs.h senstartup.o: ../include/cktdefs.h senstartup.o: ../include/const.h senstartup.o: ../include/gendefs.h senstartup.o: ../include/iferrmsgs.h senstartup.o: ../include/ifsim.h senstartup.o: ../include/jobdefs.h senstartup.o: ../include/optdefs.h senstartup.o: ../include/pzdefs.h senstartup.o: ../include/sendefs.h senstartup.o: ../include/smpdefs.h senstartup.o: ../include/sperror.h senstartup.o: ../include/trcvdefs.h senstartup.o: ../include/tskdefs.h senstartup.o: ../include/complex.h senstartup.o: ../include/prefix.h senstartup.o: ../include/suffix.h senstartup.o: ../include/util.h sensetparm.o: ../include/acdefs.h sensetparm.o: ../include/cktdefs.h sensetparm.o: ../include/gendefs.h sensetparm.o: ../include/iferrmsgs.h sensetparm.o: ../include/ifsim.h sensetparm.o: ../include/jobdefs.h sensetparm.o: ../include/optdefs.h sensetparm.o: ../include/pzdefs.h sensetparm.o: ../include/sendefs.h sensetparm.o: ../include/smpdefs.h sensetparm.o: ../include/trcvdefs.h sensetparm.o: ../include/tskdefs.h sensetparm.o: ../include/complex.h sensetparm.o: ../include/prefix.h sensetparm.o: ../include/suffix.h sensetparm.o: ../include/util.h senaskquest.o: ../include/acdefs.h senaskquest.o: ../include/cktdefs.h senaskquest.o: ../include/gendefs.h senaskquest.o: ../include/iferrmsgs.h senaskquest.o: ../include/ifsim.h senaskquest.o: ../include/jobdefs.h senaskquest.o: ../include/optdefs.h senaskquest.o: ../include/pzdefs.h senaskquest.o: ../include/sendefs.h senaskquest.o: ../include/smpdefs.h senaskquest.o: ../include/trcvdefs.h senaskquest.o: ../include/tskdefs.h senaskquest.o: ../include/complex.h senaskquest.o: ../include/prefix.h senaskquest.o: ../include/suffix.h sendestroy.o: ../include/acdefs.h sendestroy.o: ../include/cktdefs.h sendestroy.o: ../include/devdefs.h sendestroy.o: ../include/gendefs.h sendestroy.o: ../include/iferrmsgs.h sendestroy.o: ../include/ifsim.h sendestroy.o: ../include/jobdefs.h sendestroy.o: ../include/optdefs.h sendestroy.o: ../include/pzdefs.h sendestroy.o: ../include/sendefs.h sendestroy.o: ../include/smpdefs.h sendestroy.o: ../include/sperror.h sendestroy.o: ../include/trcvdefs.h sendestroy.o: ../include/tskdefs.h sendestroy.o: ../include/complex.h sendestroy.o: ../include/prefix.h sendestroy.o: ../include/suffix.h sendestroy.o: ../include/util.h sperror.o: ../include/acdefs.h sperror.o: ../include/cktdefs.h sperror.o: ../include/gendefs.h sperror.o: ../include/iferrmsgs.h sperror.o: ../include/ifsim.h sperror.o: ../include/jobdefs.h sperror.o: ../include/optdefs.h sperror.o: ../include/pzdefs.h sperror.o: ../include/sendefs.h sperror.o: ../include/smpdefs.h sperror.o: ../include/sperror.h sperror.o: ../include/trcvdefs.h sperror.o: ../include/tskdefs.h sperror.o: ../include/complex.h sperror.o: ../include/prefix.h sperror.o: ../include/suffix.h sperror.o: ../include/util.h pzan.o: ../include/acdefs.h pzan.o: ../include/cktdefs.h pzan.o: ../include/gendefs.h pzan.o: ../include/iferrmsgs.h pzan.o: ../include/ifsim.h pzan.o: ../include/jobdefs.h pzan.o: ../include/optdefs.h pzan.o: ../include/pzdefs.h pzan.o: ../include/sendefs.h pzan.o: ../include/smpdefs.h pzan.o: ../include/sperror.h pzan.o: ../include/trandefs.h pzan.o: ../include/trcvdefs.h pzan.o: ../include/tskdefs.h pzan.o: ../include/complex.h pzan.o: ../include/prefix.h pzan.o: ../include/suffix.h pzan.o: ../include/util.h pzaskquest.o: ../include/acdefs.h pzaskquest.o: ../include/cktdefs.h pzaskquest.o: ../include/gendefs.h pzaskquest.o: ../include/iferrmsgs.h pzaskquest.o: ../include/ifsim.h pzaskquest.o: ../include/jobdefs.h pzaskquest.o: ../include/optdefs.h pzaskquest.o: ../include/pzdefs.h pzaskquest.o: ../include/sendefs.h pzaskquest.o: ../include/smpdefs.h pzaskquest.o: ../include/trcvdefs.h pzaskquest.o: ../include/tskdefs.h pzaskquest.o: ../include/complex.h pzaskquest.o: ../include/prefix.h pzaskquest.o: ../include/suffix.h pzsetparm.o: ../include/acdefs.h pzsetparm.o: ../include/cktdefs.h pzsetparm.o: ../include/gendefs.h pzsetparm.o: ../include/iferrmsgs.h pzsetparm.o: ../include/ifsim.h pzsetparm.o: ../include/jobdefs.h pzsetparm.o: ../include/optdefs.h pzsetparm.o: ../include/pzdefs.h pzsetparm.o: ../include/sendefs.h pzsetparm.o: ../include/smpdefs.h pzsetparm.o: ../include/trcvdefs.h pzsetparm.o: ../include/tskdefs.h pzsetparm.o: ../include/complex.h pzsetparm.o: ../include/prefix.h pzsetparm.o: ../include/suffix.h tfanal.o: ../include/acdefs.h tfanal.o: ../include/cktdefs.h tfanal.o: ../include/gendefs.h tfanal.o: ../include/iferrmsgs.h tfanal.o: ../include/ifsim.h tfanal.o: ../include/jobdefs.h tfanal.o: ../include/optdefs.h tfanal.o: ../include/pzdefs.h tfanal.o: ../include/sendefs.h tfanal.o: ../include/smpdefs.h tfanal.o: ../include/sperror.h tfanal.o: ../include/tfdefs.h tfanal.o: ../include/trcvdefs.h tfanal.o: ../include/tskdefs.h tfanal.o: ../include/complex.h tfanal.o: ../include/prefix.h tfanal.o: ../include/suffix.h tfanal.o: ../include/util.h tfsetparm.o: ../include/acdefs.h tfsetparm.o: ../include/cktdefs.h tfsetparm.o: ../include/gendefs.h tfsetparm.o: ../include/iferrmsgs.h tfsetparm.o: ../include/ifsim.h tfsetparm.o: ../include/jobdefs.h tfsetparm.o: ../include/optdefs.h tfsetparm.o: ../include/pzdefs.h tfsetparm.o: ../include/sendefs.h tfsetparm.o: ../include/smpdefs.h tfsetparm.o: ../include/tfdefs.h tfsetparm.o: ../include/trcvdefs.h tfsetparm.o: ../include/tskdefs.h tfsetparm.o: ../include/complex.h tfsetparm.o: ../include/prefix.h tfsetparm.o: ../include/suffix.h tfsetparm.o: ../include/util.h tfaskquest.o: ../include/acdefs.h tfaskquest.o: ../include/cktdefs.h tfaskquest.o: ../include/gendefs.h tfaskquest.o: ../include/iferrmsgs.h tfaskquest.o: ../include/ifsim.h tfaskquest.o: ../include/jobdefs.h tfaskquest.o: ../include/optdefs.h tfaskquest.o: ../include/pzdefs.h tfaskquest.o: ../include/sendefs.h tfaskquest.o: ../include/smpdefs.h tfaskquest.o: ../include/trcvdefs.h tfaskquest.o: ../include/tskdefs.h tfaskquest.o: ../include/complex.h tfaskquest.o: ../include/prefix.h tfaskquest.o: ../include/suffix.h tranaskquest.o: ../include/acdefs.h tranaskquest.o: ../include/cktdefs.h tranaskquest.o: ../include/gendefs.h tranaskquest.o: ../include/iferrmsgs.h tranaskquest.o: ../include/ifsim.h tranaskquest.o: ../include/jobdefs.h tranaskquest.o: ../include/optdefs.h tranaskquest.o: ../include/pzdefs.h tranaskquest.o: ../include/sendefs.h tranaskquest.o: ../include/smpdefs.h tranaskquest.o: ../include/trandefs.h tranaskquest.o: ../include/trcvdefs.h tranaskquest.o: ../include/tskdefs.h tranaskquest.o: ../include/complex.h tranaskquest.o: ../include/prefix.h tranaskquest.o: ../include/suffix.h transetparm.o: ../include/acdefs.h transetparm.o: ../include/cktdefs.h transetparm.o: ../include/gendefs.h transetparm.o: ../include/iferrmsgs.h transetparm.o: ../include/ifsim.h transetparm.o: ../include/jobdefs.h transetparm.o: ../include/optdefs.h transetparm.o: ../include/pzdefs.h transetparm.o: ../include/sendefs.h transetparm.o: ../include/smpdefs.h transetparm.o: ../include/trandefs.h transetparm.o: ../include/trcvdefs.h transetparm.o: ../include/tskdefs.h transetparm.o: ../include/complex.h transetparm.o: ../include/prefix.h transetparm.o: ../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ asrc.c\ asrcask.c\ asrcacload.c\ asrcconvtest.c\ asrcdelete.c\ asrcdestroy.c\ asrcfindbr.c\ asrcload.c\ asrcmdelete.c\ asrcparam.c\ asrcpzload.c\ asrcsetup.c COBJS = \ asrc.o\ asrcask.o\ asrcacload.o\ asrcconvtest.o\ asrcdelete.o\ asrcdestroy.o\ asrcfindbr.o\ asrcload.o\ asrcmdelete.o\ asrcparam.o\ asrcpzload.o\ asrcsetup.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} ${PG} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lasrc.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Casrc ${LINTFLAGS} ${CFILES} mv llib-lasrc.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep #cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE asrc.o: ../../include/acdefs.h asrc.o: ../../include/asrcdefs.h asrc.o: ../../include/cktdefs.h asrc.o: ../../include/devdefs.h asrc.o: ../../include/gendefs.h asrc.o: ../../include/ifsim.h asrc.o: ../../include/jobdefs.h asrc.o: ../../include/optdefs.h asrc.o: ../../include/pzdefs.h asrc.o: ../../include/sendefs.h asrc.o: ../../include/smpdefs.h asrc.o: ../../include/trcvdefs.h asrc.o: ../../include/tskdefs.h asrc.o: ../../include/complex.h asrc.o: ../../include/prefix.h asrc.o: ../../include/suffix.h asrc.o: ../../include/util.h asrcask.o: ../../include/acdefs.h asrcask.o: ../../include/asrcdefs.h asrcask.o: ../../include/cktdefs.h asrcask.o: ../../include/devdefs.h asrcask.o: ../../include/gendefs.h asrcask.o: ../../include/iferrmsgs.h asrcask.o: ../../include/ifsim.h asrcask.o: ../../include/jobdefs.h asrcask.o: ../../include/optdefs.h asrcask.o: ../../include/pzdefs.h asrcask.o: ../../include/sendefs.h asrcask.o: ../../include/smpdefs.h asrcask.o: ../../include/sperror.h asrcask.o: ../../include/trcvdefs.h asrcask.o: ../../include/tskdefs.h asrcask.o: ../../include/complex.h asrcask.o: ../../include/prefix.h asrcask.o: ../../include/suffix.h asrcask.o: ../../include/util.h asrcacload.o: ../../include/acdefs.h asrcacload.o: ../../include/asrcdefs.h asrcacload.o: ../../include/cktdefs.h asrcacload.o: ../../include/gendefs.h asrcacload.o: ../../include/iferrmsgs.h asrcacload.o: ../../include/ifsim.h asrcacload.o: ../../include/jobdefs.h asrcacload.o: ../../include/optdefs.h asrcacload.o: ../../include/pzdefs.h asrcacload.o: ../../include/sendefs.h asrcacload.o: ../../include/smpdefs.h asrcacload.o: ../../include/sperror.h asrcacload.o: ../../include/trcvdefs.h asrcacload.o: ../../include/tskdefs.h asrcacload.o: ../../include/complex.h asrcacload.o: ../../include/prefix.h asrcacload.o: ../../include/suffix.h asrcacload.o: ../../include/util.h asrcconvtest.o: ../../include/acdefs.h asrcconvtest.o: ../../include/asrcdefs.h asrcconvtest.o: ../../include/cktdefs.h asrcconvtest.o: ../../include/gendefs.h asrcconvtest.o: ../../include/iferrmsgs.h asrcconvtest.o: ../../include/ifsim.h asrcconvtest.o: ../../include/jobdefs.h asrcconvtest.o: ../../include/optdefs.h asrcconvtest.o: ../../include/pzdefs.h asrcconvtest.o: ../../include/sendefs.h asrcconvtest.o: ../../include/smpdefs.h asrcconvtest.o: ../../include/sperror.h asrcconvtest.o: ../../include/trcvdefs.h asrcconvtest.o: ../../include/tskdefs.h asrcconvtest.o: ../../include/complex.h asrcconvtest.o: ../../include/prefix.h asrcconvtest.o: ../../include/suffix.h asrcconvtest.o: ../../include/util.h asrcdelete.o: ../../include/acdefs.h asrcdelete.o: ../../include/asrcdefs.h asrcdelete.o: ../../include/cktdefs.h asrcdelete.o: ../../include/gendefs.h asrcdelete.o: ../../include/iferrmsgs.h asrcdelete.o: ../../include/ifsim.h asrcdelete.o: ../../include/jobdefs.h asrcdelete.o: ../../include/optdefs.h asrcdelete.o: ../../include/pzdefs.h asrcdelete.o: ../../include/sendefs.h asrcdelete.o: ../../include/smpdefs.h asrcdelete.o: ../../include/sperror.h asrcdelete.o: ../../include/trcvdefs.h asrcdelete.o: ../../include/tskdefs.h asrcdelete.o: ../../include/complex.h asrcdelete.o: ../../include/prefix.h asrcdelete.o: ../../include/suffix.h asrcdelete.o: ../../include/util.h asrcdestroy.o: ../../include/acdefs.h asrcdestroy.o: ../../include/asrcdefs.h asrcdestroy.o: ../../include/cktdefs.h asrcdestroy.o: ../../include/gendefs.h asrcdestroy.o: ../../include/ifsim.h asrcdestroy.o: ../../include/jobdefs.h asrcdestroy.o: ../../include/optdefs.h asrcdestroy.o: ../../include/pzdefs.h asrcdestroy.o: ../../include/sendefs.h asrcdestroy.o: ../../include/smpdefs.h asrcdestroy.o: ../../include/trcvdefs.h asrcdestroy.o: ../../include/tskdefs.h asrcdestroy.o: ../../include/complex.h asrcdestroy.o: ../../include/prefix.h asrcdestroy.o: ../../include/suffix.h asrcdestroy.o: ../../include/util.h asrcfindbr.o: ../../include/acdefs.h asrcfindbr.o: ../../include/asrcdefs.h asrcfindbr.o: ../../include/cktdefs.h asrcfindbr.o: ../../include/gendefs.h asrcfindbr.o: ../../include/iferrmsgs.h asrcfindbr.o: ../../include/ifsim.h asrcfindbr.o: ../../include/jobdefs.h asrcfindbr.o: ../../include/optdefs.h asrcfindbr.o: ../../include/pzdefs.h asrcfindbr.o: ../../include/sendefs.h asrcfindbr.o: ../../include/smpdefs.h asrcfindbr.o: ../../include/sperror.h asrcfindbr.o: ../../include/trcvdefs.h asrcfindbr.o: ../../include/tskdefs.h asrcfindbr.o: ../../include/complex.h asrcfindbr.o: ../../include/prefix.h asrcfindbr.o: ../../include/suffix.h asrcfindbr.o: ../../include/util.h asrcload.o: ../../include/acdefs.h asrcload.o: ../../include/asrcdefs.h asrcload.o: ../../include/cktdefs.h asrcload.o: ../../include/gendefs.h asrcload.o: ../../include/iferrmsgs.h asrcload.o: ../../include/ifsim.h asrcload.o: ../../include/jobdefs.h asrcload.o: ../../include/optdefs.h asrcload.o: ../../include/pzdefs.h asrcload.o: ../../include/sendefs.h asrcload.o: ../../include/smpdefs.h asrcload.o: ../../include/sperror.h asrcload.o: ../../include/trcvdefs.h asrcload.o: ../../include/tskdefs.h asrcload.o: ../../include/complex.h asrcload.o: ../../include/prefix.h asrcload.o: ../../include/suffix.h asrcload.o: ../../include/util.h asrcmdelete.o: ../../include/acdefs.h asrcmdelete.o: ../../include/asrcdefs.h asrcmdelete.o: ../../include/cktdefs.h asrcmdelete.o: ../../include/gendefs.h asrcmdelete.o: ../../include/iferrmsgs.h asrcmdelete.o: ../../include/ifsim.h asrcmdelete.o: ../../include/jobdefs.h asrcmdelete.o: ../../include/optdefs.h asrcmdelete.o: ../../include/pzdefs.h asrcmdelete.o: ../../include/sendefs.h asrcmdelete.o: ../../include/smpdefs.h asrcmdelete.o: ../../include/sperror.h asrcmdelete.o: ../../include/trcvdefs.h asrcmdelete.o: ../../include/tskdefs.h asrcmdelete.o: ../../include/complex.h asrcmdelete.o: ../../include/prefix.h asrcmdelete.o: ../../include/suffix.h asrcmdelete.o: ../../include/util.h asrcparam.o: ../../include/acdefs.h asrcparam.o: ../../include/asrcdefs.h asrcparam.o: ../../include/cktdefs.h asrcparam.o: ../../include/gendefs.h asrcparam.o: ../../include/iferrmsgs.h asrcparam.o: ../../include/ifsim.h asrcparam.o: ../../include/jobdefs.h asrcparam.o: ../../include/optdefs.h asrcparam.o: ../../include/pzdefs.h asrcparam.o: ../../include/sendefs.h asrcparam.o: ../../include/smpdefs.h asrcparam.o: ../../include/sperror.h asrcparam.o: ../../include/trcvdefs.h asrcparam.o: ../../include/tskdefs.h asrcparam.o: ../../include/complex.h asrcparam.o: ../../include/prefix.h asrcparam.o: ../../include/suffix.h asrcparam.o: ../../include/util.h asrcpzload.o: ../../include/acdefs.h asrcpzload.o: ../../include/asrcdefs.h asrcpzload.o: ../../include/cktdefs.h asrcpzload.o: ../../include/gendefs.h asrcpzload.o: ../../include/iferrmsgs.h asrcpzload.o: ../../include/ifsim.h asrcpzload.o: ../../include/jobdefs.h asrcpzload.o: ../../include/optdefs.h asrcpzload.o: ../../include/pzdefs.h asrcpzload.o: ../../include/sendefs.h asrcpzload.o: ../../include/smpdefs.h asrcpzload.o: ../../include/sperror.h asrcpzload.o: ../../include/trcvdefs.h asrcpzload.o: ../../include/tskdefs.h asrcpzload.o: ../../include/complex.h asrcpzload.o: ../../include/prefix.h asrcpzload.o: ../../include/suffix.h asrcpzload.o: ../../include/util.h asrcsetup.o: ../../include/acdefs.h asrcsetup.o: ../../include/asrcdefs.h asrcsetup.o: ../../include/cktdefs.h asrcsetup.o: ../../include/gendefs.h asrcsetup.o: ../../include/iferrmsgs.h asrcsetup.o: ../../include/ifsim.h asrcsetup.o: ../../include/jobdefs.h asrcsetup.o: ../../include/optdefs.h asrcsetup.o: ../../include/pzdefs.h asrcsetup.o: ../../include/sendefs.h asrcsetup.o: ../../include/smpdefs.h asrcsetup.o: ../../include/sperror.h asrcsetup.o: ../../include/trcvdefs.h asrcsetup.o: ../../include/tskdefs.h asrcsetup.o: ../../include/complex.h asrcsetup.o: ../../include/prefix.h asrcsetup.o: ../../include/suffix.h asrcsetup.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ jfet.c\ jfetask.c\ jfetacload.c\ jfetdelete.c\ jfetdestroy.c\ jfetgetic.c\ jfetload.c\ jfetmask.c\ jfetmdelete.c\ jfetmparam.c\ jfetparam.c\ jfetpzload.c\ jfetsetup.c\ jfettemp.c\ jfettrunc.c COBJS = \ jfet.o\ jfetask.o\ jfetacload.o\ jfetdelete.o\ jfetdestroy.o\ jfetgetic.o\ jfetload.o\ jfetmask.o\ jfetmdelete.o\ jfetmparam.o\ jfetparam.o\ jfetpzload.o\ jfetsetup.o\ jfettemp.o\ jfettrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG= CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-ljfet.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cjfet ${LINTFLAGS} ${CFILES} mv llib-ljfet.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE jfet.o: ../../include/acdefs.h jfet.o: ../../include/cktdefs.h jfet.o: ../../include/devdefs.h jfet.o: ../../include/gendefs.h jfet.o: ../../include/ifsim.h jfet.o: ../../include/jfetdefs.h jfet.o: ../../include/jobdefs.h jfet.o: ../../include/optdefs.h jfet.o: ../../include/pzdefs.h jfet.o: ../../include/sendefs.h jfet.o: ../../include/smpdefs.h jfet.o: ../../include/trcvdefs.h jfet.o: ../../include/tskdefs.h jfet.o: ../../include/complex.h jfet.o: ../../include/prefix.h jfet.o: ../../include/suffix.h jfetask.o: ../../include/acdefs.h jfetask.o: ../../include/cktdefs.h jfetask.o: ../../include/const.h jfetask.o: ../../include/devdefs.h jfetask.o: ../../include/gendefs.h jfetask.o: ../../include/iferrmsgs.h jfetask.o: ../../include/ifsim.h jfetask.o: ../../include/jfetdefs.h jfetask.o: ../../include/jobdefs.h jfetask.o: ../../include/optdefs.h jfetask.o: ../../include/pzdefs.h jfetask.o: ../../include/sendefs.h jfetask.o: ../../include/smpdefs.h jfetask.o: ../../include/sperror.h jfetask.o: ../../include/trcvdefs.h jfetask.o: ../../include/tskdefs.h jfetask.o: ../../include/complex.h jfetask.o: ../../include/prefix.h jfetask.o: ../../include/suffix.h jfetask.o: ../../include/util.h jfetacload.o: ../../include/acdefs.h jfetacload.o: ../../include/cktdefs.h jfetacload.o: ../../include/gendefs.h jfetacload.o: ../../include/iferrmsgs.h jfetacload.o: ../../include/ifsim.h jfetacload.o: ../../include/jfetdefs.h jfetacload.o: ../../include/jobdefs.h jfetacload.o: ../../include/optdefs.h jfetacload.o: ../../include/pzdefs.h jfetacload.o: ../../include/sendefs.h jfetacload.o: ../../include/smpdefs.h jfetacload.o: ../../include/sperror.h jfetacload.o: ../../include/trcvdefs.h jfetacload.o: ../../include/tskdefs.h jfetacload.o: ../../include/complex.h jfetacload.o: ../../include/prefix.h jfetacload.o: ../../include/suffix.h jfetacload.o: ../../include/util.h jfetdelete.o: ../../include/acdefs.h jfetdelete.o: ../../include/cktdefs.h jfetdelete.o: ../../include/gendefs.h jfetdelete.o: ../../include/iferrmsgs.h jfetdelete.o: ../../include/ifsim.h jfetdelete.o: ../../include/jfetdefs.h jfetdelete.o: ../../include/jobdefs.h jfetdelete.o: ../../include/optdefs.h jfetdelete.o: ../../include/pzdefs.h jfetdelete.o: ../../include/sendefs.h jfetdelete.o: ../../include/smpdefs.h jfetdelete.o: ../../include/sperror.h jfetdelete.o: ../../include/trcvdefs.h jfetdelete.o: ../../include/tskdefs.h jfetdelete.o: ../../include/complex.h jfetdelete.o: ../../include/prefix.h jfetdelete.o: ../../include/suffix.h jfetdelete.o: ../../include/util.h jfetdestroy.o: ../../include/acdefs.h jfetdestroy.o: ../../include/cktdefs.h jfetdestroy.o: ../../include/gendefs.h jfetdestroy.o: ../../include/ifsim.h jfetdestroy.o: ../../include/jfetdefs.h jfetdestroy.o: ../../include/jobdefs.h jfetdestroy.o: ../../include/optdefs.h jfetdestroy.o: ../../include/pzdefs.h jfetdestroy.o: ../../include/sendefs.h jfetdestroy.o: ../../include/smpdefs.h jfetdestroy.o: ../../include/trcvdefs.h jfetdestroy.o: ../../include/tskdefs.h jfetdestroy.o: ../../include/complex.h jfetdestroy.o: ../../include/prefix.h jfetdestroy.o: ../../include/suffix.h jfetdestroy.o: ../../include/util.h jfetgetic.o: ../../include/acdefs.h jfetgetic.o: ../../include/cktdefs.h jfetgetic.o: ../../include/gendefs.h jfetgetic.o: ../../include/iferrmsgs.h jfetgetic.o: ../../include/ifsim.h jfetgetic.o: ../../include/jfetdefs.h jfetgetic.o: ../../include/jobdefs.h jfetgetic.o: ../../include/optdefs.h jfetgetic.o: ../../include/pzdefs.h jfetgetic.o: ../../include/sendefs.h jfetgetic.o: ../../include/smpdefs.h jfetgetic.o: ../../include/sperror.h jfetgetic.o: ../../include/trcvdefs.h jfetgetic.o: ../../include/tskdefs.h jfetgetic.o: ../../include/complex.h jfetgetic.o: ../../include/prefix.h jfetgetic.o: ../../include/suffix.h jfetload.o: ../../include/acdefs.h jfetload.o: ../../include/cktdefs.h jfetload.o: ../../include/const.h jfetload.o: ../../include/devdefs.h jfetload.o: ../../include/gendefs.h jfetload.o: ../../include/iferrmsgs.h jfetload.o: ../../include/ifsim.h jfetload.o: ../../include/jfetdefs.h jfetload.o: ../../include/jobdefs.h jfetload.o: ../../include/optdefs.h jfetload.o: ../../include/pzdefs.h jfetload.o: ../../include/sendefs.h jfetload.o: ../../include/smpdefs.h jfetload.o: ../../include/sperror.h jfetload.o: ../../include/trandefs.h jfetload.o: ../../include/trcvdefs.h jfetload.o: ../../include/tskdefs.h jfetload.o: ../../include/complex.h jfetload.o: ../../include/prefix.h jfetload.o: ../../include/suffix.h jfetload.o: ../../include/util.h jfetmask.o: ../../include/acdefs.h jfetmask.o: ../../include/cktdefs.h jfetmask.o: ../../include/const.h jfetmask.o: ../../include/devdefs.h jfetmask.o: ../../include/gendefs.h jfetmask.o: ../../include/iferrmsgs.h jfetmask.o: ../../include/ifsim.h jfetmask.o: ../../include/jfetdefs.h jfetmask.o: ../../include/jobdefs.h jfetmask.o: ../../include/optdefs.h jfetmask.o: ../../include/pzdefs.h jfetmask.o: ../../include/sendefs.h jfetmask.o: ../../include/smpdefs.h jfetmask.o: ../../include/sperror.h jfetmask.o: ../../include/trcvdefs.h jfetmask.o: ../../include/tskdefs.h jfetmask.o: ../../include/complex.h jfetmask.o: ../../include/prefix.h jfetmask.o: ../../include/suffix.h jfetmdelete.o: ../../include/acdefs.h jfetmdelete.o: ../../include/cktdefs.h jfetmdelete.o: ../../include/gendefs.h jfetmdelete.o: ../../include/iferrmsgs.h jfetmdelete.o: ../../include/ifsim.h jfetmdelete.o: ../../include/jfetdefs.h jfetmdelete.o: ../../include/jobdefs.h jfetmdelete.o: ../../include/optdefs.h jfetmdelete.o: ../../include/pzdefs.h jfetmdelete.o: ../../include/sendefs.h jfetmdelete.o: ../../include/smpdefs.h jfetmdelete.o: ../../include/sperror.h jfetmdelete.o: ../../include/trcvdefs.h jfetmdelete.o: ../../include/tskdefs.h jfetmdelete.o: ../../include/complex.h jfetmdelete.o: ../../include/prefix.h jfetmdelete.o: ../../include/suffix.h jfetmdelete.o: ../../include/util.h jfetmparam.o: ../../include/acdefs.h jfetmparam.o: ../../include/cktdefs.h jfetmparam.o: ../../include/const.h jfetmparam.o: ../../include/gendefs.h jfetmparam.o: ../../include/iferrmsgs.h jfetmparam.o: ../../include/ifsim.h jfetmparam.o: ../../include/jfetdefs.h jfetmparam.o: ../../include/jobdefs.h jfetmparam.o: ../../include/optdefs.h jfetmparam.o: ../../include/pzdefs.h jfetmparam.o: ../../include/sendefs.h jfetmparam.o: ../../include/smpdefs.h jfetmparam.o: ../../include/sperror.h jfetmparam.o: ../../include/trcvdefs.h jfetmparam.o: ../../include/tskdefs.h jfetmparam.o: ../../include/complex.h jfetmparam.o: ../../include/prefix.h jfetmparam.o: ../../include/suffix.h jfetmparam.o: ../../include/util.h jfetparam.o: ../../include/acdefs.h jfetparam.o: ../../include/cktdefs.h jfetparam.o: ../../include/const.h jfetparam.o: ../../include/gendefs.h jfetparam.o: ../../include/iferrmsgs.h jfetparam.o: ../../include/ifsim.h jfetparam.o: ../../include/jfetdefs.h jfetparam.o: ../../include/jobdefs.h jfetparam.o: ../../include/optdefs.h jfetparam.o: ../../include/pzdefs.h jfetparam.o: ../../include/sendefs.h jfetparam.o: ../../include/smpdefs.h jfetparam.o: ../../include/sperror.h jfetparam.o: ../../include/trcvdefs.h jfetparam.o: ../../include/tskdefs.h jfetparam.o: ../../include/complex.h jfetparam.o: ../../include/prefix.h jfetparam.o: ../../include/suffix.h jfetparam.o: ../../include/util.h jfetpzload.o: ../../include/acdefs.h jfetpzload.o: ../../include/cktdefs.h jfetpzload.o: ../../include/gendefs.h jfetpzload.o: ../../include/iferrmsgs.h jfetpzload.o: ../../include/ifsim.h jfetpzload.o: ../../include/jfetdefs.h jfetpzload.o: ../../include/jobdefs.h jfetpzload.o: ../../include/optdefs.h jfetpzload.o: ../../include/pzdefs.h jfetpzload.o: ../../include/sendefs.h jfetpzload.o: ../../include/smpdefs.h jfetpzload.o: ../../include/sperror.h jfetpzload.o: ../../include/trcvdefs.h jfetpzload.o: ../../include/tskdefs.h jfetpzload.o: ../../include/complex.h jfetpzload.o: ../../include/prefix.h jfetpzload.o: ../../include/suffix.h jfetsetup.o: ../../include/acdefs.h jfetsetup.o: ../../include/cktdefs.h jfetsetup.o: ../../include/const.h jfetsetup.o: ../../include/gendefs.h jfetsetup.o: ../../include/iferrmsgs.h jfetsetup.o: ../../include/ifsim.h jfetsetup.o: ../../include/jfetdefs.h jfetsetup.o: ../../include/jobdefs.h jfetsetup.o: ../../include/optdefs.h jfetsetup.o: ../../include/pzdefs.h jfetsetup.o: ../../include/sendefs.h jfetsetup.o: ../../include/smpdefs.h jfetsetup.o: ../../include/sperror.h jfetsetup.o: ../../include/trcvdefs.h jfetsetup.o: ../../include/tskdefs.h jfetsetup.o: ../../include/complex.h jfetsetup.o: ../../include/prefix.h jfetsetup.o: ../../include/suffix.h jfetsetup.o: ../../include/util.h jfettemp.o: ../../include/acdefs.h jfettemp.o: ../../include/cktdefs.h jfettemp.o: ../../include/const.h jfettemp.o: ../../include/gendefs.h jfettemp.o: ../../include/iferrmsgs.h jfettemp.o: ../../include/ifsim.h jfettemp.o: ../../include/jfetdefs.h jfettemp.o: ../../include/jobdefs.h jfettemp.o: ../../include/optdefs.h jfettemp.o: ../../include/pzdefs.h jfettemp.o: ../../include/sendefs.h jfettemp.o: ../../include/smpdefs.h jfettemp.o: ../../include/sperror.h jfettemp.o: ../../include/trcvdefs.h jfettemp.o: ../../include/tskdefs.h jfettemp.o: ../../include/complex.h jfettemp.o: ../../include/prefix.h jfettemp.o: ../../include/suffix.h jfettemp.o: ../../include/util.h jfettrunc.o: ../../include/acdefs.h jfettrunc.o: ../../include/cktdefs.h jfettrunc.o: ../../include/gendefs.h jfettrunc.o: ../../include/iferrmsgs.h jfettrunc.o: ../../include/ifsim.h jfettrunc.o: ../../include/jfetdefs.h jfettrunc.o: ../../include/jobdefs.h jfettrunc.o: ../../include/optdefs.h jfettrunc.o: ../../include/pzdefs.h jfettrunc.o: ../../include/sendefs.h jfettrunc.o: ../../include/smpdefs.h jfettrunc.o: ../../include/sperror.h jfettrunc.o: ../../include/trcvdefs.h jfettrunc.o: ../../include/tskdefs.h jfettrunc.o: ../../include/complex.h jfettrunc.o: ../../include/prefix.h jfettrunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mes.c\ mesacload.c\ mesask.c\ mesdelete.c\ mesdestroy.c\ mesgetic.c\ mesload.c\ mesmask.c\ mesmdelete.c\ mesmparam.c\ mesparam.c\ mespzload.c\ messetup.c\ mestemp.c\ mestrunc.c COBJS = \ mes.o\ mesacload.o\ mesask.o\ mesdelete.o\ mesdestroy.o\ mesgetic.o\ mesload.o\ mesmask.o\ mesmdelete.o\ mesmparam.o\ mesparam.o\ mespzload.o\ messetup.o\ mestemp.o\ mestrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lnm -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmes.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmes ${LINTFLAGS} ${CFILES} mv llib-lmes.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE mes.o: ../../include/acdefs.h mes.o: ../../include/cktdefs.h mes.o: ../../include/devdefs.h mes.o: ../../include/gendefs.h mes.o: ../../include/ifsim.h mes.o: ../../include/jobdefs.h mes.o: ../../include/mesdefs.h mes.o: ../../include/optdefs.h mes.o: ../../include/pzdefs.h mes.o: ../../include/sendefs.h mes.o: ../../include/smpdefs.h mes.o: ../../include/trcvdefs.h mes.o: ../../include/tskdefs.h mes.o: ../../include/complex.h mes.o: ../../include/prefix.h mes.o: ../../include/suffix.h mesacload.o: ../../include/acdefs.h mesacload.o: ../../include/cktdefs.h mesacload.o: ../../include/gendefs.h mesacload.o: ../../include/iferrmsgs.h mesacload.o: ../../include/ifsim.h mesacload.o: ../../include/jobdefs.h mesacload.o: ../../include/mesdefs.h mesacload.o: ../../include/optdefs.h mesacload.o: ../../include/pzdefs.h mesacload.o: ../../include/sendefs.h mesacload.o: ../../include/smpdefs.h mesacload.o: ../../include/sperror.h mesacload.o: ../../include/trcvdefs.h mesacload.o: ../../include/tskdefs.h mesacload.o: ../../include/complex.h mesacload.o: ../../include/prefix.h mesacload.o: ../../include/suffix.h mesacload.o: ../../include/util.h mesask.o: ../../include/acdefs.h mesask.o: ../../include/cktdefs.h mesask.o: ../../include/devdefs.h mesask.o: ../../include/gendefs.h mesask.o: ../../include/iferrmsgs.h mesask.o: ../../include/ifsim.h mesask.o: ../../include/jobdefs.h mesask.o: ../../include/mesdefs.h mesask.o: ../../include/optdefs.h mesask.o: ../../include/pzdefs.h mesask.o: ../../include/sendefs.h mesask.o: ../../include/smpdefs.h mesask.o: ../../include/sperror.h mesask.o: ../../include/trcvdefs.h mesask.o: ../../include/tskdefs.h mesask.o: ../../include/complex.h mesask.o: ../../include/prefix.h mesask.o: ../../include/suffix.h mesask.o: ../../include/util.h mesdelete.o: ../../include/acdefs.h mesdelete.o: ../../include/cktdefs.h mesdelete.o: ../../include/gendefs.h mesdelete.o: ../../include/iferrmsgs.h mesdelete.o: ../../include/ifsim.h mesdelete.o: ../../include/jobdefs.h mesdelete.o: ../../include/mesdefs.h mesdelete.o: ../../include/optdefs.h mesdelete.o: ../../include/pzdefs.h mesdelete.o: ../../include/sendefs.h mesdelete.o: ../../include/smpdefs.h mesdelete.o: ../../include/sperror.h mesdelete.o: ../../include/trcvdefs.h mesdelete.o: ../../include/tskdefs.h mesdelete.o: ../../include/complex.h mesdelete.o: ../../include/prefix.h mesdelete.o: ../../include/suffix.h mesdelete.o: ../../include/util.h mesdestroy.o: ../../include/acdefs.h mesdestroy.o: ../../include/cktdefs.h mesdestroy.o: ../../include/gendefs.h mesdestroy.o: ../../include/ifsim.h mesdestroy.o: ../../include/jobdefs.h mesdestroy.o: ../../include/mesdefs.h mesdestroy.o: ../../include/optdefs.h mesdestroy.o: ../../include/pzdefs.h mesdestroy.o: ../../include/sendefs.h mesdestroy.o: ../../include/smpdefs.h mesdestroy.o: ../../include/trcvdefs.h mesdestroy.o: ../../include/tskdefs.h mesdestroy.o: ../../include/complex.h mesdestroy.o: ../../include/prefix.h mesdestroy.o: ../../include/suffix.h mesdestroy.o: ../../include/util.h mesgetic.o: ../../include/acdefs.h mesgetic.o: ../../include/cktdefs.h mesgetic.o: ../../include/gendefs.h mesgetic.o: ../../include/iferrmsgs.h mesgetic.o: ../../include/ifsim.h mesgetic.o: ../../include/jobdefs.h mesgetic.o: ../../include/mesdefs.h mesgetic.o: ../../include/optdefs.h mesgetic.o: ../../include/pzdefs.h mesgetic.o: ../../include/sendefs.h mesgetic.o: ../../include/smpdefs.h mesgetic.o: ../../include/sperror.h mesgetic.o: ../../include/trcvdefs.h mesgetic.o: ../../include/tskdefs.h mesgetic.o: ../../include/complex.h mesgetic.o: ../../include/prefix.h mesgetic.o: ../../include/suffix.h mesgetic.o: ../../include/util.h mesload.o: ../../include/acdefs.h mesload.o: ../../include/cktdefs.h mesload.o: ../../include/const.h mesload.o: ../../include/devdefs.h mesload.o: ../../include/gendefs.h mesload.o: ../../include/iferrmsgs.h mesload.o: ../../include/ifsim.h mesload.o: ../../include/jobdefs.h mesload.o: ../../include/mesdefs.h mesload.o: ../../include/optdefs.h mesload.o: ../../include/pzdefs.h mesload.o: ../../include/sendefs.h mesload.o: ../../include/smpdefs.h mesload.o: ../../include/sperror.h mesload.o: ../../include/trandefs.h mesload.o: ../../include/trcvdefs.h mesload.o: ../../include/tskdefs.h mesload.o: ../../include/complex.h mesload.o: ../../include/prefix.h mesload.o: ../../include/suffix.h mesload.o: ../../include/util.h mesmask.o: ../../include/acdefs.h mesmask.o: ../../include/cktdefs.h mesmask.o: ../../include/devdefs.h mesmask.o: ../../include/gendefs.h mesmask.o: ../../include/iferrmsgs.h mesmask.o: ../../include/ifsim.h mesmask.o: ../../include/jobdefs.h mesmask.o: ../../include/mesdefs.h mesmask.o: ../../include/optdefs.h mesmask.o: ../../include/pzdefs.h mesmask.o: ../../include/sendefs.h mesmask.o: ../../include/smpdefs.h mesmask.o: ../../include/sperror.h mesmask.o: ../../include/trcvdefs.h mesmask.o: ../../include/tskdefs.h mesmask.o: ../../include/complex.h mesmask.o: ../../include/prefix.h mesmask.o: ../../include/suffix.h mesmdelete.o: ../../include/acdefs.h mesmdelete.o: ../../include/cktdefs.h mesmdelete.o: ../../include/gendefs.h mesmdelete.o: ../../include/iferrmsgs.h mesmdelete.o: ../../include/ifsim.h mesmdelete.o: ../../include/jobdefs.h mesmdelete.o: ../../include/mesdefs.h mesmdelete.o: ../../include/optdefs.h mesmdelete.o: ../../include/pzdefs.h mesmdelete.o: ../../include/sendefs.h mesmdelete.o: ../../include/smpdefs.h mesmdelete.o: ../../include/sperror.h mesmdelete.o: ../../include/trcvdefs.h mesmdelete.o: ../../include/tskdefs.h mesmdelete.o: ../../include/complex.h mesmdelete.o: ../../include/prefix.h mesmdelete.o: ../../include/suffix.h mesmdelete.o: ../../include/util.h mesmparam.o: ../../include/acdefs.h mesmparam.o: ../../include/cktdefs.h mesmparam.o: ../../include/gendefs.h mesmparam.o: ../../include/iferrmsgs.h mesmparam.o: ../../include/ifsim.h mesmparam.o: ../../include/jobdefs.h mesmparam.o: ../../include/mesdefs.h mesmparam.o: ../../include/optdefs.h mesmparam.o: ../../include/pzdefs.h mesmparam.o: ../../include/sendefs.h mesmparam.o: ../../include/smpdefs.h mesmparam.o: ../../include/sperror.h mesmparam.o: ../../include/trcvdefs.h mesmparam.o: ../../include/tskdefs.h mesmparam.o: ../../include/complex.h mesmparam.o: ../../include/prefix.h mesmparam.o: ../../include/suffix.h mesmparam.o: ../../include/util.h mesparam.o: ../../include/acdefs.h mesparam.o: ../../include/cktdefs.h mesparam.o: ../../include/gendefs.h mesparam.o: ../../include/iferrmsgs.h mesparam.o: ../../include/ifsim.h mesparam.o: ../../include/jobdefs.h mesparam.o: ../../include/mesdefs.h mesparam.o: ../../include/optdefs.h mesparam.o: ../../include/pzdefs.h mesparam.o: ../../include/sendefs.h mesparam.o: ../../include/smpdefs.h mesparam.o: ../../include/sperror.h mesparam.o: ../../include/trcvdefs.h mesparam.o: ../../include/tskdefs.h mesparam.o: ../../include/complex.h mesparam.o: ../../include/prefix.h mesparam.o: ../../include/suffix.h mesparam.o: ../../include/util.h mespzload.o: ../../include/acdefs.h mespzload.o: ../../include/cktdefs.h mespzload.o: ../../include/gendefs.h mespzload.o: ../../include/iferrmsgs.h mespzload.o: ../../include/ifsim.h mespzload.o: ../../include/jobdefs.h mespzload.o: ../../include/mesdefs.h mespzload.o: ../../include/optdefs.h mespzload.o: ../../include/pzdefs.h mespzload.o: ../../include/sendefs.h mespzload.o: ../../include/smpdefs.h mespzload.o: ../../include/sperror.h mespzload.o: ../../include/trcvdefs.h mespzload.o: ../../include/tskdefs.h mespzload.o: ../../include/complex.h mespzload.o: ../../include/prefix.h mespzload.o: ../../include/suffix.h mespzload.o: ../../include/util.h messetup.o: ../../include/acdefs.h messetup.o: ../../include/cktdefs.h messetup.o: ../../include/const.h messetup.o: ../../include/gendefs.h messetup.o: ../../include/iferrmsgs.h messetup.o: ../../include/ifsim.h messetup.o: ../../include/jobdefs.h messetup.o: ../../include/mesdefs.h messetup.o: ../../include/optdefs.h messetup.o: ../../include/pzdefs.h messetup.o: ../../include/sendefs.h messetup.o: ../../include/smpdefs.h messetup.o: ../../include/sperror.h messetup.o: ../../include/trcvdefs.h messetup.o: ../../include/tskdefs.h messetup.o: ../../include/complex.h messetup.o: ../../include/prefix.h messetup.o: ../../include/suffix.h messetup.o: ../../include/util.h mestemp.o: ../../include/acdefs.h mestemp.o: ../../include/cktdefs.h mestemp.o: ../../include/const.h mestemp.o: ../../include/gendefs.h mestemp.o: ../../include/iferrmsgs.h mestemp.o: ../../include/ifsim.h mestemp.o: ../../include/jobdefs.h mestemp.o: ../../include/mesdefs.h mestemp.o: ../../include/optdefs.h mestemp.o: ../../include/pzdefs.h mestemp.o: ../../include/sendefs.h mestemp.o: ../../include/smpdefs.h mestemp.o: ../../include/sperror.h mestemp.o: ../../include/trcvdefs.h mestemp.o: ../../include/tskdefs.h mestemp.o: ../../include/complex.h mestemp.o: ../../include/prefix.h mestemp.o: ../../include/suffix.h mestemp.o: ../../include/util.h mestrunc.o: ../../include/acdefs.h mestrunc.o: ../../include/cktdefs.h mestrunc.o: ../../include/gendefs.h mestrunc.o: ../../include/iferrmsgs.h mestrunc.o: ../../include/ifsim.h mestrunc.o: ../../include/jobdefs.h mestrunc.o: ../../include/mesdefs.h mestrunc.o: ../../include/optdefs.h mestrunc.o: ../../include/pzdefs.h mestrunc.o: ../../include/sendefs.h mestrunc.o: ../../include/smpdefs.h mestrunc.o: ../../include/sperror.h mestrunc.o: ../../include/trcvdefs.h mestrunc.o: ../../include/tskdefs.h mestrunc.o: ../../include/complex.h mestrunc.o: ../../include/prefix.h mestrunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above # Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mos1.c\ mos1acload.c\ mos1ask.c\ mos1convtest.c\ mos1delete.c\ mos1destroy.c\ mos1getic.c\ mos1load.c\ mos1mask.c\ mos1mdelete.c\ mos1mparam.c\ mos1param.c\ mos1pzload.c\ mos1sacload.c\ mos1sload.c\ mos1sprint.c\ mos1ssetup.c\ mos1supdate.c\ mos1setup.c\ mos1temp.c\ mos1trunc.c COBJS = \ mos1.o\ mos1acload.o\ mos1ask.o\ mos1convtest.o\ mos1delete.o\ mos1destroy.o\ mos1getic.o\ mos1load.o\ mos1mask.o\ mos1mdelete.o\ mos1mparam.o\ mos1param.o\ mos1pzload.o\ mos1sacload.o\ mos1sload.o\ mos1sprint.o\ mos1ssetup.o\ mos1supdate.o\ mos1setup.o\ mos1temp.o\ mos1trunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS = -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmos1.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmos1 ${LINTFLAGS} ${CFILES} mv llib-lmos1.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE mos1.o: ../../include/acdefs.h mos1.o: ../../include/cktdefs.h mos1.o: ../../include/devdefs.h mos1.o: ../../include/gendefs.h mos1.o: ../../include/ifsim.h mos1.o: ../../include/jobdefs.h mos1.o: ../../include/mos1defs.h mos1.o: ../../include/optdefs.h mos1.o: ../../include/pzdefs.h mos1.o: ../../include/sendefs.h mos1.o: ../../include/smpdefs.h mos1.o: ../../include/trcvdefs.h mos1.o: ../../include/tskdefs.h mos1.o: ../../include/complex.h mos1.o: ../../include/prefix.h mos1.o: ../../include/suffix.h mos1acload.o: ../../include/acdefs.h mos1acload.o: ../../include/cktdefs.h mos1acload.o: ../../include/gendefs.h mos1acload.o: ../../include/iferrmsgs.h mos1acload.o: ../../include/ifsim.h mos1acload.o: ../../include/jobdefs.h mos1acload.o: ../../include/mos1defs.h mos1acload.o: ../../include/optdefs.h mos1acload.o: ../../include/pzdefs.h mos1acload.o: ../../include/sendefs.h mos1acload.o: ../../include/smpdefs.h mos1acload.o: ../../include/sperror.h mos1acload.o: ../../include/trcvdefs.h mos1acload.o: ../../include/tskdefs.h mos1acload.o: ../../include/complex.h mos1acload.o: ../../include/prefix.h mos1acload.o: ../../include/suffix.h mos1ask.o: ../../include/acdefs.h mos1ask.o: ../../include/cktdefs.h mos1ask.o: ../../include/const.h mos1ask.o: ../../include/devdefs.h mos1ask.o: ../../include/gendefs.h mos1ask.o: ../../include/iferrmsgs.h mos1ask.o: ../../include/ifsim.h mos1ask.o: ../../include/jobdefs.h mos1ask.o: ../../include/mos1defs.h mos1ask.o: ../../include/optdefs.h mos1ask.o: ../../include/pzdefs.h mos1ask.o: ../../include/sendefs.h mos1ask.o: ../../include/smpdefs.h mos1ask.o: ../../include/sperror.h mos1ask.o: ../../include/trcvdefs.h mos1ask.o: ../../include/tskdefs.h mos1ask.o: ../../include/complex.h mos1ask.o: ../../include/prefix.h mos1ask.o: ../../include/suffix.h mos1ask.o: ../../include/util.h mos1convtest.o: ../../include/acdefs.h mos1convtest.o: ../../include/cktdefs.h mos1convtest.o: ../../include/gendefs.h mos1convtest.o: ../../include/iferrmsgs.h mos1convtest.o: ../../include/ifsim.h mos1convtest.o: ../../include/jobdefs.h mos1convtest.o: ../../include/mos1defs.h mos1convtest.o: ../../include/optdefs.h mos1convtest.o: ../../include/pzdefs.h mos1convtest.o: ../../include/sendefs.h mos1convtest.o: ../../include/smpdefs.h mos1convtest.o: ../../include/sperror.h mos1convtest.o: ../../include/trcvdefs.h mos1convtest.o: ../../include/tskdefs.h mos1convtest.o: ../../include/complex.h mos1convtest.o: ../../include/prefix.h mos1convtest.o: ../../include/suffix.h mos1convtest.o: ../../include/util.h mos1delete.o: ../../include/acdefs.h mos1delete.o: ../../include/cktdefs.h mos1delete.o: ../../include/gendefs.h mos1delete.o: ../../include/iferrmsgs.h mos1delete.o: ../../include/ifsim.h mos1delete.o: ../../include/jobdefs.h mos1delete.o: ../../include/mos1defs.h mos1delete.o: ../../include/optdefs.h mos1delete.o: ../../include/pzdefs.h mos1delete.o: ../../include/sendefs.h mos1delete.o: ../../include/smpdefs.h mos1delete.o: ../../include/sperror.h mos1delete.o: ../../include/trcvdefs.h mos1delete.o: ../../include/tskdefs.h mos1delete.o: ../../include/complex.h mos1delete.o: ../../include/prefix.h mos1delete.o: ../../include/suffix.h mos1delete.o: ../../include/util.h mos1destroy.o: ../../include/acdefs.h mos1destroy.o: ../../include/cktdefs.h mos1destroy.o: ../../include/gendefs.h mos1destroy.o: ../../include/ifsim.h mos1destroy.o: ../../include/jobdefs.h mos1destroy.o: ../../include/mos1defs.h mos1destroy.o: ../../include/optdefs.h mos1destroy.o: ../../include/pzdefs.h mos1destroy.o: ../../include/sendefs.h mos1destroy.o: ../../include/smpdefs.h mos1destroy.o: ../../include/trcvdefs.h mos1destroy.o: ../../include/tskdefs.h mos1destroy.o: ../../include/complex.h mos1destroy.o: ../../include/prefix.h mos1destroy.o: ../../include/suffix.h mos1destroy.o: ../../include/util.h mos1getic.o: ../../include/acdefs.h mos1getic.o: ../../include/cktdefs.h mos1getic.o: ../../include/gendefs.h mos1getic.o: ../../include/iferrmsgs.h mos1getic.o: ../../include/ifsim.h mos1getic.o: ../../include/jobdefs.h mos1getic.o: ../../include/mos1defs.h mos1getic.o: ../../include/optdefs.h mos1getic.o: ../../include/pzdefs.h mos1getic.o: ../../include/sendefs.h mos1getic.o: ../../include/smpdefs.h mos1getic.o: ../../include/sperror.h mos1getic.o: ../../include/trcvdefs.h mos1getic.o: ../../include/tskdefs.h mos1getic.o: ../../include/complex.h mos1getic.o: ../../include/prefix.h mos1getic.o: ../../include/suffix.h mos1load.o: ../../include/acdefs.h mos1load.o: ../../include/cktdefs.h mos1load.o: ../../include/const.h mos1load.o: ../../include/devdefs.h mos1load.o: ../../include/gendefs.h mos1load.o: ../../include/iferrmsgs.h mos1load.o: ../../include/ifsim.h mos1load.o: ../../include/jobdefs.h mos1load.o: ../../include/mos1defs.h mos1load.o: ../../include/optdefs.h mos1load.o: ../../include/pzdefs.h mos1load.o: ../../include/sendefs.h mos1load.o: ../../include/smpdefs.h mos1load.o: ../../include/sperror.h mos1load.o: ../../include/trandefs.h mos1load.o: ../../include/trcvdefs.h mos1load.o: ../../include/tskdefs.h mos1load.o: ../../include/complex.h mos1load.o: ../../include/prefix.h mos1load.o: ../../include/suffix.h mos1load.o: ../../include/util.h mos1mask.o: ../../include/acdefs.h mos1mask.o: ../../include/cktdefs.h mos1mask.o: ../../include/const.h mos1mask.o: ../../include/devdefs.h mos1mask.o: ../../include/gendefs.h mos1mask.o: ../../include/iferrmsgs.h mos1mask.o: ../../include/ifsim.h mos1mask.o: ../../include/jobdefs.h mos1mask.o: ../../include/mos1defs.h mos1mask.o: ../../include/optdefs.h mos1mask.o: ../../include/pzdefs.h mos1mask.o: ../../include/sendefs.h mos1mask.o: ../../include/smpdefs.h mos1mask.o: ../../include/sperror.h mos1mask.o: ../../include/trcvdefs.h mos1mask.o: ../../include/tskdefs.h mos1mask.o: ../../include/complex.h mos1mask.o: ../../include/prefix.h mos1mask.o: ../../include/suffix.h mos1mdelete.o: ../../include/acdefs.h mos1mdelete.o: ../../include/cktdefs.h mos1mdelete.o: ../../include/gendefs.h mos1mdelete.o: ../../include/iferrmsgs.h mos1mdelete.o: ../../include/ifsim.h mos1mdelete.o: ../../include/jobdefs.h mos1mdelete.o: ../../include/mos1defs.h mos1mdelete.o: ../../include/optdefs.h mos1mdelete.o: ../../include/pzdefs.h mos1mdelete.o: ../../include/sendefs.h mos1mdelete.o: ../../include/smpdefs.h mos1mdelete.o: ../../include/sperror.h mos1mdelete.o: ../../include/trcvdefs.h mos1mdelete.o: ../../include/tskdefs.h mos1mdelete.o: ../../include/complex.h mos1mdelete.o: ../../include/prefix.h mos1mdelete.o: ../../include/suffix.h mos1mdelete.o: ../../include/util.h mos1mparam.o: ../../include/acdefs.h 0707070124060341251006440006700000000000011777770500302372300004200000004204spice3c1/spice3/include/optdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef OPT #define OPT "OPTdefs.h $Revision: 1.9 $ on $Date: 89/03/19 12:43:48 $ " /* structure used to describe the statistics to be collected */ typedef struct { int STATnumIter; /* number of total iterations performed */ int STATtranIter; /* number of iterations for transient analysis */ int STAToldIter; /* number of iterations at the end of the last point */ /* used to compute iterations per point */ int STATtimePts; /* total number of timepoints */ int STATaccepted; /* number of timepoints accepted */ int STATrejected; /* number of timepoints rejected */ double STATtotAnalTime; /* total time for analysis */ double STATtranTime; /* transient analysis time */ double STATloadTime; /* time spent in device loading */ double STATdecompTime; /* total time spent in LU decomposition */ double STATsolveTime; /* total time spent in F-B subst. */ double STATreorderTime; /* total time spent reordering */ double STATtranDecompTime; /* time spent in transient LU decomposition */ double STATtranSolveTime; /* time spent in transient F-B Subst. */ } STATistics; #define OPT_GMIN 1 #define OPT_RELTOL 2 #define OPT_ABSTOL 3 #define OPT_VNTOL 4 #define OPT_TRTOL 5 #define OPT_CHGTOL 6 #define OPT_PIVTOL 7 #define OPT_PIVREL 8 #define OPT_TNOM 9 #define OPT_ITL1 10 #define OPT_ITL2 11 #define OPT_ITL3 12 #define OPT_ITL4 13 #define OPT_ITL5 14 #define OPT_DEFL 15 #define OPT_DEFW 16 #define OPT_DEFAD 17 #define OPT_DEFAS 18 #define OPT_BYPASS 19 #define OPT_MAXORD 20 #define OPT_ITERS 21 #define OPT_TRANIT 22 #define OPT_TRANPTS 23 #define OPT_TRANACCPT 24 #define OPT_TRANRJCT 25 #define OPT_TOTANALTIME 26 #define OPT_TRANTIME 27 #define OPT_LOADTIME 28 #define OPT_DECOMP 29 #define OPT_SOLVE 30 #define OPT_TRANDECOMP 31 #define OPT_TRANSOLVE 32 #define OPT_TEMP 33 #define OPT_OLDLIMIT 34 #define OPT_TRANCURITER 35 #define OPT_SRCSTEPS 36 #define OPT_GMINSTEPS 37 #define OPT_MINBREAK 38 #define OPT_NOOPITER 39 #define OPT_EQNS 40 #define OPT_REORDTIME 41 #define OPT_METHOD 42 #endif /*OPT*/ 0707070124060341261006440006700000000000011777770500302372300004100000000657spice3c1/spice3/include/opdefs.h /* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef DCOP #define DCOP "OPdefs.h $Revision: 1.2 $ on $Date: 87/10/06 16:52:37 $ " #include "jobdefs.h" #include "tskdefs.h" /* * structures used to describe D.C. operationg point analyses to * be performed. */ typedef struct { int JOBtype; JOB *JOBnextJob; char *JOBname; } OP; extern int DCOsetParm(); extern int DCOaskQuest(); #endif /*DCOP*/ 0707070124060341271006440006700000000000011777770500302372300004100000001643spice3c1/spice3/include/pzdefs.h/* * Copyright (c) 1985 Mani B. Srivastava */ #ifndef PZDEFS #define PZDEFS "PZdefs.h $Revision: 1.3 $ on $Date: 88/11/16 21:55:29 $ " /* structure used to describe an PZ analysis to be performed */ #include "jobdefs.h" typedef struct sroot { double real; double imag; struct sroot *next; } root; typedef struct { int JOBtype; JOB *JOBnextJob; IFuid JOBname; int PZnodeI ; int PZnodeG ; int PZnodeJ ; int PZnodeK ; int PZdiffJK ; int PZdiffIG ; int PZflagVI ; int PZflagPZ ; int PZnumswaps ; root* PZpoleList; root* PZzeroList; double *PZJK_Jptr; double *PZJK_Kptr; double *PZJK_JKptr; double *PZIG_Iptr; double *PZIG_Gptr; double *PZIG_IGptr; } PZAN; #define PZ_NODEI 1 #define PZ_NODEG 2 #define PZ_NODEJ 3 #define PZ_NODEK 4 #define PZ_V 5 #define PZ_I 6 #define PZ_POL 7 #define PZ_ZER 8 #define PZ_PZ 9 #endif /*PZDEFS*/ 0707070124060341301006440006700000000000011777770500302372300004200000012224spice3c1/spice3/include/resdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef RES #define RES "RESdefs.h $Revision: 1.4 $ on $Date: 88/11/16 21:55:30 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* definitions used to describe resistors */ /* information used to describe a single instance */ typedef struct sRESinstance { struct sRESmodel *RESmodPtr; /* backpointer to model */ struct sRESinstance *RESnextInstance; /* pointer to next instance of * current model*/ IFuid RESname; /* pointer to character string naming this instance */ int RESposNode; /* number of positive node of resistor */ int RESnegNode; /* number of negative node of resistor */ double REStemp; /* temperature at which this resistor operates */ double RESconduct; /* conductance at current analysis temperature */ double RESresist; /* resistance at temperature Tnom */ double RESwidth; /* width of the resistor */ double RESlength; /* length of the resistor */ double *RESposPosptr; /* pointer to sparse matrix diagonal at * (positive,positive) */ double *RESnegNegptr; /* pointer to sparse matrix diagonal at * (negative,negative) */ double *RESposNegptr; /* pointer to sparse matrix offdiagonal at * (positive,negative) */ double *RESnegPosptr; /* pointer to sparse matrix offdiagonal at * (negative,positive) */ unsigned RESresGiven : 1; /* flag to indicate resistance was specified */ unsigned RESwidthGiven : 1; /* flag to indicate width given */ unsigned RESlengthGiven : 1; /* flag to indicate length given */ unsigned REStempGiven : 1; /* indicates temperature specified */ int RESsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } RESinstance ; /* per model data */ typedef struct sRESmodel { /* model structure for a resistor */ int RESmodType; /* type index of this device type */ struct sRESmodel *RESnextModel; /* pointer to next possible model in * linked list */ RESinstance * RESinstances; /* pointer to list of instances that have this * model */ IFuid RESmodName; /* pointer to character string naming this model */ double REStnom; /* temperature at which resistance measured */ double REStempCoeff1; /* first temperature coefficient of resistors */ double REStempCoeff2; /* second temperature coefficient of resistors */ double RESsheetRes; /* sheet resistance of devices in ohms/square */ double RESdefWidth; /* default width of a resistor */ double RESnarrow; /* amount by which device is narrower than drawn */ unsigned REStnomGiven: 1; /* flag to indicate nominal temp. was given */ unsigned REStc1Given : 1; /* flag to indicate tc1 was specified */ unsigned REStc2Given : 1; /* flag to indicate tc2 was specified */ unsigned RESsheetResGiven :1; /* flag to indicate sheet resistance given*/ unsigned RESdefWidthGiven :1; /* flag to indicate default width given */ unsigned RESnarrowGiven :1; /* flag to indicate narrow effect given */ } RESmodel; /* device parameters */ #define RES_RESIST 1 #define RES_WIDTH 2 #define RES_LENGTH 3 #define RES_CONDUCT 4 #define RES_RESIST_SENS 5 #define RES_CURRENT 6 #define RES_POWER 7 #define RES_TEMP 8 /* model parameters */ #define RES_MOD_TC1 101 #define RES_MOD_TC2 102 #define RES_MOD_RSH 103 #define RES_MOD_DEFWIDTH 104 #define RES_MOD_NARROW 105 #define RES_MOD_R 106 #define RES_MOD_TNOM 107 /* device questions */ #define RES_QUEST_SENS_REAL 201 #define RES_QUEST_SENS_IMAG 202 #define RES_QUEST_SENS_MAG 203 #define RES_QUEST_SENS_PH 204 #define RES_QUEST_SENS_CPLX 205 #define RES_QUEST_SENS_DC 206 /* model questions */ #ifdef __STDC__ extern int RESask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int RESdelete(GENmodel*,IFuid,GENinstance**); extern void RESdestroy(GENmodel**); extern int RESload(GENmodel*,CKTcircuit*); extern int RESmodAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int RESmDelete(GENmodel**,IFuid,GENmodel*); extern int RESmParam(int,IFvalue*,GENmodel*); extern int RESparam(int,IFvalue*,GENinstance*,IFvalue*); extern int RESpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int RESsAcLoad(GENmodel*,CKTcircuit*); extern int RESsLoad(GENmodel*,CKTcircuit*); extern int RESsSetup(SENstruct*,GENmodel*); extern void RESsPrint(GENmodel*,CKTcircuit*); extern int RESsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int REStemp(GENmodel*,CKTcircuit*); #else /* stdc */ extern int RESask(); extern int RESdelete(); extern void RESdestroy(); extern int RESload(); extern int RESmodAsk(); extern int RESmDelete(); extern int RESmParam(); extern int RESparam(); extern int RESpzLoad(); extern int RESsAcLoad(); extern int RESsLoad(); extern int RESsSetup(); extern void RESsPrint(); extern int RESsetup(); extern int REStemp(); #endif /* stdc */ #endif /*RES*/ 0707070124060341311006440006700000000000011777770500302372300004200000004405spice3c1/spice3/include/sendefs.h/* * SENdefs.h - structures for sensitivity package */ #ifndef SENSTRUCTS #define SENSTRUCTS #include "smpdefs.h" #include "jobdefs.h" typedef struct { int JOBtype; JOB *JOBnextJob; /* pointer to next thing to do */ char *JOBname; /* name of this job */ int SENnumVal; /* length of the next two arrays */ char **SENdevices; /* names of the devices to do sensetivity analysis of */ char **SENparmNames;/* parameters of the above devices to do analysis wrt */ unsigned int SENinitflag :1 ; /* indicates whether sensitivity structure*/ /* is to be initialized */ unsigned int SENicflag :1 ; /* indicates whether initial conditions are specified for transient analysis */ unsigned int SENstatus :1; /* indicates whether perturbation is in progress*/ unsigned int SENacpertflag :1; /* indictes whether the perturbation is to be carried out in ac analysis (is done only for first frequency )*/ int SENmode; /* indicates the type of sensitivity analysis reqired: DC, Transient, or AC */ int SENparms; /* # of design parameters */ double SENpertfac; /* perturbation factor (for active devices )*/ double **SEN_Sap; /* sensitivity matrix (DC and transient )*/ double **SEN_RHS; /* RHS matrix (real part) contains the sensitivity values after SMPsolve*/ double **SEN_iRHS; /* RHS matrix (imag part ) contains the sensitivity values after SMPsolve*/ int SENsize; /* stores the number of rows of each of the above three matrices */ SMPmatrix *SEN_Jacmat; /* sensitivity Jacobian matrix, */ double *SEN_parmVal; /* table containing values of design parameters */ char **SEN_parmName; /* table containing names of design parameters */ } SENstruct; /* SENmode */ #define DCSEN 0x1 #define TRANSEN 0x2 #define ACSEN 0x4 #define NORMAL 0 #define PERTURBATION 1 #define OFF 0 #define ON 1 #define SEN_AC 1 #define SEN_DC 2 #define SEN_TRAN 3 #define SEN_DEV 4 #define SEN_PARM 5 #endif /* SENSTRUCTS */ 0707070124060341321006440006700000000000011777770500302372300004200000010517spice3c1/spice3/include/smpdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef SMP #define SMP "SMPdefs.h $Revision: 1.3 $ on $Date: 88/11/16 21:55:35 $ " #include "complex.h" #include /* * SMPdefs.h - structures for sparse matrix package */ typedef struct sSMPelement { /* next two entries (value,iValue) MUST remain adjacent and in */ /* that order due to the definition of 'complex' used */ double SMPvalue; /* matrix entry for this point */ double SMPiValue; /* imaginary matrix entry for this point */ struct sSMPelement *SMProwNext; /* pointer to next in row */ struct sSMPelement *SMPcolNext; /* pointer to next in column */ int SMProwNumber; /* internal row number */ int SMPcolNumber; /* internal column number */ } SMPelement; typedef struct { /* all below except size are actually arrays * but the compiler insists they be declared * as pointers since I can't specify how big * they are at compile time - they are all * allocated dynamically. */ SMPelement **SMProwHead; /* pointer to first in row */ SMPelement **SMPcolHead; /* pointer to first in col */ int *SMProwCount; /* number in row excluding diag -1 */ int *SMPcolCount; /* number in column excluding diag -1 */ int *SMProwMapIn; /* mapping array from external to * internal row numbers */ int *SMPcolMapIn; /* mapping array from external to * internal column numbers */ int *SMProwMapOut; /* mapping array from internal to * external row numbers */ int *SMPcolMapOut; /* mapping array from internal to * external column numbers */ int SMPsize; /* number of rows and columns */ int SMPallocSize; /* number of rows and columns alocated */ int SMPnonZero; /* number of non-zero terms in matrix */ int SMPoldNonZ; /* number of non-zero terms in * matrix before reordering */ int SMPbadi; /* row of last troublesome entry */ int SMPbadj; /* column of last troublesome entry*/ }SMPmatrix; typedef struct { int SMPorder; int SMPnonZeros; int SMPnonZerosBeforeReorder; double SMPlargestDiag; double SMPsmallestDiag; double SMPlargestNonZero; double SMPsmallestNonZero; } SMPstatistics; #define SMPextToIntMapRow(row,matrix) (*((matrix->SMProwMapIn)+row)) #define SMPextToIntMapCol(col,matrix) (*((matrix->SMPcolMapIn)+col)) #define SMPintToExtMapRow(row,matrix) (*((matrix->SMProwMapOut)+row)) #define SMPintToExtMapCol(col,matrix) (*((matrix->SMPcolMapOut)+col)) #define GROUNDNODE(matrix) 0 /* amount we grow the SMP tables by as the matrix grows */ #define SMPALLOCINCREMENT 100 #ifdef __STDC__ int SMPaddElt( SMPmatrix *, int , int , double ); void SMPcClear( SMPmatrix *); int SMPcLUfac( SMPmatrix *, double ); int SMPcProdDiag( SMPmatrix *, SPcomplex *, int *); int SMPcReorder( SMPmatrix * , double , double , int *); void SMPcSolve( SMPmatrix *, double [], double [], double [], double []); void SMPclear( SMPmatrix *); void SMPcolSwap( SMPmatrix * , int , int ); void SMPdestroy( SMPmatrix *); int SMPfillup( SMPmatrix * ); SMPelement * SMPfindElt( SMPmatrix *, int , int , int ); void SMPgetError( SMPmatrix *, int *, int *); int SMPluFac( SMPmatrix *, double , double ); double * SMPmakeElt( SMPmatrix * , int , int ); int SMPmatSize( SMPmatrix *); int SMPnewMatrix( SMPmatrix ** ); int SMPnewNode( int , SMPmatrix *); int SMPpreOrder( SMPmatrix *); void SMPprint( SMPmatrix * , FILE *); int SMPreorder( SMPmatrix * , double , double , double ); void SMProwSwap( SMPmatrix * , int , int ); void SMPsolve( SMPmatrix *, double [], double []); #else /* stdc */ int SMPaddElt(); void SMPcClear(); int SMPcLUfac(); int SMPcProdDiag(); int SMPcReorder(); void SMPcSolve(); void SMPclear(); void SMPcolSwap(); void SMPdestroy(); int SMPfillup(); SMPelement * SMPfindElt(); void SMPgetError(); int SMPluFac(); double * SMPmakeElt(); int SMPmatSize(); int SMPnewMatrix(); int SMPnewNode(); int SMPpreOrder(); void SMPprint(); int SMPreorder(); void SMProwSwap(); void SMPsolve(); #endif /* stdc */ #endif /*SMP*/ 0707070124060341331006440006700000000000011777770500302372300004200000002325spice3c1/spice3/include/sperror.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef ERRORS #define ERRORS "error.h $Revision: 1.4 $ on $Date: 88/11/17 02:37:19 $ " #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include /* * definitions for error codes returned by SPICE3 routines. */ #define E_INTERN E_PANIC #define E_BADMATRIX (E_PRIVATE+1)/* ill-formed matrix can't be decomposed */ #define E_SINGULAR (E_PRIVATE+2) /* matrix is singular */ #define E_ITERLIM (E_PRIVATE+3) /* iteration limit reached,operation aborted */ #define E_ORDER (E_PRIVATE+4) /* integration order not supported */ #define E_METHOD (E_PRIVATE+5) /* integration method not supported */ #define E_TIMESTEP (E_PRIVATE+6) /* timestep too small */ #define E_XMISSIONLINE (E_PRIVATE+7) /* transmission line in pz analysis */ #define E_MAGEXCEEDED (E_PRIVATE+8) /* pole-zero magnitude too large */ #define E_SHORT (E_PRIVATE+9) /* pole-zero input or output shorted */ #define E_INISOUT (E_PRIVATE+10) /* pole-zero input is output */ #define E_ASKCURRENT (E_PRIVATE+11) /* ac currents cannot be ASKed */ #define E_ASKPOWER (E_PRIVATE+12) /* ac powers cannot be ASKed */ char *SPerror(); #endif 0707070124060341341006440006700000000000011777770500302372300004100000010365spice3c1/spice3/include/swdefs.h/* * Copyright (c) 1985 Gordon M. Jacobs */ #ifndef SW #define SW "SWdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:37:26 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* structures used to describe voltage controlled switches */ /* information to describe each instance */ typedef struct sSWinstance { struct sSWmodel *SWmodPtr; /* backpointer to model */ struct sSWinstance *SWnextInstance; /* pointer to next instance of * current model*/ IFuid SWname; /* pointer to character string naming this instance */ int SWposNode; /* number of positive node of switch */ int SWnegNode; /* number of negative node of switch */ int SWposCntrlNode; /* number of positive controlling node of switch */ int SWnegCntrlNode; /* number of negative controlling node of switch */ double *SWposPosptr; /* pointer to sparse matrix diagonal at (positive,positive) for switch conductance */ double *SWnegPosptr; /* pointer to sparse matrix offdiagonal at (neagtive,positive) for switch conductance */ double *SWposNegptr; /* pointer to sparse matrix offdiagonal at (positive,neagtive) for switch conductance */ double *SWnegNegptr; /* pointer to sparse matrix diagonal at (neagtive,neagtive) for switch conductance */ int SWstate; /* pointer to start of switch's section of state vector */ double SWcond; /* conductance of the switch now */ unsigned SWzero_stateGiven : 1; /* flag to indicate initial state */ } SWinstance ; /* data per model */ #define SW_ON_CONDUCTANCE 1.0 /* default on conductance = 1 mho */ #define SW_OFF_CONDUCTANCE ckt->CKTgmin /* default off conductance */ #define SW_NUM_STATES 1 typedef struct sSWmodel { /* model structure for a switch */ int SWmodType; /* type index of this device type */ struct sSWmodel *SWnextModel; /* pointer to next possible model in * linked list */ SWinstance *SWinstances; /* pointer to list of instances that have this * model */ IFuid SWmodName; /* pointer to character string naming this model */ double SWonResistance; /* switch "on" resistance */ double SWoffResistance; /* switch "off" resistance */ double SWvThreshold; /* switching threshold voltage */ double SWvHysteresis; /* switching hysteresis voltage */ double SWonConduct; /* switch "on" conductance */ double SWoffConduct; /* switch "off" conductance */ unsigned SWonGiven : 1; /* flag to indicate on-resistance was specified */ unsigned SWoffGiven : 1; /* flag to indicate off-resistance was " */ unsigned SWthreshGiven : 1; /* flag to indicate threshold volt was given */ unsigned SWhystGiven : 1; /* flag to indicate hysteresis volt was given */ } SWmodel; /* device parameters */ #define SW_IC_ON 1 #define SW_IC_OFF 2 #define SW_POS_NODE 3 #define SW_NEG_NODE 4 #define SW_POS_CONT_NODE 5 #define SW_NEG_CONT_NODE 6 #define SW_CURRENT 7 #define SW_POWER 8 /* model parameters */ #define SW_MOD_SW 101 #define SW_MOD_RON 102 #define SW_MOD_ROFF 103 #define SW_MOD_VTH 104 #define SW_MOD_VHYS 105 #define SW_MOD_GON 106 #define SW_MOD_GOFF 107 /* device questions */ /* model questions */ #ifdef __STDC__ extern int SWacLoad(GENmodel*,CKTcircuit*); extern int SWask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int SWdelete(GENmodel*,IFuid,GENinstance**); extern void SWdestroy(GENmodel**); extern int SWload(GENmodel*,CKTcircuit*); extern int SWmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int SWmDelete(GENmodel**,IFuid,GENmodel*); extern int SWmParam(int,IFvalue*,GENmodel*); extern int SWparam(int,IFvalue*,GENinstance*,IFvalue*); extern int SWpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int SWsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int SWacLoad(); extern int SWask(); extern int SWdelete(); extern void SWdestroy(); extern int SWload(); extern int SWmAsk(); extern int SWmDelete(); extern int SWmParam(); extern int SWparam(); extern int SWpzLoad(); extern int SWsetup(); #endif /* stdc */ #endif /*SW*/ 0707070124060341351006440006700000000000011777770500302372300004100000001407spice3c1/spice3/include/tfdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef TF #define TF "TFdefs.h $Revision: 1.4 $ on $Date: 89/01/14 04:13:57 $ " #include "jobdefs.h" #include "tskdefs.h" #include "cktdefs.h" /* /* TFdefs.h - defs for transfer function analyses */ typedef struct { int JOBtype; JOB *JOBnextJob; IFuid JOBname; CKTnode *TFoutPos; CKTnode *TFoutNeg; IFuid TFoutSrc; IFuid TFinSrc; char *TFoutName; /* a printable name for an output v(x,y) */ unsigned int TFoutIsV :1; unsigned int TFoutIsI :1; unsigned int TFinIsV :1; unsigned int TFinIsI :1; } TFan; #define TF_OUTPOS 1 #define TF_OUTNEG 2 #define TF_OUTSRC 3 #define TF_INSRC 4 #define TF_OUTNAME 5 extern int TFsetParm(); extern int TFaskQuest(); #endif /*TF*/ 0707070124060341361006440006700000000000011777770500302372300004300000001171spice3c1/spice3/include/trandefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef TRAN #define TRAN "TRANdefs.h $Revision: 1.4 $ on $Date: 88/11/17 02:37:39 $ " #include "jobdefs.h" #include "tskdefs.h" /* /* TRANdefs.h - defs for transient analyses */ typedef struct { int JOBtype; JOB *JOBnextJob; char *JOBname; double TRANfinalTime; double TRANstep; double TRANmaxStep; double TRANinitTime; long TRANmode; GENERIC * TRANplot; } TRANan; #define TRAN_TSTART 1 #define TRAN_TSTOP 2 #define TRAN_TSTEP 3 #define TRAN_TMAX 4 #define TRAN_UIC 5 extern int TRANsetParm(); extern int TRANaskQuest(); #endif /*TRAN*/ 0707070124060341371006440006700000000000011777770500302372300004200000014516spice3c1/spice3/include/tradefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef TRA #define TRA "TRAdefs.h $Revision: 1.6 $ on $Date: 88/11/17 02:37:45 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* definitions used to describe transmission liness */ /* information used to describe a single instance */ typedef struct sTRAinstance { struct sTRAmodel *TRAmodPtr; /* backpointer to model */ struct sTRAinstance *TRAnextInstance; /* pointer to next instance of * current model*/ IFuid TRAname; /* pointer to character string naming this instance */ int TRAposNode1; /* number of positive node of end 1 of t. line */ int TRAnegNode1; /* number of negative node of end 1 of t. line */ int TRAposNode2; /* number of positive node of end 2 of t. line */ int TRAnegNode2; /* number of negative node of end 2 of t. line */ int TRAintNode1; /* number of internal node of end 1 of t. line */ int TRAintNode2; /* number of internal node of end 2 of t. line */ double TRAimped; /* impedance - input */ double TRAconduct; /* conductance - calculated */ double TRAtd; /* propagation delay */ double TRAnl; /* normalized length */ double TRAf; /* frequency at which nl is measured */ double TRAinput1; /* accumulated excitation for port 1 */ double TRAinput2; /* accumulated excitation for port 2 */ double TRAinitVolt1; /* initial condition: voltage on port 1 */ double TRAinitCur1; /* initial condition: current at port 1 */ double TRAinitVolt2; /* initial condition: voltage on port 2 */ double TRAinitCur2; /* initial condition: current at port 2 */ double TRAreltol; /* relative deriv. tol. for breakpoint setting */ double TRAabstol; /* absolute deriv. tol. for breakpoint setting */ double *TRAdelays; /* delayed values of excitation */ int TRAsizeDelay; /* size of active delayed table */ int TRAallocDelay; /* allocated size of delayed table */ int TRAbrEq1; /* number of branch equation for end 1 of t. line */ int TRAbrEq2; /* number of branch equation for end 2 of t. line */ double *TRAibr1Ibr2Ptr; /* pointer to sparse matrix */ double *TRAibr1Int1Ptr; /* pointer to sparse matrix */ double *TRAibr1Neg1Ptr; /* pointer to sparse matrix */ double *TRAibr1Neg2Ptr; /* pointer to sparse matrix */ double *TRAibr1Pos2Ptr; /* pointer to sparse matrix */ double *TRAibr2Ibr1Ptr; /* pointer to sparse matrix */ double *TRAibr2Int2Ptr; /* pointer to sparse matrix */ double *TRAibr2Neg1Ptr; /* pointer to sparse matrix */ double *TRAibr2Neg2Ptr; /* pointer to sparse matrix */ double *TRAibr2Pos1Ptr; /* pointer to sparse matrix */ double *TRAint1Ibr1Ptr; /* pointer to sparse matrix */ double *TRAint1Int1Ptr; /* pointer to sparse matrix */ double *TRAint1Pos1Ptr; /* pointer to sparse matrix */ double *TRAint2Ibr2Ptr; /* pointer to sparse matrix */ double *TRAint2Int2Ptr; /* pointer to sparse matrix */ double *TRAint2Pos2Ptr; /* pointer to sparse matrix */ double *TRAneg1Ibr1Ptr; /* pointer to sparse matrix */ double *TRAneg2Ibr2Ptr; /* pointer to sparse matrix */ double *TRApos1Int1Ptr; /* pointer to sparse matrix */ double *TRApos1Pos1Ptr; /* pointer to sparse matrix */ double *TRApos2Int2Ptr; /* pointer to sparse matrix */ double *TRApos2Pos2Ptr; /* pointer to sparse matrix */ unsigned TRAimpedGiven : 1; /* flag to indicate impedence was specified */ unsigned TRAtdGiven : 1; /* flag to indicate delay was specified */ unsigned TRAnlGiven : 1; /* flag to indicate norm length was specified */ unsigned TRAfGiven : 1; /* flag to indicate freq was specified */ unsigned TRAicV1Given : 1; /* flag to ind. init. voltage at port 1 given */ unsigned TRAicC1Given : 1; /* flag to ind. init. current at port 1 given */ unsigned TRAicV2Given : 1; /* flag to ind. init. voltage at port 2 given */ unsigned TRAicC2Given : 1; /* flag to ind. init. current at port 2 given */ unsigned TRAreltolGiven:1; /* flag to ind. relative deriv. tol. given */ unsigned TRAabstolGiven:1; /* flag to ind. absolute deriv. tol. given */ } TRAinstance ; /* per model data */ typedef struct sTRAmodel { /* model structure for a transmission lines */ int TRAmodType; /* type index of this device type */ struct sTRAmodel *TRAnextModel; /* pointer to next possible model in * linked list */ TRAinstance * TRAinstances; /* pointer to list of instances that have this * model */ IFuid TRAmodName; /* pointer to character string naming this model */ } TRAmodel; /* device parameters */ #define TRA_Z0 1 #define TRA_TD 2 #define TRA_NL 3 #define TRA_FREQ 4 #define TRA_V1 5 #define TRA_I1 6 #define TRA_V2 7 #define TRA_I2 8 #define TRA_IC 9 #define TRA_RELTOL 10 #define TRA_ABSTOL 11 #define TRA_POS_NODE1 12 #define TRA_NEG_NODE1 13 #define TRA_POS_NODE2 14 #define TRA_NEG_NODE2 15 #define TRA_INPUT1 16 #define TRA_INPUT2 17 #define TRA_DELAY 18 #define TRA_BR_EQ1 19 #define TRA_BR_EQ2 20 #define TRA_INT_NODE1 21 #define TRA_INT_NODE2 22 /* model parameters */ /* device questions */ /* model questions */ #ifdef __STDC__ extern int TRAacLoad(GENmodel*,CKTcircuit*); extern int TRAaccept(CKTcircuit*,GENmodel*); extern int TRAask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int TRAdelete(GENmodel*,IFuid,GENinstance**); extern void TRAdestroy(GENmodel**); extern int TRAload(GENmodel*,CKTcircuit*); extern int TRAmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int TRAmDelete(GENmodel**,IFuid,GENmodel*); extern int TRAparam(int,IFvalue*,GENinstance*,IFvalue*); extern int TRAsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int TRAtemp(GENmodel*,CKTcircuit*); extern int TRAtrunc(GENmodel*,CKTcircuit*,double*); #else /* stdc */ extern int TRAacLoad(); extern int TRAaccept(); extern int TRAask(); extern int TRAdelete(); extern void TRAdestroy(); extern int TRAload(); extern int TRAmAsk(); extern int TRAmDelete(); extern int TRAparam(); extern int TRAsetup(); extern int TRAtemp(); extern int TRAtrunc(); #endif /* stdc */ #endif /*TRA*/ 0707070124060341401006440006700000000000011777770500302372400004300000002661spice3c1/spice3/include/trcvdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef DCTR #define DCTR "TRCVdefs.h $Revision: 1.3 $ on $Date: 88/11/16 21:55:40 $ " #include "jobdefs.h" #include "tskdefs.h" #include "gendefs.h" /* * structures used to describe D.C. transfer curve analyses to * be performed. */ #define TRCVNESTLEVEL 2 /* depth of nesting of curves - 2 for spice2 */ typedef struct { int JOBtype; JOB *JOBnextJob; char *JOBname; double TRCVvStart[TRCVNESTLEVEL]; /* starting voltage/current */ double TRCVvStop[TRCVNESTLEVEL]; /* ending voltage/current */ double TRCVvStep[TRCVNESTLEVEL]; /* voltage/current step */ double TRCVvSave[TRCVNESTLEVEL]; /* voltage of this source BEFORE * analysis-to restore when done */ IFuid TRCVvName[TRCVNESTLEVEL]; /* source being varied */ GENinstance *TRCVvElt[TRCVNESTLEVEL]; /* pointer to source */ int TRCVvType[TRCVNESTLEVEL]; /* type of element being varied */ int TRCVset[TRCVNESTLEVEL]; /* flag to indicate this nest level used */ int TRCVnestLevel; /* number of levels of nesting called for */ int TRCVnestState; /* iteration state during pause */ } TRCV; #define DCT_START1 1 #define DCT_STOP1 2 #define DCT_STEP1 3 #define DCT_NAME1 4 #define DCT_TYPE1 5 #define DCT_START2 6 #define DCT_STOP2 7 #define DCT_STEP2 8 #define DCT_NAME2 9 #define DCT_TYPE2 10 #endif /*DCTR*/ 0707070124060341411006440006700000000000011777770500302372400004200000003157spice3c1/spice3/include/tskdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef TSK #define TSK "TSKdefs.h $Revision: 1.6 $ on $Date: 89/04/05 13:13:01 $ " #include "jobdefs.h" typedef struct { JOB taskOptions; /* job structure at the front to hold options */ JOB *jobs; char *TSKname; double TSKtemp; double TSKnomTemp; int TSKmaxOrder; /* maximum integration method order */ int TSKintegrateMethod; /* the integration method to be used */ int TSKcurrentAnalysis; /* the analysis in progress (if any) */ /* defines for the value of TSKcurrentAnalysis */ #define DOING_DCOP 1 #define DOING_TRCV 2 #define DOING_AC 4 #define DOING_TRAN 8 int TSKbypass; int TSKdcMaxIter; /* iteration limit for dc op. (itl1) */ int TSKdcTrcvMaxIter; /* iteration limit for dc tran. curv (itl2) */ int TSKtranMaxIter; /* iteration limit for each timepoint for tran*/ /* (itl4) */ int TSKnumSrcSteps; /* number of steps for source stepping */ int TSKnumGminSteps; /* number of steps for Gmin stepping */ double TSKminBreak; double TSKabstol; double TSKpivotAbsTol; double TSKpivotRelTol; double TSKreltol; double TSKchgtol; double TSKvoltTol; #ifdef NEWTRUNC double TSKlteReltol; double TSKlteAbstol; #endif /* NEWTRUNC */ double TSKgmin; double TSKdelmin; double TSKtrtol; double TSKdefaultMosL; double TSKdefaultMosW; double TSKdefaultMosAD; double TSKdefaultMosAS; unsigned int TSKfixLimit:1; unsigned int TSKnoOpIter:1; /* no OP iterating, go straight to gmin step */ }TSKtask; #endif /*TSK*/ 0707070124060341421006440006700000000000011777770500302372400004200000006576spice3c1/spice3/include/urcdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef URC #define URC "URCdefs.h $Revision: 1.4 $ on $Date: 88/11/17 02:38:03 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* * structures used to describe uniform RC lines */ /* information needed for each instance */ typedef struct sURCinstance { struct sURCmodel *URCmodPtr; /* backpointer to model */ struct sURCinstance *URCnextInstance; /* pointer to next instance of * current model*/ IFuid URCname; /* pointer to character string naming this instance */ int URCposNode; /* number of positive node of URC */ int URCnegNode; /* number of negative node of URC */ int URCgndNode; /* number of the "ground" node of the URC */ double URClength; /* length of line */ int URClumps; /* number of lumps in line */ unsigned URClenGiven : 1; /* flag to indicate length was specified */ unsigned URClumpsGiven : 1; /* flag to indicate lumps was specified */ } URCinstance ; /* per model data */ typedef struct sURCmodel { /* model structure for a resistor */ int URCmodType; /* type index of this device type */ struct sURCmodel *URCnextModel; /* pointer to next possible model * in linked list */ URCinstance * URCinstances; /* pointer to list of instances that have this * model */ IFuid URCmodName; /* pointer to character string naming this model */ double URCk; /* propagation constant for URC */ double URCfmax; /* max frequence of interest */ double URCrPerL; /* resistance per unit length */ double URCcPerL; /* capacitance per unit length */ double URCisPerL; /* diode saturation current per unit length */ double URCrsPerL; /* diode resistance per unit length */ unsigned URCkGiven : 1; /* flag to indicate k was specified */ unsigned URCfmaxGiven : 1; /* flag to indicate fmax was specified */ unsigned URCrPerLGiven : 1; /* flag to indicate rPerL was specified */ unsigned URCcPerLGiven : 1; /* flag to indicate cPerL was specified */ unsigned URCisPerLGiven : 1; /* flag to indicate isPerL was specified */ unsigned URCrsPerLGiven : 1; /* flag to indicate rsPerL was specified */ } URCmodel; /* device parameters */ #define URC_LEN 1 #define URC_LUMPS 2 #define URC_POS_NODE 3 #define URC_NEG_NODE 4 #define URC_GND_NODE 5 /* model parameters */ #define URC_MOD_K 101 #define URC_MOD_FMAX 102 #define URC_MOD_RPERL 103 #define URC_MOD_CPERL 104 #define URC_MOD_ISPERL 105 #define URC_MOD_RSPERL 106 #define URC_MOD_URC 107 /* device questions */ /* model questions */ #ifdef __STDC__ extern int URCask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int URCdelete(GENmodel*,IFuid,GENinstance**); extern void URCdestroy(GENmodel**); extern int URCmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int URCmDelete(GENmodel**,IFuid,GENmodel*); extern int URCmParam(int,IFvalue*,GENmodel*); extern int URCparam(int,IFvalue*,GENinstance*,IFvalue*); extern int URCsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int URCask(); extern int URCdelete(); extern void URCdestroy(); extern int URCmAsk(); extern int URCmDelete(); extern int URCmParam(); extern int URCparam(); extern int URCsetup(); #endif /* stdc */ #endif /*URC*/ 0707070124060341431006440006700000000000011777770500302372400004300000007747spice3c1/spice3/include/vccsdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef VCCS #define VCCS "VCCSdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:38:09 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* * structures to describe Voltage Controlled Current Sources */ /* information to describe a single instance */ typedef struct sVCCSinstance { struct sVCCSmodel *VCCSmodPtr; /* backpointer to model */ struct sVCCSinstance *VCCSnextInstance; /* pointer to next instance of *current model*/ IFuid VCCSname; /* pointer to character string naming this instance */ int VCCSposNode; /* number of positive node of source */ int VCCSnegNode; /* number of negative node of source */ int VCCScontPosNode; /* number of positive node of controlling source */ int VCCScontNegNode; /* number of negative node of controlling source */ double VCCSinitCond; /* initial condition (of controlling source) */ double VCCScoeff; /* coefficient */ int VCCSstates; /* state info */ #define VCCSvOld VCCSstates #define VCCScontVOld VCCSstates + 1 double *VCCSposContPosptr; /* pointer to sparse matrix element at * (positive node, control positive node) */ double *VCCSposContNegptr; /* pointer to sparse matrix element at * (negative node, control negative node) */ double *VCCSnegContPosptr; /* pointer to sparse matrix element at * (positive node, control positive node) */ double *VCCSnegContNegptr; /* pointer to sparse matrix element at * (negative node, control negative node) */ unsigned VCCScoeffGiven :1 ;/* flag to indicate function coeffs given */ int VCCSsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } VCCSinstance ; /* per model data */ typedef struct sVCCSmodel { /* model structure for a source */ int VCCSmodType; /* type index of this device type */ struct sVCCSmodel *VCCSnextModel; /* pointer to next possible model * in linked list */ VCCSinstance * VCCSinstances; /* pointer to list of instances * that have this model */ IFuid VCCSmodName; /* pointer to character string naming this model */ } VCCSmodel; /* device parameters */ #define VCCS_TRANS 1 #define VCCS_IC 2 #define VCCS_POS_NODE 3 #define VCCS_NEG_NODE 4 #define VCCS_CONT_P_NODE 5 #define VCCS_CONT_N_NODE 6 #define VCCS_CONT_V_OLD 7 #define VCCS_TRANS_SENS 8 #define VCCS_CURRENT 9 #define VCCS_POWER 10 /* model parameters */ /* device questions */ #define VCCS_QUEST_SENS_REAL 201 #define VCCS_QUEST_SENS_IMAG 202 #define VCCS_QUEST_SENS_MAG 203 #define VCCS_QUEST_SENS_PH 204 #define VCCS_QUEST_SENS_CPLX 205 #define VCCS_QUEST_SENS_DC 206 /* model questions */ #ifdef __STDC__ extern int VCCSask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int VCCSdelete(GENmodel*,IFuid,GENinstance**); extern void VCCSdestroy(GENmodel**); extern int VCCSload(GENmodel*,CKTcircuit*); extern int VCCSmDelete(GENmodel**,IFuid,GENmodel*); extern int VCCSparam(int,IFvalue*,GENinstance*,IFvalue*); extern int VCCSpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int VCCSsAcLoad(GENmodel*,CKTcircuit*); extern int VCCSsLoad(GENmodel*,CKTcircuit*); extern int VCCSsSetup(SENstruct*,GENmodel*); extern void VCCSsPrint(GENmodel*,CKTcircuit*); extern int VCCSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int VCCSask(); extern int VCCSdelete(); extern void VCCSdestroy(); extern int VCCSload(); extern int VCCSmDelete(); extern int VCCSparam(); extern int VCCSpzLoad(); extern int VCCSsAcLoad(); extern int VCCSsLoad(); extern int VCCSsSetup(); extern void VCCSsPrint(); extern int VCCSsetup(); #endif /* stdc */ #endif /*VCCS*/ 0707070124060341441006440006700000000000011777770500302372500004300000010570spice3c1/spice3/include/vcvsdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef VCVS #define VCVS "VCVSdefs.h $Revision: 1.5 $ on $Date: 88/11/17 02:38:15 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* * structures to describe Voltage Controlled Voltage Sources */ /* information to describe a single instance */ typedef struct sVCVSinstance { struct sVCVSmodel *VCVSmodPtr; /* backpointer to model */ struct sVCVSinstance *VCVSnextInstance; /* pointer to next instance of *current model*/ IFuid VCVSname; /* pointer to character string naming this instance */ int VCVSposNode; /* number of positive node of source */ int VCVSnegNode; /* number of negative node of source */ int VCVScontPosNode; /* number of positive node of controlling source */ int VCVScontNegNode; /* number of negative node of controlling source */ int VCVSbranch; /* equation number of branch equation added for v source */ double VCVSinitCond; /* initial condition (of controlling source) */ double VCVScoeff; /* coefficient */ int VCVSstates; /* state info */ #define VCVSvOld VCVSstates #define VCVScontVOld VCVSstates + 1 double *VCVSposIbrptr; /* pointer to sparse matrix element at * (positive node, branch equation) */ double *VCVSnegIbrptr; /* pointer to sparse matrix element at * (negative node, branch equation) */ double *VCVSibrPosptr; /* pointer to sparse matrix element at * (branch equation, positive node) */ double *VCVSibrNegptr; /* pointer to sparse matrix element at * (branch equation, negative node) */ double *VCVSibrContPosptr; /* pointer to sparse matrix element at *(branch equation, control positive node)*/ double *VCVSibrContNegptr; /* pointer to sparse matrix element at *(branch equation, control negative node)*/ unsigned VCVScoeffGiven :1 ;/* flag to indicate function coeffs given */ int VCVSsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ } VCVSinstance ; /* per model data */ typedef struct sVCVSmodel { /* model structure for a source */ int VCVSmodType; /* type index of this device type */ struct sVCVSmodel *VCVSnextModel; /* pointer to next possible model *in linked list */ VCVSinstance * VCVSinstances; /* pointer to list of instances * that have this model */ IFuid VCVSmodName; /* pointer to character string naming this model */ } VCVSmodel; /* device parameters */ #define VCVS_GAIN 1 #define VCVS_POS_NODE 2 #define VCVS_NEG_NODE 3 #define VCVS_CONT_P_NODE 4 #define VCVS_CONT_N_NODE 5 #define VCVS_BR 6 #define VCVS_IC 7 #define VCVS_CONT_V_OLD 8 #define VCVS_GAIN_SENS 9 #define VCVS_CURRENT 10 #define VCVS_POWER 11 /* model parameters */ /* device questions */ #define VCVS_QUEST_SENS_REAL 201 #define VCVS_QUEST_SENS_IMAG 202 #define VCVS_QUEST_SENS_MAG 203 #define VCVS_QUEST_SENS_PH 204 #define VCVS_QUEST_SENS_CPLX 205 #define VCVS_QUEST_SENS_DC 206 /* model questions */ #ifdef __STDC__ extern int VCVSask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int VCVSdelete(GENmodel*,IFuid,GENinstance**); extern void VCVSdestroy(GENmodel**); extern int VCVSfindBr(CKTcircuit*,GENmodel*,IFuid); extern int VCVSload(GENmodel*,CKTcircuit*); extern int VCVSmDelete(GENmodel**,IFuid,GENmodel*); extern int VCVSparam(int,IFvalue*,GENinstance*,IFvalue*); extern int VCVSpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int VCVSsAcLoad(GENmodel*,CKTcircuit*); extern int VCVSsLoad(GENmodel*,CKTcircuit*); extern int VCVSsSetup(SENstruct*,GENmodel*); extern void VCVSsPrint(GENmodel*,CKTcircuit*); extern int VCVSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); #else /* stdc */ extern int VCVSask(); extern int VCVSdelete(); extern void VCVSdestroy(); extern int VCVSfindBr(); extern int VCVSload(); extern int VCVSmDelete(); extern int VCVSparam(); extern int VCVSpzLoad(); extern int VCVSsAcLoad(); extern int VCVSsLoad(); extern int VCVSsSetup(); extern void VCVSsPrint(); extern int VCVSsetup(); #endif /* stdc */ #endif /*VCVS*/ 0707070124060341451006440006700000000000011777770500302372500004300000011301spice3c1/spice3/include/vsrcdefs.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef VSRC #define VSRC "VSRCdefs.h $Revision: 1.8 $ on $Date: 89/03/07 11:34:40 $ " #include "ifsim.h" #include "cktdefs.h" #include "gendefs.h" #include "complex.h" /* * structures to describe independent voltage sources */ /* information needed for each instance */ typedef struct sVSRCinstance { struct sVSRCmodel *VSRCmodPtr; /* backpointer to model */ struct sVSRCinstance *VSRCnextInstance; /* pointer to next instance of *current model */ IFuid VSRCname; /* pointer to character string naming this instance */ int VSRCposNode; /* number of positive node of resistor */ int VSRCnegNode; /* number of negative node of resistor */ int VSRCbranch; /* equation number of branch equation added for source */ int VSRCfunctionType; /* code number of function type for source */ int VSRCfunctionOrder; /* order of the function for the source */ double *VSRCcoeffs; /* pointer to array of coefficients */ double VSRCdcValue; /* DC and TRANSIENT value of source */ double VSRCacPhase; /* AC phase angle */ double VSRCacMag; /* AC magnitude */ double VSRCacReal; /* AC real component */ double VSRCacImag; /* AC imaginary component */ double *VSRCposIbrptr; /* pointer to sparse matrix element at * (positive node, branch equation) */ double *VSRCnegIbrptr; /* pointer to sparse matrix element at * (negative node, branch equation) */ double *VSRCibrPosptr; /* pointer to sparse matrix element at * (branch equation, positive node) */ double *VSRCibrNegptr; /* pointer to sparse matrix element at * (branch equation, negative node) */ double *VSRCibrIbrptr; /* pointer to sparse matrix element at * (branch equation, branch equation) */ unsigned VSRCdcGiven :1 ; /* flag to indicate dc value given */ unsigned VSRCacGiven :1 ; /* flag to indicate ac keyword given */ unsigned VSRCacMGiven :1 ; /* flag to indicate ac magnitude given */ unsigned VSRCacPGiven :1 ; /* flag to indicate ac phase given */ unsigned VSRCfuncTGiven :1 ; /* flag to indicate function type given */ unsigned VSRCcoeffsGiven :1 ; /* flag to indicate function coeffs given */ } VSRCinstance ; /* per model data */ typedef struct sVSRCmodel { int VSRCmodType; /* type index of this device type */ struct sVSRCmodel *VSRCnextModel; /* pointer to next possible model *in linked list */ VSRCinstance * VSRCinstances; /* pointer to list of instances * that have this model */ IFuid VSRCmodName; /* pointer to character string naming this model */ } VSRCmodel; /* source function types (shared with current sources) */ #ifndef PULSE #define PULSE 1 #define SINE 2 #define EXP 3 #define SFFM 4 #define PWL 5 #endif /*PULSE*/ /* device parameters */ #define VSRC_DC 1 #define VSRC_AC 2 #define VSRC_AC_MAG 3 #define VSRC_AC_PHASE 4 #define VSRC_PULSE 5 #define VSRC_SINE 6 #define VSRC_EXP 7 #define VSRC_PWL 8 #define VSRC_SFFM 9 #define VSRC_BR 10 #define VSRC_FCN_TYPE 11 #define VSRC_FCN_ORDER 12 #define VSRC_FCN_COEFFS 13 #define VSRC_AC_REAL 14 #define VSRC_AC_IMAG 15 #define VSRC_POS_NODE 16 #define VSRC_NEG_NODE 17 #define VSRC_CURRENT 18 #define VSRC_POWER 19 /* model parameters */ /* device questions */ /* model questions */ #ifdef __STDC__ extern int VSRCacLoad(GENmodel*,CKTcircuit*); extern int VSRCaccept(CKTcircuit*,GENmodel *); extern int VSRCask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*); extern int VSRCdelete(GENmodel*,IFuid,GENinstance**); extern void VSRCdestroy(GENmodel**); extern int VSRCfindBr(CKTcircuit*,GENmodel*,IFuid); extern int VSRCload(GENmodel*,CKTcircuit*); extern int VSRCmAsk(CKTcircuit*,GENmodel*,int,IFvalue*); extern int VSRCmDelete(GENmodel**,IFuid,GENmodel*); extern int VSRCparam(int,IFvalue*,GENinstance*,IFvalue*); extern int VSRCpzLoad(GENmodel*,CKTcircuit*,SPcomplex*); extern int VSRCsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int VSRCpzSetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*); extern int VSRCtemp(GENmodel*,CKTcircuit*); #else /* stdc */ extern int VSRCacLoad(); extern int VSRCaccept(); extern int VSRCask(); extern int VSRCdelete(); extern void VSRCdestroy(); extern int VSRCfindBr(); extern int VSRCload(); extern int VSRCmAsk(); extern int VSRCmDelete(); extern int VSRCparam(); extern int VSRCpzLoad(); extern int VSRCsetup(); extern int VSRCpzSetup(); extern int VSRCtemp(); #endif /* stdc */ #endif /*VSRC*/ 0707070124060341461006440006700000000000011777770500302372500004200000004001spice3c1/spice3/include/complex.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef CMPLX #define CMPLX "complex.h $Revision: 1.5 $ on $Date: 88/11/22 02:51:07 $ " /* header file containing definitions for complex functions * * Each expects two arguments for each complex number - a real and an * imaginary part. */ typedef struct { double real; double imag; } SPcomplex; #define DC_ABS(a,b) (FABS(a) + FABS(b)) #ifdef notdef #define DC_DIV(a,b,c,d,x,y) { \ double r,s;\ if(FABS(c)>FABS(d)) { \ r=(d)/(c);\ s=(c)+r*(d);\ x=((a)+(b)*r)/s;\ y=((b)-(a)*r)/s;\ } else { \ r=(c)/(d);\ s=(d)+r*(c);\ x=((a)*r+(b))/s;\ y=((b)*r-(a))/s;\ }\ } #endif /*notdef */ #ifndef SHORTMACRO #define DC_DIVEQ(a,b,c,d) { \ double r,s,x,y;\ if(FABS(c)>FABS(d)) { \ r=(d)/(c);\ s=(c)+r*(d);\ x=((*(a))+(*(b))*r)/s;\ y=((*(b))-(*(a))*r)/s;\ } else { \ r=(c)/(d);\ s=(d)+r*(c);\ x=((*(a))*r+(*(b)))/s;\ y=((*(b))*r-(*(a)))/s;\ }\ (*(a)) = x; \ (*(b)) = y; \ } #else /*SHORTMACRO*/ #define DC_DIVEQ DCdiveq #ifdef __STDC__ extern void DCdiveq(double*,double*,double,double); #else /* stdc */ extern void DCdiveq(); #endif /* stdc */ #endif /*SHORTMACRO*/ #ifndef SHORTMACRO #define DC_MULT(a,b,c,d,x,y) { \ *(x) = (a) * (c) - (b) * (d) ;\ *(y) = (a) * (d) + (b) * (c) ;\ } #else /*SHORTMACRO*/ #define DC_MULT DCmult #ifdef __STDC__ extern void DCmult(double,double,double,double,double*,double*); #else /* stdc */ extern void DCmult(); #endif /* stdc */ #endif /*SHORTMACRO*/ #ifdef notdef #define DC_MINUS(a,b,c,d,x,y) { \ (x) = (a) - (c) ;\ (y) = (b) - (d) ;\ } #endif /*notdef*/ #ifndef SHORTMACRO #define DC_MINUSEQ(a,b,c,d) { \ *(a) -= (c) ;\ *(b) -= (d) ;\ } #else /*SHORTMACRO*/ #define DC_MINUSEQ DCminusEq #ifdef __STDC__ extern void DCminusEq(double*,double*,double,double); #else /* stdc */ extern void DCminusEq(); #endif /* stdc */ #endif /*SHORTMACRO*/ #endif /*CMPLX*/ 0707070124060341471006440006700000000000011777770500302372500004400000003405spice3c1/spice3/include/prefixbsd.h /* Local parameters, specific to 4.3 BSD on a vax (ic.berkeley.edu) */ /* Basic system definition parameters. */ #define UNIX /* Compiling under UNIX (signals, processes, shell) */ #define BSD /* Compiling under BSD UNIX (command completion) */ #define VAX /* Use vax floating point error codes (with BSD) */ /* Graphics packages available. */ #define GI_X /* We have the X window system. GI_X11 for V11R3*/ #define GI_MFB /* We have the MFB graphics package. */ /* Pathnames, hostnames, and addresses. */ #define BUGADDR "spice@ic.berkeley.edu" /* Where to send bugs. */ #define HELPPATH "~cad/lib/spice3/helpdir" #define LIBPATH "~cad/lib/spice3/scripts" #define NEWSFILE "~cad/lib/spice3/news" /* The message of the day. */ #define DEFAULTMFBCAP "~cad/lib/spice3/mfbcap" /* The mfbcap file. */ #define SPICEDLOG "/eros1/faustus/spiced/logfile" #define SPICEHOST "eros" /* Where to do rspice, "" = nowhere */ #define SPICEPATH "/cad/bin/spice3" /* Where the spice-3 binary is kept */ /* Assorted configuration parameters. */ #define ASCIIRAWFILE true /* true or false - default file type = ascii */ #define DEF_EDITOR "vi" #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define CAPZEROBYPASS #define NEWCONV /* Machine dependent capabilities. */ #define MAXPOSINT 2147483647 #define MAX_EXP_ARG 87.0 /* Approximate largest arg to exp() without error. */ #define ASCIIQUOTE /* Use 8th-bit quoting for characters */ /* Functions available in the C library. */ #define HAS_QSORT #define HAS_BSTRING #define HAS_INDEX #define HAS_TIOCSTI /* #define HAS_VSPRINTF */ #ifdef LINT #define RCSID(ident) #else /* LINT */ #define RCSID(ident) static char rcsid[] = ident ; #endif /* LINT */ 0707070124060341501006440006700000000000011777770500302372500004400000004522spice3c1/spice3/include/prefixcms.h/* Local parameters, specific to CMS on IBM 3090 (cmsa.berkeley.edu) */ /* Basic system definition parameters. */ #define CMS /* Graphics packages available. */ #define GI_MFB /* We have the MFB graphics package. */ /* Pathnames, hostnames, and addresses. */ /* Could be seriously outdated, but who cares, CMS has no directories. */ #define BUGADDR "spice@ic.berkeley.edu" /* Where to send bugs. */ #define HELPPATH "~cad/lib/spice3/helpdir" #define LIBPATH "~cad/lib/spice3/scripts" #define NEWSFILE "~cad/lib/spice3/news" /* The message of the day. */ #define DEFAULTMFBCAP "~cad/lib/spice3/mfbcap" /* The mfbcap file. */ #define SPICEDLOG "/eros1/faustus/spiced/logfile" #define SPICEHOST "eros" /* Where to do rspice, "" = nowhere */ #define SPICEPATH "bspice3" /* Where the spice-3 binary is kept */ /* Assorted configuration parameters. */ #define ASCIIRAWFILE true /* true or false - default file type = ascii */ #define DEF_EDITOR "vi" #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define CAPZEROBYPASS #define SHORTMACRO /* compiler only allows short macros, so use functions */ #define MINDATA /* minimize static dataspace as much as possible */ #define NOINFABS /* no inline FABS expansion - use functional form */ #define NOPRINT #define NOLIST #define NOBYPASS #define NOSENS /* eliminate sensitivity code */ #define NEWCONV /* Machine dependent capabilities. */ #define HUGE 1e31 #define MAXPOSINT 2147483647 #define MAX_EXP_ARG 87.0 /* Approximate largest arg to exp() without error. */ /* Functions available in the C library. */ /* #define HAS_QSORT /* not with the ibm compiler */ /* #define HAS_BSTRING /* not with the ibm compiler */ #define HAS_INDEX /* #define HASATRIGH /* not with the ibm compiler */ #define HAS_PERROR /* has own declaration of perror in stdio, NOT ansi void */ #define NOVARARGS /* And omissions. */ typedef long time_t; /* FTE fixes */ /* for inp.c */ #define SEPC ' ' /* hack on Jeff's gr_iplot controversy: only on the cms version */ #define gr_iplot gr_plot #define gr_iplot_end gr_plot_end #ifdef LINT #define RCSID(ident) #else /* LINT */ /* we'd really like the following line, but memory restrictions * really limit use here, so.... #define RCSID(ident) static char rcsid[] = ident ; */ #define RCSID(ident) #endif /* LINT */ 0707070124060341511006440006700000000000011777770500302372500004500000003055spice3c1/spice3/include/prefixhpux.h /* Local parameters, specific to HP-UX on an HP Bobcat (tommy.berkeley.edu) */ /* Basic system definition parameters. */ #define UNIX /* Compiling under unix (signals, processes, shell) */ #define HPUX /* HP-UX */ /* Graphics packages available. */ #define GI_X #define GI_MFB /* Pathnames, hostnames, and addresses. */ #define BUGADDR "spice@ic.berkeley.edu" /* Where to send bugs. */ #define HELPPATH "~faustus/spice3lib/helpdir" #define LIBPATH "~faustus/spice3lib/scripts" #define NEWSFILE "~faustus/spice3lib/news" /* The message of the day. */ #define SPICEDLOG "/eros1/faustus/spiced/logfile" #define SPICEHOST "eros" /* Where to do rspice, "" = nowhere */ #define SPICEPATH "/users/faustus/bin/spice3" /* Assorted configuration parameters. */ #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define DEF_EDITOR "vi" #define ASCIIRAWFILE true /* true or false - default file type = ascii */ #define NOLIST #define NOPRINT #define NOBYPASS #define NEWCONV /* Machine dependent capabilities. */ #define MAXPOSINT 2147483647 #define MAX_EXP_ARG 87 /* Approximate largest arg to exp() without error. */ #define ASCIIQUOTE /* Use 8th-bit quoting for characters */ /* Functions available in the C library. */ #define HAS_QSORT #define HAS_VSPRINTF /* And things not in this implementation. */ #define index strchr #define rindex strrchr #define void int #ifdef LINT #define RCSID(ident) #else /* LINT */ #define RCSID(ident) static char rcsid[] = ident ; #endif /* LINT */ 0707070124060341521006440006700000000000011777770500302372500004300000003527spice3c1/spice3/include/prefixpc.h /* Local parameters, specific to PC & MS-DOS, Lattice CC (vogon.berkeley.edu) */ /* Basic system definition parameters. */ #define IBMPC /* we usually use this compiler, so */ /*#define LATTICE /* defined by their newer compiler versions, so not needed */ /* Graphics packages available. */ #define GI_MFB /* We have the MFB graphics package. */ /* Pathnames, hostnames, and addresses. */ #define SPICEPATH "bspice" /* Where the spice-3 binary is kept */ #define LIBPATH "\\\\spice3c1\\\\lib\\\\scripts" #define HELPPATH "\\spice3c1\\lib\\helpdir" /* Assorted configuration parameters. */ #define ASCIIRAWFILE true #define DEF_EDITOR "vi" #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define SHORTMACRO /* compiler only allows short macros, so use functions */ #define MINDATA /* minimize static dataspace as much as possible */ #define NOINFABS /* no inline FABS expansion - use functional form */ #define NOPRINT #define NOLIST #define NOBYPASS #define NOSENS /* eliminate sensitivity code due to lack of space */ #define NEWCONV /* Machine dependent capabilities. */ #define ASCIIQUOTE /* Use 8th-bit quoting for characters */ #define MAXPOSINT 32767 /* largest possible positive integer (PC=16 bit) */ #define MAX_EXP_ARG 87 /* Approximate largest arg to exp() without error. */ /* Functions available in the C library. */ #define HAS_QSORT #define HAS_PERROR /* has own definition of perror in stdio, not ansi's void */ #define NOVARARGS /* And omissions. */ typedef long time_t; #ifdef LATTICE #define mktemp(a) tmpnam(a) #endif /* LATTICE */ #ifdef LINT #define RCSID(ident) #else /* LINT */ /* we'd really like the following line, but memory restrictions * really limit use here, so.... #define RCSID(ident) static char rcsid[] = ident ; */ #define RCSID(ident) #endif /* LINT */ 0707070124060341531006440006700000000000011777770500302372500004400000002574spice3c1/spice3/include/prefixvms.h /* Local parameters, specific to V4 VMS on a vax (icw.berkeley.edu) */ /* Basic system definition parameters. */ #define VMS /* Compiling under VMS */ /* Graphics packages available. */ #define GI_MFB /* We have the MFB graphics package. */ /* Pathnames, hostnames, and addresses. */ #define SPICEPATH "spice.exe" #define SPICEHOST "" /* Where to do rspice, "" = nowhere */ #define NEWSFILE "nutnews.txt" /* The message of the day. */ #define BUGADDR "spice@ic.berkeley.edu" #define LIBPATH "DUA1:[FAUSTUS.SPICE3.LIB.SCRIPTS]" #define HELPPATH "DUA1:[FAUSTUS.SPICE3.LIB.HELPDIR]" /* Assorted configuration parameters. */ #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define DEF_EDITOR "vi" #define ASCIIRAWFILE true #define NOLIST #define NEWCONV #define MAXPOSINT 2147483647 #define MAX_EXP_ARG 87 /* Approximate largest arg to exp() without error. */ #define ASCIIQUOTE /* Use 8th-bit quoting for characters */ /* Functions available in the C library. */ /* And omissions. */ /* This should be unnecessary, but VMS leaves out this directive. */ /*#define defined(a) (a) */ /* fixed in vax C V2.3 & later - uncomment above if using older VAX C */ #define index strchr #define rindex strrchr #ifdef LINT #define RCSID(ident) #else /* LINT */ #define RCSID(ident) static char rcsid[] = ident ; #endif /* LINT */ 0707070124060341541006440006700000000000011777770500302372500004400000000117spice3c1/spice3/include/suffixbsd.h /* BSD systems generally need no fixups, so this file * should be empty */ 0707070124060341551006440006700000000000011777770500302372500004400000000501spice3c1/spice3/include/suffixcms.h#define _SUFFIX_H_ /* New fix to nail the NULL typecast problem */ #ifndef NULL #define NULL (void *)0 #endif /* NULL */ #define index strchr #define rindex strrchr #define has_qsort #ifdef FABS #undef FABS #endif /*FABS*/ #define FABS fabs #ifdef max #undef max #endif /*max*/ #ifdef min #undef min #endif /*min*/ 0707070124060341561006440006700000000000011777770500302372500004500000000125spice3c1/spice3/include/suffixhpux.h /* Local stuff for HP-UX. */ struct passwd *getpwent(), *getpwuid(), *getpwnam(); 0707070124060341571006440006700000000000011777770500302372700004300000000310spice3c1/spice3/include/suffixpc.h #define index strchr #define rindex strrchr #define has_qsort #ifdef FABS #undef FABS #endif /*FABS*/ #define FABS fabs #ifdef max #undef max #endif /*max*/ #ifdef min #undef min #endif /*min*/ 0707070124060341601006440006700000000000011777770500302372700004400000000205spice3c1/spice3/include/suffixvms.h /* VMS generally gets its header files right, so we don't need * to do anything here except keep this from being an empty file */ 0707070124060341611006440006700000000000011777770500302372700003700000001615spice3c1/spice3/include/util.h/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef UTIL #define UTIL "util.h $Revision: 1.4 $ on $Date: 88/11/22 02:41:33 $ " #define MALLOC(x) calloc(1,(unsigned)(x)) #define FREE(x) {free((char *)(x));(x) = 0;} extern char *malloc(); extern char *calloc(); extern void free(); #define TRUE 1 #define FALSE 0 #define REALLOC(x,y) realloc((char *)(x),(unsigned)(y)) char *realloc(); #ifdef DEBUG #define DEBUGMSG(textargs) printf(textargs) #else #define DEBUGMSG(testargs) #endif #define MIN(a,b) ((a) < (b) ? (a) : (b)) #define MAX(a,b) ((a) > (b) ? (a) : (b)) #ifdef NOINFABS #define FABS(a) fabs(a) double fabs(); #else /* NOINFABS */ #define FABS(a) ( ((a)<0) ? -(a) : (a) ) #endif /*NOINFABS*/ #define SIGN(a,b) ( b >= 0 ? (a >= 0 ? a : - a) : (a >= 0 ? - a : a)) #define ABORT() fflush(stderr);fflush(stdout);abort(); #ifndef PI #define PI 3.14159265358979323846 #endif /*PI*/ #endif /*UTIL*/ 0707070124060341621006440006700000000000011777770500302372700004200000000104spice3c1/spice3/include/version.h/* The current version name. */ #define SPICE_VERSION "SPICE 3c1" 0707070124060341631006660006700000000000021777770500302372700004100000000125spice3c1/spice3/include/suffix.h /* Local stuff for HP-UX. */ struct passwd *getpwent(), *getpwuid(), *getpwnam(); 0707070124060341641006440006700000000000021777770500302372700004100000003712spice3c1/spice3/include/prefix.h /* Local parameters, specific to AT&T UNIX-PC 7300/3B1 */ /* Basic system definition parameters. */ #define UNIX /* Compiling under unix (signals, processes, shell) */ #define HPUX /* HP-UX, denotes System V version */ #define UNIXPC=1 /* AT&T 7300/3B1 with bitmap console driver */ /* Graphics packages available. */ /*#define GI_X*/ #define GI_MFB /* Pathnames, hostnames, and addresses. */ #define BUGADDR "spice@ic.berkeley.edu" /* Where to send bugs. */ #define HELPPATH "/usr/local/lib/spice3lib/helpdir" #define LIBPATH "/usr/local/lib/spice3lib/scripts" #define NEWSFILE "/usr/local/lib/spice3lib/news" /* The message of the day. */ #define SPICEDLOG "/usr/local/lib/spiced/logfile" #define SPICEHOST "" /* Where to do rspice, "" = nowhere */ #define SPICEPATH "/usr/local/bin/spice3" #define DEFAULTMFBCAP "/usr/local/lib/spice3lib/mfbcap" /* Assorted configuration parameters. */ #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define DEF_EDITOR "vi" #define ASCIIRAWFILE false /* true or false - default file type = ascii */ #define NEWCONV #define CAPZEROBYPASS #define OLDDIRSTUFF /* Machine dependent capabilities. */ #define MAXPOSINT 2147483647 /* Approximate largest arg to exp() without error. */ #define MAX_EXP_ARG 709.78271289338397 #define ASCIIQUOTE /* Use 8th-bit quoting for characters */ /* Functions available in the C library. */ #define HAS_QSORT #define HAS_VSPRINTF #define HAS_INDEX #define HASATRIGH /* Source placed in spice3/fte for UNIX-PC */ /* And things not in this implementation. */ #define index strchr #define rindex strrchr #include /* For UNIX-PC */ #ifdef bcopy /*bstring*/ #undef bzero #undef bcmp #undef bcopy #endif /*bstring*/ /* bstring and dup2 functions are defined in spice3/cp.a for UNIX-PC */ #ifdef LINT #define RCSID(ident) #else /* LINT */ #define RCSID(ident) static char rcsid[] = ident ; #endif /* LINT */ 0707070124060341641006440006700000000000021777770500302372700004400000003712spice3c1/spice3/include/prefix3b1.h /* Local parameters, specific to AT&T UNIX-PC 7300/3B1 */ /* Basic system definition parameters. */ #define UNIX /* Compiling under unix (signals, processes, shell) */ #define HPUX /* HP-UX, denotes System V version */ #define UNIXPC=1 /* AT&T 7300/3B1 with bitmap console driver */ /* Graphics packages available. */ /*#define GI_X*/ #define GI_MFB /* Pathnames, hostnames, and addresses. */ #define BUGADDR "spice@ic.berkeley.edu" /* Where to send bugs. */ #define HELPPATH "/usr/local/lib/spice3lib/helpdir" #define LIBPATH "/usr/local/lib/spice3lib/scripts" #define NEWSFILE "/usr/local/lib/spice3lib/news" /* The message of the day. */ #define SPICEDLOG "/usr/local/lib/spiced/logfile" #define SPICEHOST "" /* Where to do rspice, "" = nowhere */ #define SPICEPATH "/usr/local/bin/spice3" #define DEFAULTMFBCAP "/usr/local/lib/spice3lib/mfbcap" /* Assorted configuration parameters. */ #define FTEDEBUG /* Enable general debugging */ #define CPDEBUG /* Enable cshpar debugging */ #define DEF_EDITOR "vi" #define ASCIIRAWFILE false /* true or false - default file type = ascii */ #define NEWCONV #define CAPZEROBYPASS #define OLDDIRSTUFF /* Machine dependent capabilities. */ #define MAXPOSINT 2147483647 /* Approximate largest arg to exp() without error. */ #define MAX_EXP_ARG 709.78271289338397 #define ASCIIQUOTE /* Use 8th-bit quoting for characters */ /* Functions available in the C library. */ #define HAS_QSORT #define HAS_VSPRINTF #define HAS_INDEX #define HASATRIGH /* Source placed in spice3/fte for UNIX-PC */ /* And things not in this implementation. */ #define index strchr #define rindex strrchr #include /* For UNIX-PC */ #ifdef bcopy /*bstring*/ #undef bzero #undef bcmp #undef bcopy #endif /*bstring*/ /* bstring and dup2 functions are defined in spice3/cp.a for UNIX-PC */ #ifdef LINT #define RCSID(ident) #else /* LINT */ #define RCSID(ident) static char rcsid[] = ident ; #endif /* LINT */ 0707070124060341631006660006700000000000021777770500302372700004400000000125spice3c1/spice3/include/suffix3b1.h /* Local stuff for HP-UX. */ struct passwd *getpwent(), *getpwuid(), *getpwnam(); 0707070124060340450407550006700000000000021777770500302373000003000000000000spice3c1/spice3/include0707070124060441571006440006700000000000011777770500302373000003300000010555spice3c1/spice3/ckt/acan.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "acdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("ACan.c $Revision: 1.9 $ on $Date: 89/01/02 12:18:00 $") int ACan(ckt,restart) CKTcircuit *ckt; int restart; { double freq; double freqTol; /* tolerence parameter for finding final frequency */ int error; long save; int save1; int numNames; IFuid *nameList; IFuid freqUid; GENERIC *acPlot; if(((ACAN*)ckt->CKTcurJob)->ACsaveFreq == 0 || restart) { /* start at beginning */ switch(((ACAN*)ckt->CKTcurJob)->ACstepType) { case DECADE: ((ACAN*)ckt->CKTcurJob)->ACfreqDelta = exp(log(10.0)/((ACAN*)ckt->CKTcurJob)->ACnumberSteps); break; case OCTAVE: ((ACAN*)ckt->CKTcurJob)->ACfreqDelta = exp(log(2.0)/((ACAN*)ckt->CKTcurJob)->ACnumberSteps); break; case LINEAR: ((ACAN*)ckt->CKTcurJob)->ACfreqDelta = (((ACAN*)ckt->CKTcurJob)->ACstopFreq - ((ACAN*)ckt->CKTcurJob)->ACstartFreq)/ (((ACAN*)ckt->CKTcurJob)->ACnumberSteps+1); break; default: return(E_BADPARM); } error = CKTop(ckt, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT, ckt->CKTdcMaxIter); if(error) return(error); ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG; error = CKTload(ckt); if(error) return(error); error = CKTnames(ckt,&numNames,&nameList); if(error) return(error); (*(SPfrontEnd->IFnewUid))((GENERIC *)ckt,&freqUid,(IFuid)NULL, "frequency", UID_OTHER,(GENERIC **)NULL); (*(SPfrontEnd->OUTpBeginPlot))((GENERIC *)ckt,(GENERIC*)ckt->CKTcurJob, ckt->CKTcurJob->JOBname,freqUid,IF_REAL,numNames,nameList, IF_COMPLEX,&acPlot); freq = ((ACAN*)ckt->CKTcurJob)->ACstartFreq; } else { /* continue previous analysis */ freq = ((ACAN*)ckt->CKTcurJob)->ACsaveFreq; ((ACAN*)ckt->CKTcurJob)->ACsaveFreq = 0; /* clear the 'old' frequency */ } switch(((ACAN*)ckt->CKTcurJob)->ACstepType) { case DECADE: case OCTAVE: freqTol = ((ACAN*)ckt->CKTcurJob)->ACfreqDelta * ((ACAN*)ckt->CKTcurJob)->ACstopFreq * ckt->CKTreltol; break; case LINEAR: freqTol = ((ACAN*)ckt->CKTcurJob)->ACfreqDelta * ckt->CKTreltol; break; default: return(E_BADPARM); } while(freq <= ((ACAN*)ckt->CKTcurJob)->ACstopFreq+freqTol) { if( (*(SPfrontEnd->IFpauseTest))() ) { /* user asked us to pause via an interrupt */ ((ACAN*)ckt->CKTcurJob)->ACsaveFreq = freq; return(E_PAUSE); } ckt->CKTomega = 2 * PI *freq; ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEAC; error = NIacIter(ckt); if(error) return(error); if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode&ACSEN) ){ save = ckt->CKTmode; ckt->CKTmode=(ckt->CKTmode&MODEUIC)|MODEDCOP|MODEINITSMSIG; save1 = ckt->CKTsenInfo->SENmode; ckt->CKTsenInfo->SENmode = ACSEN; if(freq == ((ACAN*)ckt->CKTcurJob)->ACstartFreq){ ckt->CKTsenInfo->SENacpertflag = 1; } else{ ckt->CKTsenInfo->SENacpertflag = 0; } if(error = CKTsenAC(ckt)) return (error); ckt->CKTmode = save; ckt->CKTsenInfo->SENmode = save1; } error = CKTacDump(ckt,freq,acPlot); if(error) return(error); /* increment frequency */ switch(((ACAN*)ckt->CKTcurJob)->ACstepType) { case DECADE: case OCTAVE: freq *= ((ACAN*)ckt->CKTcurJob)->ACfreqDelta; if(((ACAN*)ckt->CKTcurJob)->ACfreqDelta==1) goto endsweep; break; case LINEAR: freq += ((ACAN*)ckt->CKTcurJob)->ACfreqDelta; if(((ACAN*)ckt->CKTcurJob)->ACfreqDelta==0) goto endsweep; break; default: return(E_INTERN); } } endsweep: (*(SPfrontEnd->OUTendPlot))(acPlot); return(0); } 0707070124060441601006440006700000000000011777770500302373100004100000002436spice3c1/spice3/ckt/acaskquest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "acdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("ACaskQuest.c $Revision: 1.5 $ on $Date: 88/11/17 02:41:12 $") /* ARGSUSED */ int ACaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case AC_START: value->rValue = ((ACAN*)anal)->ACstartFreq; break; case AC_STOP: value->rValue = ((ACAN*)anal)->ACstopFreq ; break; case AC_STEPS: value->iValue = ((ACAN*)anal)->ACnumberSteps; break; case AC_DEC: if(((ACAN*)anal)->ACstepType == DECADE) { value->iValue=1; } else { value->iValue=0; } break; case AC_OCT: if(((ACAN*)anal)->ACstepType == OCTAVE) { value->iValue=1; } else { value->iValue=0; } break; case AC_LIN: if(((ACAN*)anal)->ACstepType == LINEAR) { value->iValue=1; } else { value->iValue=0; } break; default: return(E_BADPARM); } return(OK); } 0707070124060441611006440006700000000000011777770500302373100004000000004276spice3c1/spice3/ckt/acsetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "acdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("ACsetParm.c $Revision: 1.7 $ on $Date: 89/01/19 18:03:04 $") /* ARGSUSED */ int ACsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case AC_START: ((ACAN*)anal)->ACstartFreq = value->rValue; break; case AC_STOP: ((ACAN*)anal)->ACstopFreq = value->rValue; break; case AC_STEPS: ((ACAN*)anal)->ACnumberSteps = value->iValue; break; case AC_DEC: if(value->iValue) { ((ACAN*)anal)->ACstepType = DECADE; } else { if( ((ACAN*)anal)->ACstepType == DECADE) { ((ACAN*)anal)->ACstepType = 0; } } break; case AC_OCT: if(value->iValue) { ((ACAN*)anal)->ACstepType = OCTAVE; } else { if( ((ACAN*)anal)->ACstepType == OCTAVE) { ((ACAN*)anal)->ACstepType = 0; } } break; case AC_LIN: if(value->iValue) { ((ACAN*)anal)->ACstepType = LINEAR; } else { if( ((ACAN*)anal)->ACstepType == LINEAR) { ((ACAN*)anal)->ACstepType = 0; } } break; default: return(E_BADPARM); } return(OK); } static IFparm ACparms[] = { { "start", AC_START, IF_SET|IF_ASK|IF_REAL, "starting frequency" }, { "stop", AC_STOP, IF_SET|IF_ASK|IF_REAL, "ending frequency" }, { "numsteps", AC_STEPS,IF_SET|IF_ASK|IF_INTEGER, "number of frequencies"}, { "dec", AC_DEC, IF_SET|IF_FLAG, "step by decades" }, { "oct", AC_OCT, IF_SET|IF_FLAG, "step by octaves" }, { "lin", AC_LIN, IF_SET|IF_FLAG, "step linearly" } }; SPICEanalysis ACinfo = { { "AC", "A.C. Small signal analysis", sizeof(ACparms)/sizeof(IFparm), ACparms }, sizeof(ACAN), ACsetParm, ACaskQuest }; 0707070124060441621006440006700000000000011777770500302373100004000000002236spice3c1/spice3/ckt/cktacdump.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTacDump(ckt,freq,file) * this is a simple program to dump the complex rhs vector * into the rawfile. */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "ifsim.h" #include "util.h" #include "suffix.h" RCSID("CKTacDump.c $Revision: 1.8 $ on $Date: 89/04/22 11:41:18 $") int CKTacDump(ckt,freq,plot) register CKTcircuit *ckt; double freq; GENERIC *plot; { register double *rhsold; register double *irhsold; register int i; register IFcomplex *data; IFvalue freqData; IFvalue valueData; rhsold = ckt->CKTrhsOld; irhsold = ckt->CKTirhsOld; freqData.rValue = freq; valueData.v.numValue = ckt->CKTmaxEqNum-1; data = (IFcomplex *) MALLOC((ckt->CKTmaxEqNum-1)*sizeof(IFcomplex)); valueData.v.vec.cVec = data; for (i=0;iCKTmaxEqNum-1;i++) { data[i].real = rhsold[i+1]; data[i].imag = irhsold[i+1]; } (*(SPfrontEnd->OUTpData))(plot,&freqData,&valueData); FREE(data); return(OK); } 0707070124060441631006440006700000000000011777770500302373100004000000001726spice3c1/spice3/ckt/cktacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTacLoad(ckt) * this is a driver program to iterate through all the various * ac load functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTacLoad.c $Revision: 1.4 $ on $Date: 88/06/30 16:24:57 $") int CKTacLoad(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; register int size; int error; size = SMPmatSize(ckt->CKTmatrix); for (i=0;i<=size;i++) { *(ckt->CKTrhs+i)=0; *(ckt->CKTirhs+i)=0; } SMPcClear(ckt->CKTmatrix); for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVacLoad))(ckt->CKThead[i],ckt); if(error) return(error); } } return(OK); } 0707070124060441641006440006700000000000011777770500302373100004000000002257spice3c1/spice3/ckt/cktaccept.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTaccept(ckt) * this is a driver program to iterate through all the various * accept functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTaccept.c $Revision: 1.6 $ on $Date: 89/03/20 11:11:46 $") int CKTaccept(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int size; int error; double *temp; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVaccept))(ckt,ckt->CKThead[i]); if(error) return(error); } } #ifdef PREDICTOR /* now, move the sols vectors around */ temp = ckt->CKTsols[7]; for ( i=7;i>0;i--) { ckt->CKTsols[i] = ckt->CKTsols[i-1]; } ckt->CKTsols[0]=temp; size = SMPmatSize(ckt->CKTmatrix); for(i=0;i<=size;i++) { ckt->CKTsols[0][i]=ckt->CKTrhs[i]; } #endif /* PREDICTOR */ return(OK); } 0707070124060441651006440006700000000000011777770500302373100003600000004112spice3c1/spice3/ckt/cktacct.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * CKTacct * get the specified accounting item into 'value' in the * given circuit 'ckt'. */ #include "prefix.h" #include "const.h" #include "optdefs.h" #include "ifsim.h" #include #include "util.h" #include "cktdefs.h" #include "suffix.h" RCSID("CKTacct.c $Revision: 1.9 $ on $Date: 89/01/16 01:25:46 $") /* ARGSUSED */ int CKTacct(ckt,anal,which,val) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *val; { switch(which) { case OPT_EQNS: val->iValue = ckt->CKTmaxEqNum; break; case OPT_ITERS: val->iValue = ckt->CKTstat->STATnumIter; break; case OPT_TRANIT: val->iValue = ckt->CKTstat->STATtranIter; break; case OPT_TRANCURITER: val->iValue = ckt->CKTstat->STATnumIter - ckt->CKTstat->STAToldIter; break; case OPT_TRANPTS: val->iValue = ckt->CKTstat->STATtimePts; break; case OPT_TRANACCPT: val->iValue = ckt->CKTstat->STATaccepted; break; case OPT_TRANRJCT: val->iValue = ckt->CKTstat->STATrejected; break; case OPT_TOTANALTIME: val->rValue = ckt->CKTstat->STATtotAnalTime; break; case OPT_TRANTIME: val->rValue = ckt->CKTstat->STATtranTime; break; case OPT_LOADTIME: val->rValue = ckt->CKTstat->STATloadTime; break; case OPT_REORDTIME: val->rValue = ckt->CKTstat->STATreorderTime; break; case OPT_DECOMP: val->rValue = ckt->CKTstat->STATdecompTime; break; case OPT_SOLVE: val->rValue = ckt->CKTstat->STATsolveTime; break; case OPT_TRANDECOMP: val->rValue = ckt->CKTstat->STATtranDecompTime; break; case OPT_TRANSOLVE: val->rValue = ckt->CKTstat->STATtranSolveTime; break; case OPT_TEMP: val->rValue = ckt->CKTtemp - CONSTCtoK; break; case OPT_TNOM: val->rValue = ckt->CKTnomTemp - CONSTCtoK; break; default: return(-1); } return(0); } 0707070124060441661006440006700000000000011777770500302373100003500000001406spice3c1/spice3/ckt/cktask.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTask * Ask questions about a specified device. */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "devdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTask.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:02 $") extern SPICEdev *DEVices[]; int CKTask(ckt,fast,which,value,selector) GENERIC *ckt; GENERIC *fast; int which; IFvalue *value; IFvalue *selector; { register int type = ((GENinstance *)fast)->GENmodPtr->GENmodType; if((*DEVices[type]).DEVask) { return( (*((*DEVices[type]).DEVask)) ((CKTcircuit *)ckt, (GENinstance *)fast,which,value,selector) ); } return(E_BADPARM); } 0707070124060441671006440006700000000000011777770500302373100004200000001375spice3c1/spice3/ckt/cktaskanalq.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "tskdefs.h" #include "jobdefs.h" #include "cktdefs.h" #include "ifsim.h" #include "util.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "suffix.h" RCSID("CKTaskAnalQ.c $Revision: 1.6 $ on $Date: 88/11/17 02:41:31 $") extern SPICEanalysis *analInfo[]; /* ARGSUSED */ int CKTaskAnalQ(ckt,analPtr,parm,value,selector) GENERIC *ckt; GENERIC *analPtr; int parm; IFvalue *value; IFvalue *selector; { register int type = ((JOB *)analPtr)->JOBtype; if((analInfo[type]->askQuest) == NULL) return(E_BADPARM); return( (*(analInfo[type]->askQuest))((CKTcircuit*)ckt,analPtr,parm,value)); } 0707070124060441701006440006700000000000011777770500302373100004300000001661spice3c1/spice3/ckt/cktasknodqst.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTaskNodQst * * ask about a parameter on a node. */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTaskNodQst.c $Revision: 1.5 $ on $Date: 88/11/17 02:41:35 $") /* ARGSUSED */ int CKTaskNodQst(ckt,node,parm,value,selector) GENERIC *ckt; GENERIC *node; int parm; IFvalue *value; IFvalue *selector; { if(!node) return(E_BADPARM); switch(parm) { case PARM_NS: value->rValue = ((CKTnode *)node)->nodeset; break; case PARM_IC: value->rValue = ((CKTnode *)node)->ic; break; case PARM_NODETYPE: value->iValue = ((CKTnode *)node)->type; break; default: return(E_BADPARM); } return(OK); } 0707070124060441711006440006700000000000011777770500302373100004200000002651spice3c1/spice3/ckt/cktbindnode.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTbindNode * bind a node of the specified device of the given type to its place * in the specified circuit. */ #include "prefix.h" #include #include "ifsim.h" #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTbindNode.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:06 $") extern SPICEdev *DEVices[]; /*ARGSUSED*/ int CKTbindNode(ckt,fast,term,node) GENERIC *ckt; GENERIC *fast; int term; GENERIC *node; { int mappednode; register int type = ((GENinstance *)fast)->GENmodPtr->GENmodType; mappednode = ((CKTnode *)node)->number; if((*DEVices[type]).DEVpublic.terms >= term && term >0 ) { switch(term) { default: return(E_NOTERM); case 1: ((GENinstance *)fast)->GENnode1 = mappednode; break; case 2: ((GENinstance *)fast)->GENnode2 = mappednode; break; case 3: ((GENinstance *)fast)->GENnode3 = mappednode; break; case 4: ((GENinstance *)fast)->GENnode4 = mappednode; break; case 5: ((GENinstance *)fast)->GENnode5 = mappednode; break; } return(OK); } else { return(E_NOTERM); } } 0707070124060441721006440006700000000000011777770500302373200004300000001010spice3c1/spice3/ckt/cktbreakdump.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTbreakDump(ckt) - dump the breakpoint table associated with * the given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTbreakDump.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:07 $") void CKTbreakDump(ckt) CKTcircuit *ckt; { register int i; for(i=0;iCKTbreakSize;i++) { (void)printf("breakpoint table entry %d is %g\n",i,*(ckt->CKTbreaks+i)); } } 0707070124060441731006440006700000000000011777770500302373200004200000001623spice3c1/spice3/ckt/cktclrbreak.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTclrBreak(ckt) * delete the first time from the breakpoint table for the given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("CKTclrBreak.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:09 $") int CKTclrBreak(ckt) register CKTcircuit *ckt; { double *tmp; register int j; if(ckt->CKTbreakSize >2) { tmp = (double *)MALLOC((ckt->CKTbreakSize-1)*sizeof(double)); if(tmp == (double *)NULL) return(E_NOMEM); for(j=1;jCKTbreakSize;j++) { *(tmp+j-1) = *(ckt->CKTbreaks+j); } FREE(ckt->CKTbreaks); ckt->CKTbreakSize--; ckt->CKTbreaks=tmp; } else { *(ckt->CKTbreaks)= *(ckt->CKTbreaks+1); *(ckt->CKTbreaks+1) = ckt->CKTfinalTime; } return(OK); } 0707070124060441741006440006700000000000011777770500302373200004200000001723spice3c1/spice3/ckt/cktconvtest.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTconvTest(ckt) * this is a driver program to iterate through all the various * convTest functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTconvTest.c $Revision: 1.3 $ on $Date: 88/10/23 16:39:38 $") int CKTconvTest(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int error; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVconvTest))(ckt->CKThead[i],ckt); if(error) return(error); } if(ckt->CKTnoncon) { /*(printf("convTest: device %s failed\n", (*DEVices[i]).DEVpublic.name);*/ return(OK); } } return(OK); } 0707070124060441751006440006700000000000011777770500302373200004000000002635spice3c1/spice3/ckt/cktcrtelt.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTcrtElement(ckt,type,inModPtr,inInstPtr,name,subname) * Create a device of the specified type, with the given name, using * the specified model in the named circuit. */ #include "prefix.h" #include #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTcrtElt.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:11 $") /*ARGSUSED*/ int CKTcrtElt(ckt,inModPtr,inInstPtr,name) GENERIC *ckt; GENERIC *inModPtr; GENERIC **inInstPtr; IFuid name; { GENinstance *instPtr = NULL; GENmodel *modPtr=(GENmodel*)inModPtr; extern SPICEdev *DEVices[]; int error; int type; if((GENmodel *)modPtr==(GENmodel*)NULL) return(E_NOMOD); type = ((GENmodel*)modPtr)->GENmodType; error =CKTfndDev(ckt,&type,(GENERIC**)&instPtr,name,inModPtr,(char *)NULL ); if (error== OK) { if(inInstPtr) *inInstPtr=(GENERIC *)instPtr; return(E_EXISTS); } else if (error != E_NODEV) return(error); instPtr = (GENinstance *)MALLOC((*DEVices[type]).DEVinstSize); if(instPtr == (GENinstance *)NULL) return(E_NOMEM); instPtr->GENname = name; instPtr->GENmodPtr = modPtr; instPtr->GENnextInstance = modPtr->GENinstances; modPtr->GENinstances = instPtr; if(inInstPtr != NULL) *inInstPtr = (GENERIC *)instPtr; return(OK); } 0707070124060441761006440006700000000000011777770500302373200004100000001167spice3c1/spice3/ckt/cktdeltask.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "tskdefs.h" #include "jobdefs.h" #include "ifsim.h" #include "util.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "suffix.h" RCSID("CKTdelTask.c $Revision: 1.5 $ on $Date: 88/11/17 02:41:57 $") /* ARGSUSED */ int CKTdelTask(ckt,task) GENERIC *ckt; GENERIC *task; { JOB *job; JOB *old=NULL; for(job = ((TSKtask*)task)->jobs; job; job=job->JOBnextJob){ if(old) FREE(old); old=job; } if(old)FREE(old); FREE(task); return(OK); } 0707070124060441771006440006700000000000011777770500302373200004100000002722spice3c1/spice3/ckt/cktdestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTdestroy(ckt) * this is a driver program to iterate through all the various * destroy functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "util.h" #include "ifsim.h" #include "sperror.h" #include "suffix.h" RCSID("CKTdestroy.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:12 $") extern SPICEdev *DEVices[]; int CKTdestroy(inCkt) GENERIC *inCkt; { register CKTcircuit *ckt = (CKTcircuit *)inCkt; register int i; register CKTnode *node; register CKTnode *nnode; if(ckt->CKTsenInfo){ if(ckt->CKTrhsOp) FREE(ckt->CKTrhsOp); if(ckt->CKTsenRhs) FREE(ckt->CKTsenRhs); if(ckt->CKTseniRhs) FREE(ckt->CKTseniRhs); SENdestroy(ckt->CKTsenInfo); } for (i=0;iCKThead[i] != NULL) ){ (*((*DEVices[i]).DEVdestroy))(&(ckt->CKThead[i])); } } for(i=0;i<=ckt->CKTmaxOrder+1;i++){ FREE(ckt->CKTstates[i]); } if(ckt->CKTmatrix) SMPdestroy(ckt->CKTmatrix); if(ckt->CKTbreaks) FREE(ckt->CKTbreaks); for(node = ckt->CKTnodes; node; ) { nnode = node->next; FREE(node); node = nnode; } ckt->CKTnodes = (CKTnode *)NULL; ckt->CKTlastNode = (CKTnode *)NULL; FREE(ckt); return(OK); } 0707070124060442001006440006700000000000011777770500302373200004100000000717spice3c1/spice3/ckt/cktdltinst.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTdltInst * delete the specified instance - not yet supported in spice */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTdltInst.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:13 $") /* ARGSUSED */ int CKTdltInst(ckt,instance) GENERIC *ckt; GENERIC *instance; { return(E_UNSUPP); } 0707070124060442011006440006700000000000011777770500302373200004000000000705spice3c1/spice3/ckt/cktdltmod.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTdltMod * delete the specified model - not yet supported in spice */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTdltMod.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:14 $") /* ARGSUSED */ int CKTdltMod(ckt,modPtr) GENERIC *ckt; GENERIC *modPtr; { return(E_UNSUPP); } 0707070124060442021006440006700000000000011777770500302373200004000000000700spice3c1/spice3/ckt/cktdltnod.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTdltNod * delete the specified node - not yet supported in spice */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTdltNod.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:15 $") /* ARGSUSED */ int CKTdltNod(ckt,node) GENERIC *ckt; GENERIC *node; { return(E_UNSUPP); } 0707070124060442031006440006700000000000011777770500302373200003700000017607spice3c1/spice3/ckt/cktdojob.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include "cktdefs.h" #include #include "sperror.h" #include "trandefs.h" #include "util.h" #include "suffix.h" RCSID("CKTdoJob.c $Revision: 1.8 $ on $Date: 89/04/05 13:14:42 $") extern SPICEanalysis *analInfo[]; extern int ANALmaxnum; int CKTdoJob(inCkt,reset,inTask) GENERIC *inCkt; int reset; GENERIC *inTask; { register CKTcircuit *ckt = (CKTcircuit *)inCkt; register TSKtask *task = (TSKtask *)inTask; register JOB *job; int error; int which; int i; double startTime; unsigned senflag ; startTime = (*(SPfrontEnd->IFseconds))(); ckt->CKTtemp = task->TSKtemp; ckt->CKTnomTemp = task->TSKnomTemp; ckt->CKTmaxOrder = task->TSKmaxOrder; ckt->CKTintegrateMethod = task->TSKintegrateMethod; ckt->CKTbypass = task->TSKbypass; ckt->CKTdcMaxIter = task->TSKdcMaxIter; ckt->CKTdcTrcvMaxIter = task->TSKdcTrcvMaxIter; ckt->CKTtranMaxIter = task->TSKtranMaxIter; ckt->CKTnumSrcSteps = task->TSKnumSrcSteps; ckt->CKTnumGminSteps = task->TSKnumGminSteps; ckt->CKTminBreak = task->TSKminBreak; ckt->CKTabstol = task->TSKabstol; ckt->CKTpivotAbsTol = task->TSKpivotAbsTol; ckt->CKTpivotRelTol = task->TSKpivotRelTol; #ifdef NEWTRUNC ckt->CKTlteReltol = task->TSKlteReltol; ckt->CKTlteAbstol = task->TSKlteAbstol; #endif /* NEWTRUNC */ ckt->CKTreltol = task->TSKreltol; ckt->CKTchgtol = task->TSKchgtol; ckt->CKTvoltTol = task->TSKvoltTol; ckt->CKTgmin = task->TSKgmin; ckt->CKTdelmin = task->TSKdelmin; ckt->CKTtrtol = task->TSKtrtol; ckt->CKTdefaultMosL = task->TSKdefaultMosL; ckt->CKTdefaultMosW = task->TSKdefaultMosW; ckt->CKTdefaultMosAD = task->TSKdefaultMosAD; ckt->CKTdefaultMosAS = task->TSKdefaultMosAS; ckt->CKTfixLimit = task->TSKfixLimit; ckt->CKTnoOpIter = task->TSKnoOpIter; if(reset) { which = -1; senflag = 0; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { senflag = 1; ckt->CKTcurJob=job; ckt->CKTsenInfo = (SENstruct *)job; error = SENstartup(ckt); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } if(ckt->CKTsenInfo && !senflag){ FREE(ckt->CKTsenInfo); } } error = CKTsetup(ckt); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } error = CKTtemp(ckt); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } ckt->CKTcurrentAnalysis = 0; } which = -1; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { ckt->CKTcurJob=job; error = CKTic(ckt); error = DCop(ckt); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } } which = -1; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { ckt->CKTcurJob=job; error = TFanal(ckt,reset); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } } which = -1; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { ckt->CKTcurJob=job; error = CKTic(ckt); error = DCtrCurv(ckt,reset); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } } which = -1; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { ckt->CKTcurJob=job; error = CKTic(ckt); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } error = ACan(ckt,reset); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } } which = -1; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { ckt->CKTcurJob=job; ckt->CKTfinalTime = ((TRANan*)job)->TRANfinalTime; ckt->CKTstep = ((TRANan*)job)->TRANstep; ckt->CKTinitTime = ((TRANan*)job)->TRANinitTime; ckt->CKTmaxStep = ((TRANan*)job)->TRANmaxStep; if(ckt->CKTmaxStep == 0) { ckt->CKTmaxStep = (ckt->CKTfinalTime-ckt->CKTinitTime)/50; } ckt->CKTdelmin = 1e-9*ckt->CKTmaxStep; ckt->CKTmode = ((TRANan*)job)->TRANmode; /* this used to be in setup, but we need it here now */ /* (must be done after mode is set as above) */ error = CKTic(ckt); if(error) return(error); error = DCtran(ckt,reset); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } } which = -1; for(i=0;ipublic.name)==0) { which = i; break; } } if(which != -1) { for(job=task->jobs;job;job=job->JOBnextJob) { if(job->JOBtype == which) { ckt->CKTcurJob=job; error = CKTic(ckt); error = PZan(ckt,reset); if(error) { ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; return(error); } } } } ckt->CKTstat->STATtotAnalTime += (*(SPfrontEnd->IFseconds))()-startTime; /* Temporary */ if(ckt->CKTsenInfo){ SENdestroy(ckt->CKTsenInfo); } return(OK); } 0707070124060442041006440006700000000000011777770500302373200003600000001153spice3c1/spice3/ckt/cktdump.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTdump(ckt) * this is a simple program to dump the rhs vector to stdout */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("CKTdump.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:17 $") void CKTdump(ckt,ref,plot) register CKTcircuit *ckt; double ref; GENERIC *plot; { IFvalue refData; IFvalue valData; refData.rValue = ref; valData.v.numValue = ckt->CKTmaxEqNum-1; valData.v.vec.rVec = ckt->CKTrhsOld+1; (*(SPfrontEnd->OUTpData))(plot,&refData,&valData); } 0707070124060442051006440006700000000000011777770500302373200004100000001543spice3c1/spice3/ckt/cktfndanal.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTfndAnal * find the given Analysis given its name and return the Analysis pointer */ #include "prefix.h" #include #include "ifsim.h" #include "jobdefs.h" #include "tskdefs.h" #include "sperror.h" #include "cktdefs.h" #include "suffix.h" RCSID("CKTfndAnal.c $Revision: 1.2 $ on $Date: 88/06/30 16:25:18 $") /* ARGSUSED */ int CKTfndAnal(ckt,analIndex,anal,name,inTask,taskName) GENERIC *ckt; int *analIndex; GENERIC **anal; IFuid name; GENERIC *inTask; IFuid taskName; { TSKtask *task = (TSKtask *)inTask; register JOB *here; for (here = ((TSKtask *)task)->jobs;here;here = here->JOBnextJob) { if(strcmp(here->JOBname,name)==0) { if(anal) *anal = (GENERIC *)here; return(OK); } } return(E_NOTFOUND); } 0707070124060442061006440006700000000000011777770500302373600004300000001455spice3c1/spice3/ckt/cktfndbranch.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTfndBranch(ckt,name) * this is a driver program to iterate through all the various * findBranch functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "suffix.h" RCSID("CKTfndBranch.c $Revision: 1.2 $ on $Date: 88/06/30 16:25:19 $") int CKTfndBranch(ckt,name) register CKTcircuit *ckt; IFuid name; { extern SPICEdev *DEVices[]; register int i; int j; for (i=0;iCKThead[i] != NULL) { j = (*((*DEVices[i]).DEVfindBranch))(ckt,ckt->CKThead[i],name); if(j != 0) return(j); } } return(0); } 0707070124060442071006440006700000000000011777770500302373600004000000006133spice3c1/spice3/ckt/cktfnddev.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "ifsim.h" #include "cktdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("CKTfndDev.c $Revision: 1.2 $ on $Date: 88/06/30 16:25:19 $") int CKTfndDev(Ckt,type,fast,name,modfast,modname) GENERIC *Ckt; int *type; GENERIC **fast; IFuid name; GENERIC *modfast; IFuid modname; { register CKTcircuit *ckt=(CKTcircuit *)Ckt; register GENinstance *here; register GENmodel *mods; if((GENinstance **)fast != (GENinstance **)NULL && *(GENinstance **)fast != (GENinstance *)NULL) { /* already have fast, so nothing much to do */ /* just get & set type */ if(type) *type = (*((GENinstance**)fast))->GENmodPtr->GENmodType; return(OK); } if(modfast) { /* have model, just need device */ mods = (GENmodel*)modfast; for(here = mods->GENinstances ; here != NULL; here = here->GENnextInstance) { if (here->GENname == name) { if(fast != NULL) *(GENinstance **)fast = here; if(type) *type = mods->GENmodType; return(OK); } } return(E_NODEV); } if(*type >=0 && *type < DEVmaxnum) { /* have device type, need to find model & device */ /* look through all models */ for(mods=(GENmodel *)ckt->CKThead[*type]; mods != NULL ; mods = mods->GENnextModel) { /* and all instances */ if(modname == (char *)NULL || mods->GENmodName == modname) { for(here = mods->GENinstances ; here != NULL; here = here->GENnextInstance) { if (here->GENname == name) { if(fast != 0) *(GENinstance **)fast = here; return(OK); } } if(mods->GENmodName == modname) { return(E_NODEV); } } } return(E_NOMOD); } else if(*type == -1) { /* look through all types (UGH - worst case - take forever) */ for(*type = 0;*type CKThead[*type];mods!=NULL; mods = mods->GENnextModel) { /* and all instances */ if(modname == (char *)NULL || mods->GENmodName == modname) { for(here = mods->GENinstances ; here != NULL; here = here->GENnextInstance) { if (here->GENname == name) { if(fast != 0) *(GENinstance **)fast = here; return(OK); } } if(mods->GENmodName == modname) { return(E_NODEV); } } } } *type = -1; return(E_NODEV); } else return(E_BADPARM); } 0707070124060442101006440006700000000000011777770500302373600004000000003145spice3c1/spice3/ckt/cktfndmod.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "ifsim.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("CKTfndMod.c $Revision: 1.2 $ on $Date: 88/06/30 16:25:20 $") int CKTfndMod(ckt,type,modfast,modname) GENERIC *ckt; int *type; GENERIC **modfast; IFuid modname; { register GENmodel *mods; if(modfast != NULL && *(GENmodel **)modfast != NULL) { /* already have modfast, so nothing to do */ if(type) *type = (*(GENmodel **)modfast)->GENmodType; return(OK); } if(*type >=0 && *type < DEVmaxnum) { /* have device type, need to find model */ /* look through all models */ for(mods=((CKTcircuit *)ckt)->CKThead[*type]; mods != NULL ; mods = mods->GENnextModel) { if(mods->GENmodName == modname) { *modfast = (char *)mods; return(OK); } } return(E_NOMOD); } else if(*type == -1) { /* look through all types (UGH - worst case - take forever) */ for(*type = 0;*type CKThead[*type];mods!=NULL; mods = mods->GENnextModel) { if(mods->GENmodName == modname) { *modfast = (char *)mods; return(OK); } } } *type = -1; return(E_NOMOD); } else return(E_BADPARM); } 0707070124060442111006440006700000000000011777770500302373600004100000001254spice3c1/spice3/ckt/cktfndnode.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTfndNode * find the given node given its name and return the node pointer */ #include "prefix.h" #include #include "ifsim.h" #include "sperror.h" #include "cktdefs.h" #include "suffix.h" RCSID("CKTfndNode.c $Revision: 1.2 $ on $Date: 88/06/30 16:25:21 $") /* ARGSUSED */ int CKTfndNode(ckt,node,name) GENERIC *ckt; GENERIC **node; IFuid name; { register CKTnode *here; for (here = ((CKTcircuit *)ckt)->CKTnodes; here; here = here->next) { if(here->name == name) { if(node) *node = (char *)here; return(OK); } } return(E_NOTFOUND); } 0707070124060442121006440006700000000000011777770500302373600004100000000746spice3c1/spice3/ckt/cktfndtask.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTfndTask * find the specified task - not yet supported in spice */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTfndTask.c $Revision: 1.2 $ on $Date: 88/06/30 16:25:22 $") /* ARGSUSED */ int CKTfndTask(ckt,taskPtr,taskName) GENERIC *ckt; GENERIC **taskPtr; IFuid taskName; { return(E_UNSUPP); } 0707070124060442131006440006700000000000011777770500302373600004000000002306spice3c1/spice3/ckt/cktground.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTground(ckt,node) * specify the node to be the ground node of the given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTground.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:23 $") int CKTground(inCkt,node,name) GENERIC *inCkt; GENERIC **node; IFuid name; { register CKTcircuit *ckt = (CKTcircuit *)inCkt; if(ckt->CKTnodes) { if(ckt->CKTnodes->name) { /*already exists - keep old name, but return it */ if(node)*node = (char *)ckt->CKTnodes; return(E_EXISTS); } ckt->CKTnodes->name = name; ckt->CKTnodes->type = SP_VOLTAGE; ckt->CKTnodes->number = 0; } else { ckt->CKTnodes = (CKTnode *)MALLOC(sizeof(CKTnode)); if(ckt->CKTnodes == NULL) return(E_NOMEM); ckt->CKTnodes->name = name; ckt->CKTnodes->type = SP_VOLTAGE; ckt->CKTnodes->number = 0; ckt->CKTnodes->next = (CKTnode *)NULL; ckt->CKTlastNode = ckt->CKTnodes; } if(node)*node = (char *)ckt->CKTnodes; return(OK); } 0707070124060442141006440006700000000000011777770500302373600003400000002716spice3c1/spice3/ckt/cktic.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "smpdefs.h" #include "util.h" #include "sperror.h" #include "devdefs.h" #include "suffix.h" RCSID("CKTic.c $Revision: 1.5 $ on $Date: 88/06/30 16:25:24 $") extern SPICEdev *DEVices[]; int CKTic(ckt) CKTcircuit *ckt; { int error; int size; int i; CKTnode *node; size = SMPmatSize(ckt->CKTmatrix); for (i=0;i<=size;i++) { *(ckt->CKTrhs+i)=0; } for(node = ckt->CKTnodes;node != NULL; node = node->next) { if(node->nsGiven) { node->ptr = SMPmakeElt(ckt->CKTmatrix,node->number,node->number); if(node->ptr == (double *)NULL) return(E_NOMEM); ckt->CKThadNodeset = 1; *(ckt->CKTrhs+node->number) = node->nodeset; } if(node->icGiven) { if(! ( node->ptr)) { node->ptr = SMPmakeElt(ckt->CKTmatrix,node->number, node->number); if(node->ptr == (double *)NULL) return(E_NOMEM); } *(ckt->CKTrhs+node->number) = node->ic; } } if(ckt->CKTmode & MODEUIC) { for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVsetic))(ckt->CKThead[i],ckt); if(error) return(error); } } } return(OK); } 0707070124060442151006440006700000000000011777770500302373600003600000003201spice3c1/spice3/ckt/cktinit.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "ifsim.h" #include "cktdefs.h" #include "util.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("CKTinit.c $Revision: 1.6 $ on $Date: 88/06/30 16:25:24 $") int CKTinit(ckt) GENERIC **ckt; /* new circuit to create */ { register int i; register CKTcircuit *sckt; int error; sckt = (CKTcircuit *)( *ckt = (char *)MALLOC(sizeof(CKTcircuit)) ); if(sckt == NULL) return(E_NOMEM); for (i=0;iCKThead[i] = (GENmodel *) NULL; } (sckt)->CKTmaxEqNum = 1; (sckt)->CKTnodes = (CKTnode *)NULL; (sckt)->CKTlastNode = (CKTnode *)NULL; error = NIinit(sckt); if(error) return(error); (sckt)->CKTgmin = 1e-12; (sckt)->CKTabstol = 1e-12; (sckt)->CKTreltol = 1e-3; (sckt)->CKTchgtol = 1e-14; (sckt)->CKTvoltTol = 1e-6; (sckt)->CKTtrtol = 7; (sckt)->CKTbypass = 1; (sckt)->CKTtranMaxIter = 10; (sckt)->CKTdcMaxIter = 100; (sckt)->CKTdcTrcvMaxIter = 50; (sckt)->CKTintegrateMethod = TRAPEZOIDAL; (sckt)->CKTorder = 1; (sckt)->CKTmaxOrder = 2; (sckt)->CKTpivotAbsTol = 1e-13; (sckt)->CKTpivotRelTol = 1e-3; (sckt)->CKTtemp = 300.15; (sckt)->CKTnomTemp = 300.15; (sckt)->CKTdefaultMosL = 1e-4; (sckt)->CKTdefaultMosW = 1e-4; (sckt)->CKTdefaultMosAD = 0; (sckt)->CKTdefaultMosAS = 0; (sckt)->CKTsrcFact=1; (sckt)->CKTdiagGmin=0; (sckt)->CKTstat = (STATistics *)MALLOC(sizeof(STATistics)); if( (sckt)->CKTstat == (STATistics *)NULL) return(E_NOMEM); return(OK); } 0707070124060442161006440006700000000000011777770500302373700004300000003447spice3c1/spice3/ckt/cktinst2node.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTinst2Node * get the name and node pointer for a node given a device it is * bound to and the terminal of the device. */ #include "prefix.h" #include #include "ifsim.h" #include "sperror.h" #include "cktdefs.h" #include "gendefs.h" #include "devdefs.h" #include "suffix.h" RCSID("CKTinst2Node.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:25 $") extern SPICEdev *DEVices[]; int CKTinst2Node(ckt,instPtr,terminal,node,nodeName) GENERIC *ckt; GENERIC *instPtr; int terminal; GENERIC **node; IFuid *nodeName; { int nodenum; register int type; CKTnode *here; type = ((GENinstance *)instPtr)->GENmodPtr->GENmodType; if((*DEVices[type]).DEVpublic.terms >= terminal && terminal >0 ) { switch(terminal) { default: return(E_NOTERM); case 1: nodenum = ((GENinstance *)instPtr)->GENnode1; break; case 2: nodenum = ((GENinstance *)instPtr)->GENnode2; break; case 3: nodenum = ((GENinstance *)instPtr)->GENnode3; break; case 4: nodenum = ((GENinstance *)instPtr)->GENnode4; break; case 5: nodenum = ((GENinstance *)instPtr)->GENnode5; break; } /* ok, now we know its number, so we just have to find it.*/ for(here = ((CKTcircuit*)ckt)->CKTnodes;here;here = here->next) { if(here->number == nodenum) { /* found it */ *node = (GENERIC*) here; *nodeName = here->name; return(OK); } } return(E_NOTFOUND); } else { return(E_NOTERM); } } 0707070124060442171006440006700000000000011777770500302373700004000000002156spice3c1/spice3/ckt/cktlinkeq.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTlinkEq * Link an already allocated node into the necessary structure */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTlinkEq.c $Revision: 1.3 $ on $Date: 88/11/17 02:43:01 $") int CKTlinkEq(ckt,node) CKTcircuit *ckt; CKTnode *node; { if(!(ckt->CKTnodes)) { /* starting the list - allocate both ground and 1 */ ckt->CKTnodes = (CKTnode *) MALLOC(sizeof(CKTnode)); if(ckt->CKTnodes == (CKTnode *)NULL) return(E_NOMEM); ckt->CKTnodes->name = (char *)NULL; ckt->CKTnodes->type = SP_VOLTAGE; ckt->CKTnodes->number = 0; ckt->CKTlastNode = ckt->CKTnodes; } if(node == (CKTnode *)NULL) return(E_BADPARM); ckt->CKTlastNode->next = node; ckt->CKTlastNode = ckt->CKTlastNode->next; ckt->CKTlastNode->number = ckt->CKTmaxEqNum++; ckt->CKTlastNode->next = (CKTnode *)NULL; return(OK); } 0707070124060442201006440006700000000000011777770500302373700003600000004265spice3c1/spice3/ckt/cktload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTload(ckt) * this is a driver program to iterate through all the various * load functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTload.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:28 $") int CKTload(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; register int size; double startTime; CKTnode *node; int error; #ifdef STEPDEBUG int noncon; #endif /* STEPDEBUG */ startTime = (*(SPfrontEnd->IFseconds))(); size = SMPmatSize(ckt->CKTmatrix); for (i=0;i<=size;i++) { *(ckt->CKTrhs+i)=0; } SMPclear(ckt->CKTmatrix); #ifdef STEPDEBUG noncon = ckt->CKTnoncon; #endif /* STEPDEBUG */ for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVload))(ckt->CKThead[i],ckt); #ifdef STEPDEBUG if(noncon != ckt->CKTnoncon) { printf("device type %s nonconvergence\n", (*DEVices[i]).DEVpublic.name); noncon = ckt->CKTnoncon; } #endif /* STEPDEBUG */ if(error) return(error); } } if(ckt->CKTmode & MODEDC) { /* consider doing nodeset & ic assignments */ if(ckt->CKTmode & (MODEINITJCT | MODEINITFIX)) { /* do nodesets */ for(node=ckt->CKTnodes;node;node=node->next) { if(node->nsGiven) { *(ckt->CKTrhs+node->number)+= node->nodeset; *(node->ptr) += 1; } } } if( (ckt->CKTmode & MODETRANOP) && (!(ckt->CKTmode & MODEUIC))) { for(node=ckt->CKTnodes;node;node=node->next) { if(node->icGiven) { *(ckt->CKTrhs+node->number) += node->ic; *(node->ptr) += 1; } } } } ckt->CKTstat->STATloadTime += (*(SPfrontEnd->IFseconds))()-startTime; return(OK); } 0707070124060442211006440006700000000000011777770500302373700004100000002430spice3c1/spice3/ckt/cktmapnode.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTmapNode(ckt,node) * map the given node to the compact node numbering set of the * specified circuit */ #include "prefix.h" #include #include "ifsim.h" #include "sperror.h" #include "cktdefs.h" #include "suffix.h" RCSID("CKTmapNode.c $Revision: 1.6 $ on $Date: 89/01/02 18:28:47 $") /* ARGSUSED */ int CKTmapNode(ckt,node,name) GENERIC *ckt; GENERIC **node; IFuid name; { register CKTnode *here; int error; IFuid uid; CKTnode *mynode; for (here = ((CKTcircuit *)ckt)->CKTnodes; here; here = here->next) { if(here->name == name) { if(node) *node = (char *)here; return(E_EXISTS); } } /* not found, so must be a new one */ error = CKTmkNode((CKTcircuit*)ckt,&mynode); /*allocate the node*/ if(error) return(error); error = (*(SPfrontEnd->IFnewUid))((GENERIC *)ckt,&uid,(IFuid*)NULL,name, UID_SIGNAL,(GENERIC**)mynode); /* get a uid for it */ if(error) return(error); mynode->name = uid; /* set the info we have */ mynode->type = SP_VOLTAGE; error = CKTlinkEq((CKTcircuit*)ckt,mynode); /* and link it in */ if(node) *node = (GENERIC *)mynode; /* and finally, return it */ return(OK); } 0707070124060442221006440006700000000000011777770500302373700003700000002010spice3c1/spice3/ckt/cktmkcur.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTmkCur * make the given name a 'node' of type current in the * specified circuit */ #include "prefix.h" #include #include "ifsim.h" #include "sperror.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTmkCur.c $Revision: 1.5 $ on $Date: 88/08/07 14:34:17 $") /* ARGSUSED */ int CKTmkCur(ckt,node,basename,suffix) CKTcircuit *ckt; CKTnode **node; IFuid basename; char *suffix; { IFuid uid; int error; CKTnode *mynode; CKTnode *checknode; error = CKTmkNode(ckt,&mynode); if(error) return(error); checknode = mynode; error = (*(SPfrontEnd->IFnewUid))((GENERIC *)ckt,&uid,basename, suffix,UID_SIGNAL,(GENERIC**)&checknode); if(error) { FREE(mynode); if(node) *node = checknode; return(error); } mynode->name = uid; mynode->type = SP_CURRENT; if(node) *node = mynode; error = CKTlinkEq(ckt,mynode); return(error); } 0707070124060442231006440006700000000000011777770500302373700004000000001344spice3c1/spice3/ckt/cktmknode.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTmkNode(ckt,node) * Tentatively allocate a new circuit equation structure */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTmkNode.c $Revision: 1.4 $ on $Date: 88/11/17 02:43:16 $") /* ARGSUSED */ int CKTmkNode(ckt,node) CKTcircuit *ckt; CKTnode **node; { CKTnode *mynode; mynode = (CKTnode *)MALLOC(sizeof(CKTnode)); if(mynode == (CKTnode *)NULL) return(E_NOMEM); mynode->next = (CKTnode *)NULL; if(node) *node = mynode; return(OK); } 0707070124060442241006440006700000000000011777770500302373700004000000002014spice3c1/spice3/ckt/cktmkvolt.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTmkVolt * make the given name a 'node' of type current in the * specified circuit */ #include "prefix.h" #include #include "ifsim.h" #include "sperror.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTmkVolt.c $Revision: 1.5 $ on $Date: 88/08/07 14:35:51 $") /* ARGSUSED */ int CKTmkVolt(ckt,node,basename,suffix) CKTcircuit *ckt; CKTnode **node; IFuid basename; char *suffix; { IFuid uid; int error; CKTnode *mynode; CKTnode *checknode; error = CKTmkNode(ckt,&mynode); if(error) return(error); checknode = mynode; error = (*(SPfrontEnd->IFnewUid))((GENERIC *)ckt,&uid,basename, suffix,UID_SIGNAL,(GENERIC**)&checknode); if(error) { FREE(mynode); if(node) *node = checknode; return(error); } mynode->name = uid; mynode->type = SP_VOLTAGE; if(node) *node = mynode; error = CKTlinkEq(ckt,mynode); return(error); } 0707070124060442251006440006700000000000011777770500302373700004000000001415spice3c1/spice3/ckt/cktmodask.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTmodAsk * Ask questions about a specified device. */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "devdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTmodAsk.c $Revision: 1.5 $ on $Date: 88/08/07 14:40:21 $") extern SPICEdev *DEVices[]; /* ARGSUSED */ int CKTmodAsk(ckt,modfast,which,value,selector) GENERIC *ckt; GENERIC *modfast; int which; IFvalue *value; IFvalue *selector; { int type = ((GENmodel *)modfast)->GENmodType; if((*DEVices[type]).DEVmodAsk) { return( (*((*DEVices[type]).DEVmodAsk)) ((CKTcircuit *)ckt, (GENmodel *)modfast,which,value) ); } return(E_BADPARM); } 0707070124060442261006440006700000000000011777770500302373700004000000002372spice3c1/spice3/ckt/cktmodcrt.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTmodCrt(type,name,ckt,fast) * Create a device model of the specified type, with the given name * in the named circuit. */ #include "prefix.h" #include #include "devdefs.h" #include "cktdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("CKTmodCrt.c $Revision: 1.4 $ on $Date: 88/06/30 16:25:35 $") int CKTmodCrt(ckt,type,modfast,name) GENERIC *ckt; int type; GENERIC **modfast; IFuid name; { extern SPICEdev *DEVices[]; GENmodel *mymodfast = NULL; int error; error = CKTfndMod(ckt,&type,(GENERIC**)&mymodfast,name); if(error == E_NOMOD) { mymodfast = (GENmodel *)MALLOC((*DEVices[type]).DEVmodSize); if(mymodfast == (GENmodel *)NULL) return(E_NOMEM); mymodfast->GENmodType = type; mymodfast->GENmodName = name; mymodfast->GENnextModel =(GENmodel *)((CKTcircuit *)ckt)->CKThead[type]; ((CKTcircuit *)ckt)->CKThead[type]=(GENmodel *)mymodfast; if(modfast) *modfast=(GENERIC *)mymodfast; return(OK); } else if (error==0) { if(modfast) *modfast=(GENERIC *)mymodfast; return(E_EXISTS); } else { return(error); } /*NOTREACHED*/ } 0707070124060442271006440006700000000000011777770500302373700004200000001474spice3c1/spice3/ckt/cktmodparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTmodParam * attach the given parameter to the specified model in the given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTmodParam.c $Revision: 1.5 $ on $Date: 88/08/07 01:46:19 $") extern SPICEdev *DEVices[]; /* ARGSUSED */ int CKTmodParam(ckt,modfast,param,val,selector) GENERIC *ckt; GENERIC *modfast; int param; IFvalue *val; IFvalue *selector; { register int type = ((GENmodel *)modfast)->GENmodType; if (((*DEVices[type]).DEVmodParam)) { return(((*((*DEVices[type]).DEVmodParam)) (param,val, (GENmodel *)modfast))); } else { return(E_BADPARM); } } 0707070124060442301006440006700000000000011777770500302373700003700000001563spice3c1/spice3/ckt/cktnames.c/* * Copyright (c) 1988 Thomas L. Quarles */ /* *CKTnames(ckt) * output information on all circuit nodes/equations * */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "util.h" #include "suffix.h" RCSID("CKTnames.c $Revision: 1.3 $ on $Date: 88/11/17 02:43:30 $") int CKTnames(ckt,numNames,nameList) register CKTcircuit *ckt; int *numNames; register IFuid **nameList; { register CKTnode *here; register int i; *numNames = ckt->CKTmaxEqNum-1; *nameList = (IFuid *)MALLOC(*numNames * sizeof(IFuid )); if ((*nameList) == (IFuid *)NULL) return(E_NOMEM); i=0; for (here = ckt->CKTnodes->next; here; here = here->next) { *((*nameList)+i++) = here->name; } return(OK); } 0707070124060442311006440006700000000000011777770500302373700004100000002156spice3c1/spice3/ckt/cktnewanal.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "tskdefs.h" #include "jobdefs.h" #include "ifsim.h" #include "util.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "suffix.h" RCSID("CKTnewAnal.c $Revision: 1.6 $ on $Date: 88/11/17 02:43:33 $") extern SPICEanalysis *analInfo[]; /* ARGSUSED */ int CKTnewAnal(ckt,type,name,analPtr,taskPtr) GENERIC *ckt; int type; IFuid name; GENERIC **analPtr; GENERIC *taskPtr; { if(type==0) { /* special case for analysis type 0 == option card */ *analPtr=taskPtr; /* pointer to the task itself */ (*(JOB **)analPtr)->JOBname = name; (*(JOB **)analPtr)->JOBtype = type; return(OK); /* doesn't need to be created */ } *analPtr = (GENERIC *)MALLOC(analInfo[type]->size); if(*analPtr==NULL) return(E_NOMEM); (*(JOB **)analPtr)->JOBname = name; (*(JOB **)analPtr)->JOBtype = type; (*(JOB **)analPtr)->JOBnextJob = ((TSKtask *)taskPtr)->jobs; ((TSKtask *)taskPtr)->jobs = (JOB *)*analPtr; return(OK); } 0707070124060442321006440006700000000000011777770500302373700003700000001664spice3c1/spice3/ckt/cktneweq.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTnewEq(ckt,node,name) * Allocate a new circuit equation number (returned) in the specified * circuit to contain a new equation or node * returns -1 for failure to allocate a node number * */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTnewEq.c $Revision: 1.5 $ on $Date: 88/11/17 02:43:35 $") int CKTnewEq(inCkt,node,name) GENERIC *inCkt; GENERIC **node; IFuid name; { CKTnode *mynode; register CKTcircuit *ckt = (CKTcircuit *)inCkt; int error; error = CKTmkNode(ckt,&mynode); if(error) return(error); if(node) *node = (GENERIC *)mynode; mynode->name = name; error = CKTlinkEq(ckt,mynode); return(error); } 0707070124060442331006440006700000000000011777770500302373700004100000003057spice3c1/spice3/ckt/cktnewnode.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTnewNode(ckt,node,name) * Allocate a new circuit equation number (returned) in the specified * circuit to contain a new equation or node * returns -1 for failure to allocate a node number * */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTnewNode.c $Revision: 1.3 $ on $Date: 88/11/17 02:43:38 $") /* should just call CKTnewEQ and set node type afterwards */ int CKTnewNode(inCkt,node,name) GENERIC *inCkt; GENERIC **node; IFuid name; { register CKTcircuit *ckt = (CKTcircuit *)inCkt; if(!(ckt->CKTnodes)) { /* starting the list - allocate both ground and 1 */ ckt->CKTnodes = (CKTnode *) MALLOC(sizeof(CKTnode)); if(ckt->CKTnodes == (CKTnode *)NULL) return(E_NOMEM); ckt->CKTnodes->name = (char *)NULL; ckt->CKTnodes->type = SP_VOLTAGE; ckt->CKTnodes->number = 0; ckt->CKTlastNode = ckt->CKTnodes; } ckt->CKTlastNode->next = (CKTnode *)MALLOC(sizeof(CKTnode)); if(ckt->CKTlastNode->next == (CKTnode *)NULL) return(E_NOMEM); ckt->CKTlastNode = ckt->CKTlastNode->next; ckt->CKTlastNode->name = name; ckt->CKTlastNode->number = ckt->CKTmaxEqNum++; ckt->CKTlastNode->type = SP_VOLTAGE; ckt->CKTlastNode->next = (CKTnode *)NULL; if(node) *node = (GENERIC *)ckt->CKTlastNode; return(OK); } 0707070124060442341006440006700000000000011777770500302373700003400000007021spice3c1/spice3/ckt/cktop.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTop.c $Revision: 1.5 $ on $Date: 89/01/07 23:37:39 $") int CKTop(ckt,firstmode, continuemode, iterlim) CKTcircuit *ckt; long firstmode; long continuemode; int iterlim; { int converged; int i; ckt->CKTmode = firstmode; if(!ckt->CKTnoOpIter) { converged = NIiter(ckt,iterlim); } else { converged = 1; /* the 'go directly to gmin stepping' option */ } if(converged != 0) { /* no convergence on the first try, so we do something else */ /* first, check if we should try gmin stepping */ /* note that no path out of this code allows ckt->CKTdiagGmin to be * anything but 0.000000000 */ if(ckt->CKTnumGminSteps >1) { ckt->CKTmode = firstmode; (*(SPfrontEnd->IFerror))(ERR_INFO, "starting Gmin stepping",(IFuid *)NULL); ckt->CKTdiagGmin = ckt->CKTgmin; for(i=0;iCKTnumGminSteps;i++) { ckt->CKTdiagGmin *= 10; } for(i=0;i<=ckt->CKTnumGminSteps;i++) { ckt->CKTnoncon =1; converged = NIiter(ckt,iterlim); if(converged != 0) { ckt->CKTdiagGmin = 0; (*(SPfrontEnd->IFerror))(ERR_WARNING, "Gmin step failed",(IFuid *)NULL); break; } ckt->CKTdiagGmin /= 10; ckt->CKTmode=continuemode; (*(SPfrontEnd->IFerror))(ERR_INFO, "One sucessful Gmin step",(IFuid *)NULL); } ckt->CKTdiagGmin = 0; converged = NIiter(ckt,iterlim); if(converged == 0) { (*(SPfrontEnd->IFerror))(ERR_INFO, "Gmin stepping completed",(IFuid *)NULL); return(0); } (*(SPfrontEnd->IFerror))(ERR_WARNING, "Gmin stepping failed",(IFuid *)NULL); /* now, we'll try source stepping - we scale the sources * to 0, converge, then start stepping them up until they * are at their normal values */ /* note that no path out of this code allows ckt->CKTsrcFact to be * anything but 1.000000000 */ } if(ckt->CKTnumSrcSteps >1) { ckt->CKTmode = firstmode; (*(SPfrontEnd->IFerror))(ERR_INFO, "starting source stepping",(IFuid *)NULL); for(i=0;i<=ckt->CKTnumSrcSteps;i++) { ckt->CKTsrcFact = ((double)i)/((double)ckt->CKTnumSrcSteps); converged = NIiter(ckt,iterlim); ckt->CKTmode = continuemode; if(converged != 0) { ckt->CKTsrcFact = 1; ckt->CKTcurrentAnalysis = DOING_TRAN; (*(SPfrontEnd->IFerror))(ERR_WARNING, "source stepping failed",(IFuid *)NULL); return(converged); } (*(SPfrontEnd->IFerror))(ERR_INFO, "One successful source step",(IFuid *)NULL); } (*(SPfrontEnd->IFerror))(ERR_INFO, "Source stepping completed",(IFuid *)NULL); ckt->CKTsrcFact = 1; return(0); } else { return(converged); } } return(0); } 0707070124060442351006440006700000000000011777770500302373700004100000002631spice3c1/spice3/ckt/cktnewtask.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "tskdefs.h" #include "ifsim.h" #include "util.h" #include "cktdefs.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "suffix.h" RCSID("CKTnewTask.c $Revision: 1.7 $ on $Date: 89/04/05 13:17:11 $") /* ARGSUSED */ int CKTnewTask(ckt,taskPtr,taskName) GENERIC *ckt; GENERIC **taskPtr; IFuid taskName; { register TSKtask *tsk; *taskPtr = (GENERIC *)MALLOC(sizeof(TSKtask)); if(*taskPtr==NULL) return(E_NOMEM); tsk = *(TSKtask **)taskPtr; tsk->TSKname = taskName; tsk->TSKgmin = 1e-12; tsk->TSKabstol = 1e-12; tsk->TSKreltol = 1e-3; tsk->TSKchgtol = 1e-14; tsk->TSKvoltTol = 1e-6; #ifdef NEWTRUNC tsk->TSKlteReltol = 1e-3; tsk->TSKlteAbstol = 1e-6; #endif /* NEWTRUNC */ tsk->TSKtrtol = 7; tsk->TSKbypass = 1; tsk->TSKtranMaxIter = 10; tsk->TSKdcMaxIter = 100; tsk->TSKdcTrcvMaxIter = 50; tsk->TSKintegrateMethod = TRAPEZOIDAL; tsk->TSKmaxOrder = 2; tsk->TSKnumSrcSteps = 10; tsk->TSKnumGminSteps = 10; tsk->TSKpivotAbsTol = 1e-13; tsk->TSKpivotRelTol = 1e-3; tsk->TSKtemp = 300.15; tsk->TSKnomTemp = 300.15; tsk->TSKdefaultMosL = 1e-4; tsk->TSKdefaultMosW = 1e-4; tsk->TSKdefaultMosAD = 0; tsk->TSKdefaultMosAS = 0; tsk->TSKnoOpIter=0; return(OK); } 0707070124060442361006440006700000000000011777770500302373700004100000001211spice3c1/spice3/ckt/cktnodname.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTnodName(ckt) * output information on all circuit nodes/equations * */ #include "prefix.h" #include #include "cktdefs.h" #include "suffix.h" RCSID("CKTnodName.c $Revision: 1.4 $ on $Date: 88/06/30 16:28:00 $") IFuid CKTnodName(ckt,nodenum) CKTcircuit *ckt; register int nodenum; { register CKTnode *here; for(here = ckt->CKTnodes;here; here = here->next) { if(here->number == nodenum) { /* found it */ return(here->name); } } /* doesn't exist - do something */ return("UNKNOWN NODE"); } 0707070124060442371006440006700000000000011777770500302373700004100000001170spice3c1/spice3/ckt/cktnum2nod.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTnum2nod * find the given node given its name and return the node pointer */ #include "prefix.h" #include #include "ifsim.h" #include "sperror.h" #include "cktdefs.h" #include "suffix.h" RCSID("CKTnum2nod.c $Revision: 1.4 $ on $Date: 88/06/30 16:28:01 $") /* ARGSUSED */ CKTnode * CKTnum2nod(ckt,node) CKTcircuit *ckt; int node; { register CKTnode *here; for (here = ((CKTcircuit *)ckt)->CKTnodes; here; here = here->next) { if(here->number == node) { return(here); } } return((CKTnode *)NULL); } 0707070124060442401006440006700000000000011777770500302373700004200000002701spice3c1/spice3/ckt/cktpmodname.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * CKTpModName() * * Take a parameter by Name and set it on the specified model */ #include "prefix.h" #include #include "util.h" #include "ifsim.h" #include "devdefs.h" #include "cktdefs.h" #include "gendefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTpModName.c $Revision: 1.4 $ on $Date: 88/06/30 16:28:03 $") extern SPICEdev *DEVices[]; /* ARGSUSED */ int CKTpModName(parm,val,ckt,type,name,modfast) char *parm; /* the name of the parameter to set */ IFvalue *val; /* the parameter union containing the value to set */ CKTcircuit *ckt;/* the circuit this model is a member of */ int type; /* the device type code to the model being parsed */ IFuid name; /* the name of the model being parsed */ GENmodel **modfast; /* direct pointer to model being parsed */ { int error; /* int to store evaluate error return codes in */ int i; for(i=0;i<(*DEVices[type]).DEVpublic.numModelParms;i++) { if(strcmp(parm,((*DEVices[type]).DEVpublic.modelParms[i].keyword))==0){ error = CKTmodParam((GENERIC *)ckt,(GENERIC*)*modfast, (*DEVices[type]).DEVpublic.modelParms[i].id,val, (IFvalue*)NULL); if(error) return(error); break; } } if(i==(*DEVices[type]).DEVpublic.numModelParms) { return(E_BADPARM); } return(OK); } 0707070124060442411006440006700000000000011777770500302373700003700000002715spice3c1/spice3/ckt/cktpname.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * CKTpName() * * Take a parameter by Name and set it on the specified device */ #include "prefix.h" #include #include "util.h" #include "ifsim.h" #include "devdefs.h" #include "cktdefs.h" #include "gendefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTpName.c $Revision: 1.4 $ on $Date: 88/06/30 16:28:05 $") extern SPICEdev *DEVices[]; /* ARGSUSED */ int CKTpName(parm,val,ckt,dev,name,fast) char *parm; /* the name of the parameter to set */ IFvalue *val; /* the parameter union containing the value to set */ CKTcircuit *ckt;/* the circuit this device is a member of */ int dev; /* the device type code to the device being parsed */ char *name; /* the name of the device being parsed */ GENinstance **fast; /* direct pointer to device being parsed */ { int error; /* int to store evaluate error return codes in */ int i; for(i=0;i<(*DEVices[dev]).DEVpublic.numInstanceParms;i++) { if(strcmp(parm, ((*DEVices[dev]).DEVpublic.instanceParms[i].keyword))==0) { error = CKTparam((GENERIC*)ckt,(GENERIC *)*fast, (*DEVices[dev]).DEVpublic.instanceParms[i].id,val, (IFvalue *)NULL); if(error) return(error); break; } } if(i==(*DEVices[dev]).DEVpublic.numInstanceParms) { return(E_BADPARM); } return(OK); } 0707070124060442421006440006700000000000011777770500302373700003700000001506spice3c1/spice3/ckt/cktparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTparam * attach the given parameter to the specified device in the given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTparam.c $Revision: 1.4 $ on $Date: 88/06/30 16:28:06 $") extern SPICEdev *DEVices[]; /* ARGSUSED */ int CKTparam(ckt,fast,param,val,selector) GENERIC *ckt; GENERIC *fast; int param; IFvalue *val; IFvalue *selector; { register int type; GENinstance *myfast = (GENinstance *)fast; type = myfast->GENmodPtr->GENmodType; if(((*DEVices[type]).DEVparam)) { return(((*((*DEVices[type]).DEVparam)) (param,val,myfast,selector))); } else { return(E_BADPARM); } } 0707070124060442431006440006700000000000011777770500302374000004000000007142spice3c1/spice3/ckt/cktpzload.c/* * Copyright (c) 1985 Mani B. srivastava */ /* CKTpzLoad(ckt,s,type) * this is a driver program to iterate through all the various * pz load functions provided for the circuit elements in the * given circuit *It also loads the proper values into the new column and row *introduced for pole-zero analysis *Besides , depending upon the value of type it takes action *like replacing a column with r.h.s */ #include "prefix.h" #include #include "pzdefs.h" #include "smpdefs.h" #include "cktdefs.h" #include "complex.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTpzLoad.c $Revision: 1.5 $ on $Date: 88/08/07 14:44:43 $") extern SPICEdev *DEVices[]; int CKTpzLoad(ckt,s,type) register CKTcircuit *ckt; SPcomplex *s; int type; { register PZAN *pzptr = (PZAN *)ckt->CKTcurJob; register int i; int error; int size; int SMPmatSize(); int rowdel,coldel; int SMProwcolDel(); register SMPelement *item; int n; SMPelement *SMPfindElt(); size = SMPmatSize(ckt->CKTmatrix); for (i=0;i<=size;i++) { *(ckt->CKTrhs+i)=0; *(ckt->CKTirhs+i)=0; } SMPcClear(ckt->CKTmatrix); for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVpzLoad))(ckt->CKThead[i],ckt,s); if(error) return(error); } } if (pzptr->PZJK_Jptr !=(double *)NULL) { *(pzptr->PZJK_Jptr)= -1.0; } if (pzptr->PZJK_Kptr !=(double *)NULL) { *(pzptr->PZJK_Kptr)=1.0; } if (pzptr->PZJK_JKptr !=(double *)NULL) { *(pzptr->PZJK_JKptr)=1.0; } if (pzptr->PZIG_Iptr !=(double *)NULL) { *(pzptr->PZIG_Iptr)= -1.0; } if (pzptr->PZIG_Gptr !=(double *)NULL) { *(pzptr->PZIG_Gptr)=1.0; } if (pzptr->PZIG_IGptr !=(double *)NULL) { *(pzptr->PZIG_IGptr)=1.0; } switch (type) { case 1: case 3: /*substitute r.h.s. in col i*/ coldel=pzptr->PZnodeI; break; case 2: case 5: /*substitute r.h.s. in col i-g*/ coldel=pzptr->PZdiffIG; break; case 4: case 13: case 14: case 15: case 16: /*substitute r.h.s. in col j-k*/ coldel=pzptr->PZdiffJK; break; case 6: case 7: /*matrix remains as it is*/ return(OK); case 11: case 12: case 17: /*substitute r.h.s. in col j*/ coldel=pzptr->PZnodeJ; break; }; coldel = SMPextToIntMapCol(coldel,ckt->CKTmatrix); /*walk down the column*/ for (n=1;n<=ckt->CKTmatrix->SMPsize;n++) { item = SMPfindElt(ckt->CKTmatrix,n,coldel,0); if(item != (SMPelement *)NULL) { /*the element exists so make it 0+j0*/ item->SMPvalue=0.0; item->SMPiValue=0.0; } } rowdel = SMPextToIntMapRow(pzptr->PZnodeI,ckt->CKTmatrix); item=SMPfindElt(ckt->CKTmatrix,rowdel,coldel,1); if (item == (SMPelement *)NULL) return(E_NOMEM); item->SMPvalue=1.0; item->SMPiValue=0.0; if (pzptr->PZnodeG !=0) { rowdel = SMPextToIntMapRow(pzptr->PZnodeG,ckt->CKTmatrix); item=SMPfindElt(ckt->CKTmatrix,rowdel,coldel,1); if (item == (SMPelement *)NULL) return(E_NOMEM); item->SMPvalue= -1.0; item->SMPiValue=0.0; } if ((type==4) || (type==13) || (type==14) || (type==15) || (type==16)) { *(pzptr->PZJK_JKptr)= 1.0; } if ((type==2) || (type==5)) { *(pzptr->PZIG_IGptr)= 1.0; } return(OK); } 0707070124060442441006440006700000000000011777770500302374000004100000002464spice3c1/spice3/ckt/cktpzsetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTpzSetup(ckt) * this is a driver program to iterate through all the various * pzSetup functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTpzSetup.c $Revision: 1.1 $ on $Date: 89/03/07 11:51:34 $") #define CKALLOC(var,size,type) \ if(size && (!(var =(type *)MALLOC((size)*sizeof(type))))){\ return(E_NOMEM);\ } int CKTpzSetup(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int error; register SMPmatrix *matrix; ckt->CKTnumStates=0; matrix = ckt->CKTmatrix; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVpzSetup))(matrix,ckt->CKThead[i],ckt, &ckt->CKTnumStates); if(error) return(error); } } for(i=0;i<=ckt->CKTmaxOrder+1;i++) { CKALLOC(ckt->CKTstates[i],ckt->CKTnumStates,double); } if(ckt->CKTniState & NIUNINITIALIZED) { error = NIreinit(ckt); if(error) return(error); } return(OK); } 0707070124060442451006440006700000000000011777770500302374000003700000001360spice3c1/spice3/ckt/cktsenac.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenAc.c $Revision: 1.3 $ on $Date: 88/06/30 16:28:09 $") /* CKTsenAC(ckt) * this is a routine for AC sensitivity calculations */ int CKTsenAC(ckt) register CKTcircuit *ckt; { int error; #ifdef SENSDEBUG printf("CKTsenAC\n"); #endif /* SENSDEBUG */ if(error = CKTsenLoad(ckt)) return(error); #ifdef SENSDEBUG printf("after CKTsenLoad\n"); #endif /* SENSDEBUG */ if(error = CKTsenComp(ckt)) return(error); #ifdef SENSDEBUG printf("after CKTsenComp\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124060442461006440006700000000000011777770500302374000004100000012002spice3c1/spice3/ckt/cktsencomp.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTsenComp(ckt) * this is a program to solve the sensitivity equation * of the given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenComp.c $Revision: 1.4 $ on $Date: 88/06/30 16:28:10 $") int CKTsenComp(ckt) register CKTcircuit *ckt; { register int size; int row; int col; SENstruct *info; #ifdef SENSDEBUG char *rowe; SMPelement *elt; #endif /* SENSDEBUG */ #ifdef SENSDEBUG printf("CKTsenComp\n"); #endif /* SENSDEBUG */ size = SMPmatSize(ckt->CKTmatrix); info = ckt->CKTsenInfo; if((info->SENmode == DCSEN)|| (info->SENmode == TRANSEN)) { /* loop throgh all the columns of RHS matrix - each column corresponding to a design parameter */ for (col=1;col<=info->SENparms;col++) { for(row=1;row<=size;row++){ *(ckt->CKTsenRhs + row ) = *(info->SEN_RHS[row] + col); } /* solve for the sensitivity values */ SMPsolve(ckt->CKTmatrix,ckt->CKTsenRhs,ckt->CKTrhsSpare); /* store the sensitivity values */ for(row=1;row<=size;row++){ *(info->SEN_Sap[row] + col) = *(ckt->CKTsenRhs+row); *(info->SEN_RHS[row] + col) = *(ckt->CKTsenRhs+row); } } #ifdef SENSDEBUG printf("\n"); printf("Sensitivity matrix :\n"); for(row=1;row<=size;row++){ rowe=CKTnodName(ckt,row) ; if(strcmp("4",rowe)==0){ for (col=1;col<=info->SENparms;col++) { printf("\t"); printf("Sap(%s,%d) = %.5e\t",rowe,col, *(info->SEN_Sap[row] + col)); } printf("\n\n"); } } printf(" RHS matrix :\n"); for(row=1;row<=size;row++){ for (col=1;col<=info->SENparms;col++) { printf(" "); printf("RHS(%d,%d) = %.7e ",row,col, *(info->SEN_RHS[row] + col)); } printf("\n"); } printf(" Jacobian matrix :\n"); for(row=1; row<=size; row++){ for(col=1; col<=size; col++){ if(elt = SMPfindElt(ckt->CKTmatrix, row , col , 0)){ printf("%.7e ",elt->SMPvalue); } else{ printf("0.0000000e+00 "); } } printf("\n"); } #endif } if(info->SENmode == ACSEN){ /* loop throgh all the columns of RHS matrix - each column corresponding to a design parameter */ for (col=1;col<=info->SENparms;col++) { for(row=1;row<=size;row++){ *(ckt->CKTsenRhs+row) = *(info->SEN_RHS[row] + col); *(ckt->CKTseniRhs+row) = *(info->SEN_iRHS[row] + col); } /* solve for the sensitivity values ( both real and imag parts)*/ SMPcSolve(ckt->CKTmatrix,ckt->CKTsenRhs,ckt->CKTseniRhs, ckt->CKTrhsSpare,ckt->CKTirhsSpare); /* store the sensitivity values ( both real and imag parts)*/ for(row=1;row<=size;row++){ *(info->SEN_RHS[row] + col) = *(ckt->CKTsenRhs+row); *(info->SEN_iRHS[row] + col) = *(ckt->CKTseniRhs+row); } } #ifdef SENSDEBUG printf("\n"); printf("CKTomega = %.7e rad/sec\t\n",ckt->CKTomega); printf("Sensitivity matrix :\n"); for(row=1;row<=size;row++){ rowe=CKTnodName(ckt,row); for (col=1;col<=info->SENparms;col++) { printf("\t"); printf("RHS(%s,%d) = %.5e",rowe,col, *(info->SEN_RHS[row] + col)); printf(" + j %.5e\t",*(info->SEN_iRHS[row] + col)); printf("\n\n"); } printf("\n"); } printf("CKTomega = %.7e rad/sec\t\n",ckt->CKTomega); printf(" RHS matrix :\n"); for(row=1;row<=size;row++){ for (col=1;col<=info->SENparms;col++) { printf(" "); printf("RHS(%d,%d) = %.7e ",row,col, *(info->SEN_RHS[row] + col)); printf("+j %.7e ",*(info->SEN_iRHS[row] + col)); } printf("\n"); } printf(" Jacobian matrix for AC :\n"); for(row=1; row<=size; row++){ for(col=1; col<=size; col++){ if(elt = SMPfindElt(ckt->CKTmatrix, row , col , 0)){ printf("%.7e ",elt->SMPvalue); printf("+j%.7e\t",elt->SMPiValue); } else{ printf("0.0000000e+00 "); printf("+j0.0000000e+00\t"); } } printf("\n\n"); } #endif } return(OK); } 0707070124060442471006440006700000000000011777770500302374000004300000003157spice3c1/spice3/ckt/cktsendctran.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * This routine performs the DC and Transient sensitivity * calculations */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenDCtran.c $Revision: 1.6 $ on $Date: 88/06/30 16:28:11 $") int CKTsenDCtran(ckt) register CKTcircuit *ckt; { int error; #ifdef SENSDEBUG printf("time = %.7e\n",ckt->CKTtime); printf("CKTsenDCtran\n"); #endif /* SENSDEBUG */ if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN) && (ckt->CKTmode & MODEINITTRAN)){ error = CKTsenLoad(ckt); if(error) return(error); #ifdef SENSDEBUG printf("after inittran senload\n"); #endif /* SENSDEBUG */ error = CKTsenUpdate(ckt); if(error) return(error); #ifdef SENSDEBUG printf("after inittran senupdate\n"); #endif /* SENSDEBUG */ } if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)&& !(ckt->CKTmode&MODETRANOP)) ckt->CKTmode = (ckt->CKTmode&(~INITF))|MODEINITFLOAT; error = CKTsenLoad(ckt); if(error) return(error); #ifdef SENSDEBUG printf("after CKTsenLoad\n"); #endif /* SENSDEBUG */ error = CKTsenComp(ckt); if(error) return(error); #ifdef SENSDEBUG printf("after CKTsenComp\n"); #endif /* SENSDEBUG */ if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode&TRANSEN) ){ error = CKTsenUpdate(ckt); if(error) return(error); #ifdef SENSDEBUG printf("after CKTsenUpdate\n"); #endif /* SENSDEBUG */ } return(OK); } 0707070124060442501006440006700000000000011777770500302374000004100000003456spice3c1/spice3/ckt/cktsenload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * CKTsenLoad(ckt) * this is a driver program to iterate through all the various * sensitivity load functions provided for the circuit elements * in the given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenDCtran.c $Revision: 1.3 $ on $Date: 88/06/30 16:28:12 $") int CKTsenLoad(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int size,row,col; int error; size = SMPmatSize(ckt->CKTmatrix); #ifdef SENSDEBUG printf("CKTsenLoad\n"); #endif /* SENSDEBUG */ if((ckt->CKTsenInfo->SENmode == DCSEN)|| (ckt->CKTsenInfo->SENmode == TRANSEN)) { for (col=0;col<=ckt->CKTsenInfo->SENparms;col++) { for(row=0;row<=size;row++){ *(ckt->CKTsenInfo->SEN_RHS[row] + col)= 0; } } for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVsenLoad))(ckt->CKThead[i],ckt); if(error) return(error); } } } else{ for (col=0;col<=ckt->CKTsenInfo->SENparms;col++) { for(row=0;row<=size;row++){ *(ckt->CKTsenInfo->SEN_RHS[row] + col)= 0; *(ckt->CKTsenInfo->SEN_iRHS[row] + col)= 0; } } for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVsenAcLoad))(ckt->CKThead[i],ckt); if(error) return(error); } } } return(OK); } 0707070124060442511006440006700000000000011777770500302374000004200000001417spice3c1/spice3/ckt/cktsenprint.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenPrint.c $Revision: 1.3 $ on $Date: 88/06/30 16:28:13 $") /* CKTsenPrint(ckt) * this is a driver program to iterate through all the * various sensitivity print functions provided for * the circuit elements in the given circuit */ void CKTsenPrint(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; for (i=0;iCKThead[i] != NULL) ){ (*((*DEVices[i]).DEVsenPrint))(ckt->CKThead[i],ckt); } } } 0707070124060442521006440006700000000000011777770500302374100004200000002074spice3c1/spice3/ckt/cktsensetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * CKTsenSetup(ckt) * this is a driver program to iterate through all the various * sensitivity setup functions provided for the circuit elements * in the given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenSetup.c $Revision: 1.3 $ on $Date: 88/06/30 16:28:14 $") int CKTsenSetup(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int error; register SENstruct *info; #ifdef SENSDEBUG printf("CKTsenSetup\n"); #endif /* SENSDEBUG */ info = ckt->CKTsenInfo; info->SENparms = 0; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVsenSetup))(info,ckt->CKThead[i]); if(error) return(error); } } #ifdef SENSDEBUG printf("CKTsenSetup end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124060442531006440006700000000000011777770500302374100004300000001532spice3c1/spice3/ckt/cktsenupdate.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTsenUpdate(ckt) * this is a driver program to iterate through all the various * sensitivity update functions provided for the circuit elements * in the given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "devdefs.h" #include "sperror.h" #include "trandefs.h" #include "suffix.h" RCSID("CKTsenUpdate.c $Revision: 1.3 $ on $Date: 88/06/30 16:29:15 $") int CKTsenUpdate(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int error; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVsenUpdate))(ckt->CKThead[i],ckt); if(error) return(error); } } return(OK); } 0707070124060442541006440006700000000000011777770500302374200004300000001356spice3c1/spice3/ckt/cktsetanalpm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "tskdefs.h" #include "jobdefs.h" #include "ifsim.h" #include "util.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "cktdefs.h" #include "suffix.h" RCSID("CKTsetAnalPm.c $Revision: 1.6 $ on $Date: 88/11/17 02:44:21 $") extern SPICEanalysis *analInfo[]; /* ARGSUSED */ int CKTsetAnalPm(ckt,analPtr,parm,value,selector) GENERIC *ckt; GENERIC *analPtr; int parm; IFvalue *value; IFvalue *selector; { register int type = ((JOB *)analPtr)->JOBtype; if((analInfo[type]->setParm)==NULL) return(E_BADPARM); return( (*(analInfo[type]->setParm))(ckt,analPtr,parm,value) ); } 0707070124060442551006440006700000000000011777770500302374200004200000004160spice3c1/spice3/ckt/cktsetbreak.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTsetBreak(ckt,time) * add the given time to the breakpoint table for the given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "util.h" #include "ifsim.h" #include "sperror.h" #include "suffix.h" RCSID("CKTsetBreak.c $Revision: 1.7 $ on $Date: 88/09/27 19:06:51 $") int CKTsetBreak(ckt,time) register CKTcircuit *ckt; double time; { double *tmp; register int i,j; if(ckt->CKTtime > time) { (*(SPfrontEnd->IFerror))(ERR_PANIC,"breakpoint in the past - HELP!", (IFuid *)NULL); return(E_INTERN); } for(i=0;iCKTbreakSize;i++) { if(*(ckt->CKTbreaks+i)>time) { /* passed */ if((*(ckt->CKTbreaks+i)-time) <= ckt->CKTminBreak) { /* very close together - take earlier point */ *(ckt->CKTbreaks+i) = time; return(OK); } if(time-*(ckt->CKTbreaks+i-1) <= ckt->CKTminBreak) { /* very close together, but after, so skip */ return(OK); } /* fits in middle - new array & insert */ tmp = (double *)MALLOC((ckt->CKTbreakSize+1)*sizeof(double)); if(tmp == (double *)NULL) return(E_NOMEM); for(j=0;jCKTbreaks+j); } *(tmp+i)=time; for(j=i;jCKTbreakSize;j++) { *(tmp+j+1) = *(ckt->CKTbreaks+j); } FREE(ckt->CKTbreaks); ckt->CKTbreakSize++; ckt->CKTbreaks=tmp; return(OK); } } /* never found it - beyond end of time - extend out idea of time */ if(time-ckt->CKTbreaks[ckt->CKTbreakSize-1]<=ckt->CKTminBreak) { /* very close tegether - keep earlier, throw out new point */ return(OK); } /* fits at end - grow array & add on */ ckt->CKTbreaks = (double *)REALLOC(ckt->CKTbreaks, (ckt->CKTbreakSize+1)*sizeof(double)); ckt->CKTbreakSize++; ckt->CKTbreaks[ckt->CKTbreakSize-1]=time; return(OK); } 0707070124060442561006440006700000000000011777770500302374200004200000001770spice3c1/spice3/ckt/cktsetnodpm.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* *CKTsetNodPm * * set a parameter on a node. */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("CKTsetNodPm.c $Revision: 1.5 $ on $Date: 88/11/17 02:44:27 $") /* ARGSUSED */ int CKTsetNodPm(ckt,node,parm,value,selector) GENERIC *ckt; GENERIC *node; int parm; IFvalue *value; IFvalue *selector; { if(!node) return(E_BADPARM); switch(parm) { case PARM_NS: ((CKTnode *)node)->nodeset = value->rValue; ((CKTnode *)node)->nsGiven = 1; break; case PARM_IC: ((CKTnode *)node)->ic = value->rValue; ((CKTnode *)node)->icGiven = 1; break; case PARM_NODETYPE: ((CKTnode *)node)->type = value->iValue; break; default: return(E_BADPARM); } return(OK); } 0707070124060442571006440006700000000000011777770500302374200004000000015442spice3c1/spice3/ckt/cktsetopt.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * CKTsetOpt(ckt,opt,value) * set the specified 'opt' to have value 'value' in the * given circuit 'ckt'. */ #include "prefix.h" #include #include "const.h" #include "optdefs.h" #include "tskdefs.h" #include "ifsim.h" #include "util.h" #include "cktdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTsetOpt.c $Revision: 1.16 $ on $Date: 89/03/19 12:59:23 $") /* ARGSUSED */ int CKTsetOpt(ckt,anal,opt,val) GENERIC *ckt; GENERIC *anal; int opt; IFvalue *val; { register TSKtask *task = (TSKtask *)anal; switch(opt) { case OPT_NOOPITER: task->TSKnoOpIter = val->iValue; break; case OPT_GMIN: task->TSKgmin = val->rValue; break; case OPT_RELTOL: task->TSKreltol = val->rValue; break; case OPT_ABSTOL: task->TSKabstol = val->rValue; break; case OPT_VNTOL: task->TSKvoltTol = val->rValue; break; case OPT_TRTOL: task->TSKtrtol = val->rValue; break; case OPT_CHGTOL: task->TSKchgtol = val->rValue; break; case OPT_PIVTOL: task->TSKpivotAbsTol = val->rValue; break; case OPT_PIVREL: task->TSKpivotRelTol = val->rValue; break; case OPT_TNOM: task->TSKnomTemp = val->rValue + CONSTCtoK; /* Centegrade to Kelvin */ break; case OPT_TEMP: task->TSKtemp = val->rValue + CONSTCtoK; /* Centegrade to Kelvin */ break; case OPT_ITL1: task->TSKdcMaxIter = val->iValue; break; case OPT_ITL2: task->TSKdcTrcvMaxIter = val->iValue; break; case OPT_ITL3: break; case OPT_ITL4: task->TSKtranMaxIter = val->iValue; break; case OPT_ITL5: break; case OPT_SRCSTEPS: task->TSKnumSrcSteps = val->iValue; break; case OPT_GMINSTEPS: task->TSKnumGminSteps = val->iValue; break; case OPT_DEFL: task->TSKdefaultMosL = val->rValue; break; case OPT_DEFW: task->TSKdefaultMosW = val->rValue; break; case OPT_DEFAD: task->TSKdefaultMosAD = val->rValue; break; case OPT_DEFAS: task->TSKdefaultMosAD = val->rValue; break; case OPT_BYPASS: task->TSKbypass = val->iValue; break; case OPT_MAXORD: task->TSKmaxOrder = val->iValue; break; case OPT_OLDLIMIT: task->TSKfixLimit = val->iValue; break; case OPT_MINBREAK: task->TSKminBreak = val->rValue; break; case OPT_METHOD: if(strcmp(val->sValue,"trap")==0) task->TSKintegrateMethod=TRAPEZOIDAL; else if (strcmp(val->sValue,"gear")==0) task->TSKintegrateMethod=GEAR; else return(E_METHOD); break; default: return(-1); } return(0); } static IFparm OPTtbl[] = { { "noopiter", OPT_NOOPITER,IF_SET|IF_FLAG,"Go directly to gmin stepping" }, { "gmin", OPT_GMIN,IF_SET|IF_REAL,"Minimum conductance" }, { "reltol", OPT_RELTOL,IF_SET|IF_REAL ,"Relative error tolerence"}, { "abstol", OPT_ABSTOL,IF_SET|IF_REAL,"Absolute error tolerence" }, { "vntol", OPT_VNTOL,IF_SET|IF_REAL,"Voltage error tolerence" }, { "trtol", OPT_TRTOL,IF_SET|IF_REAL,"Truncation error overestimation factor" }, { "chgtol", OPT_CHGTOL,IF_SET|IF_REAL, "Charge error tolerence" }, { "pivtol", OPT_PIVTOL,IF_SET|IF_REAL, "Minimum acceptable pivot" }, { "pivrel", OPT_PIVREL,IF_SET|IF_REAL, "Minimum acceptable ratio of pivot" }, { "tnom", OPT_TNOM,IF_SET|IF_ASK|IF_REAL, "Nominal temperature" }, { "temp", OPT_TEMP,IF_SET|IF_ASK|IF_REAL, "Operating temperature" }, { "itl1", OPT_ITL1,IF_SET|IF_INTEGER,"DC iteration limit" }, { "itl2", OPT_ITL2,IF_SET|IF_INTEGER,"DC transfer curve iteration limit" }, { "itl3", OPT_ITL3, IF_INTEGER,"Lower transient iteration limit"}, { "itl4", OPT_ITL4,IF_SET|IF_INTEGER,"Upper transient iteration limit" }, { "itl5", OPT_ITL5, IF_INTEGER,"Total transient iteration limit"}, { "itl6", OPT_SRCSTEPS, IF_SET|IF_INTEGER,"number of source steps"}, { "srcsteps", OPT_SRCSTEPS, IF_SET|IF_INTEGER,"number of source steps"}, { "gminsteps", OPT_GMINSTEPS, IF_SET|IF_INTEGER,"number of Gmin steps"}, { "acct", 0, IF_FLAG ,"Print accounting"}, { "list", 0, IF_FLAG, "Print a listing" }, { "nomod", 0, IF_FLAG, "Don't print a model summary" }, { "nopage", 0, IF_FLAG, "Don't insert page breaks" }, { "node", 0, IF_FLAG,"Print a node connection summary" }, { "opts", 0, IF_FLAG, "Print a list of the options" }, { "oldlimit", OPT_OLDLIMIT, IF_SET|IF_FLAG, "use SPICE2 MOSfet limiting" }, { "numdgt", 0, IF_INTEGER, "Set number of digits printed"}, { "cptime", 0, IF_REAL, "Total cpu time in seconds" }, { "limtim", 0, IF_INTEGER, "Time to reserve for output" }, { "limpts", 0,IF_INTEGER,"Maximum points per analysis"}, { "lvlcod", 0, IF_INTEGER,"Generate machine code" }, { "lvltim", 0, IF_INTEGER,"Type of timestep control" }, { "method", OPT_METHOD, IF_SET|IF_STRING,"Integration method" }, { "maxord", OPT_MAXORD, IF_SET|IF_INTEGER,"Maximum integration order" }, { "defl", OPT_DEFL,IF_SET|IF_REAL,"Default MOSfet length" }, { "defw", OPT_DEFW,IF_SET|IF_REAL,"Default MOSfet width" }, { "minbreak", OPT_MINBREAK,IF_SET|IF_REAL,"Minimum time between breakpoints" }, { "defad", OPT_DEFAD,IF_SET|IF_REAL,"Default MOSfet area of drain" }, { "defas", OPT_DEFAS,IF_SET|IF_REAL,"Default MOSfet area of source" }, { "bypass",OPT_BYPASS,IF_SET|IF_INTEGER,"Allow bypass of unchanging elements"}, { "totiter", OPT_ITERS, IF_ASK|IF_INTEGER,"Total iterations" }, { "traniter", OPT_TRANIT, IF_ASK|IF_INTEGER ,"Transient iterations"}, { "equations", OPT_EQNS, IF_ASK|IF_INTEGER,"Circuit Equations" }, { "tranpoints", OPT_TRANPTS, IF_ASK|IF_INTEGER,"Transient timepoints" }, { "accept", OPT_TRANACCPT, IF_ASK|IF_INTEGER,"Accepted timepoints" }, { "rejected", OPT_TRANRJCT, IF_ASK|IF_INTEGER,"Rejected timepoints" }, { "time", OPT_TOTANALTIME, IF_ASK|IF_REAL,"Total Analysis Time" }, { "trantime", OPT_TRANTIME, IF_ASK|IF_REAL,"Transient time" }, { "reordertime", OPT_REORDTIME, IF_ASK|IF_REAL,"matrix reordering time" }, { "lutime", OPT_DECOMP, IF_ASK|IF_REAL,"L-U decomposition time" }, { "solvetime", OPT_SOLVE, IF_ASK|IF_REAL,"Matrix solve time" }, { "tranlutime", OPT_TRANDECOMP,IF_ASK|IF_REAL,"transient L-U decomp time"}, { "transolvetime", OPT_TRANSOLVE, IF_ASK|IF_REAL,"Transient solve time" }, { "trancuriters", OPT_TRANCURITER, IF_ASK|IF_INTEGER, "Transient iters per point" }, { "loadtime", OPT_LOADTIME, IF_ASK|IF_REAL,"Load time" } }; int OPTcount = sizeof(OPTtbl)/sizeof(IFparm); SPICEanalysis OPTinfo = { { "options", "Task option selection", sizeof(OPTtbl)/sizeof(IFparm), OPTtbl }, 0, /* no size associated with options */ CKTsetOpt, CKTacct }; 0707070124060442601006440006700000000000011777770500302374200003700000003102spice3c1/spice3/ckt/cktsetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTsetup(ckt) * this is a driver program to iterate through all the various * setup functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTsetup.c $Revision: 1.6 $ on $Date: 88/06/30 16:29:21 $") #define CKALLOC(var,size,type) \ if(size && (!(var =(type *)MALLOC((size)*sizeof(type))))){\ return(E_NOMEM);\ } int CKTsetup(ckt) register CKTcircuit *ckt; { extern SPICEdev *DEVices[]; register int i; int error; register SMPmatrix *matrix; ckt->CKTnumStates=0; if(ckt->CKTsenInfo){ if (error = CKTsenSetup(ckt)) return(error); } matrix = ckt->CKTmatrix; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVsetup))(matrix,ckt->CKThead[i],ckt, &ckt->CKTnumStates); if(error) return(error); } } for(i=0;i<=ckt->CKTmaxOrder+1;i++) { CKALLOC(ckt->CKTstates[i],ckt->CKTnumStates,double); } if(ckt->CKTsenInfo){ /* to allocate memory to sensitivity structures if * it is not done before */ error = NIsenReinit(ckt); if(error) return(error); } if(ckt->CKTniState & NIUNINITIALIZED) { error = NIreinit(ckt); if(error) return(error); } return(OK); } 0707070124060442611006440006700000000000011777770500302374200003600000001650spice3c1/spice3/ckt/ckttemp.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTtemp(ckt) * this is a driver program to iterate through all the various * temperature dependency functions provided for the circuit * elements in the given circuit */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "const.h" #include #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTtemp.c $Revision: 1.4 $ on $Date: 88/06/30 16:29:22 $") extern SPICEdev *DEVices[]; int CKTtemp(ckt) register CKTcircuit *ckt; { int error; register int i; ckt->CKTvt = CONSTKoverQ * ckt->CKTtemp; for (i=0;iCKThead[i] != NULL) ){ error = (*((*DEVices[i]).DEVtemperature))(ckt->CKThead[i],ckt); if(error) return(error); } } return(OK); } 0707070124060442621006440006700000000000011777770500302374200003600000004041spice3c1/spice3/ckt/cktterr.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "util.h" #include #include "suffix.h" RCSID("CKTterr.c $Revision: 1.6 $ on $Date: 89/03/19 13:40:38 $") #define ccap (qcap+1) void CKTterr(qcap,ckt,timeStep) register int qcap; register CKTcircuit *ckt; register double *timeStep; { double volttol; double chargetol; double tol; double del; double diff[8]; double deltmp[8]; double factor; register int i; register int j; static double gearCoeff[] = { .5, .2222222222, .1363636364, .096, .07299270073, .05830903790 }; static double trapCoeff[] = { .5, .08333333333 }; volttol = ckt->CKTabstol + ckt->CKTreltol * MAX( FABS(*(ckt->CKTstate0+ccap)), FABS(*(ckt->CKTstate1+ccap))); chargetol = MAX(FABS(*(ckt->CKTstate0 +qcap)),FABS(*(ckt->CKTstate1+qcap))); chargetol = ckt->CKTreltol * MAX(chargetol,ckt->CKTchgtol)/ckt->CKTdelta; tol = MAX(volttol,chargetol); /* now divided differences */ for(i=ckt->CKTorder+1;i>=0;i--) { diff[i] = *(ckt->CKTstates[i] + qcap); } for(i=0 ; i <= ckt->CKTorder ; i++) { deltmp[i] = ckt->CKTdeltaOld[i]; } j = ckt->CKTorder; while(1) { for(i=0;i <= j;i++) { diff[i] = (diff[i] - diff[i+1])/deltmp[i]; } if (--j < 0) break; for(i=0;i <= j;i++) { deltmp[i] = deltmp[i+1] + ckt->CKTdeltaOld[i]; } } switch(ckt->CKTintegrateMethod) { case GEAR: factor = gearCoeff[ckt->CKTorder-1]; break; case TRAPEZOIDAL: factor = trapCoeff[ckt->CKTorder - 1] ; break; } del = ckt->CKTtrtol * tol/MAX(ckt->CKTabstol,factor * FABS(diff[0])); if(ckt->CKTorder == 2) { del = sqrt(del); } else if (ckt->CKTorder > 2) { del = exp(log(del)/ckt->CKTorder); } *timeStep = MIN(*timeStep,del); return; } 0707070124060442631006440006700000000000011777770500302374200003300000003430spice3c1/spice3/ckt/dcop.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "util.h" #include "sperror.h" #include "ifsim.h" #include "suffix.h" RCSID("DCop.c $Revision: 1.9 $ on $Date: 89/01/02 11:35:30 $") int DCop(ckt) CKTcircuit *ckt; { int i; int NIiter(); int CKTload(); int converged; int error; int size; long save; int senmode; IFuid *nameList; int numNames; GENERIC *plot; error = CKTnames(ckt,&numNames,&nameList); if(error) return(error); (*(SPfrontEnd->OUTpBeginPlot))((GENERIC *)ckt,(GENERIC*)ckt->CKTcurJob, ckt->CKTcurJob->JOBname,(IFuid)NULL,IF_REAL,numNames,nameList, IF_REAL,&plot); converged = CKTop(ckt, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT, ckt->CKTdcMaxIter); if(converged != 0) return(converged); ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG; if(ckt->CKTsenInfo && ((ckt->CKTsenInfo->SENmode&DCSEN) || (ckt->CKTsenInfo->SENmode&ACSEN)) ){ #ifdef SENSDEBUG printf("\nDC Operating Point Sensitivity Results\n\n"); CKTsenPrint(ckt); #endif /* SENSDEBUG */ senmode = ckt->CKTsenInfo->SENmode; save = ckt->CKTmode; ckt->CKTsenInfo->SENmode = DCSEN; size = SMPmatSize(ckt->CKTmatrix); for(i = 1; i<=size ; i++){ *(ckt->CKTrhsOp + i) = *(ckt->CKTrhsOld + i); } if(error = CKTsenDCtran(ckt)) return(error); ckt->CKTmode = save; ckt->CKTsenInfo->SENmode = senmode; } converged = CKTload(ckt); CKTdump(ckt,(double)0,plot); (*(SPfrontEnd->OUTendPlot))(plot); return(converged); } 0707070124060442641006440006700000000000011777770500302374200003700000012171spice3c1/spice3/ckt/ckttrunc.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* CKTtrunc(ckt) * this is a driver program to iterate through all the various * truncation error functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include #include "cktdefs.h" #include "smpdefs.h" #include "util.h" #include "devdefs.h" #include "sperror.h" #include "suffix.h" RCSID("CKTtrunc.c $Revision: 1.5 $ on $Date: 89/04/05 12:58:24 $") extern SPICEdev *DEVices[]; int CKTtrunc(ckt,timeStep) register CKTcircuit *ckt; double *timeStep; { #ifndef NEWTRUNC register int i; double timetemp; #ifdef STEPDEBUG double debugtemp; #endif /* STEPDEBUG */ int error; timetemp = HUGE; for (i=0;iCKThead[i] != NULL) { #ifdef STEPDEBUG debugtemp = timetemp; #endif /* STEPDEBUG */ error = (*((*DEVices[i]).DEVtrunc))(ckt->CKThead[i],ckt,&timetemp); if(error) { return(error); } #ifdef STEPDEBUG if(debugtemp != timetemp) { printf("timestep cut by device type %s from %g to %g\n", (*DEVices[i]).DEVpublic.name, debugtemp,timetemp); } #endif /* STEPDEBUG */ } } *timeStep = MIN(2 * *timeStep,timetemp); return(OK); #else /* NEWTRUNC */ register int i; register CKTnode *node; double timetemp; double tmp; double diff; double tol; int size; timetemp = HUGE; size = SMPmatSize(ckt->CKTmatrix); #ifdef STEPDEBUG printf("at time %g, delta %g\n",ckt->CKTtime,ckt->CKTdeltaOld[0]); #endif STEPDEBUG node = ckt->CKTnodes; switch(ckt->CKTintegrateMethod) { case TRAPEZOIDAL: switch(ckt->CKTorder) { case 1: for(i=1;iCKTrhs[i]),FABS(ckt->CKTpred[i]))* ckt->CKTlteReltol+ckt->CKTlteAbstol; node = node->next; if(node->type!= 3) continue; diff = ckt->CKTrhs[i]-ckt->CKTpred[i]; #ifdef STEPDEBUG printf("%s: cor=%g, pred=%g ",node->name, ckt->CKTrhs[i],ckt->CKTpred[i]); #endif if(diff != 0) { tmp = ckt->CKTtrtol * tol * 2 /diff; tmp = ckt->CKTdeltaOld[0]*sqrt(FABS(tmp)); timetemp = MIN(timetemp,tmp); #ifdef STEPDEBUG printf("tol = %g, diff = %g, h->%g\n",tol,diff,tmp); #endif } else { #ifdef STEPDEBUG printf("diff is 0\n"); #endif } } break; case 2: for(i=1;iCKTrhs[i]),FABS(ckt->CKTpred[i]))* ckt->CKTlteReltol+ckt->CKTlteAbstol; node = node->next; if(node->type!= 3) continue; diff = ckt->CKTrhs[i]-ckt->CKTpred[i]; #ifdef STEPDEBUG printf("%s: cor=%g, pred=%g ",node->name,ckt->CKTrhs[i], ckt->CKTpred[i]); #endif if(diff != 0) { tmp = ckt->CKTdeltaOld[0]*ckt->CKTtrtol * tol * 3 * (ckt->CKTdeltaOld[0]+ckt->CKTdeltaOld[1])/diff; tmp = FABS(tmp); timetemp = MIN(timetemp,tmp); #ifdef STEPDEBUG printf("tol = %g, diff = %g, h->%g\n",tol,diff,tmp); #endif } else { #ifdef STEPDEBUG printf("diff is 0\n"); #endif } } break; default: return(E_ORDER); break; } break; case GEAR: { double delsum=0; for(i=0;i<=ckt->CKTorder;i++) { delsum += ckt->CKTdeltaOld[i]; } for(i=1;inext; if(node->type!= 3) continue; tol = MAX( FABS(ckt->CKTrhs[i]),FABS(ckt->CKTpred[i]))* ckt->CKTlteReltol+ckt->CKTlteAbstol; diff = (ckt->CKTrhs[i]-ckt->CKTpred[i]); #ifdef STEPDEBUG printf("%s: cor=%g, pred=%g ",node->name,ckt->CKTrhs[i], ckt->CKTpred[i]); #endif if(diff != 0) { tmp = tol*ckt->CKTtrtol*delsum/(diff*ckt->CKTdelta); tmp = FABS(tmp); switch(ckt->CKTorder) { case 0: break; case 1: tmp = sqrt(tmp); break; default: tmp = exp(log(tmp)/(ckt->CKTorder+1)); break; } tmp *= ckt->CKTdelta; timetemp = MIN(timetemp,tmp); #ifdef STEPDEBUG printf("tol = %g, diff = %g, h->%g\n",tol,diff,tmp); #endif } else { #ifdef STEPDEBUG printf("diff is 0\n"); #endif } } } break; default: return(E_METHOD); } *timeStep = MIN(2 * *timeStep,timetemp); return(OK); #endif /* NEWTRUNC */ } 0707070124060442651006440006700000000000011777770500302374200004200000001176spice3c1/spice3/ckt/ckttypelook.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* look up the 'type' in the device description struct and return the * appropriate index for the device found, or -1 for not found */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "suffix.h" RCSID("CKTtypelook.c $Revision: 1.4 $ on $Date: 88/06/30 16:29:26 $") extern SPICEdev *DEVices[]; int CKTtypelook(type) char *type; { int i; for(i=0;i #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "opdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("DCOaskQuest.c $Revision: 1.5 $ on $Date: 88/11/17 02:44:53 $") /* ARGSUSED */ int DCOaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { default: return(E_BADPARM); } /* NOTREACHED */ /* TEMPORARY until cases get added */ return(OK); } 0707070124060442671006440006700000000000011777770500302374300004100000001462spice3c1/spice3/ckt/dcosetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "cktdefs.h" #include "opdefs.h" #include "suffix.h" RCSID("DCOsetParm.c $Revision: 1.5 $ on $Date: 88/11/17 02:44:57 $") /* ARGSUSED */ int DCOsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { default: return(E_BADPARM); } /* NOTREACHED */ /* TEMPORARY until cases get added */ return(OK); } /*static IFparm DCOparms[] = { };*/ SPICEanalysis DCOinfo = { { "DCOP", "D.C. Operating point analysis", 0, NULL, }, sizeof(OP), DCOsetParm, DCOaskQuest }; 0707070124060442701006440006700000000000011777770500302374300004200000001140spice3c1/spice3/ckt/dctaskquest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "trcvdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("DCTaskQuest.c $Revision: 1.5 $ on $Date: 88/11/17 02:45:02 $") /* ARGSUSED */ int DCTaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { default: return(E_BADPARM); } /* NOTREACHED */ /* TEMPORARY until cases get added */ return(OK); } 0707070124060442711006440006700000000000011777770500302374300004100000006302spice3c1/spice3/ckt/dctsetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "trcvdefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("DCTsetParm.c $Revision: 1.5 $ on $Date: 88/11/17 02:45:05 $") /* ARGSUSED */ int DCTsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { register TRCV* cv= (TRCV*)anal; switch(which) { case DCT_START1: cv->TRCVvStart[0] = value->rValue; cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel); cv->TRCVset[0]=TRUE; break; case DCT_STOP1: cv->TRCVvStop[0] = value->rValue; cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel); cv->TRCVset[0]=TRUE; break; case DCT_STEP1: cv->TRCVvStep[0] = value->rValue; cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel); cv->TRCVset[0]=TRUE; break; case DCT_START2: cv->TRCVvStart[1] = value->rValue; cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel); cv->TRCVset[1]=TRUE; break; case DCT_STOP2: cv->TRCVvStop[1] = value->rValue; cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel); cv->TRCVset[1]=TRUE; break; case DCT_STEP2: cv->TRCVvStep[1] = value->rValue; cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel); cv->TRCVset[1]=TRUE; break; case DCT_NAME1: cv->TRCVvName[0] = value->uValue; cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel); cv->TRCVset[0]=TRUE; break; case DCT_NAME2: cv->TRCVvName[1] = value->uValue; cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel); cv->TRCVset[1]=TRUE; break; case DCT_TYPE1: cv->TRCVvType[0] = value->iValue; cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel); cv->TRCVset[0]=TRUE; break; case DCT_TYPE2: cv->TRCVvType[1] = value->iValue; cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel); cv->TRCVset[1]=TRUE; break; default: return(E_BADPARM); } return(OK); } static IFparm DCTparms[] = { { "start1", DCT_START1, IF_SET|IF_REAL, "starting voltage/current"}, { "stop1", DCT_STOP1, IF_SET|IF_REAL, "ending voltage/current" }, { "step1", DCT_STEP1, IF_SET|IF_REAL, "voltage/current step" }, { "start2", DCT_START2, IF_SET|IF_REAL, "starting voltage/current"}, { "stop2", DCT_STOP2, IF_SET|IF_REAL, "ending voltage/current" }, { "step2", DCT_STEP2, IF_SET|IF_REAL, "voltage/current step" }, { "name1", DCT_NAME1, IF_SET|IF_INSTANCE, "name of source to step" }, { "name2", DCT_NAME2, IF_SET|IF_INSTANCE, "name of source to step" }, { "type1", DCT_TYPE1, IF_SET|IF_INTEGER, "type of source to step" }, { "type2", DCT_TYPE2, IF_SET|IF_INTEGER, "type of source to step" } }; SPICEanalysis DCTinfo = { { "DCTransfer", "D.C. Transfer curve analysis", sizeof(DCTparms)/sizeof(IFparm), DCTparms }, sizeof(TRCV), DCTsetParm, DCTaskQuest }; 0707070124060442721006440006700000000000011777770500302374400003700000020411spice3c1/spice3/ckt/dctrcurv.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "vsrcdefs.h" #include "isrcdefs.h" #include "cktdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" void bcopy(); /* shouldn't need this, but not defined in a sys. header file */ RCSID("DCtrCurv.c $Revision: 1.10 $ on $Date: 89/03/10 10:33:36 $") int DCtrCurv(ckt,restart) CKTcircuit *ckt; int restart; /* forced restart flag */ { register TRCV* cv = (TRCV*)ckt->CKTcurJob; int i; double *temp; int converged; int vcode; int icode; int j; int error; long save; int senmode; GENERIC *plot; IFuid varUid; IFuid *nameList; int numNames; int firstTime=1; #ifdef SENSDEBUG if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode&DCSEN) ){ printf("\nDC Sensitivity Results\n\n"); CKTsenPrint(ckt); } #endif /* SENSDEBUG */ vcode = CKTtypelook("Vsource"); icode = CKTtypelook("Isource"); if(!restart && cv->TRCVnestState >= 0) { /* continuing */ i = cv->TRCVnestState; goto resume; } ckt->CKTtime = 0; ckt->CKTdelta = cv->TRCVvStep[0]; ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT ; ckt->CKTorder=1; for(i=0;i<7;i++) { ckt->CKTdeltaOld[i]=ckt->CKTdelta; } for(i=0;i<=cv->TRCVnestLevel;i++) { if(vcode >= 0) { /* voltage sources are in this version, so use them */ register VSRCinstance *here; register VSRCmodel *model; for(model = (VSRCmodel *)ckt->CKThead[vcode];model != NULL; model=model->VSRCnextModel){ for(here=model->VSRCinstances;here!=NULL; here=here->VSRCnextInstance) { if(here->VSRCname == cv->TRCVvName[i]) { cv->TRCVvElt[i] = (GENinstance *)here; cv->TRCVvSave[i]=here->VSRCdcValue; here->VSRCdcValue = cv->TRCVvStart[i]; cv->TRCVvType[i]=vcode; goto found; } } } } if(icode >= 0 ) { /* current sources are in this version, so use them */ register ISRCinstance *here; register ISRCmodel *model; for(model= (ISRCmodel *)ckt->CKThead[icode];model != NULL; model=model->ISRCnextModel){ for(here=model->ISRCinstances;here!=NULL; here=here->ISRCnextInstance) { if(here->ISRCname == cv->TRCVvName[i]) { cv->TRCVvElt[i]= (GENinstance *)here; cv->TRCVvSave[i]=here->ISRCdcValue; here->ISRCdcValue = cv->TRCVvStart[i]; cv->TRCVvType[i]=icode; goto found; } } } } (*(SPfrontEnd->IFerror))(ERR_FATAL, "DCtrCurv: source %s not in circuit", &(cv->TRCVvName[i])); return(E_NODEV); found:; } error = CKTnames(ckt,&numNames,&nameList); if(error) return(error); (*(SPfrontEnd->IFnewUid))((GENERIC *)ckt,&varUid,(IFuid )NULL, "sweep", UID_OTHER, (GENERIC **)NULL); (*(SPfrontEnd->OUTpBeginPlot))((GENERIC *)ckt,(GENERIC*)ckt->CKTcurJob, ckt->CKTcurJob->JOBname,varUid,IF_REAL,numNames,nameList, IF_REAL,&plot); /* now have finished the initialization - can start doing hard part */ i = 0; resume: for(;;) { temp = ckt->CKTstates[ckt->CKTmaxOrder+1]; for(j=ckt->CKTmaxOrder;j>=0;j--) { ckt->CKTstates[j+1] = ckt->CKTstates[j]; } ckt->CKTstate0 = temp; if(cv->TRCVvType[i]==vcode) { /* voltage source */ if((((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcValue)* SIGN(1.,cv->TRCVvStep[i]) > SIGN(1.,cv->TRCVvStep[i]) * cv->TRCVvStop[i]) { i++ ; firstTime=1; ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT ; if (i > cv->TRCVnestLevel ) break ; goto nextstep; } } else if(cv->TRCVvType[i]==icode) { /* current source */ if((((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue)* SIGN(1.,cv->TRCVvStep[i]) > SIGN(1.,cv->TRCVvStep[i]) * cv->TRCVvStop[i]) { i++ ; firstTime=1; ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT ; if (i > cv->TRCVnestLevel ) break ; goto nextstep; } } /* else not possible */ while (i > 0) { /* init(i); */ i--; if(cv->TRCVvType[i]==vcode) { /* voltage source */ ((VSRCinstance *)(cv->TRCVvElt[i]))->VSRCdcValue = cv->TRCVvStart[i]; } else if(cv->TRCVvType[i]==icode) { /* current source */ ((ISRCinstance *)(cv->TRCVvElt[i]))->ISRCdcValue = cv->TRCVvStart[i]; } /* else not possible */ } /* do operation */ converged = NIiter(ckt,ckt->CKTdcTrcvMaxIter); if(converged != 0) { converged = CKTop(ckt, (ckt->CKTmode&MODEUIC)|MODEDCTRANCURVE | MODEINITJCT, (ckt->CKTmode&MODEUIC)|MODEDCTRANCURVE | MODEINITFLOAT, ckt->CKTdcMaxIter); if(converged != 0) { return(converged); } } ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEDCTRANCURVE | MODEINITPRED ; if(cv->TRCVvType[0] == vcode) { ckt->CKTtime = ((VSRCinstance *)(cv->TRCVvElt[i])) ->VSRCdcValue ; } else if(cv->TRCVvType[0] == icode) { ckt->CKTtime = ((ISRCinstance *)(cv->TRCVvElt[i])) ->ISRCdcValue ; } /* if(!ckt->CKTsenInfo) printf("sensitivity structure does not exist\n"); */ if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode&DCSEN) ){ #ifdef SENSDEBUG if(cv->TRCVvType[i]==vcode) { /* voltage source */ printf("Voltage Source Value : %.5e V\n", ((VSRCinstance*) (cv->TRCVvElt[i]))->VSRCdcValue); } if(cv->TRCVvType[i]==icode) { /* current source */ printf("Current Source Value : %.5e A\n", ((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue); } #endif /* SENSDEBUG */ senmode = ckt->CKTsenInfo->SENmode; save = ckt->CKTmode; ckt->CKTsenInfo->SENmode = DCSEN; if(error = CKTsenDCtran(ckt)) return (error); ckt->CKTmode = save; ckt->CKTsenInfo->SENmode = senmode; } CKTdump(ckt,ckt->CKTtime,plot); if(firstTime) { firstTime=0; bcopy((char *)ckt->CKTstate0,(char *)ckt->CKTstate1, ckt->CKTnumStates*sizeof(double)); } nextstep:; if(cv->TRCVvType[i]==vcode) { /* voltage source */ ((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcValue += cv->TRCVvStep[i]; } else if(cv->TRCVvType[i]==icode) { /* current source */ ((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue += cv->TRCVvStep[i]; } /* else not possible */ if( (*(SPfrontEnd->IFpauseTest))() ) { /* user asked us to pause, so save state */ cv->TRCVnestState = i; return(E_PAUSE); } } /* all done, lets put everything back */ for(i=0;i<=cv->TRCVnestLevel;i++) { if(cv->TRCVvType[i] == vcode) { /* voltage source */ ((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcValue = cv->TRCVvSave[i]; } else if(cv->TRCVvType[i] == icode) { /* current source */ ((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue = cv->TRCVvSave[i]; } /* else not possible */ } (*(SPfrontEnd->OUTendPlot))(plot); return(OK); } 0707070124060442731006440006700000000000011777770500302374400003500000035116spice3c1/spice3/ckt/dctran.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* subroutine to do DC TRANSIENT analysis --- ONLY, unlike spice2 routine with the same name! */ #include "prefix.h" #include #include #include "trandefs.h" #include "cktdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" void bcopy(); /* shouldn't need this, but not defined in a sys. header file */ RCSID("DCtran.c $Revision: 1.20 $ on $Date: 89/04/06 10:21:37 $") int DCtran(ckt,restart) CKTcircuit *ckt; int restart; /* forced restart flag */ { int i; double olddelta; double delta; double new; double *temp; double startdTime; double startsTime; double startTime; int startIters; int converged; int firsttime; int error; #ifdef SENSDEBUG FILE *outsen; #endif /* SENSDEBUG */ int save_order; int save; int save2; int size; long save_mode; long save1; static char *msg = "Timestep too small"; IFuid timeUid; IFuid *nameList; int numNames; #ifdef SHORTMACRO double mt; /* temporary so macro call won't cross line boundry */ #endif if(restart || ckt->CKTtime == 0) { delta=MIN(ckt->CKTfinalTime/50,ckt->CKTstep)/10; if(ckt->CKTbreaks) FREE(ckt->CKTbreaks); ckt->CKTbreaks=(double *)MALLOC(2*sizeof(double)); if(ckt->CKTbreaks == (double *)NULL) return(E_NOMEM); *(ckt->CKTbreaks)=0; *(ckt->CKTbreaks+1)=ckt->CKTfinalTime; ckt->CKTbreakSize=2; if(ckt->CKTminBreak==0) ckt->CKTminBreak=ckt->CKTmaxStep*5e-5; error = CKTnames(ckt,&numNames,&nameList); if(error) return(error); (*(SPfrontEnd->IFnewUid))((GENERIC *)ckt,&timeUid,(IFuid)NULL, "time", UID_OTHER, (GENERIC **)NULL); (*(SPfrontEnd->OUTpBeginPlot))((GENERIC *)ckt,(GENERIC*)ckt->CKTcurJob, ckt->CKTcurJob->JOBname,timeUid,IF_REAL,numNames,nameList, IF_REAL,&(((TRANan*)ckt->CKTcurJob)->TRANplot)); ckt->CKTtime = 0; ckt->CKTdelta = 0; ckt->CKTbreak=1; firsttime = 1; save_mode = (ckt->CKTmode&MODEUIC)|MODETRANOP | MODEINITJCT; save_order = ckt->CKTorder; converged = CKTop(ckt, (ckt->CKTmode & MODEUIC)|MODETRANOP| MODEINITJCT, (ckt->CKTmode & MODEUIC)|MODETRANOP| MODEINITFLOAT, ckt->CKTdcMaxIter); if(converged != 0) return(converged); ckt->CKTstat->STATtimePts ++; ckt->CKTorder=1; for(i=0;i<7;i++) { ckt->CKTdeltaOld[i]=ckt->CKTmaxStep; } ckt->CKTdelta = delta; #ifdef STEPDEBUG (void)printf("delta initialized to %g\n",ckt->CKTdelta); #endif ckt->CKTsaveDelta = ckt->CKTfinalTime/50; if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){ #ifdef SENSDEBUG printf("\nTransient Sensitivity Results\n\n"); CKTsenPrint(ckt); #endif /* SENSDEBUG */ save = ckt->CKTsenInfo->SENmode; ckt->CKTsenInfo->SENmode = TRANSEN; save1 = ckt->CKTmode; save2 = ckt->CKTorder; ckt->CKTmode = save_mode; ckt->CKTorder = save_order; if(error = CKTsenDCtran(ckt)) return(error); ckt->CKTmode = save1; ckt->CKTorder = save2; } ckt->CKTmode = (ckt->CKTmode&MODEUIC)|MODETRAN | MODEINITTRAN; ckt->CKTag[0]=ckt->CKTag[1]=0; bcopy((char *)ckt->CKTstate0,(char *)ckt->CKTstate1, ckt->CKTnumStates*sizeof(double)); if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){ size = SMPmatSize(ckt->CKTmatrix); for(i = 1; i<=size ; i++) *(ckt->CKTrhsOp + i) = *(ckt->CKTrhsOld + i); } startTime=(*(SPfrontEnd->IFseconds))(); startIters = ckt->CKTstat->STATnumIter; startdTime = ckt->CKTstat->STATdecompTime; startsTime = ckt->CKTstat->STATsolveTime; } else { startTime=(*(SPfrontEnd->IFseconds))(); startIters = ckt->CKTstat->STATnumIter; startdTime = ckt->CKTstat->STATdecompTime; startsTime = ckt->CKTstat->STATsolveTime; firsttime=0; goto resume; } /* 650 */ nextTime: error = CKTaccept(ckt); #ifdef STEPDEBUG printf("accepted at %g\n",ckt->CKTtime); #endif /* STEPDEBUG */ ckt->CKTstat->STATaccepted ++; ckt->CKTbreak=0; if(error) { ckt->CKTcurrentAnalysis = DOING_TRAN; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; return(error); } if(ckt->CKTtime >= ckt->CKTinitTime) CKTdump(ckt,ckt->CKTtime, (((TRANan*)ckt->CKTcurJob)->TRANplot)); ckt->CKTstat->STAToldIter = ckt->CKTstat->STATnumIter; if(FABS(ckt->CKTtime - ckt->CKTfinalTime) < ckt->CKTminBreak) { /*printf(" done: time is %g, final time is %g, and tol is %g\n",*/ /*ckt->CKTtime,ckt->CKTfinalTime,ckt->CKTminBreak);*/ (*(SPfrontEnd->OUTendPlot))( (((TRANan*)ckt->CKTcurJob)->TRANplot)); ckt->CKTcurrentAnalysis = 0; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){ ckt->CKTsenInfo->SENmode = save; #ifdef SENSDEBUG fclose(outsen); #endif /* SENSDEBUG */ } return(OK); } if( (*(SPfrontEnd->IFpauseTest))() ) { /* user requested pause... */ ckt->CKTcurrentAnalysis = DOING_TRAN; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; return(E_PAUSE); } resume: #ifdef STEPDEBUG if( (ckt->CKTdelta <= ckt->CKTfinalTime/50) && (ckt->CKTdelta <= ckt->CKTmaxStep)) { ; } else { if(ckt->CKTfinalTime/50CKTmaxStep) { (void)printf("limited by Tstop/50\n"); } else { (void)printf("limited by Tmax\n"); } } #endif ckt->CKTdelta = MIN(ckt->CKTdelta,ckt->CKTmaxStep); if(ckt->CKTtime == *(ckt->CKTbreaks)) { /* first timepoint after a breakpoint - cut integration order */ /* and limit timestep to .1 times minimum of time to next breakpoint, * and previous timestep */ ckt->CKTorder = 1; #ifdef STEPDEBUG if( (ckt->CKTdelta >.1* ckt->CKTsaveDelta) || (ckt->CKTdelta > .1*(*(ckt->CKTbreaks+1)-*(ckt->CKTbreaks))) ) { if(ckt->CKTsaveDelta < (*(ckt->CKTbreaks+1)-*(ckt->CKTbreaks))) { (void)printf("limited by pre-breakpoint delta\n"); } else { (void)printf("limited by next breakpoint\n"); } } #endif #ifdef SHORTMACRO mt= MIN(ckt->CKTsaveDelta, *(ckt->CKTbreaks+1)-*(ckt->CKTbreaks)); ckt->CKTdelta = MIN(ckt->CKTdelta, .1 * mt); #else ckt->CKTdelta = MIN(ckt->CKTdelta, .1 * MIN(ckt->CKTsaveDelta, *(ckt->CKTbreaks+1)-*(ckt->CKTbreaks))); #endif if(firsttime) { ckt->CKTdelta /= 10; #ifdef STEPDEBUG (void)printf("delta cut for initial timepoint\n"); #endif } } if(ckt->CKTtime + ckt->CKTdelta >= *(ckt->CKTbreaks+1)) { ckt->CKTsaveDelta = ckt->CKTdelta; ckt->CKTdelta = *(ckt->CKTbreaks+1) - ckt->CKTtime; #ifdef STEPDEBUG (void)printf("delta cut to hit breakpoint\n"); #endif ckt->CKTbreak = 1; error = CKTclrBreak(ckt); if(error) { ckt->CKTcurrentAnalysis = DOING_TRAN; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; return(error); } } else if((ckt->CKTtime + ckt->CKTdelta > *(ckt->CKTbreaks)) && (ckt->CKTtime < *(ckt->CKTbreaks))) { ckt->CKTbreak = 1; ckt->CKTsaveDelta = ckt->CKTdelta; #ifdef STEPDEBUG (void)printf("delta cut to hit breakpoint again\n"); #endif ckt->CKTdelta = *(ckt->CKTbreaks) - ckt->CKTtime; } for(i=5;i>=0;i--) { ckt->CKTdeltaOld[i+1]=ckt->CKTdeltaOld[i]; } ckt->CKTdeltaOld[0]=ckt->CKTdelta; temp = ckt->CKTstates[ckt->CKTmaxOrder+1]; for(i=ckt->CKTmaxOrder;i>=0;i--) { ckt->CKTstates[i+1] = ckt->CKTstates[i]; } ckt->CKTstates[0] = temp; /* 600 */ while (1) { olddelta=ckt->CKTdelta; /* time abort? */ ckt->CKTtime += ckt->CKTdelta; ckt->CKTdeltaOld[0]=ckt->CKTdelta; NIcomCof(ckt); #ifdef PREDICTOR error = NIpred(ckt); #endif /* PREDICTOR */ save_mode = ckt->CKTmode; save_order = ckt->CKTorder; converged = NIiter(ckt,ckt->CKTtranMaxIter); ckt->CKTstat->STATtimePts ++; ckt->CKTmode = (ckt->CKTmode&MODEUIC)|MODETRAN | MODEINITPRED; if(firsttime) { for(i=0;iCKTnumStates;i++) { *(ckt->CKTstate2+i) = *(ckt->CKTstate1+i); *(ckt->CKTstate3+i) = *(ckt->CKTstate1+i); } } if(converged != 0) { ckt->CKTtime = ckt->CKTtime -ckt->CKTdelta; ckt->CKTstat->STATrejected ++; ckt->CKTdelta = ckt->CKTdelta/8; #ifdef STEPDEBUG (void)printf("delta cut for non-convergence\n"); #endif if(firsttime) { ckt->CKTmode = (ckt->CKTmode&MODEUIC)|MODETRAN | MODEINITTRAN; } ckt->CKTorder = 1; } else { if (firsttime) { if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){ save1 = ckt->CKTmode; save2 = ckt->CKTorder; ckt->CKTmode = save_mode; ckt->CKTorder = save_order; if(error = CKTsenDCtran(ckt)) return(error); ckt->CKTmode = save1; ckt->CKTorder = save2; } firsttime =0; goto nextTime; /* no check on * first time point */ } new = ckt->CKTdelta; error = CKTtrunc(ckt,&new); if(error) { ckt->CKTcurrentAnalysis = DOING_TRAN; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; return(error); } if(new>.9 * ckt->CKTdelta) { if(ckt->CKTorder == 1) { new = ckt->CKTdelta; ckt->CKTorder = 2; error = CKTtrunc(ckt,&new); if(error) { ckt->CKTcurrentAnalysis = DOING_TRAN; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; return(error); } if(new <= 1.05 * ckt->CKTdelta) { ckt->CKTorder = 1; } } /* time point OK - 630*/ ckt->CKTdelta = new; #ifdef STEPDEBUG (void)printf( "delta set to truncation error result:point accepted\n"); #endif if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){ save1 = ckt->CKTmode; save2 = ckt->CKTorder; ckt->CKTmode = save_mode; ckt->CKTorder = save_order; if(error = CKTsenDCtran(ckt)) return(error); ckt->CKTmode = save1; ckt->CKTorder = save2; } /* go to 650 - trapezoidal */ goto nextTime; } else { ckt->CKTtime = ckt->CKTtime -ckt->CKTdelta; ckt->CKTstat->STATrejected ++; ckt->CKTdelta = new; #ifdef STEPDEBUG (void)printf( "delta set to truncation error result:point rejected\n"); #endif } } if (ckt->CKTdelta <= ckt->CKTdelmin) { if (olddelta > ckt->CKTdelmin) { ckt->CKTdelta = ckt->CKTdelmin; #ifdef STEPDEBUG (void)printf("delta at delmin\n"); #endif } else { ckt->CKTcurrentAnalysis = DOING_TRAN; ckt->CKTstat->STATtranTime += (*(SPfrontEnd->IFseconds))()-startTime; ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters; ckt->CKTstat->STATtranDecompTime += ckt->CKTstat->STATdecompTime - startdTime; ckt->CKTstat->STATtranSolveTime += ckt->CKTstat->STATsolveTime - startsTime; errMsg = MALLOC(strlen(msg)+1); strcpy(errMsg,msg); return(E_TIMESTEP); } } } /* NOTREACHED */ } 0707070124060442741006440006700000000000011777770500302374400003500000001140spice3c1/spice3/ckt/pzdcop.c/* * Copyright (c) 1985 Mani Bhushan Srivastava */ #include "prefix.h" #include #include "cktdefs.h" #include "trandefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("PZDCop.c $Revision: 1.4 $ on $Date: 88/06/30 16:29:43 $") int PZDCop(ckt) CKTcircuit *ckt; { int NIiter(); int CKTload(); int converged; ckt->CKTmode = MODEDCOP | MODEINITJCT; converged = NIiter(ckt,ckt->CKTdcMaxIter); if(converged != 0) { return(converged); } ckt->CKTmode = MODEDCOP | MODEINITSMSIG; converged = CKTload(ckt); return(converged); } 0707070124060442751006440006700000000000011777770500302374400003300000026051spice3c1/spice3/ckt/pzan.c/* * Copyright (c) 1985 Mani B. Srivastava */ #include "prefix.h" #include #include #include "complex.h" #include "cktdefs.h" #include "smpdefs.h" #include "pzdefs.h" #include "trandefs.h" /* only to get the 'mode' definitions */ #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("PZan.c $Revision: 1.10 $ on $Date: 89/03/07 11:49:16 $") /* ARGSUSED */ int PZan(ckt,reset) CKTcircuit *ckt; int reset; { register PZAN *pzptr = (PZAN *)ckt->CKTcurJob; int error; char *name; int i,type; int j; int typeCkt; int NIpzMuller(); int NIpzSolve(); int numpole,numzero; IFuid *namelist; /* names of output variables */ GENERIC *pzPlotPtr; /* the plot pointer for front end */ IFcomplex *out_list; /* out list of complex data points */ IFvalue outData; /* output variable (points to out_list) */ IFvalue refVal; /* reference variable (always 0)*/ root *temproot; int again; static char *short1msg = "Input port is shorted"; static char *short2msg = "Output port is shorted"; static char *inoutmsg = "Transfer function is 1, no poles or zeros to find"; static char *xmline = "Transmission lines not supported by pole-zero analysis"; pzptr->PZnumswaps=1; pzptr->PZpoleList = (root *)NULL; pzptr->PZzeroList = (root *)NULL; if(pzptr->PZnodeI==0) { pzptr->PZnodeI=pzptr->PZnodeG; pzptr->PZnodeG=0; } if(pzptr->PZnodeJ==0) { pzptr->PZnodeJ=pzptr->PZnodeK; pzptr->PZnodeK=0; } if(pzptr->PZnodeI == pzptr->PZnodeG) { errMsg = MALLOC(strlen(short1msg)+1); strcpy(errMsg,short1msg); return(E_SHORT); } if(pzptr->PZnodeJ == pzptr->PZnodeK) { errMsg = MALLOC(strlen(short2msg)+1); strcpy(errMsg,short2msg); return(E_SHORT); } if( (pzptr->PZnodeI==pzptr->PZnodeK) && (pzptr->PZnodeG==pzptr->PZnodeJ) ){ pzptr->PZnodeI = pzptr->PZnodeJ; pzptr->PZnodeG = pzptr->PZnodeK; } if( (pzptr->PZnodeI==pzptr->PZnodeJ) && (pzptr->PZnodeG==pzptr->PZnodeK) && (pzptr->PZflagVI==0) ) { errMsg = MALLOC(strlen(inoutmsg)+1); strcpy(errMsg,inoutmsg); return(E_INISOUT); } again=0; error = CKTop(ckt, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT, ckt->CKTdcMaxIter); if(error) return(error); ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEDCOP | MODEINITSMSIG; error = CKTload(ckt); if(error) return(error); ckt->CKTmode=MODEAC ; /*check if there are any transmission lines*/ i=CKTtypelook("transmission line"); if (i!=-1) { if (ckt->CKThead[i]!=NULL) { errMsg = MALLOC(strlen(xmline)+1); strcpy(errMsg,xmline); return(E_XMISSIONLINE); } } loop: if (again==1) { error = CKTop(ckt, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT, ckt->CKTdcMaxIter); if(error) return(error); ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG; error = CKTload(ckt); if(error) return(error); }; pzptr->PZJK_Jptr=(double *)NULL; pzptr->PZJK_Kptr=(double *)NULL; pzptr->PZJK_JKptr=(double *)NULL; pzptr->PZIG_Iptr=(double *)NULL; pzptr->PZIG_Gptr=(double *)NULL; pzptr->PZIG_IGptr=(double *)NULL; /*rest of the SMP has already been setup by the calling routine so now we just form an additional equation for the variable V sub JK which is the output port voltage and create pointers to SMP elements at (jk,j),(jk,k),(jk,jk),(ig,i),(ig,g),(ig,ig)*/ if ((pzptr->PZflagVI==0) && (pzptr->PZnodeK ==0) && (pzptr->PZnodeG==0)) { /*transfer function of the type V/V*/ /*matrix remains as it is*/ typeCkt=1; }; if ((pzptr->PZflagVI==0) && (pzptr->PZnodeK ==0) && (pzptr->PZnodeG!=0)) { /*transfer function of the type V/V*/ typeCkt=2; /*introduce row i-g*/ pzptr->PZdiffIG=ckt->CKTmaxEqNum; if ((pzptr->PZIG_Iptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffIG, pzptr->PZnodeI))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZIG_Gptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffIG, pzptr->PZnodeG))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZIG_IGptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffIG, pzptr->PZdiffIG))==(double *)(NULL)) return(E_NOMEM); }; if ((pzptr->PZflagVI==0) && (pzptr->PZnodeK !=0) && (pzptr->PZnodeG==0)) { /*transfer function of the type V/V*/ typeCkt=3; /*introduce row j-k*/ pzptr->PZdiffJK=ckt->CKTmaxEqNum; if ((pzptr->PZJK_Jptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeJ))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_Kptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeK))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_JKptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZdiffJK))==(double *)(NULL)) return(E_NOMEM); }; if ((pzptr->PZflagVI==0) && (pzptr->PZnodeK !=0) && (pzptr->PZnodeG!=0) && (pzptr->PZnodeI==pzptr->PZnodeJ)&&(pzptr->PZnodeG==pzptr->PZnodeK)){ /*transfer function of the type V/V*/ typeCkt=4; /*introduce row j-k = i-g*/ pzptr->PZdiffJK=ckt->CKTmaxEqNum; if ((pzptr->PZJK_Jptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeJ))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_Kptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeK))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_JKptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZdiffJK))==(double *)(NULL)) return(E_NOMEM); pzptr->PZdiffIG=pzptr->PZdiffJK; pzptr->PZIG_Iptr=pzptr->PZJK_Jptr; pzptr->PZIG_Gptr=pzptr->PZJK_Kptr; pzptr->PZIG_IGptr=pzptr->PZJK_JKptr; }; if ((pzptr->PZflagVI==0) && (pzptr->PZnodeK !=0) && (pzptr->PZnodeG!=0) && !((pzptr->PZnodeI==pzptr->PZnodeJ) && (pzptr->PZnodeG==pzptr->PZnodeK))) { /*transfer function of the type V/V*/ typeCkt=5; /*introduce row j-k*/ pzptr->PZdiffJK=ckt->CKTmaxEqNum; if ((pzptr->PZJK_Jptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeJ))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_Kptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeK))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_JKptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZdiffJK))==(double *)(NULL)) return(E_NOMEM); /*introduce row i-g*/ pzptr->PZdiffIG=ckt->CKTmaxEqNum+1; if ((pzptr->PZIG_Iptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffIG, pzptr->PZnodeI))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZIG_Gptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffIG, pzptr->PZnodeG))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZIG_IGptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffIG, pzptr->PZdiffIG))==(double *)(NULL)) return(E_NOMEM); }; if ((pzptr->PZflagVI==1) && (pzptr->PZnodeK !=0)) { /*transfer function of the type V/I*/ typeCkt=6; /*introduce row j-k*/ pzptr->PZdiffJK=ckt->CKTmaxEqNum; if ((pzptr->PZJK_Jptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeJ))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_Kptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZnodeK))==(double *)(NULL)) return(E_NOMEM); if ((pzptr->PZJK_JKptr=SMPmakeElt(ckt->CKTmatrix, pzptr->PZdiffJK, pzptr->PZdiffJK))==(double *)(NULL)) return(E_NOMEM); }; if ((pzptr->PZflagVI==1) && (pzptr->PZnodeK ==0)) { /*transfer function of the type V/I*/ typeCkt=7; /*matrix remains as it is*/ }; /*now we can go ahead and find the poles and zeros depending on what is required the type of analysis needed is shown by PZflagPZ whose values have the following interpretation: 1 - pole analysis only 2 - zero analysis only 3 - both */ NIdestroy(ckt); error=NIinit(ckt); if (error) return(error); error=CKTpzSetup(ckt); if (error) return(error); error=CKTtemp(ckt); if (error) return(error); if ((pzptr->PZflagPZ==1) || (pzptr->PZflagPZ==3)) { /*pole analysis*/ type=typeCkt; error=NIpzMuller(ckt,&(pzptr->PZpoleList), type); if (error) return(error); } if (pzptr->PZflagPZ==3) { pzptr->PZflagPZ=2; pzptr->PZnumswaps=1; again=1; goto loop; }; if ((pzptr->PZflagPZ==2) || (pzptr->PZflagPZ==3)) { /*zero analysis*/ type=typeCkt+10; error=NIpzMuller(ckt,&(pzptr->PZzeroList), type); if (error) return(error); } numpole=0; temproot=pzptr->PZpoleList; while (temproot != (root *)(NULL)) { numpole++; temproot=temproot->next; }; numzero=0; temproot=pzptr->PZzeroList; while (temproot != (root *)(NULL)) { numzero++; temproot=temproot->next; }; namelist = (IFuid *)MALLOC((numpole+numzero)*sizeof(IFuid)); name = (char *) MALLOC(10 * sizeof(char)); if (name == (char *)NULL) return(E_NOMEM); j=0; for (i=0 ; iIFnewUid))(ckt,&(namelist[j++]),(IFuid)NULL, name,UID_OTHER,(GENERIC **)NULL); }; for (i=0 ; iIFnewUid))(ckt,&(namelist[j++]),(IFuid)NULL, name,UID_OTHER,(GENERIC **)NULL); }; (*(SPfrontEnd->OUTpBeginPlot))(ckt,(GENERIC *)pzptr,pzptr->JOBname, (IFuid)NULL,(int)0,(int)(numpole+numzero),namelist,IF_COMPLEX, &pzPlotPtr); out_list= (IFcomplex *)MALLOC((numpole+numzero)*sizeof(IFcomplex)); if (out_list == (IFcomplex *)NULL) return(E_NOMEM); temproot=pzptr->PZpoleList; for (i=0 ; ireal))<1.0e-20) temproot->real=0.0; if (fabs((temproot->imag))<1.0e-20) temproot->imag=0.0; out_list[i].real = (temproot->real) * 1.0e6; out_list[i].imag = (temproot->imag) * 1.0e6; temproot=temproot->next; }; temproot=pzptr->PZzeroList; for (i=numpole ; i<(numpole + numzero) ; i++) { if (fabs((temproot->real))<1.0e-20) temproot->real=0.0; if (fabs((temproot->imag))<1.0e-20) temproot->imag=0.0; out_list[i].real = (temproot->real) * 1.0e6; out_list[i].imag = (temproot->imag) * 1.0e6; temproot=temproot->next; }; outData.v.numValue=numpole+numzero; outData.v.vec.cVec=out_list; (*(SPfrontEnd->OUTpData))(pzPlotPtr,&refVal,&outData); (*(SPfrontEnd->OUTendPlot))(pzPlotPtr); return(OK); } 0707070124060442761006440006700000000000011777770500302374400004100000003362spice3c1/spice3/ckt/pzaskquest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "pzdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("PZaskQuest.c $Revision: 1.5 $ on $Date: 88/11/17 02:45:31 $") /* ARGSUSED */ int PZaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case PZ_NODEI: value->nValue = (IFnode)CKTnum2nod(ckt,((PZAN*)anal)->PZnodeI); break; case PZ_NODEG: value->nValue = (IFnode)CKTnum2nod(ckt,((PZAN*)anal)->PZnodeG); break; case PZ_NODEJ: value->nValue = (IFnode)CKTnum2nod(ckt,((PZAN*)anal)->PZnodeJ); break; case PZ_NODEK: value->nValue = (IFnode)CKTnum2nod(ckt,((PZAN*)anal)->PZnodeK); break; case PZ_V: if( ((PZAN*)anal)->PZflagVI == 0) { value->iValue=1; } else { value->iValue=0; } break; case PZ_I: if( ((PZAN*)anal)->PZflagVI == 1) { value->iValue=1; } else { value->iValue=0; } break; case PZ_POL: if( ((PZAN*)anal)->PZflagVI == 1) { value->iValue=1; } else { value->iValue=0; } break; case PZ_ZER: if( ((PZAN*)anal)->PZflagVI == 2) { value->iValue=1; } else { value->iValue=0; } break; case PZ_PZ: if( ((PZAN*)anal)->PZflagVI == 3) { value->iValue=1; } else { value->iValue=0; } break; default: return(E_BADPARM); } return(OK); } 0707070124060442771006440006700000000000011777770500302374400004000000004320spice3c1/spice3/ckt/pzsetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "pzdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("PZsetParm.c $Revision: 1.6 $ on $Date: 89/01/19 20:39:53 $") /* ARGSUSED */ int PZsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case PZ_NODEI: ((PZAN*)anal)->PZnodeI = ((CKTnode*)value->nValue)->number; break; case PZ_NODEG: ((PZAN*)anal)->PZnodeG = ((CKTnode*)value->nValue)->number; break; case PZ_NODEJ: ((PZAN*)anal)->PZnodeJ = ((CKTnode*)value->nValue)->number; break; case PZ_NODEK: ((PZAN*)anal)->PZnodeK = ((CKTnode*)value->nValue)->number; break; case PZ_V: if(value->iValue) { ((PZAN*)anal)->PZflagVI = 0; } break; case PZ_I: if(value->iValue) { ((PZAN*)anal)->PZflagVI = 1; } break; case PZ_POL: if(value->iValue) { ((PZAN*)anal)->PZflagPZ = 1; } break; case PZ_ZER: if(value->iValue) { ((PZAN*)anal)->PZflagPZ = 2; } break; case PZ_PZ: if(value->iValue) { ((PZAN*)anal)->PZflagPZ = 3; } break; default: return(E_BADPARM); } return(OK); } static IFparm PZparms[] = { { "nodei", PZ_NODEI, IF_SET|IF_ASK|IF_NODE, "" }, { "nodeg", PZ_NODEG, IF_SET|IF_ASK|IF_NODE, "" }, { "nodej", PZ_NODEJ, IF_SET|IF_ASK|IF_NODE, "" }, { "nodek", PZ_NODEK, IF_SET|IF_ASK|IF_NODE, "" }, { "vol", PZ_V, IF_SET|IF_ASK|IF_FLAG, "" }, { "cur", PZ_I, IF_SET|IF_ASK|IF_FLAG, "" }, { "pol", PZ_POL, IF_SET|IF_ASK|IF_FLAG, "" }, { "zer", PZ_ZER, IF_SET|IF_ASK|IF_FLAG, "" }, { "pz", PZ_PZ, IF_SET|IF_ASK|IF_FLAG, "" } }; SPICEanalysis PZinfo = { { "PZ", "pole-zero analysis", sizeof(PZparms)/sizeof(IFparm), PZparms }, sizeof(PZAN), PZsetParm, PZaskQuest }; 0707070124060443001006440006700000000000011777770500302374400004200000001071spice3c1/spice3/ckt/senaskquest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "sendefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("SENaskQuest.c $Revision: 1.4 $ on $Date: 88/11/17 02:45:38 $") /* ARGSUSED */ int SENaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { default: return(E_BADPARM); } /* NOTREACHED */ return(OK); } 0707070124060443011006440006700000000000011777770500302374400004100000003064spice3c1/spice3/ckt/sendestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* SENdestroy(ckt) * this is a driver program to iterate through all the various * destroy functions provided for the circuit elements in the * given circuit */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "util.h" #include "ifsim.h" #include "sperror.h" #include "suffix.h" RCSID("SENdestroy.c $Revision: 1.2 $ on $Date: 88/06/30 16:29:49 $") void SENdestroy(info) SENstruct *info; { register int i; int size; size = info->SENsize; #ifdef SENSDEBUG printf("size = %d\n",size); printf("freeing sensitivity structure in SENdestroy\n"); #endif /* SENSDEBUG */ /* if(info->SENdevices) FREE(info->SENdevices); if(info->SENparmNames) FREE(info->SENparmNames); */ if(info->SEN_Sap){ #ifdef SENSDEBUG printf("freeing SEN_Sap in SENdestroy\n"); #endif /* SENSDEBUG */ for(i=0;i<=size;i++){ if(info->SEN_Sap[i]) FREE(info->SEN_Sap[i]); } FREE(info->SEN_Sap); } if(info->SEN_RHS){ for(i=0;i<=size;i++){ if(info->SEN_RHS[i]) FREE(info->SEN_RHS[i]); } FREE(info->SEN_RHS); } if(info->SEN_iRHS){ for(i=0;i<=size;i++){ if(info->SEN_iRHS[i]) FREE(info->SEN_iRHS[i]); } FREE(info->SEN_Sap); } /* FREE(info); */ #ifdef SENSDEBUG printf("SENdestroy end\n"); #endif /* SENSDEBUG */ return; } 0707070124060443021006440006700000000000011777770500302374400004100000005662spice3c1/spice3/ckt/sensetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "sendefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("SENsetParm.c $Revision: 1.5 $ on $Date: 89/01/19 20:53:06 $") /* ARGSUSED */ int SENsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case SEN_DC: if(value->iValue) { ((SENstruct *)anal)->SENmode |= DCSEN; } break; case SEN_AC: if(value->iValue) { ((SENstruct *)anal)->SENmode |= ACSEN; } break; case SEN_TRAN: if(value->iValue) { ((SENstruct *)anal)->SENmode |= TRANSEN; } break; case SEN_DEV: ((SENstruct *)anal)->SENnumVal += 1; if( ! ((SENstruct *)anal)->SENdevices ) { ((SENstruct *)anal)->SENdevices = (char **) MALLOC( ((SENstruct *)anal)->SENnumVal * sizeof(char *)); if( ((SENstruct *)anal)->SENdevices == NULL) return(E_NOMEM); ((SENstruct *)anal)->SENparmNames = (char **) MALLOC( ((SENstruct *)anal)->SENnumVal * sizeof(char *)); if( ((SENstruct *)anal)->SENparmNames == NULL) return(E_NOMEM); } else { ((SENstruct *)anal)->SENdevices = (char **) REALLOC( ((SENstruct *)anal)->SENdevices , ((SENstruct *)anal)->SENnumVal * sizeof(char *)); if( ((SENstruct *)anal)->SENdevices == NULL) return(E_NOMEM); ((SENstruct *)anal)->SENparmNames = (char **) REALLOC( ((SENstruct *)anal)->SENparmNames, ((SENstruct *)anal)->SENnumVal * sizeof(char *)) ; if( ((SENstruct *)anal)->SENparmNames == NULL) return(E_NOMEM); } *(((SENstruct *)anal)->SENdevices+((SENstruct *)anal)->SENnumVal-1)= value->sValue; break; case SEN_PARM: *(((SENstruct *)anal)->SENparmNames+((SENstruct *)anal)->SENnumVal-1)= value->sValue; break; default: return(E_BADPARM); } return(OK); } static IFparm SENparms[] = { { "dc", SEN_DC, IF_SET|IF_FLAG, "sensitivity in DC analysis" }, { "op", SEN_DC, IF_SET|IF_FLAG, "sensitivity in DCop analysis" }, { "ac", SEN_AC, IF_SET|IF_FLAG, "sensitivity in AC analysis" }, { "tran", SEN_TRAN, IF_SET|IF_FLAG, "sensitivity in transient analysis"}, { "dev", SEN_DEV, IF_SET|IF_INSTANCE, "instance with design param." }, { "parm", SEN_PARM, IF_SET|IF_STRING, "name of design parameter" }, }; SPICEanalysis SENinfo = { { "SEN", "Sensitivity analysis", sizeof(SENparms)/sizeof(IFparm), SENparms }, sizeof(SENstruct), SENsetParm, SENaskQuest }; 0707070124060443031006440006700000000000011777770500302374500004100000002515spice3c1/spice3/ckt/senstartup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "ifsim.h" #include "cktdefs.h" #include "util.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("SENstartup.c $Revision: 1.3 $ on $Date: 88/06/30 16:29:52 $") /* This is a routine to initialize the sensitivity * data structure */ int SENstartup(ckt) CKTcircuit *ckt; { int i; int err; IFvalue parmtemp; int type; GENinstance *fast; #ifdef SENSDEBUG printf("SENstartup\n"); #endif /* SENSDEBUG */ ckt->CKTsenInfo->SENstatus = NORMAL; ckt->CKTsenInfo->SENpertfac = 1e-4; ckt->CKTsenInfo->SENinitflag = ON;/* allocate memory in NIsenReinit */ parmtemp.iValue = 1; for(i=0;iCKTsenInfo->SENnumVal;i++) { type = -1; fast = (GENinstance *)NULL; err = CKTfndDev((GENERIC*)ckt,&type,(GENERIC**)&fast, (*((ckt->CKTsenInfo->SENdevices)+i)), (GENERIC *)NULL, (GENERIC *)NULL); if(err != OK) return(err); err = CKTpName( (*((ckt->CKTsenInfo->SENparmNames)+i)), &parmtemp,ckt ,type, (*((ckt->CKTsenInfo->SENdevices)+i)), &fast); if(err != OK) return(err); } #ifdef SENSDEBUG printf("SENstartup end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124060443041006440006700000000000011777770500302374500003600000010727spice3c1/spice3/ckt/spiinit.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "ifsim.h" #include "devdefs.h" #include "jobdefs.h" #include "util.h" #include "sperror.h" #include "optdefs.h" #include "const.h" /* we initialize & allocate memory for these here */ #include "suffix.h" RCSID("SPIinit.c $Revision: 1.7 $ on $Date: 89/01/22 21:45:00 $") extern SPICEdev ASRCinfo; extern SPICEdev VSRCinfo; extern SPICEdev ISRCinfo; extern SPICEdev URCinfo; extern SPICEdev VCVSinfo; extern SPICEdev CCVSinfo; extern SPICEdev VCCSinfo; extern SPICEdev CCCSinfo; extern SPICEdev RESinfo; extern SPICEdev TRAinfo; extern SPICEdev CAPinfo; extern SPICEdev INDinfo; extern SPICEdev MUTinfo; extern SPICEdev MOS1info; extern SPICEdev MOS2info; extern SPICEdev MOS3info; extern SPICEdev DIOinfo; extern SPICEdev BJTinfo; extern SPICEdev JFETinfo; extern SPICEdev BSIMinfo; extern SPICEdev CSWinfo; extern SPICEdev SWinfo; extern SPICEdev MESinfo; extern SPICEanalysis ACinfo; extern SPICEanalysis OPTinfo; extern SPICEanalysis DCTinfo; extern SPICEanalysis DCOinfo; extern SPICEanalysis TRANinfo; extern SPICEanalysis PZinfo; extern SPICEanalysis SENinfo; extern SPICEanalysis TFinfo; static char * specSigList[] = { "time" }; static IFparm nodeParms[] = { IP( "nodeset",PARM_NS ,IF_REAL,"suggested initial voltage"), IP( "ic",PARM_IC ,IF_REAL,"initial voltage"), IP( "type",PARM_NODETYPE ,IF_INTEGER,"output type of equation") }; SPICEanalysis *analInfo[] = { &OPTinfo, &ACinfo, &DCTinfo, &DCOinfo, &TRANinfo, &PZinfo, &SENinfo, &TFinfo, }; SPICEdev *DEVices[] = { &ASRCinfo, &VSRCinfo, &ISRCinfo, &URCinfo, &VCVSinfo, &CCVSinfo, &VCCSinfo, &CCCSinfo, &RESinfo, &TRAinfo, &CAPinfo, &INDinfo, &MUTinfo, &MOS1info, &MOS2info, &MOS3info, &DIOinfo, &BJTinfo, &JFETinfo, &BSIMinfo, &CSWinfo, &MESinfo, &SWinfo }; static IFsimulator SIMinfo = { "SPICE3", /* my name */ "SPICE3 circuit level simulation program", /* more about me */ "3C.1", /* my version */ CKTinit, /* newCircuit function */ CKTdestroy, /* deleteCircuit function */ CKTnewNode, /* newNode function */ CKTground, /* groundNode function */ CKTbindNode, /* bindNode function */ CKTfndNode, /* findNode function */ CKTinst2Node, /* instToNode function */ CKTsetNodPm, /* setNodeParm function */ CKTaskNodQst, /* askNodeQuest function */ CKTdltNod, /* deleteNode function */ CKTcrtElt, /* newInstance function */ CKTparam, /* setInstanceParm function */ CKTask, /* askInstanceQuest function */ CKTfndDev, /* findInstance funciton */ CKTdltInst, /* deleteInstance function */ CKTmodCrt, /* newModel function */ CKTmodParam, /* setModelParm function */ CKTmodAsk, /* askModelQuest function */ CKTfndMod, /* findModel function */ CKTdltMod, /* deleteModel function */ CKTnewTask, /* newTask function */ CKTnewAnal, /* newAnalysis function */ CKTsetAnalPm, /* setAnalysisParm function */ CKTaskAnalQ, /* askAnalysisQeust function */ CKTfndAnal, /* findAnalysis function */ CKTfndTask, /* findTask function */ CKTdelTask, /* deleteTask function */ CKTdoJob, /* doAnalyses function */ sizeof(DEVices)/sizeof(SPICEdev *), (IFdevice**)DEVices, sizeof(analInfo)/sizeof(SPICEanalysis *), (IFanalysis **)analInfo, sizeof(nodeParms)/sizeof(IFparm), nodeParms, sizeof(specSigList)/sizeof(char *), specSigList, }; /* my internal global constant for number of devices */ int DEVmaxnum = sizeof(DEVices)/sizeof(SPICEdev *); int ANALmaxnum = sizeof(analInfo)/sizeof(SPICEanalysis*); /* allocate space for global constants in 'CONST.h' */ double CONSTroot2; double CONSTvt0; double CONSTKoverQ; double CONSTe; IFfrontEnd *SPfrontEnd = NULL; /* * * And now, our function! * * (big, isn't it) * */ int SPIinit(frtEnd,description) IFfrontEnd *frtEnd; IFsimulator **description; { SPfrontEnd = frtEnd; *description = &SIMinfo; CONSTroot2 = sqrt(2.); CONSTvt0 = CONSTboltz * (27 /* deg c */ + CONSTCtoK ) / CHARGE; CONSTKoverQ = CONSTboltz / CHARGE; CONSTe = exp((double)1.0); return(OK); } 0707070124060443051006440006700000000000011777770500302374500003600000005126spice3c1/spice3/ckt/sperror.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* * provide the error message appropriate for the given error code */ #include "prefix.h" #include #include "sperror.h" #include "cktdefs.h" #include "ifsim.h" #include "util.h" #include "suffix.h" RCSID("SPerror.c $Revision: 1.4 $ on $Date: 88/06/30 16:30:34 $") #define MSG(a) \ val = MALLOC(2+strlen(a));\ if(val) {\ (void)strcpy(val,a);\ return(val);\ }\ (*(SPfrontEnd->IFerror))(ERR_PANIC,nomem,(IFuid *)NULL);\ return(NULL); char * SPerror(type) int type; { static char *unknownError = "Unknown error code"; static char *Pause = "Pause requested"; static char *intern = "Impossible error - can't occur"; static char *exists = "Device already exists, existing one being used"; static char *nodev = "No such device"; static char *noterm = "No such terminal on this device"; static char *nomod = "No such model"; static char *badparm = "No such parameter on this device"; static char *nomem = "Out of Memory"; static char *badmatrix = "Matrix can't be decomposed as is"; static char *singular = "Matrix is singular"; static char *iterlim = "Iteration limit reached"; static char *order = "Unsupported integration order"; static char *method = "Unsupported integration method"; static char *timestep = "Timestep too small"; static char *xmission = "transmission lines not supported by pole-zero"; static char *toobig = "magnitude overflow"; static char *isshort = "input or output shorted"; static char *inisout = "transfer function is 1"; char *val; switch(type) { default: MSG(unknownError) case E_PAUSE: MSG(Pause) case OK: return(NULL); case E_INTERN: MSG(intern) case E_EXISTS: MSG(exists) case E_NODEV: MSG(nodev) case E_NOMOD: MSG(nomod) case E_NOTERM: MSG(noterm) case E_BADPARM: MSG(badparm) case E_NOMEM: MSG(nomem) case E_BADMATRIX: MSG(badmatrix) case E_SINGULAR: MSG(singular) case E_ITERLIM: MSG(iterlim) case E_ORDER: MSG(order) case E_METHOD: MSG(method) case E_TIMESTEP: MSG(timestep) case E_XMISSIONLINE: MSG(xmission) case E_MAGEXCEEDED: MSG(toobig) case E_SHORT: MSG(isshort) case E_INISOUT: MSG(inisout) } /*NOTREACHED*/ } 0707070124060443061006440006700000000000011777770500302374500003500000014067spice3c1/spice3/ckt/tfanal.c/* * Copyright (c) 1988 Thomas L. Quarles */ /* subroutine to do DC Transfer Function analysis */ #include "prefix.h" #include #include #include "cktdefs.h" #include "ifsim.h" #include "util.h" #include "sperror.h" #include "smpdefs.h" #include "tfdefs.h" #include "suffix.h" RCSID("TFanal.c $Revision: 1.15 $ on $Date: 89/01/14 04:52:37 $") /* ARGSUSED */ int TFanal(ckt,restart) CKTcircuit *ckt; int restart; /* forced restart flag */ { int size; int insrc,outsrc; double outputs[3]; IFvalue outdata; /* structure for output data vector, will point to * outputs vector above */ IFvalue refval; /* structure for 'reference' value (not used here) */ int error; int converged; register int i; GENERIC *plotptr; /* pointer to out plot */ GENERIC *ptr = NULL; IFuid uids[3]; int Itype; int Vtype; char *name; #define tfuid (uids[0]) /* unique id for the transfer function output */ #define inuid (uids[1]) /* unique id for the transfer function input imp. */ #define outuid (uids[2]) /* unique id for the transfer function out. imp. */ /* first, find the operating point */ converged = CKTop(ckt, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT, (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT, ckt->CKTdcMaxIter); #ifdef notdef /* don't need this any more since newconvtest leaves the matrix factored */ ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITFLOAT; error = CKTload(ckt); if(error) return(error); error=SMPluFac(ckt->CKTmatrix,ckt->CKTpivotAbsTol,ckt->CKTdiagGmin); if(error) return(error); #endif /* notdef */ Itype = CKTtypelook("Isource"); Vtype = CKTtypelook("Vsource"); if(Itype != -1) { error = CKTfndDev((GENERIC*)ckt,&Itype,&ptr, ((TFan*)ckt->CKTcurJob)->TFinSrc, (GENERIC *)NULL,(IFuid)NULL); if(error ==0) { ((TFan*)ckt->CKTcurJob)->TFinIsI = 1; ((TFan*)ckt->CKTcurJob)->TFinIsV = 0; } else { ptr = NULL; } } if( (Vtype != -1) && (ptr==NULL) ) { error = CKTfndDev((GENERIC*)ckt,&Vtype,&ptr, ((TFan*)ckt->CKTcurJob)->TFinSrc, (GENERIC *)NULL, (IFuid)NULL); ((TFan*)ckt->CKTcurJob)->TFinIsV = 1; ((TFan*)ckt->CKTcurJob)->TFinIsI = 0; if(error !=0) { (*(SPfrontEnd->IFerror))(ERR_WARNING, "Transfer function source %s not in circuit", &(((TFan*)ckt->CKTcurJob)->TFinSrc)); ((TFan*)ckt->CKTcurJob)->TFinIsV = 0; return(E_NOTFOUND); } } size = SMPmatSize(ckt->CKTmatrix); for(i=0;i<=size;i++) { ckt->CKTrhs[i] = 0; } if(((TFan*)ckt->CKTcurJob)->TFinIsI) { ckt->CKTrhs[((GENinstance*)ptr)->GENnode1] -= 1; ckt->CKTrhs[((GENinstance*)ptr)->GENnode2] += 1; } else { insrc = CKTfndBranch(ckt,((TFan*)ckt->CKTcurJob)->TFinSrc); ckt->CKTrhs[insrc] += 1; } SMPsolve(ckt->CKTmatrix,ckt->CKTrhs,ckt->CKTrhsSpare); ckt->CKTrhs[0]=0; /* make a UID for the transfer function output */ (*(SPfrontEnd->IFnewUid))(ckt,&tfuid,(IFuid)NULL,"Transfer_function", UID_OTHER,(GENERIC **)NULL); /* make a UID for the input impedance */ (*(SPfrontEnd->IFnewUid))(ckt,&inuid,((TFan*)ckt->CKTcurJob)->TFinSrc, "Input_impedance", UID_OTHER,(GENERIC **)NULL); /* make a UID for the output impedance */ if(((TFan*)ckt->CKTcurJob)->TFoutIsI) { (*(SPfrontEnd->IFnewUid))(ckt,&outuid,((TFan*)ckt->CKTcurJob)->TFoutSrc ,"Output_impedance", UID_OTHER,(GENERIC **)NULL); } else { name = (char *) MALLOC(sizeof(char)*(strlen(((TFan*)ckt->CKTcurJob)->TFoutName)+22)); (void)sprintf(name,"output_impedance_at_%s", ((TFan*)ckt->CKTcurJob)->TFoutName); (*(SPfrontEnd->IFnewUid))(ckt,&outuid,(IFuid)NULL, name, UID_OTHER,(GENERIC **)NULL); } (*(SPfrontEnd->OUTpBeginPlot))(ckt,(GENERIC *)(ckt->CKTcurJob), ((TFan*)(ckt->CKTcurJob))->JOBname,(IFuid)NULL,(int)0,3, uids,IF_REAL,&plotptr); /*find transfer function */ if(((TFan*)ckt->CKTcurJob)->TFoutIsV) { outputs[0] = ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutPos->number] - ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutNeg->number] ; } else { outsrc = CKTfndBranch(ckt,((TFan*)ckt->CKTcurJob)->TFoutSrc); outputs[0] = ckt->CKTrhs[outsrc]; } /* now for input resistance */ if(((TFan*)ckt->CKTcurJob)->TFinIsI) { outputs[1] = ckt->CKTrhs[((GENinstance*)ptr)->GENnode2] - ckt->CKTrhs[((GENinstance*)ptr)->GENnode1]; } else { if(FABS(ckt->CKTrhs[insrc])<1e-20) { outputs[1]=1e20; } else { outputs[1] = -1/ckt->CKTrhs[insrc]; } } if(((TFan*)ckt->CKTcurJob)->TFoutIsI && (((TFan*)ckt->CKTcurJob)->TFoutSrc == ((TFan*)ckt->CKTcurJob)->TFinSrc)) { outputs[2]=outputs[1]; goto done; /* no need to compute output resistance when it is the same as the input */ } /* now for output resistance */ for(i=0;i<=size;i++) { ckt->CKTrhs[i] = 0; } if(((TFan*)ckt->CKTcurJob)->TFoutIsV) { ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutPos->number] -= 1; ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutNeg->number] += 1; } else { ckt->CKTrhs[outsrc] += 1; } SMPsolve(ckt->CKTmatrix,ckt->CKTrhs,ckt->CKTrhsSpare); ckt->CKTrhs[0]=0; if(((TFan*)ckt->CKTcurJob)->TFoutIsV) { outputs[2]= ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutNeg->number] - ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutPos->number]; } else { outputs[2] = 1/MAX(1e-20,ckt->CKTrhs[outsrc]); } done: outdata.v.numValue=3; outdata.v.vec.rVec=outputs; refval.rValue = 0; (*(SPfrontEnd->OUTpData))(plotptr,&refval,&outdata); (*(SPfrontEnd->OUTendPlot))(plotptr); return(OK); } 0707070124060443071006440006700000000000011777770500302374500004100000001136spice3c1/spice3/ckt/tfaskquest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "trcvdefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("TFaskQuest.c $Revision: 1.3 $ on $Date: 88/11/17 02:46:05 $") /* ARGSUSED */ int TFaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { default: return(E_BADPARM); } /* NOTREACHED */ /* TEMPORARY until cases get added */ return(OK); } 0707070124060443101006440006700000000000011777770500302374500004000000003524spice3c1/spice3/ckt/tfsetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "tfdefs.h" #include "cktdefs.h" #include "util.h" #include "suffix.h" RCSID("TFsetParm.c $Revision: 1.5 $ on $Date: 89/01/14 04:23:08 $") /* ARGSUSED */ int TFsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case TF_OUTPOS: ((TFan *)anal)->TFoutPos = (CKTnode *)value->nValue; ((TFan *)anal)->TFoutIsV = TRUE; ((TFan *)anal)->TFoutIsI = FALSE; break; case TF_OUTNEG: ((TFan *)anal)->TFoutNeg = (CKTnode *)value->nValue; ((TFan *)anal)->TFoutIsV = TRUE; ((TFan *)anal)->TFoutIsI = FALSE; break; case TF_OUTNAME: ((TFan *)anal)->TFoutName = value->sValue; break; case TF_OUTSRC: ((TFan *)anal)->TFoutSrc = value->uValue; ((TFan *)anal)->TFoutIsV = FALSE; ((TFan *)anal)->TFoutIsI = TRUE; break; case TF_INSRC: ((TFan *)anal)->TFinSrc = value->uValue; break; default: return(E_BADPARM); } return(OK); } static IFparm TFparms[] = { { "outpos", TF_OUTPOS, IF_SET|IF_NODE, "Positive output node" }, { "outneg", TF_OUTNEG, IF_SET|IF_NODE, "Negative output node" }, { "outname", TF_OUTNAME, IF_SET|IF_STRING,"Name of output variable"}, { "outsrc", TF_OUTSRC, IF_SET|IF_INSTANCE, "Output source" }, { "insrc", TF_INSRC, IF_SET|IF_INSTANCE, "Input source" } }; SPICEanalysis TFinfo = { { "TF", "transfer function analysis", sizeof(TFparms)/sizeof(IFparm), TFparms }, sizeof(TFan), TFsetParm, TFaskQuest }; 0707070124060443111006440006700000000000011777770500302374500004300000002103spice3c1/spice3/ckt/tranaskquest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "trandefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("TRANaskQuest.c $Revision: 1.5 $ on $Date: 88/11/17 02:46:12 $") /* ARGSUSED */ int TRANaskQuest(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case TRAN_TSTOP: value->rValue = ((TRANan *)anal)->TRANfinalTime; break; case TRAN_TSTEP: value->rValue = ((TRANan *)anal)->TRANstep; break; case TRAN_TSTART: value->rValue = ((TRANan *)anal)->TRANinitTime; break; case TRAN_TMAX: value->rValue = ((TRANan *)anal)->TRANmaxStep; break; case TRAN_UIC: if(((TRANan *)anal)->TRANmode & MODEUIC) { value->iValue = 1; } else { value->iValue = 0; } break; default: return(E_BADPARM); } return(OK); } 0707070124060443121006440006700000000000011777770500302374500004200000003150spice3c1/spice3/ckt/transetparm.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #ifndef CMS #include "iferrmsgs.h" #else /* CMS */ #include "iferrmsg.h" #endif /* CMS */ #include "trandefs.h" #include "cktdefs.h" #include "suffix.h" RCSID("TRANsetParm.c $Revision: 1.6 $ on $Date: 89/01/19 20:53:46 $") /* ARGSUSED */ int TRANsetParm(ckt,anal,which,value) CKTcircuit *ckt; GENERIC *anal; int which; IFvalue *value; { switch(which) { case TRAN_TSTOP: ((TRANan *)anal)->TRANfinalTime = value->rValue; break; case TRAN_TSTEP: ((TRANan *)anal)->TRANstep = value->rValue; break; case TRAN_TSTART: ((TRANan *)anal)->TRANinitTime = value->rValue; break; case TRAN_TMAX: ((TRANan *)anal)->TRANmaxStep = value->rValue; break; case TRAN_UIC: if(value->iValue) { ((TRANan *)anal)->TRANmode |= MODEUIC; } break; default: return(E_BADPARM); } return(OK); } static IFparm TRANparms[] = { { "tstart", TRAN_TSTART, IF_SET|IF_REAL, "starting time" }, { "tstop", TRAN_TSTOP, IF_SET|IF_REAL, "ending time" }, { "tstep", TRAN_TSTEP, IF_SET|IF_REAL, "time step" }, { "tmax", TRAN_TMAX, IF_SET|IF_REAL, "maximum time step" }, { "uic", TRAN_UIC, IF_SET|IF_FLAG, "use initial conditions" }, }; SPICEanalysis TRANinfo = { { "TRAN", "Transient analysis", sizeof(TRANparms)/sizeof(IFparm), TRANparms }, sizeof(TRANan), TRANsetParm, TRANaskQuest }; 0707070124060443131006440006700000000000011777770500302374600003500000155127spice3c1/spice3/ckt/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ acan.c\ acaskquest.c\ acsetparm.c\ cktaccept.c\ cktacct.c\ cktacdump.c\ cktacload.c\ cktask.c\ cktaskanalq.c\ cktasknodqst.c\ cktbindnode.c\ cktbreakdump.c\ cktclrbreak.c\ cktconvtest.c\ cktcrtelt.c\ cktdeltask.c\ cktdestroy.c\ cktdltinst.c\ cktdltmod.c\ cktdltnod.c\ cktdojob.c\ cktdump.c\ cktfndanal.c\ cktfndbranch.c\ cktfnddev.c\ cktfndmod.c\ cktfndnode.c\ cktfndtask.c\ cktground.c\ cktinit.c\ cktic.c\ cktinst2node.c\ cktlinkeq.c\ cktload.c\ cktmkcur.c\ cktmknode.c\ cktmkvolt.c\ cktmapnode.c\ cktmodask.c\ cktmodcrt.c\ cktmodparam.c\ cktnames.c\ cktnewanal.c\ cktneweq.c\ cktnewnode.c\ cktnewtask.c\ cktnodname.c\ cktnum2nod.c\ cktop.c\ cktparam.c\ cktpmodname.c\ cktpname.c\ cktpzload.c\ cktpzsetup.c\ cktsenac.c\ cktsencomp.c\ cktsendctran.c\ cktsenload.c\ cktsenprint.c\ cktsensetup.c\ cktsenupdate.c\ cktsetanalpm.c\ cktsetbreak.c\ cktsetnodpm.c\ cktsetopt.c\ cktsetup.c\ ckttemp.c\ cktterr.c\ ckttrunc.c\ ckttypelook.c\ spiinit.c\ dcoaskquest.c\ dcosetparm.c\ dctaskquest.c\ dctsetparm.c\ dcop.c\ dctran.c\ dctrcurv.c\ senstartup.c\ sensetparm.c\ senaskquest.c\ sendestroy.c\ sperror.c\ pzan.c\ pzaskquest.c\ pzsetparm.c\ tfanal.c\ tfsetparm.c\ tfaskquest.c\ tranaskquest.c\ transetparm.c COBJS = \ acan.o\ acaskquest.o\ acsetparm.o\ cktaccept.o\ cktacct.o\ cktacdump.o\ cktacload.o\ cktask.o\ cktaskanalq.o\ cktasknodqst.o\ cktbindnode.o\ cktbreakdump.o\ cktclrbreak.o\ cktconvtest.o\ cktcrtelt.o\ cktdeltask.o\ cktdestroy.o\ cktdltinst.o\ cktdltmod.o\ cktdltnod.o\ cktdojob.o\ cktdump.o\ cktfndanal.o\ cktfndbranch.o\ cktfnddev.o\ cktfndmod.o\ cktfndnode.o\ cktfndtask.o\ cktground.o\ cktinit.o\ cktic.o\ cktinst2node.o\ cktlinkeq.o\ cktload.o\ cktmkcur.o\ cktmknode.o\ cktmkvolt.o\ cktmapnode.o\ cktmodask.o\ cktmodcrt.o\ cktmodparam.o\ cktnames.o\ cktnewanal.o\ cktneweq.o\ cktnewnode.o\ cktnewtask.o\ cktnodname.o\ cktnum2nod.o\ cktop.o\ cktparam.o\ cktpmodname.o\ cktpname.o\ cktpzload.o\ cktpzsetup.o\ cktsenac.o\ cktsencomp.o\ cktsendctran.o\ cktsenload.o\ cktsenprint.o\ cktsensetup.o\ cktsenupdate.o\ cktsetanalpm.o\ cktsetbreak.o\ cktsetnodpm.o\ cktsetopt.o\ cktsetup.o\ ckttemp.o\ cktterr.o\ ckttrunc.o\ ckttypelook.o\ spiinit.o\ dcoaskquest.o\ dcosetparm.o\ dctaskquest.o\ dctsetparm.o\ dcop.o\ dctran.o\ dctrcurv.o\ senstartup.o\ sensetparm.o\ senaskquest.o\ sendestroy.o\ sperror.o\ pzan.o\ pzaskquest.o\ pzsetparm.o\ tfanal.o\ tfsetparm.o\ tfaskquest.o\ tranaskquest.o\ transetparm.o TARGET = ../ckt DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} ${PG} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../lint/llib-lckt.ln lint ${LINTFLAGS} ${LINTLIBS} ../lint/llib-l*.ln ${CFILES} lint -Cckt ${LINTFLAGS} ${CFILES} mv llib-lckt.ln ../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags ../*/*.c > /dev/null 2>&1 clean: -rm -f ${COBJS} -rm -f ${TARGET}.a install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE acan.o: ../include/acdefs.h acan.o: ../include/cktdefs.h acan.o: ../include/gendefs.h acan.o: ../include/iferrmsgs.h acan.o: ../include/ifsim.h acan.o: ../include/jobdefs.h acan.o: ../include/optdefs.h acan.o: ../include/pzdefs.h acan.o: ../include/sendefs.h acan.o: ../include/smpdefs.h acan.o: ../include/sperror.h acan.o: ../include/trcvdefs.h acan.o: ../include/tskdefs.h acan.o: ../include/complex.h acan.o: ../include/prefix.h acan.o: ../include/suffix.h acan.o: ../include/util.h acaskquest.o: ../include/acdefs.h acaskquest.o: ../include/cktdefs.h acaskquest.o: ../include/gendefs.h acaskquest.o: ../include/iferrmsgs.h acaskquest.o: ../include/ifsim.h acaskquest.o: ../include/jobdefs.h acaskquest.o: ../include/optdefs.h acaskquest.o: ../include/pzdefs.h acaskquest.o: ../include/sendefs.h acaskquest.o: ../include/smpdefs.h acaskquest.o: ../include/trcvdefs.h acaskquest.o: ../include/tskdefs.h acaskquest.o: ../include/complex.h acaskquest.o: ../include/prefix.h acaskquest.o: ../include/suffix.h acsetparm.o: ../include/acdefs.h acsetparm.o: ../include/cktdefs.h acsetparm.o: ../include/gendefs.h acsetparm.o: ../include/iferrmsgs.h acsetparm.o: ../include/ifsim.h acsetparm.o: ../include/jobdefs.h acsetparm.o: ../include/optdefs.h acsetparm.o: ../include/pzdefs.h acsetparm.o: ../include/sendefs.h acsetparm.o: ../include/smpdefs.h acsetparm.o: ../include/trcvdefs.h acsetparm.o: ../include/tskdefs.h acsetparm.o: ../include/complex.h acsetparm.o: ../include/prefix.h acsetparm.o: ../include/suffix.h cktaccept.o: ../include/acdefs.h cktaccept.o: ../include/cktdefs.h cktaccept.o: ../include/devdefs.h cktaccept.o: ../include/gendefs.h cktaccept.o: ../include/iferrmsgs.h cktaccept.o: ../include/ifsim.h cktaccept.o: ../include/jobdefs.h cktaccept.o: ../include/optdefs.h cktaccept.o: ../include/pzdefs.h cktaccept.o: ../include/sendefs.h cktaccept.o: ../include/smpdefs.h cktaccept.o: ../include/sperror.h cktaccept.o: ../include/trcvdefs.h cktaccept.o: ../include/tskdefs.h cktaccept.o: ../include/complex.h cktaccept.o: ../include/prefix.h cktaccept.o: ../include/suffix.h cktaccept.o: ../include/util.h cktacct.o: ../include/acdefs.h cktacct.o: ../include/cktdefs.h cktacct.o: ../include/const.h cktacct.o: ../include/gendefs.h cktacct.o: ../include/ifsim.h cktacct.o: ../include/jobdefs.h cktacct.o: ../include/optdefs.h cktacct.o: ../include/pzdefs.h cktacct.o: ../include/sendefs.h cktacct.o: ../include/smpdefs.h cktacct.o: ../include/trcvdefs.h cktacct.o: ../include/tskdefs.h cktacct.o: ../include/complex.h cktacct.o: ../include/prefix.h cktacct.o: ../include/suffix.h cktacct.o: ../include/util.h cktacdump.o: ../include/acdefs.h cktacdump.o: ../include/cktdefs.h cktacdump.o: ../include/gendefs.h cktacdump.o: ../include/iferrmsgs.h cktacdump.o: ../include/ifsim.h cktacdump.o: ../include/jobdefs.h cktacdump.o: ../include/optdefs.h cktacdump.o: ../include/pzdefs.h cktacdump.o: ../include/sendefs.h cktacdump.o: ../include/smpdefs.h cktacdump.o: ../include/trcvdefs.h cktacdump.o: ../include/tskdefs.h cktacdump.o: ../include/complex.h cktacdump.o: ../include/prefix.h cktacdump.o: ../include/suffix.h cktacdump.o: ../include/util.h cktacload.o: ../include/acdefs.h cktacload.o: ../include/cktdefs.h cktacload.o: ../include/devdefs.h cktacload.o: ../include/gendefs.h cktacload.o: ../include/iferrmsgs.h cktacload.o: ../include/ifsim.h cktacload.o: ../include/jobdefs.h cktacload.o: ../include/optdefs.h cktacload.o: ../include/pzdefs.h cktacload.o: ../include/sendefs.h cktacload.o: ../include/smpdefs.h cktacload.o: ../include/sperror.h cktacload.o: ../include/trcvdefs.h cktacload.o: ../include/tskdefs.h cktacload.o: ../include/complex.h cktacload.o: ../include/prefix.h cktacload.o: ../include/suffix.h cktask.o: ../include/acdefs.h cktask.o: ../include/cktdefs.h cktask.o: ../include/devdefs.h cktask.o: ../include/gendefs.h cktask.o: ../include/iferrmsgs.h cktask.o: ../include/ifsim.h cktask.o: ../include/jobdefs.h cktask.o: ../include/optdefs.h cktask.o: ../include/pzdefs.h cktask.o: ../include/sendefs.h cktask.o: ../include/smpdefs.h cktask.o: ../include/sperror.h cktask.o: ../include/trcvdefs.h cktask.o: ../include/tskdefs.h cktask.o: ../include/complex.h cktask.o: ../include/prefix.h cktask.o: ../include/suffix.h cktask.o: ../include/util.h cktaskanalq.o: ../include/acdefs.h cktaskanalq.o: ../include/cktdefs.h cktaskanalq.o: ../include/gendefs.h cktaskanalq.o: ../include/iferrmsgs.h cktaskanalq.o: ../include/ifsim.h cktaskanalq.o: ../include/jobdefs.h cktaskanalq.o: ../include/optdefs.h cktaskanalq.o: ../include/pzdefs.h cktaskanalq.o: ../include/sendefs.h cktaskanalq.o: ../include/smpdefs.h cktaskanalq.o: ../include/trcvdefs.h cktaskanalq.o: ../include/tskdefs.h cktaskanalq.o: ../include/complex.h cktaskanalq.o: ../include/prefix.h cktaskanalq.o: ../include/suffix.h cktaskanalq.o: ../include/util.h cktasknodqst.o: ../include/acdefs.h cktasknodqst.o: ../include/cktdefs.h cktasknodqst.o: ../include/gendefs.h cktasknodqst.o: ../include/iferrmsgs.h cktasknodqst.o: ../include/ifsim.h cktasknodqst.o: ../include/jobdefs.h cktasknodqst.o: ../include/optdefs.h cktasknodqst.o: ../include/pzdefs.h cktasknodqst.o: ../include/sendefs.h cktasknodqst.o: ../include/smpdefs.h cktasknodqst.o: ../include/trcvdefs.h cktasknodqst.o: ../include/tskdefs.h cktasknodqst.o: ../include/complex.h cktasknodqst.o: ../include/prefix.h cktasknodqst.o: ../include/suffix.h cktasknodqst.o: ../include/util.h cktbindnode.o: ../include/acdefs.h cktbindnode.o: ../include/cktdefs.h cktbindnode.o: ../include/devdefs.h cktbindnode.o: ../include/gendefs.h cktbindnode.o: ../include/iferrmsgs.h cktbindnode.o: ../include/ifsim.h cktbindnode.o: ../include/jobdefs.h cktbindnode.o: ../include/optdefs.h cktbindnode.o: ../include/pzdefs.h cktbindnode.o: ../include/sendefs.h cktbindnode.o: ../include/smpdefs.h cktbindnode.o: ../include/sperror.h cktbindnode.o: ../include/trcvdefs.h cktbindnode.o: ../include/tskdefs.h cktbindnode.o: ../include/complex.h cktbindnode.o: ../include/prefix.h cktbindnode.o: ../include/suffix.h cktbindnode.o: ../include/util.h cktbreakdump.o: ../include/acdefs.h cktbreakdump.o: ../include/cktdefs.h cktbreakdump.o: ../include/gendefs.h cktbreakdump.o: ../include/ifsim.h cktbreakdump.o: ../include/jobdefs.h cktbreakdump.o: ../include/optdefs.h cktbreakdump.o: ../include/pzdefs.h cktbreakdump.o: ../include/sendefs.h cktbreakdump.o: ../include/smpdefs.h cktbreakdump.o: ../include/trcvdefs.h cktbreakdump.o: ../include/tskdefs.h cktbreakdump.o: ../include/complex.h cktbreakdump.o: ../include/prefix.h cktbreakdump.o: ../include/suffix.h cktbreakdump.o: ../include/util.h cktclrbreak.o: ../include/acdefs.h cktclrbreak.o: ../include/cktdefs.h cktclrbreak.o: ../include/gendefs.h cktclrbreak.o: ../include/iferrmsgs.h cktclrbreak.o: ../include/ifsim.h cktclrbreak.o: ../include/jobdefs.h cktclrbreak.o: ../include/optdefs.h cktclrbreak.o: ../include/pzdefs.h cktclrbreak.o: ../include/sendefs.h cktclrbreak.o: ../include/smpdefs.h cktclrbreak.o: ../include/sperror.h cktclrbreak.o: ../include/trcvdefs.h cktclrbreak.o: ../include/tskdefs.h cktclrbreak.o: ../include/complex.h cktclrbreak.o: ../include/prefix.h cktclrbreak.o: ../include/suffix.h cktclrbreak.o: ../include/util.h cktconvtest.o: ../include/acdefs.h cktconvtest.o: ../include/cktdefs.h cktconvtest.o: ../include/devdefs.h cktconvtest.o: ../include/gendefs.h cktconvtest.o: ../include/iferrmsgs.h cktconvtest.o: ../include/ifsim.h cktconvtest.o: ../include/jobdefs.h cktconvtest.o: ../include/optdefs.h cktconvtest.o: ../include/pzdefs.h cktconvtest.o: ../include/sendefs.h cktconvtest.o: ../include/smpdefs.h cktconvtest.o: ../include/sperror.h cktconvtest.o: ../include/trcvdefs.h cktconvtest.o: ../include/tskdefs.h cktconvtest.o: ../include/complex.h cktconvtest.o: ../include/prefix.h cktconvtest.o: ../include/suffix.h cktcrtelt.o: ../include/acdefs.h cktcrtelt.o: ../include/cktdefs.h cktcrtelt.o: ../include/devdefs.h cktcrtelt.o: ../include/gendefs.h cktcrtelt.o: ../include/iferrmsgs.h cktcrtelt.o: ../include/ifsim.h cktcrtelt.o: ../include/jobdefs.h cktcrtelt.o: ../include/optdefs.h cktcrtelt.o: ../include/pzdefs.h cktcrtelt.o: ../include/sendefs.h cktcrtelt.o: ../include/smpdefs.h cktcrtelt.o: ../include/sperror.h cktcrtelt.o: ../include/trcvdefs.h cktcrtelt.o: ../include/tskdefs.h cktcrtelt.o: ../include/complex.h cktcrtelt.o: ../include/prefix.h cktcrtelt.o: ../include/suffix.h cktcrtelt.o: ../include/util.h cktdeltask.o: ../include/iferrmsgs.h cktdeltask.o: ../include/ifsim.h cktdeltask.o: ../include/jobdefs.h cktdeltask.o: ../include/tskdefs.h cktdeltask.o: ../include/prefix.h cktdeltask.o: ../include/suffix.h cktdeltask.o: ../include/util.h cktdestroy.o: ../include/acdefs.h cktdestroy.o: ../include/cktdefs.h cktdestroy.o: ../include/devdefs.h cktdestroy.o: ../include/gendefs.h cktdestroy.o: ../include/iferrmsgs.h cktdestroy.o: ../include/ifsim.h cktdestroy.o: ../include/jobdefs.h cktdestroy.o: ../include/optdefs.h cktdestroy.o: ../include/pzdefs.h cktdestroy.o: ../include/sendefs.h cktdestroy.o: ../include/smpdefs.h cktdestroy.o: ../include/sperror.h cktdestroy.o: ../include/trcvdefs.h cktdestroy.o: ../include/tskdefs.h cktdestroy.o: ../include/complex.h cktdestroy.o: ../include/prefix.h cktdestroy.o: ../include/suffix.h cktdestroy.o: ../include/util.h cktdltinst.o: ../include/acdefs.h cktdltinst.o: ../include/cktdefs.h cktdltinst.o: ../include/gendefs.h cktdltinst.o: ../include/iferrmsgs.h cktdltinst.o: ../include/ifsim.h cktdltinst.o: ../include/jobdefs.h cktdltinst.o: ../include/optdefs.h cktdltinst.o: ../include/pzdefs.h cktdltinst.o: ../include/sendefs.h cktdltinst.o: ../include/smpdefs.h cktdltinst.o: ../include/sperror.h cktdltinst.o: ../include/trcvdefs.h cktdltinst.o: ../include/tskdefs.h cktdltinst.o: ../include/complex.h cktdltinst.o: ../include/prefix.h cktdltinst.o: ../include/suffix.h cktdltinst.o: ../include/util.h cktdltmod.o: ../include/acdefs.h cktdltmod.o: ../include/cktdefs.h cktdltmod.o: ../include/gendefs.h cktdltmod.o: ../include/iferrmsgs.h cktdltmod.o: ../include/ifsim.h cktdltmod.o: ../include/jobdefs.h cktdltmod.o: ../include/optdefs.h cktdltmod.o: ../include/pzdefs.h cktdltmod.o: ../include/sendefs.h cktdltmod.o: ../include/smpdefs.h cktdltmod.o: ../include/sperror.h cktdltmod.o: ../include/trcvdefs.h cktdltmod.o: ../include/tskdefs.h cktdltmod.o: ../include/complex.h cktdltmod.o: ../include/prefix.h cktdltmod.o: ../include/suffix.h cktdltmod.o: ../include/util.h cktdltnod.o: ../include/acdefs.h cktdltnod.o: ../include/cktdefs.h cktdltnod.o: ../include/gendefs.h cktdltnod.o: ../include/iferrmsgs.h cktdltnod.o: ../include/ifsim.h cktdltnod.o: ../include/jobdefs.h cktdltnod.o: ../include/optdefs.h cktdltnod.o: ../include/pzdefs.h cktdltnod.o: ../include/sendefs.h cktdltnod.o: ../include/smpdefs.h cktdltnod.o: ../include/sperror.h cktdltnod.o: ../include/trcvdefs.h cktdltnod.o: ../include/tskdefs.h cktdltnod.o: ../include/complex.h cktdltnod.o: ../include/prefix.h cktdltnod.o: ../include/suffix.h cktdltnod.o: ../include/util.h cktdojob.o: ../include/acdefs.h cktdojob.o: ../include/cktdefs.h cktdojob.o: ../include/gendefs.h cktdojob.o: ../include/iferrmsgs.h cktdojob.o: ../include/ifsim.h cktdojob.o: ../include/jobdefs.h cktdojob.o: ../include/optdefs.h cktdojob.o: ../include/pzdefs.h cktdojob.o: ../include/sendefs.h cktdojob.o: ../include/smpdefs.h cktdojob.o: ../include/sperror.h cktdojob.o: ../include/trandefs.h cktdojob.o: ../include/trcvdefs.h cktdojob.o: ../include/tskdefs.h cktdojob.o: ../include/complex.h cktdojob.o: ../include/prefix.h cktdojob.o: ../include/suffix.h cktdojob.o: ../include/util.h cktdump.o: ../include/acdefs.h cktdump.o: ../include/cktdefs.h cktdump.o: ../include/gendefs.h cktdump.o: ../include/ifsim.h cktdump.o: ../include/jobdefs.h cktdump.o: ../include/optdefs.h cktdump.o: ../include/pzdefs.h cktdump.o: ../include/sendefs.h cktdump.o: ../include/smpdefs.h cktdump.o: ../include/trcvdefs.h cktdump.o: ../include/tskdefs.h cktdump.o: ../include/complex.h cktdump.o: ../include/prefix.h cktdump.o: ../include/suffix.h cktfndanal.o: ../include/acdefs.h cktfndanal.o: ../include/cktdefs.h cktfndanal.o: ../include/gendefs.h cktfndanal.o: ../include/iferrmsgs.h cktfndanal.o: ../include/ifsim.h cktfndanal.o: ../include/jobdefs.h cktfndanal.o: ../include/optdefs.h cktfndanal.o: ../include/pzdefs.h cktfndanal.o: ../include/sendefs.h cktfndanal.o: ../include/smpdefs.h cktfndanal.o: ../include/sperror.h cktfndanal.o: ../include/trcvdefs.h cktfndanal.o: ../include/tskdefs.h cktfndanal.o: ../include/complex.h cktfndanal.o: ../include/prefix.h cktfndanal.o: ../include/suffix.h cktfndbranch.o: ../include/acdefs.h cktfndbranch.o: ../include/cktdefs.h cktfndbranch.o: ../include/devdefs.h cktfndbranch.o: ../include/gendefs.h cktfndbranch.o: ../include/ifsim.h cktfndbranch.o: ../include/jobdefs.h cktfndbranch.o: ../include/optdefs.h cktfndbranch.o: ../include/pzdefs.h cktfndbranch.o: ../include/sendefs.h cktfndbranch.o: ../include/smpdefs.h cktfndbranch.o: ../include/trcvdefs.h cktfndbranch.o: ../include/tskdefs.h cktfndbranch.o: ../include/complex.h cktfndbranch.o: ../include/prefix.h cktfndbranch.o: ../include/suffix.h cktfnddev.o: ../include/acdefs.h cktfnddev.o: ../include/cktdefs.h cktfnddev.o: ../include/gendefs.h cktfnddev.o: ../include/iferrmsgs.h cktfnddev.o: ../include/ifsim.h cktfnddev.o: ../include/jobdefs.h cktfnddev.o: ../include/optdefs.h cktfnddev.o: ../include/pzdefs.h cktfnddev.o: ../include/sendefs.h cktfnddev.o: ../include/smpdefs.h cktfnddev.o: ../include/sperror.h cktfnddev.o: ../include/trcvdefs.h cktfnddev.o: ../include/tskdefs.h cktfnddev.o: ../include/complex.h cktfnddev.o: ../include/prefix.h cktfnddev.o: ../include/suffix.h cktfnddev.o: ../include/util.h cktfndmod.o: ../include/acdefs.h cktfndmod.o: ../include/cktdefs.h cktfndmod.o: ../include/gendefs.h cktfndmod.o: ../include/iferrmsgs.h cktfndmod.o: ../include/ifsim.h cktfndmod.o: ../include/jobdefs.h cktfndmod.o: ../include/optdefs.h cktfndmod.o: ../include/pzdefs.h cktfndmod.o: ../include/sendefs.h cktfndmod.o: ../include/smpdefs.h cktfndmod.o: ../include/sperror.h cktfndmod.o: ../include/trcvdefs.h cktfndmod.o: ../include/tskdefs.h cktfndmod.o: ../include/complex.h cktfndmod.o: ../include/prefix.h cktfndmod.o: ../include/suffix.h cktfndmod.o: ../include/util.h cktfndnode.o: ../include/acdefs.h cktfndnode.o: ../include/cktdefs.h cktfndnode.o: ../include/gendefs.h cktfndnode.o: ../include/iferrmsgs.h cktfndnode.o: ../include/ifsim.h cktfndnode.o: ../include/jobdefs.h cktfndnode.o: ../include/optdefs.h cktfndnode.o: ../include/pzdefs.h cktfndnode.o: ../include/sendefs.h cktfndnode.o: ../include/smpdefs.h cktfndnode.o: ../include/sperror.h cktfndnode.o: ../include/trcvdefs.h cktfndnode.o: ../include/tskdefs.h cktfndnode.o: ../include/complex.h cktfndnode.o: ../include/prefix.h cktfndnode.o: ../include/suffix.h cktfndtask.o: ../include/acdefs.h cktfndtask.o: ../include/cktdefs.h cktfndtask.o: ../include/gendefs.h cktfndtask.o: ../include/iferrmsgs.h cktfndtask.o: ../include/ifsim.h cktfndtask.o: ../include/jobdefs.h cktfndtask.o: ../include/optdefs.h cktfndtask.o: ../include/pzdefs.h cktfndtask.o: ../include/sendefs.h cktfndtask.o: ../include/smpdefs.h cktfndtask.o: ../include/sperror.h cktfndtask.o: ../include/trcvdefs.h cktfndtask.o: ../include/tskdefs.h cktfndtask.o: ../include/complex.h cktfndtask.o: ../include/prefix.h cktfndtask.o: ../include/suffix.h cktfndtask.o: ../include/util.h cktground.o: ../include/acdefs.h cktground.o: ../include/cktdefs.h cktground.o: ../include/gendefs.h cktground.o: ../include/iferrmsgs.h cktground.o: ../include/ifsim.h cktground.o: ../include/jobdefs.h cktground.o: ../include/optdefs.h cktground.o: ../include/pzdefs.h cktground.o: ../include/sendefs.h cktground.o: ../include/smpdefs.h cktground.o: ../include/sperror.h cktground.o: ../include/trcvdefs.h cktground.o: ../include/tskdefs.h cktground.o: ../include/complex.h cktground.o: ../include/prefix.h cktground.o: ../include/suffix.h cktground.o: ../include/util.h cktinit.o: ../include/acdefs.h cktinit.o: ../include/cktdefs.h cktinit.o: ../include/const.h cktinit.o: ../include/gendefs.h cktinit.o: ../include/iferrmsgs.h cktinit.o: ../include/ifsim.h cktinit.o: ../include/jobdefs.h cktinit.o: ../include/optdefs.h cktinit.o: ../include/pzdefs.h cktinit.o: ../include/sendefs.h cktinit.o: ../include/smpdefs.h cktinit.o: ../include/sperror.h cktinit.o: ../include/trcvdefs.h cktinit.o: ../include/tskdefs.h cktinit.o: ../include/complex.h cktinit.o: ../include/prefix.h cktinit.o: ../include/suffix.h cktinit.o: ../include/util.h cktic.o: ../include/acdefs.h cktic.o: ../include/cktdefs.h cktic.o: ../include/devdefs.h cktic.o: ../include/gendefs.h cktic.o: ../include/iferrmsgs.h cktic.o: ../include/ifsim.h cktic.o: ../include/jobdefs.h cktic.o: ../include/optdefs.h cktic.o: ../include/pzdefs.h cktic.o: ../include/sendefs.h cktic.o: ../include/smpdefs.h cktic.o: ../include/sperror.h cktic.o: ../include/trcvdefs.h cktic.o: ../include/tskdefs.h cktic.o: ../include/complex.h cktic.o: ../include/prefix.h cktic.o: ../include/suffix.h cktic.o: ../include/util.h cktinst2node.o: ../include/acdefs.h cktinst2node.o: ../include/cktdefs.h cktinst2node.o: ../include/devdefs.h cktinst2node.o: ../include/gendefs.h cktinst2node.o: ../include/iferrmsgs.h cktinst2node.o: ../include/ifsim.h cktinst2node.o: ../include/jobdefs.h cktinst2node.o: ../include/optdefs.h cktinst2node.o: ../include/pzdefs.h cktinst2node.o: ../include/sendefs.h cktinst2node.o: ../include/smpdefs.h cktinst2node.o: ../include/sperror.h cktinst2node.o: ../include/trcvdefs.h cktinst2node.o: ../include/tskdefs.h cktinst2node.o: ../include/complex.h cktinst2node.o: ../include/prefix.h cktinst2node.o: ../include/suffix.h cktlinkeq.o: ../include/acdefs.h cktlinkeq.o: ../include/cktdefs.h cktlinkeq.o: ../include/gendefs.h cktlinkeq.o: ../include/iferrmsgs.h cktlinkeq.o: ../include/ifsim.h cktlinkeq.o: ../include/jobdefs.h cktlinkeq.o: ../include/optdefs.h cktlinkeq.o: ../include/pzdefs.h cktlinkeq.o: ../include/sendefs.h cktlinkeq.o: ../include/smpdefs.h cktlinkeq.o: ../include/trcvdefs.h cktlinkeq.o: ../include/tskdefs.h cktlinkeq.o: ../include/complex.h cktlinkeq.o: ../include/prefix.h cktlinkeq.o: ../include/suffix.h cktlinkeq.o: ../include/util.h cktload.o: ../include/acdefs.h cktload.o: ../include/cktdefs.h cktload.o: ../include/devdefs.h cktload.o: ../include/gendefs.h cktload.o: ../include/iferrmsgs.h cktload.o: ../include/ifsim.h cktload.o: ../include/jobdefs.h cktload.o: ../include/optdefs.h cktload.o: ../include/pzdefs.h cktload.o: ../include/sendefs.h cktload.o: ../include/smpdefs.h cktload.o: ../include/sperror.h cktload.o: ../include/trcvdefs.h cktload.o: ../include/tskdefs.h cktload.o: ../include/complex.h cktload.o: ../include/prefix.h cktload.o: ../include/suffix.h cktmkcur.o: ../include/acdefs.h cktmkcur.o: ../include/cktdefs.h cktmkcur.o: ../include/gendefs.h cktmkcur.o: ../include/iferrmsgs.h cktmkcur.o: ../include/ifsim.h cktmkcur.o: ../include/jobdefs.h cktmkcur.o: ../include/optdefs.h cktmkcur.o: ../include/pzdefs.h cktmkcur.o: ../include/sendefs.h cktmkcur.o: ../include/smpdefs.h cktmkcur.o: ../include/sperror.h cktmkcur.o: ../include/trcvdefs.h cktmkcur.o: ../include/tskdefs.h cktmkcur.o: ../include/complex.h cktmkcur.o: ../include/prefix.h cktmkcur.o: ../include/suffix.h cktmkcur.o: ../include/util.h cktmknode.o: ../include/acdefs.h cktmknode.o: ../include/cktdefs.h cktmknode.o: ../include/gendefs.h cktmknode.o: ../include/iferrmsgs.h cktmknode.o: ../include/ifsim.h cktmknode.o: ../include/jobdefs.h cktmknode.o: ../include/optdefs.h cktmknode.o: ../include/pzdefs.h cktmknode.o: ../include/sendefs.h cktmknode.o: ../include/smpdefs.h cktmknode.o: ../include/trcvdefs.h cktmknode.o: ../include/tskdefs.h cktmknode.o: ../include/complex.h cktmknode.o: ../include/prefix.h cktmknode.o: ../include/suffix.h cktmknode.o: ../include/util.h cktmkvolt.o: ../include/acdefs.h cktmkvolt.o: ../include/cktdefs.h cktmkvolt.o: ../include/gendefs.h cktmkvolt.o: ../include/iferrmsgs.h cktmkvolt.o: ../include/ifsim.h cktmkvolt.o: ../include/jobdefs.h cktmkvolt.o: ../include/optdefs.h cktmkvolt.o: ../include/pzdefs.h cktmkvolt.o: ../include/sendefs.h cktmkvolt.o: ../include/smpdefs.h cktmkvolt.o: ../include/sperror.h cktmkvolt.o: ../include/trcvdefs.h cktmkvolt.o: ../include/tskdefs.h cktmkvolt.o: ../include/complex.h cktmkvolt.o: ../include/prefix.h cktmkvolt.o: ../include/suffix.h cktmkvolt.o: ../include/util.h cktmapnode.o: ../include/acdefs.h cktmapnode.o: ../include/cktdefs.h cktmapnode.o: ../include/gendefs.h cktmapnode.o: ../include/iferrmsgs.h cktmapnode.o: ../include/ifsim.h cktmapnode.o: ../include/jobdefs.h cktmapnode.o: ../include/optdefs.h cktmapnode.o: ../include/pzdefs.h cktmapnode.o: ../include/sendefs.h cktmapnode.o: ../include/smpdefs.h cktmapnode.o: ../include/sperror.h cktmapnode.o: ../include/trcvdefs.h cktmapnode.o: ../include/tskdefs.h cktmapnode.o: ../include/complex.h cktmapnode.o: ../include/prefix.h cktmapnode.o: ../include/suffix.h cktmodask.o: ../include/acdefs.h cktmodask.o: ../include/cktdefs.h cktmodask.o: ../include/devdefs.h cktmodask.o: ../include/gendefs.h cktmodask.o: ../include/iferrmsgs.h cktmodask.o: ../include/ifsim.h cktmodask.o: ../include/jobdefs.h cktmodask.o: ../include/optdefs.h cktmodask.o: ../include/pzdefs.h cktmodask.o: ../include/sendefs.h cktmodask.o: ../include/smpdefs.h cktmodask.o: ../include/sperror.h cktmodask.o: ../include/trcvdefs.h cktmodask.o: ../include/tskdefs.h cktmodask.o: ../include/complex.h cktmodask.o: ../include/prefix.h cktmodask.o: ../include/suffix.h cktmodask.o: ../include/util.h cktmodcrt.o: ../include/acdefs.h cktmodcrt.o: ../include/cktdefs.h cktmodcrt.o: ../include/devdefs.h cktmodcrt.o: ../include/gendefs.h cktmodcrt.o: ../include/iferrmsgs.h cktmodcrt.o: ../include/ifsim.h cktmodcrt.o: ../include/jobdefs.h cktmodcrt.o: ../include/optdefs.h cktmodcrt.o: ../include/pzdefs.h cktmodcrt.o: ../include/sendefs.h cktmodcrt.o: ../include/smpdefs.h cktmodcrt.o: ../include/sperror.h cktmodcrt.o: ../include/trcvdefs.h cktmodcrt.o: ../include/tskdefs.h cktmodcrt.o: ../include/complex.h cktmodcrt.o: ../include/prefix.h cktmodcrt.o: ../include/suffix.h cktmodcrt.o: ../include/util.h cktmodparam.o: ../include/acdefs.h cktmodparam.o: ../include/cktdefs.h cktmodparam.o: ../include/devdefs.h cktmodparam.o: ../include/gendefs.h cktmodparam.o: ../include/iferrmsgs.h cktmodparam.o: ../include/ifsim.h cktmodparam.o: ../include/jobdefs.h cktmodparam.o: ../include/optdefs.h cktmodparam.o: ../include/pzdefs.h cktmodparam.o: ../include/sendefs.h cktmodparam.o: ../include/smpdefs.h cktmodparam.o: ../include/sperror.h cktmodparam.o: ../include/trcvdefs.h cktmodparam.o: ../include/tskdefs.h cktmodparam.o: ../include/complex.h cktmodparam.o: ../include/prefix.h cktmodparam.o: ../include/suffix.h cktmodparam.o: ../include/util.h cktnames.o: ../include/acdefs.h cktnames.o: ../include/cktdefs.h cktnames.o: ../include/gendefs.h cktnames.o: ../include/iferrmsgs.h cktnames.o: ../include/ifsim.h cktnames.o: ../include/jobdefs.h cktnames.o: ../include/optdefs.h cktnames.o: ../include/pzdefs.h cktnames.o: ../include/sendefs.h cktnames.o: ../include/smpdefs.h cktnames.o: ../include/trcvdefs.h cktnames.o: ../include/tskdefs.h cktnames.o: ../include/complex.h cktnames.o: ../include/prefix.h cktnames.o: ../include/suffix.h cktnames.o: ../include/util.h cktnewanal.o: ../include/iferrmsgs.h cktnewanal.o: ../include/ifsim.h cktnewanal.o: ../include/jobdefs.h cktnewanal.o: ../include/tskdefs.h cktnewanal.o: ../include/prefix.h cktnewanal.o: ../include/suffix.h cktnewanal.o: ../include/util.h cktneweq.o: ../include/acdefs.h cktneweq.o: ../include/cktdefs.h cktneweq.o: ../include/gendefs.h cktneweq.o: ../include/iferrmsgs.h cktneweq.o: ../include/ifsim.h cktneweq.o: ../include/jobdefs.h cktneweq.o: ../include/optdefs.h cktneweq.o: ../include/pzdefs.h cktneweq.o: ../include/sendefs.h cktneweq.o: ../include/smpdefs.h cktneweq.o: ../include/trcvdefs.h cktneweq.o: ../include/tskdefs.h cktneweq.o: ../include/complex.h cktneweq.o: ../include/prefix.h cktneweq.o: ../include/suffix.h cktneweq.o: ../include/util.h cktnewnode.o: ../include/acdefs.h cktnewnode.o: ../include/cktdefs.h cktnewnode.o: ../include/gendefs.h cktnewnode.o: ../include/iferrmsgs.h cktnewnode.o: ../include/ifsim.h cktnewnode.o: ../include/jobdefs.h cktnewnode.o: ../include/optdefs.h cktnewnode.o: ../include/pzdefs.h cktnewnode.o: ../include/sendefs.h cktnewnode.o: ../include/smpdefs.h cktnewnode.o: ../include/trcvdefs.h cktnewnode.o: ../include/tskdefs.h cktnewnode.o: ../include/complex.h cktnewnode.o: ../include/prefix.h cktnewnode.o: ../include/suffix.h cktnewnode.o: ../include/util.h cktnewtask.o: ../include/acdefs.h cktnewtask.o: ../include/cktdefs.h cktnewtask.o: ../include/gendefs.h cktnewtask.o: ../include/iferrmsgs.h cktnewtask.o: ../include/ifsim.h cktnewtask.o: ../include/jobdefs.h cktnewtask.o: ../include/optdefs.h cktnewtask.o: ../include/pzdefs.h cktnewtask.o: ../include/sendefs.h cktnewtask.o: ../include/smpdefs.h cktnewtask.o: ../include/trcvdefs.h cktnewtask.o: ../include/tskdefs.h cktnewtask.o: ../include/complex.h cktnewtask.o: ../include/prefix.h cktnewtask.o: ../include/suffix.h cktnewtask.o: ../include/util.h cktnodname.o: ../include/acdefs.h cktnodname.o: ../include/cktdefs.h cktnodname.o: ../include/gendefs.h cktnodname.o: ../include/ifsim.h cktnodname.o: ../include/jobdefs.h cktnodname.o: ../include/optdefs.h cktnodname.o: ../include/pzdefs.h cktnodname.o: ../include/sendefs.h cktnodname.o: ../include/smpdefs.h cktnodname.o: ../include/trcvdefs.h cktnodname.o: ../include/tskdefs.h cktnodname.o: ../include/complex.h cktnodname.o: ../include/prefix.h cktnodname.o: ../include/suffix.h cktnum2nod.o: ../include/acdefs.h cktnum2nod.o: ../include/cktdefs.h cktnum2nod.o: ../include/gendefs.h cktnum2nod.o: ../include/iferrmsgs.h cktnum2nod.o: ../include/ifsim.h cktnum2nod.o: ../include/jobdefs.h cktnum2nod.o: ../include/optdefs.h cktnum2nod.o: ../include/pzdefs.h cktnum2nod.o: ../include/sendefs.h cktnum2nod.o: ../include/smpdefs.h cktnum2nod.o: ../include/sperror.h cktnum2nod.o: ../include/trcvdefs.h cktnum2nod.o: ../include/tskdefs.h cktnum2nod.o: ../include/complex.h cktnum2nod.o: ../include/prefix.h cktnum2nod.o: ../include/suffix.h cktop.o: ../include/acdefs.h cktop.o: ../include/cktdefs.h cktop.o: ../include/gendefs.h cktop.o: ../include/ifsim.h cktop.o: ../include/jobdefs.h cktop.o: ../include/optdefs.h cktop.o: ../include/pzdefs.h cktop.o: ../include/sendefs.h cktop.o: ../include/smpdefs.h cktop.o: ../include/trcvdefs.h cktop.o: ../include/tskdefs.h cktop.o: ../include/complex.h cktop.o: ../include/prefix.h cktop.o: ../include/suffix.h cktop.o: ../include/util.h cktparam.o: ../include/acdefs.h cktparam.o: ../include/cktdefs.h cktparam.o: ../include/devdefs.h cktparam.o: ../include/gendefs.h cktparam.o: ../include/iferrmsgs.h cktparam.o: ../include/ifsim.h cktparam.o: ../include/jobdefs.h cktparam.o: ../include/optdefs.h cktparam.o: ../include/pzdefs.h cktparam.o: ../include/sendefs.h cktparam.o: ../include/smpdefs.h cktparam.o: ../include/sperror.h cktparam.o: ../include/trcvdefs.h cktparam.o: ../include/tskdefs.h cktparam.o: ../include/complex.h cktparam.o: ../include/prefix.h cktparam.o: ../include/suffix.h cktparam.o: ../include/util.h cktpmodname.o: ../include/acdefs.h cktpmodname.o: ../include/cktdefs.h cktpmodname.o: ../include/devdefs.h cktpmodname.o: ../include/gendefs.h cktpmodname.o: ../include/iferrmsgs.h cktpmodname.o: ../include/ifsim.h cktpmodname.o: ../include/jobdefs.h cktpmodname.o: ../include/optdefs.h cktpmodname.o: ../include/pzdefs.h cktpmodname.o: ../include/sendefs.h cktpmodname.o: ../include/smpdefs.h cktpmodname.o: ../include/sperror.h cktpmodname.o: ../include/trcvdefs.h cktpmodname.o: ../include/tskdefs.h cktpmodname.o: ../include/complex.h cktpmodname.o: ../include/prefix.h cktpmodname.o: ../include/suffix.h cktpmodname.o: ../include/util.h cktpname.o: ../include/acdefs.h cktpname.o: ../include/cktdefs.h cktpname.o: ../include/devdefs.h cktpname.o: ../include/gendefs.h cktpname.o: ../include/iferrmsgs.h cktpname.o: ../include/ifsim.h cktpname.o: ../include/jobdefs.h cktpname.o: ../include/optdefs.h cktpname.o: ../include/pzdefs.h cktpname.o: ../include/sendefs.h cktpname.o: ../include/smpdefs.h cktpname.o: ../include/sperror.h cktpname.o: ../include/trcvdefs.h cktpname.o: ../include/tskdefs.h cktpname.o: ../include/complex.h cktpname.o: ../include/prefix.h cktpname.o: ../include/suffix.h cktpname.o: ../include/util.h cktpzload.o: ../include/acdefs.h cktpzload.o: ../include/cktdefs.h cktpzload.o: ../include/devdefs.h cktpzload.o: ../include/gendefs.h cktpzload.o: ../include/iferrmsgs.h cktpzload.o: ../include/ifsim.h cktpzload.o: ../include/jobdefs.h cktpzload.o: ../include/optdefs.h cktpzload.o: ../include/pzdefs.h cktpzload.o: ../include/sendefs.h cktpzload.o: ../include/smpdefs.h cktpzload.o: ../include/sperror.h cktpzload.o: ../include/trcvdefs.h cktpzload.o: ../include/tskdefs.h cktpzload.o: ../include/complex.h cktpzload.o: ../include/prefix.h cktpzload.o: ../include/suffix.h cktpzsetup.o: ../include/acdefs.h cktpzsetup.o: ../include/cktdefs.h cktpzsetup.o: ../include/devdefs.h cktpzsetup.o: ../include/gendefs.h cktpzsetup.o: ../include/iferrmsgs.h cktpzsetup.o: ../include/ifsim.h cktpzsetup.o: ../include/jobdefs.h cktpzsetup.o: ../include/optdefs.h cktpzsetup.o: ../include/pzdefs.h cktpzsetup.o: ../include/sendefs.h cktpzsetup.o: ../include/smpdefs.h cktpzsetup.o: ../include/sperror.h cktpzsetup.o: ../include/trcvdefs.h cktpzsetup.o: ../include/tskdefs.h cktpzsetup.o: ../include/complex.h cktpzsetup.o: ../include/prefix.h cktpzsetup.o: ../include/suffix.h cktpzsetup.o: ../include/util.h cktsenac.o: ../include/acdefs.h cktsenac.o: ../include/cktdefs.h cktsenac.o: ../include/devdefs.h cktsenac.o: ../include/gendefs.h cktsenac.o: ../include/iferrmsgs.h cktsenac.o: ../include/ifsim.h cktsenac.o: ../include/jobdefs.h cktsenac.o: ../include/optdefs.h cktsenac.o: ../include/pzdefs.h cktsenac.o: ../include/sendefs.h cktsenac.o: ../include/smpdefs.h cktsenac.o: ../include/sperror.h cktsenac.o: ../include/trandefs.h cktsenac.o: ../include/trcvdefs.h cktsenac.o: ../include/tskdefs.h cktsenac.o: ../include/complex.h cktsenac.o: ../include/prefix.h cktsenac.o: ../include/suffix.h cktsencomp.o: ../include/acdefs.h cktsencomp.o: ../include/cktdefs.h cktsencomp.o: ../include/devdefs.h cktsencomp.o: ../include/gendefs.h cktsencomp.o: ../include/iferrmsgs.h cktsencomp.o: ../include/ifsim.h cktsencomp.o: ../include/jobdefs.h cktsencomp.o: ../include/optdefs.h cktsencomp.o: ../include/pzdefs.h cktsencomp.o: ../include/sendefs.h cktsencomp.o: ../include/smpdefs.h cktsencomp.o: ../include/sperror.h cktsencomp.o: ../include/trandefs.h cktsencomp.o: ../include/trcvdefs.h cktsencomp.o: ../include/tskdefs.h cktsencomp.o: ../include/complex.h cktsencomp.o: ../include/prefix.h cktsencomp.o: ../include/suffix.h cktsendctran.o: ../include/acdefs.h cktsendctran.o: ../include/cktdefs.h cktsendctran.o: ../include/devdefs.h cktsendctran.o: ../include/gendefs.h cktsendctran.o: ../include/iferrmsgs.h cktsendctran.o: ../include/ifsim.h cktsendctran.o: ../include/jobdefs.h cktsendctran.o: ../include/optdefs.h cktsendctran.o: ../include/pzdefs.h cktsendctran.o: ../include/sendefs.h cktsendctran.o: ../include/smpdefs.h cktsendctran.o: ../include/sperror.h cktsendctran.o: ../include/trandefs.h cktsendctran.o: ../include/trcvdefs.h cktsendctran.o: ../include/tskdefs.h cktsendctran.o: ../include/complex.h cktsendctran.o: ../include/prefix.h cktsendctran.o: ../include/suffix.h cktsenload.o: ../include/acdefs.h cktsenload.o: ../include/cktdefs.h cktsenload.o: ../include/devdefs.h cktsenload.o: ../include/gendefs.h cktsenload.o: ../include/iferrmsgs.h cktsenload.o: ../include/ifsim.h cktsenload.o: ../include/jobdefs.h cktsenload.o: ../include/optdefs.h cktsenload.o: ../include/pzdefs.h cktsenload.o: ../include/sendefs.h cktsenload.o: ../include/smpdefs.h cktsenload.o: ../include/sperror.h cktsenload.o: ../include/trandefs.h cktsenload.o: ../include/trcvdefs.h cktsenload.o: ../include/tskdefs.h cktsenload.o: ../include/complex.h cktsenload.o: ../include/prefix.h cktsenload.o: ../include/suffix.h cktsenprint.o: ../include/acdefs.h cktsenprint.o: ../include/cktdefs.h cktsenprint.o: ../include/devdefs.h cktsenprint.o: ../include/gendefs.h cktsenprint.o: ../include/iferrmsgs.h cktsenprint.o: ../include/ifsim.h cktsenprint.o: ../include/jobdefs.h cktsenprint.o: ../include/optdefs.h cktsenprint.o: ../include/pzdefs.h cktsenprint.o: ../include/sendefs.h cktsenprint.o: ../include/smpdefs.h cktsenprint.o: ../include/sperror.h cktsenprint.o: ../include/trandefs.h cktsenprint.o: ../include/trcvdefs.h cktsenprint.o: ../include/tskdefs.h cktsenprint.o: ../include/complex.h cktsenprint.o: ../include/prefix.h cktsenprint.o: ../include/suffix.h cktsensetup.o: ../include/acdefs.h cktsensetup.o: ../include/cktdefs.h cktsensetup.o: ../include/devdefs.h cktsensetup.o: ../include/gendefs.h cktsensetup.o: ../include/iferrmsgs.h cktsensetup.o: ../include/ifsim.h cktsensetup.o: ../include/jobdefs.h cktsensetup.o: ../include/optdefs.h cktsensetup.o: ../include/pzdefs.h cktsensetup.o: ../include/sendefs.h cktsensetup.o: ../include/smpdefs.h cktsensetup.o: ../include/sperror.h cktsensetup.o: ../include/trandefs.h cktsensetup.o: ../include/trcvdefs.h cktsensetup.o: ../include/tskdefs.h cktsensetup.o: ../include/complex.h cktsensetup.o: ../include/prefix.h cktsensetup.o: ../include/suffix.h cktsenupdate.o: ../include/acdefs.h cktsenupdate.o: ../include/cktdefs.h cktsenupdate.o: ../include/devdefs.h cktsenupdate.o: ../include/gendefs.h cktsenupdate.o: ../include/iferrmsgs.h cktsenupdate.o: ../include/ifsim.h cktsenupdate.o: ../include/jobdefs.h cktsenupdate.o: ../include/optdefs.h cktsenupdate.o: ../include/pzdefs.h cktsenupdate.o: ../include/sendefs.h cktsenupdate.o: ../include/smpdefs.h cktsenupdate.o: ../include/sperror.h cktsenupdate.o: ../include/trandefs.h cktsenupdate.o: ../include/trcvdefs.h cktsenupdate.o: ../include/tskdefs.h cktsenupdate.o: ../include/complex.h cktsenupdate.o: ../include/prefix.h cktsenupdate.o: ../include/suffix.h cktsetanalpm.o: ../include/acdefs.h cktsetanalpm.o: ../include/cktdefs.h cktsetanalpm.o: ../include/gendefs.h cktsetanalpm.o: ../include/iferrmsgs.h cktsetanalpm.o: ../include/ifsim.h cktsetanalpm.o: ../include/jobdefs.h cktsetanalpm.o: ../include/optdefs.h cktsetanalpm.o: ../include/pzdefs.h cktsetanalpm.o: ../include/sendefs.h cktsetanalpm.o: ../include/smpdefs.h cktsetanalpm.o: ../include/trcvdefs.h cktsetanalpm.o: ../include/tskdefs.h cktsetanalpm.o: ../include/complex.h cktsetanalpm.o: ../include/prefix.h cktsetanalpm.o: ../include/suffix.h cktsetanalpm.o: ../include/util.h cktsetbreak.o: ../include/acdefs.h cktsetbreak.o: ../include/cktdefs.h cktsetbreak.o: ../include/gendefs.h cktsetbreak.o: ../include/iferrmsgs.h cktsetbreak.o: ../include/ifsim.h cktsetbreak.o: ../include/jobdefs.h cktsetbreak.o: ../include/optdefs.h cktsetbreak.o: ../include/pzdefs.h cktsetbreak.o: ../include/sendefs.h cktsetbreak.o: ../include/smpdefs.h cktsetbreak.o: ../include/sperror.h cktsetbreak.o: ../include/trcvdefs.h cktsetbreak.o: ../include/tskdefs.h cktsetbreak.o: ../include/complex.h cktsetbreak.o: ../include/prefix.h cktsetbreak.o: ../include/suffix.h cktsetbreak.o: ../include/util.h cktsetnodpm.o: ../include/acdefs.h cktsetnodpm.o: ../include/cktdefs.h cktsetnodpm.o: ../include/gendefs.h cktsetnodpm.o: ../include/iferrmsgs.h cktsetnodpm.o: ../include/ifsim.h cktsetnodpm.o: ../include/jobdefs.h cktsetnodpm.o: ../include/optdefs.h cktsetnodpm.o: ../include/pzdefs.h cktsetnodpm.o: ../include/sendefs.h cktsetnodpm.o: ../include/smpdefs.h cktsetnodpm.o: ../include/trcvdefs.h cktsetnodpm.o: ../include/tskdefs.h cktsetnodpm.o: ../include/complex.h cktsetnodpm.o: ../include/prefix.h cktsetnodpm.o: ../include/suffix.h cktsetnodpm.o: ../include/util.h cktsetopt.o: ../include/acdefs.h cktsetopt.o: ../include/cktdefs.h cktsetopt.o: ../include/const.h cktsetopt.o: ../include/gendefs.h cktsetopt.o: ../include/iferrmsgs.h cktsetopt.o: ../include/ifsim.h cktsetopt.o: ../include/jobdefs.h cktsetopt.o: ../include/optdefs.h cktsetopt.o: ../include/pzdefs.h cktsetopt.o: ../include/sendefs.h cktsetopt.o: ../include/smpdefs.h cktsetopt.o: ../include/sperror.h cktsetopt.o: ../include/trcvdefs.h cktsetopt.o: ../include/tskdefs.h cktsetopt.o: ../include/complex.h cktsetopt.o: ../include/prefix.h cktsetopt.o: ../include/suffix.h cktsetopt.o: ../include/util.h cktsetup.o: ../include/acdefs.h cktsetup.o: ../include/cktdefs.h cktsetup.o: ../include/devdefs.h cktsetup.o: ../include/gendefs.h cktsetup.o: ../include/iferrmsgs.h cktsetup.o: ../include/ifsim.h cktsetup.o: ../include/jobdefs.h cktsetup.o: ../include/optdefs.h cktsetup.o: ../include/pzdefs.h cktsetup.o: ../include/sendefs.h cktsetup.o: ../include/smpdefs.h cktsetup.o: ../include/sperror.h cktsetup.o: ../include/trcvdefs.h cktsetup.o: ../include/tskdefs.h cktsetup.o: ../include/complex.h cktsetup.o: ../include/prefix.h cktsetup.o: ../include/suffix.h cktsetup.o: ../include/util.h ckttemp.o: ../include/acdefs.h ckttemp.o: ../include/cktdefs.h ckttemp.o: ../include/const.h ckttemp.o: ../include/devdefs.h ckttemp.o: ../include/gendefs.h ckttemp.o: ../include/iferrmsgs.h ckttemp.o: ../include/ifsim.h ckttemp.o: ../include/jobdefs.h ckttemp.o: ../include/optdefs.h ckttemp.o: ../include/pzdefs.h ckttemp.o: ../include/sendefs.h ckttemp.o: ../include/smpdefs.h ckttemp.o: ../include/sperror.h ckttemp.o: ../include/trcvdefs.h ckttemp.o: ../include/tskdefs.h ckttemp.o: ../include/complex.h ckttemp.o: ../include/prefix.h ckttemp.o: ../include/suffix.h cktterr.o: ../include/acdefs.h cktterr.o: ../include/cktdefs.h cktterr.o: ../include/gendefs.h cktterr.o: ../include/ifsim.h cktterr.o: ../include/jobdefs.h cktterr.o: ../include/optdefs.h cktterr.o: ../include/pzdefs.h cktterr.o: ../include/sendefs.h cktterr.o: ../include/smpdefs.h cktterr.o: ../include/trcvdefs.h cktterr.o: ../include/tskdefs.h cktterr.o: ../include/complex.h cktterr.o: ../include/prefix.h cktterr.o: ../include/suffix.h cktterr.o: ../include/util.h ckttrunc.o: ../include/acdefs.h ckttrunc.o: ../include/cktdefs.h ckttrunc.o: ../include/devdefs.h ckttrunc.o: ../include/gendefs.h ckttrunc.o: ../include/iferrmsgs.h ckttrunc.o: ../include/ifsim.h ckttrunc.o: ../include/jobdefs.h ckttrunc.o: ../include/optdefs.h ckttrunc.o: ../include/pzdefs.h ckttrunc.o: ../include/sendefs.h ckttrunc.o: ../include/smpdefs.h ckttrunc.o: ../include/sperror.h ckttrunc.o: ../include/trcvdefs.h ckttrunc.o: ../include/tskdefs.h ckttrunc.o: ../include/complex.h ckttrunc.o: ../include/prefix.h ckttrunc.o: ../include/suffix.h ckttrunc.o: ../include/util.h ckttypelook.o: ../include/acdefs.h ckttypelook.o: ../include/cktdefs.h ckttypelook.o: ../include/devdefs.h ckttypelook.o: ../include/gendefs.h ckttypelook.o: ../include/ifsim.h ckttypelook.o: ../include/jobdefs.h ckttypelook.o: ../include/optdefs.h ckttypelook.o: ../include/pzdefs.h ckttypelook.o: ../include/sendefs.h ckttypelook.o: ../include/smpdefs.h ckttypelook.o: ../include/trcvdefs.h ckttypelook.o: ../include/tskdefs.h ckttypelook.o: ../include/complex.h ckttypelook.o: ../include/prefix.h ckttypelook.o: ../include/suffix.h spiinit.o: ../include/acdefs.h spiinit.o: ../include/cktdefs.h spiinit.o: ../include/const.h spiinit.o: ../include/devdefs.h spiinit.o: ../include/gendefs.h spiinit.o: ../include/iferrmsgs.h spiinit.o: ../include/ifsim.h spiinit.o: ../include/jobdefs.h spiinit.o: ../include/optdefs.h spiinit.o: ../include/pzdefs.h spiinit.o: ../include/sendefs.h spiinit.o: ../include/smpdefs.h spiinit.o: ../include/sperror.h spiinit.o: ../include/trcvdefs.h spiinit.o: ../include/tskdefs.h spiinit.o: ../include/complex.h spiinit.o: ../include/prefix.h spiinit.o: ../include/suffix.h spiinit.o: ../include/util.h dcoaskquest.o: ../include/acdefs.h dcoaskquest.o: ../include/cktdefs.h dcoaskquest.o: ../include/gendefs.h dcoaskquest.o: ../include/iferrmsgs.h dcoaskquest.o: ../include/ifsim.h dcoaskquest.o: ../include/jobdefs.h dcoaskquest.o: ../include/optdefs.h dcoaskquest.o: ../include/opdefs.h dcoaskquest.o: ../include/pzdefs.h dcoaskquest.o: ../include/sendefs.h dcoaskquest.o: ../include/smpdefs.h dcoaskquest.o: ../include/trcvdefs.h dcoaskquest.o: ../include/tskdefs.h dcoaskquest.o: ../include/complex.h dcoaskquest.o: ../include/prefix.h dcoaskquest.o: ../include/suffix.h dcosetparm.o: ../include/acdefs.h dcosetparm.o: ../include/cktdefs.h dcosetparm.o: ../include/gendefs.h dcosetparm.o: ../include/iferrmsgs.h dcosetparm.o: ../include/ifsim.h dcosetparm.o: ../include/jobdefs.h dcosetparm.o: ../include/optdefs.h dcosetparm.o: ../include/opdefs.h dcosetparm.o: ../include/pzdefs.h dcosetparm.o: ../include/sendefs.h dcosetparm.o: ../include/smpdefs.h dcosetparm.o: ../include/trcvdefs.h dcosetparm.o: ../include/tskdefs.h dcosetparm.o: ../include/complex.h dcosetparm.o: ../include/prefix.h dcosetparm.o: ../include/suffix.h dctaskquest.o: ../include/acdefs.h dctaskquest.o: ../include/cktdefs.h dctaskquest.o: ../include/gendefs.h dctaskquest.o: ../include/iferrmsgs.h dctaskquest.o: ../include/ifsim.h dctaskquest.o: ../include/jobdefs.h dctaskquest.o: ../include/optdefs.h dctaskquest.o: ../include/pzdefs.h dctaskquest.o: ../include/sendefs.h dctaskquest.o: ../include/smpdefs.h dctaskquest.o: ../include/trcvdefs.h dctaskquest.o: ../include/tskdefs.h dctaskquest.o: ../include/complex.h dctaskquest.o: ../include/prefix.h dctaskquest.o: ../include/suffix.h dctsetparm.o: ../include/acdefs.h dctsetparm.o: ../include/cktdefs.h dctsetparm.o: ../include/gendefs.h dctsetparm.o: ../include/iferrmsgs.h dctsetparm.o: ../include/ifsim.h dctsetparm.o: ../include/jobdefs.h dctsetparm.o: ../include/optdefs.h dctsetparm.o: ../include/pzdefs.h dctsetparm.o: ../include/sendefs.h dctsetparm.o: ../include/smpdefs.h dctsetparm.o: ../include/trcvdefs.h dctsetparm.o: ../include/tskdefs.h dctsetparm.o: ../include/complex.h dctsetparm.o: ../include/prefix.h dctsetparm.o: ../include/suffix.h dctsetparm.o: ../include/util.h dcop.o: ../include/acdefs.h dcop.o: ../include/cktdefs.h dcop.o: ../include/gendefs.h dcop.o: ../include/iferrmsgs.h dcop.o: ../include/ifsim.h dcop.o: ../include/jobdefs.h dcop.o: ../include/optdefs.h dcop.o: ../include/pzdefs.h dcop.o: ../include/sendefs.h dcop.o: ../include/smpdefs.h dcop.o: ../include/sperror.h dcop.o: ../include/trcvdefs.h dcop.o: ../include/tskdefs.h dcop.o: ../include/complex.h dcop.o: ../include/prefix.h dcop.o: ../include/suffix.h dcop.o: ../include/util.h dctran.o: ../include/acdefs.h dctran.o: ../include/cktdefs.h dctran.o: ../include/gendefs.h dctran.o: ../include/iferrmsgs.h dctran.o: ../include/ifsim.h dctran.o: ../include/jobdefs.h dctran.o: ../include/optdefs.h dctran.o: ../include/pzdefs.h dctran.o: ../include/sendefs.h dctran.o: ../include/smpdefs.h dctran.o: ../include/sperror.h dctran.o: ../include/trandefs.h dctran.o: ../include/trcvdefs.h dctran.o: ../include/tskdefs.h dctran.o: ../include/complex.h dctran.o: ../include/prefix.h dctran.o: ../include/suffix.h dctran.o: ../include/util.h dctrcurv.o: ../include/acdefs.h dctrcurv.o: ../include/cktdefs.h dctrcurv.o: ../include/gendefs.h dctrcurv.o: ../include/iferrmsgs.h dctrcurv.o: ../include/ifsim.h dctrcurv.o: ../include/isrcdefs.h dctrcurv.o: ../include/jobdefs.h dctrcurv.o: ../include/optdefs.h dctrcurv.o: ../include/pzdefs.h dctrcurv.o: ../include/sendefs.h dctrcurv.o: ../include/smpdefs.h dctrcurv.o: ../include/sperror.h dctrcurv.o: ../include/trcvdefs.h dctrcurv.o: ../include/tskdefs.h dctrcurv.o: ../include/vsrcdefs.h dctrcurv.o: ../include/complex.h dctrcurv.o: ../include/prefix.h dctrcurv.o: ../include/suffix.h dctrcurv.o: ../include/util.h senstartup.o: ../include/acdefs.h senstartup.o: ../include/cktdefs.h senstartup.o: ../include/const.h senstartup.o: ../include/gendefs.h senstartup.o: ../include/iferrmsgs.h senstartup.o: ../include/ifsim.h senstartup.o: ../include/jobdefs.h senstartup.o: ../include/optdefs.h senstartup.o: ../include/pzdefs.h senstartup.o: ../include/sendefs.h senstartup.o: ../include/smpdefs.h senstartup.o: ../include/sperror.h senstartup.o: ../include/trcvdefs.h senstartup.o: ../include/tskdefs.h senstartup.o: ../include/complex.h senstartup.o: ../include/prefix.h senstartup.o: ../include/suffix.h senstartup.o: ../include/util.h sensetparm.o: ../include/acdefs.h sensetparm.o: ../include/cktdefs.h sensetparm.o: ../include/gendefs.h sensetparm.o: ../include/iferrmsgs.h sensetparm.o: ../include/ifsim.h sensetparm.o: ../include/jobdefs.h sensetparm.o: ../include/optdefs.h sensetparm.o: ../include/pzdefs.h sensetparm.o: ../include/sendefs.h sensetparm.o: ../include/smpdefs.h sensetparm.o: ../include/trcvdefs.h sensetparm.o: ../include/tskdefs.h sensetparm.o: ../include/complex.h sensetparm.o: ../include/prefix.h sensetparm.o: ../include/suffix.h sensetparm.o: ../include/util.h senaskquest.o: ../include/acdefs.h senaskquest.o: ../include/cktdefs.h senaskquest.o: ../include/gendefs.h senaskquest.o: ../include/iferrmsgs.h senaskquest.o: ../include/ifsim.h senaskquest.o: ../include/jobdefs.h senaskquest.o: ../include/optdefs.h senaskquest.o: ../include/pzdefs.h senaskquest.o: ../include/sendefs.h senaskquest.o: ../include/smpdefs.h senaskquest.o: ../include/trcvdefs.h senaskquest.o: ../include/tskdefs.h senaskquest.o: ../include/complex.h senaskquest.o: ../include/prefix.h senaskquest.o: ../include/suffix.h sendestroy.o: ../include/acdefs.h sendestroy.o: ../include/cktdefs.h sendestroy.o: ../include/devdefs.h sendestroy.o: ../include/gendefs.h sendestroy.o: ../include/iferrmsgs.h sendestroy.o: ../include/ifsim.h sendestroy.o: ../include/jobdefs.h sendestroy.o: ../include/optdefs.h sendestroy.o: ../include/pzdefs.h sendestroy.o: ../include/sendefs.h sendestroy.o: ../include/smpdefs.h sendestroy.o: ../include/sperror.h sendestroy.o: ../include/trcvdefs.h sendestroy.o: ../include/tskdefs.h sendestroy.o: ../include/complex.h sendestroy.o: ../include/prefix.h sendestroy.o: ../include/suffix.h sendestroy.o: ../include/util.h sperror.o: ../include/acdefs.h sperror.o: ../include/cktdefs.h sperror.o: ../include/gendefs.h sperror.o: ../include/iferrmsgs.h sperror.o: ../include/ifsim.h sperror.o: ../include/jobdefs.h sperror.o: ../include/optdefs.h sperror.o: ../include/pzdefs.h sperror.o: ../include/sendefs.h sperror.o: ../include/smpdefs.h sperror.o: ../include/sperror.h sperror.o: ../include/trcvdefs.h sperror.o: ../include/tskdefs.h sperror.o: ../include/complex.h sperror.o: ../include/prefix.h sperror.o: ../include/suffix.h sperror.o: ../include/util.h pzan.o: ../include/acdefs.h pzan.o: ../include/cktdefs.h pzan.o: ../include/gendefs.h pzan.o: ../include/iferrmsgs.h pzan.o: ../include/ifsim.h pzan.o: ../include/jobdefs.h pzan.o: ../include/optdefs.h pzan.o: ../include/pzdefs.h pzan.o: ../include/sendefs.h pzan.o: ../include/smpdefs.h pzan.o: ../include/sperror.h pzan.o: ../include/trandefs.h pzan.o: ../include/trcvdefs.h pzan.o: ../include/tskdefs.h pzan.o: ../include/complex.h pzan.o: ../include/prefix.h pzan.o: ../include/suffix.h pzan.o: ../include/util.h pzaskquest.o: ../include/acdefs.h pzaskquest.o: ../include/cktdefs.h pzaskquest.o: ../include/gendefs.h pzaskquest.o: ../include/iferrmsgs.h pzaskquest.o: ../include/ifsim.h pzaskquest.o: ../include/jobdefs.h pzaskquest.o: ../include/optdefs.h pzaskquest.o: ../include/pzdefs.h pzaskquest.o: ../include/sendefs.h pzaskquest.o: ../include/smpdefs.h pzaskquest.o: ../include/trcvdefs.h pzaskquest.o: ../include/tskdefs.h pzaskquest.o: ../include/complex.h pzaskquest.o: ../include/prefix.h pzaskquest.o: ../include/suffix.h pzsetparm.o: ../include/acdefs.h pzsetparm.o: ../include/cktdefs.h pzsetparm.o: ../include/gendefs.h pzsetparm.o: ../include/iferrmsgs.h pzsetparm.o: ../include/ifsim.h pzsetparm.o: ../include/jobdefs.h pzsetparm.o: ../include/optdefs.h pzsetparm.o: ../include/pzdefs.h pzsetparm.o: ../include/sendefs.h pzsetparm.o: ../include/smpdefs.h pzsetparm.o: ../include/trcvdefs.h pzsetparm.o: ../include/tskdefs.h pzsetparm.o: ../include/complex.h pzsetparm.o: ../include/prefix.h pzsetparm.o: ../include/suffix.h tfanal.o: ../include/acdefs.h tfanal.o: ../include/cktdefs.h tfanal.o: ../include/gendefs.h tfanal.o: ../include/iferrmsgs.h tfanal.o: ../include/ifsim.h tfanal.o: ../include/jobdefs.h tfanal.o: ../include/optdefs.h tfanal.o: ../include/pzdefs.h tfanal.o: ../include/sendefs.h tfanal.o: ../include/smpdefs.h tfanal.o: ../include/sperror.h tfanal.o: ../include/tfdefs.h tfanal.o: ../include/trcvdefs.h tfanal.o: ../include/tskdefs.h tfanal.o: ../include/complex.h tfanal.o: ../include/prefix.h tfanal.o: ../include/suffix.h tfanal.o: ../include/util.h tfsetparm.o: ../include/acdefs.h tfsetparm.o: ../include/cktdefs.h tfsetparm.o: ../include/gendefs.h tfsetparm.o: ../include/iferrmsgs.h tfsetparm.o: ../include/ifsim.h tfsetparm.o: ../include/jobdefs.h tfsetparm.o: ../include/optdefs.h tfsetparm.o: ../include/pzdefs.h tfsetparm.o: ../include/sendefs.h tfsetparm.o: ../include/smpdefs.h tfsetparm.o: ../include/tfdefs.h tfsetparm.o: ../include/trcvdefs.h tfsetparm.o: ../include/tskdefs.h tfsetparm.o: ../include/complex.h tfsetparm.o: ../include/prefix.h tfsetparm.o: ../include/suffix.h tfsetparm.o: ../include/util.h tfaskquest.o: ../include/acdefs.h tfaskquest.o: ../include/cktdefs.h tfaskquest.o: ../include/gendefs.h tfaskquest.o: ../include/iferrmsgs.h tfaskquest.o: ../include/ifsim.h tfaskquest.o: ../include/jobdefs.h tfaskquest.o: ../include/optdefs.h tfaskquest.o: ../include/pzdefs.h tfaskquest.o: ../include/sendefs.h tfaskquest.o: ../include/smpdefs.h tfaskquest.o: ../include/trcvdefs.h tfaskquest.o: ../include/tskdefs.h tfaskquest.o: ../include/complex.h tfaskquest.o: ../include/prefix.h tfaskquest.o: ../include/suffix.h tranaskquest.o: ../include/acdefs.h tranaskquest.o: ../include/cktdefs.h tranaskquest.o: ../include/gendefs.h tranaskquest.o: ../include/iferrmsgs.h tranaskquest.o: ../include/ifsim.h tranaskquest.o: ../include/jobdefs.h tranaskquest.o: ../include/optdefs.h tranaskquest.o: ../include/pzdefs.h tranaskquest.o: ../include/sendefs.h tranaskquest.o: ../include/smpdefs.h tranaskquest.o: ../include/trandefs.h tranaskquest.o: ../include/trcvdefs.h tranaskquest.o: ../include/tskdefs.h tranaskquest.o: ../include/complex.h tranaskquest.o: ../include/prefix.h tranaskquest.o: ../include/suffix.h transetparm.o: ../include/acdefs.h transetparm.o: ../include/cktdefs.h transetparm.o: ../include/gendefs.h transetparm.o: ../include/iferrmsgs.h transetparm.o: ../include/ifsim.h transetparm.o: ../include/jobdefs.h transetparm.o: ../include/optdefs.h transetparm.o: ../include/pzdefs.h transetparm.o: ../include/sendefs.h transetparm.o: ../include/smpdefs.h transetparm.o: ../include/trandefs.h transetparm.o: ../include/trcvdefs.h transetparm.o: ../include/tskdefs.h transetparm.o: ../include/complex.h transetparm.o: ../include/prefix.h transetparm.o: ../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124060443141006440006700000000000011777770500302374600003600000010421spice3c1/spice3/ckt/msc51.batcl /I..\include\ /c ACan.c >> ..\errs.out cl /I..\include\ /c ACaskQuest.c >> ..\errs.out cl /I..\include\ /c ACsetParm.c >> ..\errs.out cl /I..\include\ /c CKTacDump.c >> ..\errs.out cl /I..\include\ /c CKTacLoad.c >> ..\errs.out cl /I..\include\ /c CKTaccept.c >> ..\errs.out cl /I..\include\ /c CKTacct.c >> ..\errs.out cl /I..\include\ /c CKTask.c >> ..\errs.out cl /I..\include\ /c CKTaskAnalQ.c >> ..\errs.out cl /I..\include\ /c CKTaskNodQst.c >> ..\errs.out cl /I..\include\ /c CKTbindNode.c >> ..\errs.out cl /I..\include\ /c CKTbreakDump.c >> ..\errs.out cl /I..\include\ /c CKTclrBreak.c >> ..\errs.out cl /I..\include\ /c CKTconvTest.c >> ..\errs.out cl /I..\include\ /c CKTcrtElt.c >> ..\errs.out cl /I..\include\ /c CKTdelTask.c >> ..\errs.out cl /I..\include\ /c CKTdestroy.c >> ..\errs.out cl /I..\include\ /c CKTdltInst.c >> ..\errs.out cl /I..\include\ /c CKTdltMod.c >> ..\errs.out cl /I..\include\ /c CKTdltNod.c >> ..\errs.out cl /I..\include\ /c CKTdoJob.c >> ..\errs.out cl /I..\include\ /c CKTdump.c >> ..\errs.out cl /I..\include\ /c CKTfndAnal.c >> ..\errs.out cl /I..\include\ /c CKTfndBranch.c >> ..\errs.out cl /I..\include\ /c CKTfndDev.c >> ..\errs.out cl /I..\include\ /c CKTfndMod.c >> ..\errs.out cl /I..\include\ /c CKTfndNode.c >> ..\errs.out cl /I..\include\ /c CKTfndTask.c >> ..\errs.out cl /I..\include\ /c CKTground.c >> ..\errs.out cl /I..\include\ /c CKTic.c >> ..\errs.out cl /I..\include\ /c CKTinit.c >> ..\errs.out cl /I..\include\ /c CKTinst2Node.c >> ..\errs.out cl /I..\include\ /c CKTlinkEq.c >> ..\errs.out cl /I..\include\ /c CKTload.c >> ..\errs.out cl /I..\include\ /c CKTmapNode.c >> ..\errs.out cl /I..\include\ /c CKTmkCur.c >> ..\errs.out cl /I..\include\ /c CKTmkNode.c >> ..\errs.out cl /I..\include\ /c CKTmkVolt.c >> ..\errs.out cl /I..\include\ /c CKTmodAsk.c >> ..\errs.out cl /I..\include\ /c CKTmodCrt.c >> ..\errs.out cl /I..\include\ /c CKTmodParam.c >> ..\errs.out cl /I..\include\ /c CKTnames.c >> ..\errs.out cl /I..\include\ /c CKTnewAnal.c >> ..\errs.out cl /I..\include\ /c CKTnewEq.c >> ..\errs.out cl /I..\include\ /c CKTnewNode.c >> ..\errs.out cl /I..\include\ /c CKTnewTask.c >> ..\errs.out cl /I..\include\ /c CKTnodName.c >> ..\errs.out cl /I..\include\ /c CKTnum2nod.c >> ..\errs.out cl /I..\include\ /c CKTop.c >> ..\errs.out cl /I..\include\ /c CKTpModName.c >> ..\errs.out cl /I..\include\ /c CKTpName.c >> ..\errs.out cl /I..\include\ /c CKTparam.c >> ..\errs.out cl /I..\include\ /c CKTpzLoad.c >> ..\errs.out cl /I..\include\ /c CKTpzSetup.c >> ..\errs.out cl /I..\include\ /c CKTsenAC.c >> ..\errs.out cl /I..\include\ /c CKTsenComp.c >> ..\errs.out cl /I..\include\ /c CKTsenDCtran.c >> ..\errs.out cl /I..\include\ /c CKTsenLoad.c >> ..\errs.out cl /I..\include\ /c CKTsenPrint.c >> ..\errs.out cl /I..\include\ /c CKTsenSetup.c >> ..\errs.out cl /I..\include\ /c CKTsenUpdate.c >> ..\errs.out cl /I..\include\ /c CKTsetAnalPm.c >> ..\errs.out cl /I..\include\ /c CKTsetBreak.c >> ..\errs.out cl /I..\include\ /c CKTsetNodPm.c >> ..\errs.out cl /I..\include\ /c CKTsetOpt.c >> ..\errs.out cl /I..\include\ /c CKTsetup.c >> ..\errs.out cl /I..\include\ /c CKTtemp.c >> ..\errs.out cl /I..\include\ /c CKTterr.c >> ..\errs.out cl /I..\include\ /c CKTtrunc.c >> ..\errs.out cl /I..\include\ /c CKTtypelook.c >> ..\errs.out cl /I..\include\ /c DCOaskQuest.c >> ..\errs.out cl /I..\include\ /c DCOsetParm.c >> ..\errs.out cl /I..\include\ /c DCTaskQuest.c >> ..\errs.out cl /I..\include\ /c DCTsetParm.c >> ..\errs.out cl /I..\include\ /c DCop.c >> ..\errs.out cl /I..\include\ /c DCtrCurv.c >> ..\errs.out cl /I..\include\ /c DCtran.c >> ..\errs.out cl /I..\include\ /c PZDCop.c >> ..\errs.out cl /I..\include\ /c PZan.c >> ..\errs.out cl /I..\include\ /c PZaskQuest.c >> ..\errs.out cl /I..\include\ /c PZsetParm.c >> ..\errs.out cl /I..\include\ /c SENaskQuest.c >> ..\errs.out cl /I..\include\ /c SENdestroy.c >> ..\errs.out cl /I..\include\ /c SENsetParm.c >> ..\errs.out cl /I..\include\ /c SENstartup.c >> ..\errs.out cl /I..\include\ /c SPIinit.c >> ..\errs.out cl /I..\include\ /c SPerror.c >> ..\errs.out cl /I..\include\ /c TFanal.c >> ..\errs.out cl /I..\include\ /c TFaskQuest.c >> ..\errs.out cl /I..\include\ /c TFsetParm.c >> ..\errs.out cl /I..\include\ /c TRANaskQuest.c >> ..\errs.out cl /I..\include\ /c TRANsetParm.c >> ..\errs.out lib ..\CKT.lib @RESPONSE.LIB 0707070124060443151006440006700000000000011777770500302374600004100000002502spice3c1/spice3/ckt/response.lib+ACAN.OBJ& +ACASKQUE.OBJ& +ACSETPAR.OBJ& +CKTACDUM.OBJ& +CKTACLOA.OBJ& +CKTACCEP.OBJ& +CKTACCT.OBJ& +CKTASK.OBJ& +CKTASKAN.OBJ& +CKTASKNO.OBJ& +CKTBINDN.OBJ& +CKTBREAK.OBJ& +CKTCLRBR.OBJ& +CKTCONVT.OBJ& +CKTCRTEL.OBJ& +CKTDELTA.OBJ& +CKTDESTR.OBJ& +CKTDLTIN.OBJ& +CKTDLTMO.OBJ& +CKTDLTNO.OBJ& +CKTDOJOB.OBJ& +CKTDUMP.OBJ& +CKTFNDAN.OBJ& +CKTFNDBR.OBJ& +CKTFNDDE.OBJ& +CKTFNDMO.OBJ& +CKTFNDNO.OBJ& +CKTFNDTA.OBJ& +CKTGROUN.OBJ& +CKTIC.OBJ& +CKTINIT.OBJ& +CKTINST2.OBJ& +CKTLINKE.OBJ& +CKTLOAD.OBJ& +CKTMAPNO.OBJ& +CKTMKCUR.OBJ& +CKTMKNOD.OBJ& +CKTMKVOL.OBJ& +CKTMODAS.OBJ& +CKTMODCR.OBJ& +CKTMODPA.OBJ& +CKTNAMES.OBJ& +CKTNEWAN.OBJ& +CKTNEWEQ.OBJ& +CKTNEWNO.OBJ& +CKTNEWTA.OBJ& +CKTNODNA.OBJ& +CKTNUM2N.OBJ& +CKTOP.OBJ& +CKTPMODN.OBJ& +CKTPNAME.OBJ& +CKTPARAM.OBJ& +CKTPZLOA.OBJ& +CKTPZSET.OBJ& +CKTSENAC.OBJ& +CKTSENCO.OBJ& +CKTSENDC.OBJ& +CKTSENLO.OBJ& +CKTSENPR.OBJ& +CKTSENSE.OBJ& +CKTSENUP.OBJ& +CKTSETAN.OBJ& +CKTSETBR.OBJ& +CKTSETNO.OBJ& +CKTSETOP.OBJ& +CKTSETUP.OBJ& +CKTTEMP.OBJ& +CKTTERR.OBJ& +CKTTRUNC.OBJ& +CKTTYPEL.OBJ& +DCOASKQU.OBJ& +DCOSETPA.OBJ& +DCTASKQU.OBJ& +DCTSETPA.OBJ& +DCOP.OBJ& +DCTRCURV.OBJ& +DCTRAN.OBJ& +PZDCOP.OBJ& +PZAN.OBJ& +PZASKQUE.OBJ& +PZSETPAR.OBJ& +SENASKQU.OBJ& +SENDESTR.OBJ& +SENSETPA.OBJ& +SENSTART.OBJ& +SPIINIT.OBJ& +SPERROR.OBJ& +TFANAL.OBJ& +TFASKQUE.OBJ& +TFSETPAR.OBJ& +TRANASKQ.OBJ& +TRANSETP.OBJ; 0707070124060443161006440006700000000000011777770500302374600003500000007304spice3c1/spice3/ckt/make.com$ cc /nowarn ACan $ cc /nowarn ACaskQuest $ cc /nowarn ACsetParm $ cc /nowarn CKTacDump $ cc /nowarn CKTacLoad $ cc /nowarn CKTaccept $ cc /nowarn CKTacct $ cc /nowarn CKTask $ cc /nowarn CKTaskAnalQ $ cc /nowarn CKTaskNodQst $ cc /nowarn CKTbindNode $ cc /nowarn CKTbreakDump $ cc /nowarn CKTclrBreak $ cc /nowarn CKTconvTest $ cc /nowarn CKTcrtElt $ cc /nowarn CKTdelTask $ cc /nowarn CKTdestroy $ cc /nowarn CKTdltInst $ cc /nowarn CKTdltMod $ cc /nowarn CKTdltNod $ cc /nowarn CKTdoJob $ cc /nowarn CKTdump $ cc /nowarn CKTfndAnal $ cc /nowarn CKTfndBranch $ cc /nowarn CKTfndDev $ cc /nowarn CKTfndMod $ cc /nowarn CKTfndNode $ cc /nowarn CKTfndTask $ cc /nowarn CKTground $ cc /nowarn CKTic $ cc /nowarn CKTinit $ cc /nowarn CKTinst2Node $ cc /nowarn CKTlinkEq $ cc /nowarn CKTload $ cc /nowarn CKTmapNode $ cc /nowarn CKTmkCur $ cc /nowarn CKTmkNode $ cc /nowarn CKTmkVolt $ cc /nowarn CKTmodAsk $ cc /nowarn CKTmodCrt $ cc /nowarn CKTmodParam $ cc /nowarn CKTnames $ cc /nowarn CKTnewAnal $ cc /nowarn CKTnewEq $ cc /nowarn CKTnewNode $ cc /nowarn CKTnewTask $ cc /nowarn CKTnodName $ cc /nowarn CKTnum2nod $ cc /nowarn CKTop $ cc /nowarn CKTpModName $ cc /nowarn CKTpName $ cc /nowarn CKTparam $ cc /nowarn CKTpzLoad $ cc /nowarn CKTpzSetup $ cc /nowarn CKTsenAC $ cc /nowarn CKTsenComp $ cc /nowarn CKTsenDCtran $ cc /nowarn CKTsenLoad $ cc /nowarn CKTsenPrint $ cc /nowarn CKTsenSetup $ cc /nowarn CKTsenUpdate $ cc /nowarn CKTsetAnalPm $ cc /nowarn CKTsetBreak $ cc /nowarn CKTsetNodPm $ cc /nowarn CKTsetOpt $ cc /nowarn CKTsetup $ cc /nowarn CKTtemp $ cc /nowarn CKTterr $ cc /nowarn CKTtrunc $ cc /nowarn CKTtypelook $ cc /nowarn DCOaskQuest $ cc /nowarn DCOsetParm $ cc /nowarn DCTaskQuest $ cc /nowarn DCTsetParm $ cc /nowarn DCop $ cc /nowarn DCtrCurv $ cc /nowarn DCtran $ cc /nowarn PZDCop $ cc /nowarn PZan $ cc /nowarn PZaskQuest $ cc /nowarn PZsetParm $ cc /nowarn SENaskQuest $ cc /nowarn SENdestroy $ cc /nowarn SENsetParm $ cc /nowarn SENstartup $ cc /nowarn SPIinit $ cc /nowarn SPerror $ cc /nowarn TFanal $ cc /nowarn TFaskQuest $ cc /nowarn TFsetParm $ cc /nowarn TRANaskQuest $ cc /nowarn TRANsetParm $ library/create/object [-]CKT.olb - ACan.obj, - ACaskQuest.obj, - ACsetParm.obj, - CKTacDump.obj, - CKTacLoad.obj, - CKTaccept.obj, - CKTacct.obj, - CKTask.obj, - CKTaskAnalQ.obj, - CKTaskNodQst.obj, - CKTbindNode.obj, - CKTbreakDump.obj, - CKTclrBreak.obj, - CKTconvTest.obj, - CKTcrtElt.obj, - CKTdelTask.obj, - CKTdestroy.obj, - CKTdltInst.obj, - CKTdltMod.obj, - CKTdltNod.obj, - CKTdoJob.obj, - CKTdump.obj, - CKTfndAnal.obj, - CKTfndBranch.obj, - CKTfndDev.obj, - CKTfndMod.obj, - CKTfndNode.obj, - CKTfndTask.obj, - CKTground.obj, - CKTic.obj, - CKTinit.obj, - CKTinst2Node.obj, - CKTlinkEq.obj, - CKTload.obj, - CKTmapNode.obj, - CKTmkCur.obj, - CKTmkNode.obj, - CKTmkVolt.obj, - CKTmodAsk.obj, - CKTmodCrt.obj, - CKTmodParam.obj, - CKTnames.obj, - CKTnewAnal.obj, - CKTnewEq.obj, - CKTnewNode.obj, - CKTnewTask.obj, - CKTnodName.obj, - CKTnum2nod.obj, - CKTop.obj, - CKTpModName.obj, - CKTpName.obj, - CKTparam.obj, - CKTpzLoad.obj, - CKTpzSetup.obj, - CKTsenAC.obj, - CKTsenComp.obj, - CKTsenDCtran.obj, - CKTsenLoad.obj, - CKTsenPrint.obj, - CKTsenSetup.obj, - CKTsenUpdate.obj, - CKTsetAnalPm.obj, - CKTsetBreak.obj, - CKTsetNodPm.obj, - CKTsetOpt.obj, - CKTsetup.obj $ library/object/insert [-]CKT.olb - CKTtemp.obj, - CKTterr.obj, - CKTtrunc.obj, - CKTtypelook.obj, - DCOaskQuest.obj, - DCOsetParm.obj, - DCTaskQuest.obj, - DCTsetParm.obj, - DCop.obj, - DCtrCurv.obj, - DCtran.obj, - PZDCop.obj, - PZan.obj, - PZaskQuest.obj, - PZsetParm.obj, - SENaskQuest.obj, - SENdestroy.obj, - SENsetParm.obj, - SENstartup.obj, - SPIinit.obj, - SPerror.obj, - TFanal.obj, - TFaskQuest.obj, - TFsetParm.obj, - TRANaskQuest.obj, - TRANsetParm.obj 0707070124060441560407550006700000000000021777770500302374600002400000000000spice3c1/spice3/ckt0707070124060640441006440006700000000000011777770500302374700004000000003072spice3c1/spice3/dev/asrc/asrc.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "ifsim.h" #include "devdefs.h" #include "asrcdefs.h" #include "util.h" #include "suffix.h" RCSID("ASRC.c $Revision: 1.8 $ on $Date: 89/03/07 11:23:53 $") /* Arbitrary source */ static IFparm ASRCpTable[] = { /* parameters */ IP( "i", ASRC_CURRENT, IF_PARSETREE, "Current source "), IP( "v", ASRC_VOLTAGE, IF_PARSETREE, "Voltage source"), OP( "pos_node", ASRC_POS_NODE, IF_INTEGER, "Positive Node"), OP( "neg_node", ASRC_NEG_NODE, IF_INTEGER, "Negative Node") }; /*static IFparm ASRCmPTable[] = { /* model parameters */ /*}; /**/ static char *ASRCnames[] = { "src+", "src-" }; SPICEdev ASRCinfo = { { "ASRC", "Arbitrary Source ", sizeof(ASRCnames)/sizeof(char *), sizeof(ASRCnames)/sizeof(char *), ASRCnames, sizeof(ASRCpTable)/sizeof(IFparm), ASRCpTable, 0/*sizeof(ASRCmPTable)/sizeof(IFparm) */, NULL/*ASRCmPTable*/, }, ASRCparam, NULL, ASRCload, ASRCsetup, ASRCsetup, NULL, NULL, ASRCfindBr, ASRCacLoad, /* ac and normal load functions NOT identical */ NULL, ASRCdestroy, #ifdef DELETES ASRCmDelete, ASRCdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, NULL, NULL, ASRCpzLoad, #ifdef NEWCONV ASRCconvTest, #else /* NEWCONV */ NULL, #endif /* NEWCONV */ NULL, NULL, NULL, NULL, NULL, NULL, sizeof(ASRCinstance), sizeof(ASRCmodel), }; 0707070124060640451006440006700000000000011777770500302374700004600000005652spice3c1/spice3/dev/asrc/asrcacload.c/* * Copyright (c) 1988 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "cktdefs.h" #include "asrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("ASRCacload.c $Revision: 1.2 $ on $Date: 88/11/17 02:52:14 $") /*ARGSUSED*/ int ASRCacLoad(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { /* * Actually load the current voltage value into the * sparse matrix previously provided. The values have * been precomputed and stored with the instance model. */ register ASRCmodel *model = (ASRCmodel*)inModel; register ASRCinstance *here; int i, v_first, j; double *derivs; double rhs; /* loop through all the Arbitrary source models */ for( ; model != NULL; model = model->ASRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ASRCinstances; here != NULL ; here = here->ASRCnextInstance) { /* * Get the function and its derivatives from the * field in the instance structure. The field is * an array of doubles holding the rhs, and the * entries of the jacobian. */ v_first = 1; j=0; derivs = here->ASRCacValues; rhs = (here->ASRCacValues)[here->ASRCtree->numVars]; for(i=0; i < here->ASRCtree->numVars; i++){ switch(here->ASRCtree->varTypes[i]){ case IF_INSTANCE: if( here->ASRCtype == ASRC_VOLTAGE){ /* CCVS */ if(v_first){ *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) += 1.0; v_first = 0; } *(here->ASRCposptr[j++]) -= derivs[i]; } else{ /* CCCS */ *(here->ASRCposptr[j++]) += derivs[i]; *(here->ASRCposptr[j++]) -= derivs[i]; } break; case IF_NODE: if(here->ASRCtype == ASRC_VOLTAGE){ /* VCVS */ if( v_first){ *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) += 1.0; v_first = 0; } *(here->ASRCposptr[j++]) -= derivs[i]; } else { /*VCCS*/ *(here->ASRCposptr[j++]) += derivs[i]; *(here->ASRCposptr[j++]) -= derivs[i]; } break; default: return(E_BADPARM); } } /* Insert the RHS */ if( here->ASRCtype == ASRC_VOLTAGE){ *(ckt->CKTrhs+(here->ASRCbranch)) += rhs; } else { *(ckt->CKTrhs+(here->ASRCposNode)) -= rhs; *(ckt->CKTrhs+(here->ASRCnegNode)) += rhs; } } } return(OK); } 0707070124060640461006440006700000000000011777770500302374700004300000002363spice3c1/spice3/dev/asrc/asrcask.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ /* * This routine gives access to the internal device parameters * of Current Controlled Voltage Source */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "asrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("ASRCask.c $Revision: 1.4 $ on $Date: 88/11/10 17:28:57 $") /* ARGSUSED */ int ASRCask(ckt,instPtr,which,value,select) CKTcircuit *ckt; GENinstance *instPtr; int which; IFvalue *value; IFvalue *select; { register ASRCinstance *here = (ASRCinstance*)instPtr; switch(which) { case ASRC_CURRENT: value->tValue = here->ASRCtype == ASRC_CURRENT ? here->ASRCtree : NULL; return (OK); case ASRC_VOLTAGE: value->tValue = here->ASRCtype == ASRC_VOLTAGE ? here->ASRCtree : NULL; return (OK); case ASRC_POS_NODE: value->iValue = here->ASRCposNode; return (OK); case ASRC_NEG_NODE: value->iValue = here->ASRCnegNode; return (OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124060640471006440006700000000000011777770500302374700005000000004123spice3c1/spice3/dev/asrc/asrcconvtest.c/* * Copyright (c) 1988 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "cktdefs.h" #include "asrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("ASRCconvTest.c $Revision: 1.3 $ on $Date: 88/11/10 16:20:38 $") int ASRCconvTest( inModel, ckt) GENmodel *inModel; CKTcircuit *ckt; { register ASRCmodel *model = (ASRCmodel *)inModel; register ASRCinstance *here; int i, node_num, branch; double *vals, *derivs; double diff; double prev; double tol; double rhs; for( ; model != NULL; model = model->ASRCnextModel) { for( here = model->ASRCinstances; here != NULL; here = here->ASRCnextInstance){ vals = (double *)MALLOC((here->ASRCtree->numVars)*sizeof(double)); derivs = (double *)MALLOC((here->ASRCtree->numVars)*sizeof(double)); for( i=0; i < here->ASRCtree->numVars; i++){ if( here->ASRCtree->varTypes[i] == IF_INSTANCE){ branch = CKTfndBranch(ckt,here->ASRCtree->vars[i].uValue); vals[i] = *(ckt->CKTrhsOld+branch); } else { node_num = ((CKTnode *)(here->ASRCtree->vars[i].nValue)) ->number; vals[i] = *(ckt->CKTrhsOld+node_num); } } if( (*(here->ASRCtree->IFeval))(here->ASRCtree,&rhs, vals,derivs) == OK){ prev = here->ASRCprev_value; diff = FABS( prev - rhs); if ( here->ASRCtype == ASRC_VOLTAGE){ tol = ckt->CKTreltol * MAX(FABS(rhs),FABS(prev)) + ckt->CKTvoltTol; } else { tol = ckt->CKTreltol * MAX(FABS(rhs),FABS(prev)) + ckt->CKTabstol; } if ( diff > tol) { ckt->CKTnoncon++; return(OK); } } else { return(E_BADPARM); } } } return(OK); } 0707070124060640501006440006700000000000011777770500302374700004600000001653spice3c1/spice3/dev/asrc/asrcdelete.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "asrcdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("ASRCdelete.c $Revision: 1.3 $ on $Date: 88/10/17 16:05:32 $") int ASRCdelete(model,name,fast) GENmodel *model; IFuid name; GENinstance **fast; { register ASRCinstance **instPtr = (ASRCinstance**)fast; ASRCmodel *modPtr = (ASRCmodel*)model; ASRCinstance **prev = NULL; ASRCinstance *here; for( ; modPtr ; modPtr = modPtr->ASRCnextModel) { prev = &(modPtr->ASRCinstances); for(here = *prev; here ; here = *prev) { if(here->ASRCname == name || (instPtr && here==*instPtr) ) { *prev= here->ASRCnextInstance; FREE(here); return(OK); } prev = &(here->ASRCnextInstance); } } return(E_NODEV); } 0707070124060640511006440006700000000000011777770500302374700004700000001655spice3c1/spice3/dev/asrc/asrcdestroy.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "asrcdefs.h" #include "util.h" #include "suffix.h" RCSID("ASRCdestroy.c $Revision: 1.3 $ on $Date: 88/10/17 16:05:54 $") void ASRCdestroy(model) GENmodel **model; { ASRCmodel **start = (ASRCmodel**)model; /* starting model */ ASRCinstance *here; /* current instance */ ASRCinstance *prev = NULL; /* previous instance */ ASRCmodel *mod = *start; /* current model */ ASRCmodel *oldmod = NULL; /* previous model */ for( ; mod ; mod = mod->ASRCnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (ASRCinstance *)NULL; for(here = mod->ASRCinstances ; here ; here = here->ASRCnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124060640521006440006700000000000011777770500302374700004600000002063spice3c1/spice3/dev/asrc/asrcfindbr.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "cktdefs.h" #include "ifsim.h" #include "asrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("ASRCfindBranch.c $Revision: 1.3 $ on $Date: 88/10/17 16:05:59 $") int ASRCfindBr(ckt,inputModel,name) register CKTcircuit *ckt; GENmodel *inputModel; register IFuid name; { register ASRCinstance *here; register ASRCmodel *model = (ASRCmodel*)inputModel; int error; CKTnode *tmp; for( ; model != NULL; model = model->ASRCnextModel) { for (here = model->ASRCinstances; here != NULL; here = here->ASRCnextInstance) { if(here->ASRCname == name) { if(here->ASRCbranch == 0) { error = CKTmkCur(ckt,&tmp, here->ASRCname,"current"); if(error) return(error); here->ASRCbranch = tmp->number; } return(here->ASRCbranch); } } } return(0); } 0707070124060640531006440006700000000000011777770500302374700004400000011415spice3c1/spice3/dev/asrc/asrcload.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "cktdefs.h" #include "asrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("ASRCload.c $Revision: 1.9 $ on $Date: 88/11/17 02:52:34 $") /*ARGSUSED*/ int ASRCload(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { /* actually load the current voltage value into the * sparse matrix previously provided */ register ASRCmodel *model = (ASRCmodel*)inModel; register ASRCinstance *here; int i, v_first, j, branch; int node_num; int size; double *vals, *derivs; double rhs; double prev; double diff; double tol; /* loop through all the Arbitrary source models */ for( ; model != NULL; model = model->ASRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ASRCinstances; here != NULL ; here=here->ASRCnextInstance) { /* * Get the function and its derivatives evaluated */ v_first = 1; j=0; vals = (double *) MALLOC((here->ASRCtree->numVars)*sizeof(double)); derivs = (double *) MALLOC((here->ASRCtree->numVars)*sizeof(double)); /* * Fill the vector of values from the previous solution */ for( i=0; i < here->ASRCtree->numVars; i++){ if( here->ASRCtree->varTypes[i] == IF_INSTANCE){ branch = CKTfndBranch(ckt, here->ASRCtree->vars[i].uValue); vals[i] = *(ckt->CKTrhsOld+branch); } else { node_num = ((CKTnode *)(here->ASRCtree->vars[i]. nValue))->number; vals[i] = *(ckt->CKTrhsOld+node_num); } } if( (*(here->ASRCtree->IFeval))(here->ASRCtree,&rhs, vals,derivs) == OK){ /* The convergence test */ if ( (ckt->CKTmode & MODEINITFIX) || (ckt->CKTmode & MODEINITFLOAT) ){ #ifndef NEWCONV prev = here->ASRCprev_value; diff = FABS( prev - rhs); if ( here->ASRCtype == ASRC_VOLTAGE){ tol = ckt->CKTreltol * MAX(FABS(rhs),FABS(prev)) + ckt->CKTvoltTol; } else { tol = ckt->CKTreltol * MAX(FABS(rhs),FABS(prev)) + ckt->CKTabstol; } if ( diff > tol) { ckt->CKTnoncon++; } #endif /* NEWCONV */ } here->ASRCprev_value = rhs; /* The ac load precomputation and storage */ if (ckt->CKTmode & MODEINITSMSIG){ size = (here->ASRCtree->numVars)+1 ; here->ASRCacValues = (double *)MALLOC(size*sizeof(double)); for ( i = 0; i < here->ASRCtree->numVars; i++){ here->ASRCacValues[i] = derivs[i]; } } for(i=0; i < here->ASRCtree->numVars; i++){ rhs -= (vals[i] * derivs[i]); switch(here->ASRCtree->varTypes[i]){ case IF_INSTANCE: if( here->ASRCtype == ASRC_VOLTAGE){ /* CCVS */ if(v_first){ *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) += 1.0; v_first = 0; } *(here->ASRCposptr[j++]) -= derivs[i]; } else{ /* CCCS */ *(here->ASRCposptr[j++]) += derivs[i]; *(here->ASRCposptr[j++]) -= derivs[i]; } break; case IF_NODE: if(here->ASRCtype == ASRC_VOLTAGE){ /* VCVS */ if( v_first){ *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) += 1.0; v_first = 0; } *(here->ASRCposptr[j++]) -= derivs[i]; } else { /*VCCS*/ *(here->ASRCposptr[j++]) += derivs[i]; *(here->ASRCposptr[j++]) -= derivs[i]; } break; default: return(E_BADPARM); } } /* Insert the RHS */ if( here->ASRCtype == ASRC_VOLTAGE){ *(ckt->CKTrhs+(here->ASRCbranch)) += rhs; } else { *(ckt->CKTrhs+(here->ASRCposNode)) -= rhs; *(ckt->CKTrhs+(here->ASRCnegNode)) += rhs; } /* Store the rhs for small signal analysis */ if (ckt->CKTmode & MODEINITSMSIG){ here->ASRCacValues[here->ASRCtree->numVars] = rhs; } } else{ return(E_BADPARM); } } } FREE(vals); FREE(derivs); return(OK); } 0707070124060640541006440006700000000000011777770500302374700004700000002141spice3c1/spice3/dev/asrc/asrcmdelete.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "asrcdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("ASRCmDelete.c $Revision: 1.3 $ on $Date: 88/10/17 16:06:26 $") int ASRCmDelete(modList,modname,killModel) GENmodel **modList; IFuid modname; GENmodel *killModel; { register ASRCmodel **model = (ASRCmodel**)modList; register ASRCmodel *modfast = (ASRCmodel*)killModel; register ASRCinstance *here; register ASRCinstance *prev = NULL; register ASRCmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->ASRCnextModel)) { if( (*model)->ASRCmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->ASRCnextModel; /* cut deleted device out of list */ for(here = (*model)->ASRCinstances ; here ; here = here->ASRCnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124060640551006440006700000000000011777770500302374700004500000001465spice3c1/spice3/dev/asrc/asrcparam.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "ifsim.h" #include "util.h" #include "asrcdefs.h" #include "sperror.h" #include "suffix.h" RCSID("ASRCparam.c $Revision: 1.5 $ on $Date: 88/12/21 15:22:15 $") /* ARGSUSED */ int ASRCparam(param,value,fast,select) int param; IFvalue *value; GENinstance *fast; IFvalue *select; { register ASRCinstance *here = (ASRCinstance*)fast; switch(param) { case ASRC_VOLTAGE: here->ASRCtype = ASRC_VOLTAGE; here->ASRCtree = value->tValue; break; case ASRC_CURRENT: here->ASRCtype = ASRC_CURRENT; here->ASRCtree = value->tValue; break; default: return(E_BADPARM); } return(OK); } 0707070124060640561006440006700000000000011777770500302374700004600000010325spice3c1/spice3/dev/asrc/asrcpzload.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "cktdefs.h" #include "asrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" #include "complex.h" RCSID("ASRCpzLoad.c $Revision: 1.5 $ on $Date: 88/11/17 02:52:45 $") /*ARGSUSED*/ int ASRCpzLoad(inModel,ckt,s) GENmodel *inModel; CKTcircuit *ckt; SPcomplex *s; /* actually load the current voltage value into the * sparse matrix previously provided */ { register ASRCmodel *model = (ASRCmodel*)inModel; register ASRCinstance *here; int i, v_first, j=0, branch; int node_num; double value, *vals, *derivs; /* loop through all the Arbitrary source models */ for( ; model != NULL; model = model->ASRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ASRCinstances; here != NULL ; here=here->ASRCnextInstance) { /* Get the function evaluated and the derivatives too */ v_first = 1; vals = (double *)MALLOC((here->ASRCtree->numVars) * sizeof(double)); derivs=(double *)MALLOC((here->ASRCtree->numVars) * sizeof(double)); /* Fill the vector of values from the previous solution */ for( i=0; i < here->ASRCtree->numVars; i++){ if( here->ASRCtree->varTypes[i] == IF_INSTANCE){ branch = CKTfndBranch(ckt,here->ASRCtree->vars[i].uValue); vals[i] = *(ckt->CKTrhsOld+branch); } else { node_num = ((CKTnode *)(here->ASRCtree->vars[i].nValue))-> number; vals[i] = *(ckt->CKTrhsOld+node_num); } } if( (*(here->ASRCtree->IFeval))(here->ASRCtree,&value, vals,derivs) == OK){ for(i=0; i < here->ASRCtree->numVars; i++){ switch(here->ASRCtree->varTypes[i]){ case IF_INSTANCE: if( here->ASRCtype == ASRC_VOLTAGE){ /* CCVS */ if(v_first){ *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= derivs[i]; v_first = 0; } else { *(here->ASRCposptr[j++]) -= derivs[i]; } } else { /* CCCS */ *(here->ASRCposptr[j++]) += derivs[i]; *(here->ASRCposptr[j++]) -= derivs[i]; } break; case IF_NODE: if(here->ASRCtype == ASRC_VOLTAGE){ /* VCVS */ if( v_first){ *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) -= 1.0; *(here->ASRCposptr[j++]) += 1.0; *(here->ASRCposptr[j++]) -= derivs[i]; v_first = 0; } else { *(here->ASRCposptr[j++]) -= derivs[i]; } } else { /* VCCS */ *(here->ASRCposptr[j++]) += derivs[i]; *(here->ASRCposptr[j++]) -= derivs[i]; } break; default: return(E_BADPARM); } } } else { return(E_BADPARM); } } } FREE(derivs); FREE(vals); return(OK); } 0707070124060640571006440006700000000000011777770500302375000004500000013050spice3c1/spice3/dev/asrc/asrcsetup.c/* * Copyright (c) 1987 Kanwar Jit Singh * singh@ic.Berkeley.edu */ #include "prefix.h" #include #include "cktdefs.h" #include "asrcdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("ASRCsetup.c $Revision: 1.4 $ on $Date: 88/11/10 14:09:48 $") /*ARGSUSED*/ int ASRCsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; register CKTcircuit *ckt; int *states; /* load the voltage source structure with those * pointers needed later for fast matrix loading */ { register ASRCinstance *here; register ASRCmodel *model = (ASRCmodel*)inModel; int error, i, j; int v_first; CKTnode *tmp; /* loop through all the user models*/ for( ; model != NULL; model = model->ASRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ASRCinstances; here != NULL ; here=here->ASRCnextInstance) { here->ASRCposptr = (double **)MALLOC(0); j=0; /* index of the array holding ptrs to SMP */ v_first = 1; if( here->ASRCtype == ASRC_VOLTAGE){ if(here->ASRCbranch==0) { error = CKTmkCur(ckt,&tmp,here->ASRCname,"current"); if(error) return(error); here->ASRCbranch = tmp->number; } } /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } #define MY_TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,((CKTnode*)(second))->number))\ ==(double *)NULL){\ return(E_NOMEM);\ } /* For each controlling variable set the entries in the vector of the positions of the SMP */ for( i=0; i < here->ASRCtree->numVars; i++){ switch(here->ASRCtree->varTypes[i]){ case IF_INSTANCE: here->ASRCcont_br = CKTfndBranch(ckt, here->ASRCtree->vars[i].uValue); if(here->ASRCcont_br == NULL) { IFuid namarray[2]; namarray[0] = here->ASRCname; namarray[1] = here->ASRCtree->vars[i].uValue; (*(SPfrontEnd->IFerror))(ERR_FATAL, "%s: unknown controlling source %s",namarray); return(E_BADPARM); } if( here->ASRCtype == ASRC_VOLTAGE){ /* CCVS */ if(v_first){ here->ASRCposptr = (double **) REALLOC(here->ASRCposptr, (sizeof(double *)*(j+5))); TSTALLOC(ASRCposptr[j++],ASRCposNode,ASRCbranch); TSTALLOC(ASRCposptr[j++],ASRCnegNode,ASRCbranch); TSTALLOC(ASRCposptr[j++],ASRCbranch,ASRCnegNode); TSTALLOC(ASRCposptr[j++],ASRCbranch,ASRCposNode); TSTALLOC(ASRCposptr[j++],ASRCbranch,ASRCcont_br); v_first = 0; } else{ here->ASRCposptr = (double **) REALLOC(here->ASRCposptr, (sizeof(double *)*(j+1))); TSTALLOC(ASRCposptr[j++],ASRCbranch,ASRCcont_br); } } else if(here->ASRCtype == ASRC_CURRENT){ /* CCCS */ here->ASRCposptr = (double **) REALLOC(here->ASRCposptr, (sizeof(double *) * (j+2))); TSTALLOC(ASRCposptr[j++],ASRCposNode,ASRCcont_br); TSTALLOC(ASRCposptr[j++],ASRCnegNode,ASRCcont_br); } else{ return (E_BADPARM); } break; case IF_NODE: if( here->ASRCtype == ASRC_VOLTAGE){ /* VCVS */ if(v_first){ here->ASRCposptr = (double **) REALLOC(here->ASRCposptr, (sizeof(double *) * (j+5))); TSTALLOC(ASRCposptr[j++],ASRCposNode,ASRCbranch); TSTALLOC(ASRCposptr[j++],ASRCnegNode,ASRCbranch); TSTALLOC(ASRCposptr[j++],ASRCbranch,ASRCnegNode); TSTALLOC(ASRCposptr[j++],ASRCbranch,ASRCposNode); MY_TSTALLOC(ASRCposptr[j++],ASRCbranch,here->ASRCtree->vars[i].nValue); v_first = 0; } else{ here->ASRCposptr = (double **) REALLOC(here->ASRCposptr, (sizeof(double *) * (j+1))); MY_TSTALLOC(ASRCposptr[j++],ASRCbranch,here->ASRCtree->vars[i].nValue); } } else if(here->ASRCtype == ASRC_CURRENT){ /* VCCS */ here->ASRCposptr = (double **) REALLOC(here->ASRCposptr, (sizeof(double *) * (j+2))); MY_TSTALLOC(ASRCposptr[j++],ASRCposNode,here->ASRCtree->vars[i].nValue); MY_TSTALLOC(ASRCposptr[j++],ASRCnegNode,here->ASRCtree->vars[i].nValue); } else{ return (E_BADPARM); } break; default: break; } } } } return(OK); } 0707070124060640601006440006700000000000011777770500302375000004200000024034spice3c1/spice3/dev/asrc/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ asrc.c\ asrcask.c\ asrcacload.c\ asrcconvtest.c\ asrcdelete.c\ asrcdestroy.c\ asrcfindbr.c\ asrcload.c\ asrcmdelete.c\ asrcparam.c\ asrcpzload.c\ asrcsetup.c COBJS = \ asrc.o\ asrcask.o\ asrcacload.o\ asrcconvtest.o\ asrcdelete.o\ asrcdestroy.o\ asrcfindbr.o\ asrcload.o\ asrcmdelete.o\ asrcparam.o\ asrcpzload.o\ asrcsetup.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${CFLAGS} ${PG} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lasrc.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Casrc ${LINTFLAGS} ${CFILES} mv llib-lasrc.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep #cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE asrc.o: ../../include/acdefs.h asrc.o: ../../include/asrcdefs.h asrc.o: ../../include/cktdefs.h asrc.o: ../../include/devdefs.h asrc.o: ../../include/gendefs.h asrc.o: ../../include/ifsim.h asrc.o: ../../include/jobdefs.h asrc.o: ../../include/optdefs.h asrc.o: ../../include/pzdefs.h asrc.o: ../../include/sendefs.h asrc.o: ../../include/smpdefs.h asrc.o: ../../include/trcvdefs.h asrc.o: ../../include/tskdefs.h asrc.o: ../../include/complex.h asrc.o: ../../include/prefix.h asrc.o: ../../include/suffix.h asrc.o: ../../include/util.h asrcask.o: ../../include/acdefs.h asrcask.o: ../../include/asrcdefs.h asrcask.o: ../../include/cktdefs.h asrcask.o: ../../include/devdefs.h asrcask.o: ../../include/gendefs.h asrcask.o: ../../include/iferrmsgs.h asrcask.o: ../../include/ifsim.h asrcask.o: ../../include/jobdefs.h asrcask.o: ../../include/optdefs.h asrcask.o: ../../include/pzdefs.h asrcask.o: ../../include/sendefs.h asrcask.o: ../../include/smpdefs.h asrcask.o: ../../include/sperror.h asrcask.o: ../../include/trcvdefs.h asrcask.o: ../../include/tskdefs.h asrcask.o: ../../include/complex.h asrcask.o: ../../include/prefix.h asrcask.o: ../../include/suffix.h asrcask.o: ../../include/util.h asrcacload.o: ../../include/acdefs.h asrcacload.o: ../../include/asrcdefs.h asrcacload.o: ../../include/cktdefs.h asrcacload.o: ../../include/gendefs.h asrcacload.o: ../../include/iferrmsgs.h asrcacload.o: ../../include/ifsim.h asrcacload.o: ../../include/jobdefs.h asrcacload.o: ../../include/optdefs.h asrcacload.o: ../../include/pzdefs.h asrcacload.o: ../../include/sendefs.h asrcacload.o: ../../include/smpdefs.h asrcacload.o: ../../include/sperror.h asrcacload.o: ../../include/trcvdefs.h asrcacload.o: ../../include/tskdefs.h asrcacload.o: ../../include/complex.h asrcacload.o: ../../include/prefix.h asrcacload.o: ../../include/suffix.h asrcacload.o: ../../include/util.h asrcconvtest.o: ../../include/acdefs.h asrcconvtest.o: ../../include/asrcdefs.h asrcconvtest.o: ../../include/cktdefs.h asrcconvtest.o: ../../include/gendefs.h asrcconvtest.o: ../../include/iferrmsgs.h asrcconvtest.o: ../../include/ifsim.h asrcconvtest.o: ../../include/jobdefs.h asrcconvtest.o: ../../include/optdefs.h asrcconvtest.o: ../../include/pzdefs.h asrcconvtest.o: ../../include/sendefs.h asrcconvtest.o: ../../include/smpdefs.h asrcconvtest.o: ../../include/sperror.h asrcconvtest.o: ../../include/trcvdefs.h asrcconvtest.o: ../../include/tskdefs.h asrcconvtest.o: ../../include/complex.h asrcconvtest.o: ../../include/prefix.h asrcconvtest.o: ../../include/suffix.h asrcconvtest.o: ../../include/util.h asrcdelete.o: ../../include/acdefs.h asrcdelete.o: ../../include/asrcdefs.h asrcdelete.o: ../../include/cktdefs.h asrcdelete.o: ../../include/gendefs.h asrcdelete.o: ../../include/iferrmsgs.h asrcdelete.o: ../../include/ifsim.h asrcdelete.o: ../../include/jobdefs.h asrcdelete.o: ../../include/optdefs.h asrcdelete.o: ../../include/pzdefs.h asrcdelete.o: ../../include/sendefs.h asrcdelete.o: ../../include/smpdefs.h asrcdelete.o: ../../include/sperror.h asrcdelete.o: ../../include/trcvdefs.h asrcdelete.o: ../../include/tskdefs.h asrcdelete.o: ../../include/complex.h asrcdelete.o: ../../include/prefix.h asrcdelete.o: ../../include/suffix.h asrcdelete.o: ../../include/util.h asrcdestroy.o: ../../include/acdefs.h asrcdestroy.o: ../../include/asrcdefs.h asrcdestroy.o: ../../include/cktdefs.h asrcdestroy.o: ../../include/gendefs.h asrcdestroy.o: ../../include/ifsim.h asrcdestroy.o: ../../include/jobdefs.h asrcdestroy.o: ../../include/optdefs.h asrcdestroy.o: ../../include/pzdefs.h asrcdestroy.o: ../../include/sendefs.h asrcdestroy.o: ../../include/smpdefs.h asrcdestroy.o: ../../include/trcvdefs.h asrcdestroy.o: ../../include/tskdefs.h asrcdestroy.o: ../../include/complex.h asrcdestroy.o: ../../include/prefix.h asrcdestroy.o: ../../include/suffix.h asrcdestroy.o: ../../include/util.h asrcfindbr.o: ../../include/acdefs.h asrcfindbr.o: ../../include/asrcdefs.h asrcfindbr.o: ../../include/cktdefs.h asrcfindbr.o: ../../include/gendefs.h asrcfindbr.o: ../../include/iferrmsgs.h asrcfindbr.o: ../../include/ifsim.h asrcfindbr.o: ../../include/jobdefs.h asrcfindbr.o: ../../include/optdefs.h asrcfindbr.o: ../../include/pzdefs.h asrcfindbr.o: ../../include/sendefs.h asrcfindbr.o: ../../include/smpdefs.h asrcfindbr.o: ../../include/sperror.h asrcfindbr.o: ../../include/trcvdefs.h asrcfindbr.o: ../../include/tskdefs.h asrcfindbr.o: ../../include/complex.h asrcfindbr.o: ../../include/prefix.h asrcfindbr.o: ../../include/suffix.h asrcfindbr.o: ../../include/util.h asrcload.o: ../../include/acdefs.h asrcload.o: ../../include/asrcdefs.h asrcload.o: ../../include/cktdefs.h asrcload.o: ../../include/gendefs.h asrcload.o: ../../include/iferrmsgs.h asrcload.o: ../../include/ifsim.h asrcload.o: ../../include/jobdefs.h asrcload.o: ../../include/optdefs.h asrcload.o: ../../include/pzdefs.h asrcload.o: ../../include/sendefs.h asrcload.o: ../../include/smpdefs.h asrcload.o: ../../include/sperror.h asrcload.o: ../../include/trcvdefs.h asrcload.o: ../../include/tskdefs.h asrcload.o: ../../include/complex.h asrcload.o: ../../include/prefix.h asrcload.o: ../../include/suffix.h asrcload.o: ../../include/util.h asrcmdelete.o: ../../include/acdefs.h asrcmdelete.o: ../../include/asrcdefs.h asrcmdelete.o: ../../include/cktdefs.h asrcmdelete.o: ../../include/gendefs.h asrcmdelete.o: ../../include/iferrmsgs.h asrcmdelete.o: ../../include/ifsim.h asrcmdelete.o: ../../include/jobdefs.h asrcmdelete.o: ../../include/optdefs.h asrcmdelete.o: ../../include/pzdefs.h asrcmdelete.o: ../../include/sendefs.h asrcmdelete.o: ../../include/smpdefs.h asrcmdelete.o: ../../include/sperror.h asrcmdelete.o: ../../include/trcvdefs.h asrcmdelete.o: ../../include/tskdefs.h asrcmdelete.o: ../../include/complex.h asrcmdelete.o: ../../include/prefix.h asrcmdelete.o: ../../include/suffix.h asrcmdelete.o: ../../include/util.h asrcparam.o: ../../include/acdefs.h asrcparam.o: ../../include/asrcdefs.h asrcparam.o: ../../include/cktdefs.h asrcparam.o: ../../include/gendefs.h asrcparam.o: ../../include/iferrmsgs.h asrcparam.o: ../../include/ifsim.h asrcparam.o: ../../include/jobdefs.h asrcparam.o: ../../include/optdefs.h asrcparam.o: ../../include/pzdefs.h asrcparam.o: ../../include/sendefs.h asrcparam.o: ../../include/smpdefs.h asrcparam.o: ../../include/sperror.h asrcparam.o: ../../include/trcvdefs.h asrcparam.o: ../../include/tskdefs.h asrcparam.o: ../../include/complex.h asrcparam.o: ../../include/prefix.h asrcparam.o: ../../include/suffix.h asrcparam.o: ../../include/util.h asrcpzload.o: ../../include/acdefs.h asrcpzload.o: ../../include/asrcdefs.h asrcpzload.o: ../../include/cktdefs.h asrcpzload.o: ../../include/gendefs.h asrcpzload.o: ../../include/iferrmsgs.h asrcpzload.o: ../../include/ifsim.h asrcpzload.o: ../../include/jobdefs.h asrcpzload.o: ../../include/optdefs.h asrcpzload.o: ../../include/pzdefs.h asrcpzload.o: ../../include/sendefs.h asrcpzload.o: ../../include/smpdefs.h asrcpzload.o: ../../include/sperror.h asrcpzload.o: ../../include/trcvdefs.h asrcpzload.o: ../../include/tskdefs.h asrcpzload.o: ../../include/complex.h asrcpzload.o: ../../include/prefix.h asrcpzload.o: ../../include/suffix.h asrcpzload.o: ../../include/util.h asrcsetup.o: ../../include/acdefs.h asrcsetup.o: ../../include/asrcdefs.h asrcsetup.o: ../../include/cktdefs.h asrcsetup.o: ../../include/gendefs.h asrcsetup.o: ../../include/iferrmsgs.h asrcsetup.o: ../../include/ifsim.h asrcsetup.o: ../../include/jobdefs.h asrcsetup.o: ../../include/optdefs.h asrcsetup.o: ../../include/pzdefs.h asrcsetup.o: ../../include/sendefs.h asrcsetup.o: ../../include/smpdefs.h asrcsetup.o: ../../include/sperror.h asrcsetup.o: ../../include/trcvdefs.h asrcsetup.o: ../../include/tskdefs.h asrcsetup.o: ../../include/complex.h asrcsetup.o: ../../include/prefix.h asrcsetup.o: ../../include/suffix.h asrcsetup.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124060640611006440006700000000000011777770500302375100004300000001240spice3c1/spice3/dev/asrc/msc51.batcl /I..\..\include\ /c ASRC.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCask.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCconvTest.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCdelete.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCfindBr.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCload.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCparam.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c ASRCsetup.c >> ..\..\errs.out lib ..\..\DEV1.lib @RESPONSE.LIB 0707070124060640621006440006700000000000011777770500302375100004600000000257spice3c1/spice3/dev/asrc/response.lib+ASRC.OBJ& +ASRCACLO.OBJ& +ASRCASK.OBJ& +ASRCCONV.OBJ& +ASRCDELE.OBJ& +ASRCDEST.OBJ& +ASRCFIND.OBJ& +ASRCLOAD.OBJ& +ASRCMDEL.OBJ& +ASRCPARA.OBJ& +ASRCPZLO.OBJ& +ASRCSETU.OBJ; 0707070124060640631006440006700000000000011777770500302375100004200000001004spice3c1/spice3/dev/asrc/make.com$ cc /nowarn ASRC $ cc /nowarn ASRCacLoad $ cc /nowarn ASRCask $ cc /nowarn ASRCconvTest $ cc /nowarn ASRCdelete $ cc /nowarn ASRCdestroy $ cc /nowarn ASRCfindBr $ cc /nowarn ASRCload $ cc /nowarn ASRCmDelete $ cc /nowarn ASRCparam $ cc /nowarn ASRCpzLoad $ cc /nowarn ASRCsetup $ library/object [-.-]DEV.olb - ASRC.obj, - ASRCacLoad.obj, - ASRCask.obj, - ASRCconvTest.obj, - ASRCdelete.obj, - ASRCdestroy.obj, - ASRCfindBr.obj, - ASRCload.obj, - ASRCmDelete.obj, - ASRCparam.obj, - ASRCpzLoad.obj, - ASRCsetup.obj 0707070124060640430407550006700000000000021777770500302375100003100000000000spice3c1/spice3/dev/asrc0707070124060700551006440006700000000000011777770500302375100004000000010221spice3c1/spice3/dev/jfet/jfet.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #include "devdefs.h" #include "jfetdefs.h" #include "suffix.h" RCSID("JFET.c $Revision: 1.9 $ on $Date: 89/03/07 11:31:34 $") static IFparm JFETpTable[] = { /* device parameters */ IOP("off", JFET_OFF, IF_FLAG, "Device initially off"), IOP("ic", JFET_IC, IF_REALVEC,"Initial VDS,VGS vector"), IOP("area", JFET_AREA, IF_REAL, "Area factor"), IOP("ic-vds", JFET_IC_VDS, IF_REAL, "Initial D-S voltage"), IOP("ic-vgs", JFET_IC_VGS, IF_REAL, "Initial G-S volrage"), IOP("temp", JFET_TEMP, IF_REAL, "Instance temperature"), OP("drain-node", JFET_DRAINNODE, IF_INTEGER,"Number of drain node"), OP("gate-node", JFET_GATENODE, IF_INTEGER,"Number of gate node"), OP("source-node", JFET_SOURCENODE, IF_INTEGER,"Number of source node"), OP("drain-prime-node", JFET_DRAINPRIMENODE, IF_INTEGER,"Internal drain node"), OP("source-prime-node",JFET_SOURCEPRIMENODE,IF_INTEGER,"Internal source node"), OP("vgs", JFET_VGS, IF_REAL, "Voltage G-S"), OP("vgd", JFET_VGD, IF_REAL, "Voltage G-D"), OP("cg", JFET_CG, IF_REAL, "Current at gate node"), OP("cd", JFET_CD, IF_REAL, "Current at drain node"), OP("cgd", JFET_CGD, IF_REAL, "Current G-D"), OP("gm", JFET_GM, IF_REAL, "Transconductance"), OP("gds", JFET_GDS, IF_REAL, "Conductance D-S"), OP("ggs", JFET_GGS, IF_REAL, "Conductance G-S"), OP("ggd", JFET_GGD, IF_REAL, "Conductance G-D"), OP("qgs", JFET_QGS, IF_REAL,"Charge storage G-S junction"), OP("cqgs",JFET_CQGS, IF_REAL,"Capacitance due to charge storage G-S junction"), OP("qgd", JFET_QGD, IF_REAL,"Charge storage G-D junction"), OP("cqgd",JFET_CQGD, IF_REAL,"Capacitance due to charge storage G-D junction"), OP("cs", JFET_CS, IF_REAL,"Source current"), OP("p", JFET_POWER,IF_REAL,"Power dissipated by the JFET") }; static IFparm JFETmPTable[] = { /* model parameters */ IOP("vt0", JFET_MOD_VTO, IF_REAL,"Threshold voltage"), IOP("vto", JFET_MOD_VTO, IF_REAL,"Threshold voltage"), IOP("beta", JFET_MOD_BETA, IF_REAL,"Transconductance parameter"), IOP("lambda", JFET_MOD_LAMBDA, IF_REAL,"Channel length modulation param."), IOP("rd", JFET_MOD_RD, IF_REAL,"Drain ohmic resistance"), IOP("rs", JFET_MOD_RS, IF_REAL,"Source ohmic resistance"), IOP("cgs", JFET_MOD_CGS, IF_REAL,"G-S junction capactance"), IOP("cgd", JFET_MOD_CGD, IF_REAL,"G-D junction cap"), IOP("pb", JFET_MOD_PB, IF_REAL,"Gate junction potential"), IOP("is", JFET_MOD_IS, IF_REAL,"Gate junction saturation current"), IOP("fc", JFET_MOD_FC, IF_REAL,"Forward bias junction fir parm."), IOP("njf", JFET_MOD_NJF, IF_FLAG,"N type JFET model"), IOP("pjf", JFET_MOD_PJF, IF_FLAG,"P type JFET model"), IOP("tnom", JFET_MOD_TNOM, IF_REAL,"parameter measurement temperature"), OP("drainconduct", JFET_MOD_DRAINCONDUCT, IF_REAL,"Drain conductance"), OP("sourceconduct",JFET_MOD_SOURCECONDUCT,IF_REAL,"Source conductance") }; static char *JFETnames[] = { "Drain", "Gate", "Source" }; SPICEdev JFETinfo = { { "JFET", "Junction Field effect transistor", sizeof(JFETnames)/sizeof(char *), sizeof(JFETnames)/sizeof(char *), JFETnames, sizeof(JFETpTable)/sizeof(IFparm), JFETpTable, sizeof(JFETmPTable)/sizeof(IFparm), JFETmPTable, }, JFETparam, JFETmParam, JFETload, JFETsetup, JFETsetup, JFETtemp, JFETtrunc, NULL, JFETacLoad, NULL, JFETdestroy, #ifdef DELETES JFETmDelete, JFETdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ JFETgetic, JFETask, JFETmAsk, JFETpzLoad, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sizeof(JFETinstance), sizeof(JFETmodel), }; 0707070124060700561006440006700000000000011777770500302375100004600000004664spice3c1/spice3/dev/jfet/jfetacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETacLoad.c $Revision: 1.4 $ on $Date: 88/07/21 17:40:19 $") int JFETacLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register JFETmodel *model = (JFETmodel*)inModel; register JFETinstance *here; double gdpr; double gspr; double gm; double gds; double ggs; double xgs; double ggd; double xgd; for( ; model != NULL; model = model->JFETnextModel ) { for( here = model->JFETinstances; here != NULL; here = here->JFETnextInstance) { gdpr=model->JFETdrainConduct * here->JFETarea; gspr=model->JFETsourceConduct * here->JFETarea; gm= *(ckt->CKTstate0 + here->JFETgm) ; gds= *(ckt->CKTstate0 + here->JFETgds) ; ggs= *(ckt->CKTstate0 + here->JFETggs) ; xgs= *(ckt->CKTstate0 + here->JFETqgs) * ckt->CKTomega ; ggd= *(ckt->CKTstate0 + here->JFETggd) ; xgd= *(ckt->CKTstate0 + here->JFETqgd) * ckt->CKTomega ; *(here->JFETdrainDrainPtr ) += gdpr; *(here->JFETgateGatePtr ) += ggd+ggs; *(here->JFETgateGatePtr +1) += xgd+xgs; *(here->JFETsourceSourcePtr ) += gspr; *(here->JFETdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd; *(here->JFETdrainPrimeDrainPrimePtr +1) += xgd; *(here->JFETsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs; *(here->JFETsourcePrimeSourcePrimePtr +1) += xgs; *(here->JFETdrainDrainPrimePtr ) -= gdpr; *(here->JFETgateDrainPrimePtr ) -= ggd; *(here->JFETgateDrainPrimePtr +1) -= xgd; *(here->JFETgateSourcePrimePtr ) -= ggs; *(here->JFETgateSourcePrimePtr +1) -= xgs; *(here->JFETsourceSourcePrimePtr ) -= gspr; *(here->JFETdrainPrimeDrainPtr ) -= gdpr; *(here->JFETdrainPrimeGatePtr ) += (-ggd+gm); *(here->JFETdrainPrimeGatePtr +1) -= xgd; *(here->JFETdrainPrimeSourcePrimePtr ) += (-gds-gm); *(here->JFETsourcePrimeGatePtr ) += (-ggs-gm); *(here->JFETsourcePrimeGatePtr +1) -= xgs; *(here->JFETsourcePrimeSourcePtr ) -= gspr; *(here->JFETsourcePrimeDrainPrimePtr ) -= gds; } } return(OK); } 0707070124060700571006440006700000000000011777770500302375100004300000010332spice3c1/spice3/dev/jfet/jfetask.c/* * Copyright (c) 1987 Mathew Lew and Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "jfetdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("JFETask.c $Revision: 1.7 $ on $Date: 88/07/25 12:23:46 $") /*ARGSUSED*/ int JFETask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { JFETinstance *here = (JFETinstance*)inst; static char *msg = "Current and power not available for ac analysis"; switch(which) { case JFET_TEMP: value->rValue = here->JFETtemp-CONSTCtoK; return(OK); case JFET_AREA: value->rValue = here->JFETarea; return(OK); case JFET_IC_VDS: value->rValue = here->JFETicVDS; return(OK); case JFET_IC_VGS: value->rValue = here->JFETicVGS; return(OK); case JFET_OFF: value->iValue = here->JFEToff; return(OK); case JFET_DRAINNODE: value->iValue = here->JFETdrainNode; return(OK); case JFET_GATENODE: value->iValue = here->JFETgateNode; return(OK); case JFET_SOURCENODE: value->iValue = here->JFETsourceNode; return(OK); case JFET_DRAINPRIMENODE: value->iValue = here->JFETdrainPrimeNode; return(OK); case JFET_SOURCEPRIMENODE: value->iValue = here->JFETsourcePrimeNode; return(OK); case JFET_VGS: value->rValue = *(ckt->CKTstate0 + here->JFETvgs); return(OK); case JFET_VGD: value->rValue = *(ckt->CKTstate0 + here->JFETvgd); return(OK); case JFET_CG: value->rValue = *(ckt->CKTstate0 + here->JFETcg); return(OK); case JFET_CD: value->rValue = *(ckt->CKTstate0 + here->JFETcd); return(OK); case JFET_CGD: value->rValue = *(ckt->CKTstate0 + here->JFETcgd); return(OK); case JFET_GM: value->rValue = *(ckt->CKTstate0 + here->JFETgm); return(OK); case JFET_GDS: value->rValue = *(ckt->CKTstate0 + here->JFETgds); return(OK); case JFET_GGS: value->rValue = *(ckt->CKTstate0 + here->JFETggs); return(OK); case JFET_GGD: value->rValue = *(ckt->CKTstate0 + here->JFETggd); return(OK); case JFET_QGS: value->rValue = *(ckt->CKTstate0 + here->JFETqgs); return(OK); case JFET_CQGS: value->rValue = *(ckt->CKTstate0 + here->JFETcqgs); return(OK); case JFET_QGD: value->rValue = *(ckt->CKTstate0 + here->JFETqgd); return(OK); case JFET_CQGD: value->rValue = *(ckt->CKTstate0 + here->JFETcqgd); return(OK); case JFET_CS : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "JFETask"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = -*(ckt->CKTstate0 + here->JFETcd); value->rValue -= *(ckt->CKTstate0 + here->JFETcg); } return(OK); case JFET_POWER : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "JFETask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = *(ckt->CKTstate0 + here->JFETcd) * *(ckt->CKTrhsOld + here->JFETdrainNode); value->rValue += *(ckt->CKTstate0 + here->JFETcg) * *(ckt->CKTrhsOld + here->JFETgateNode); value->rValue -= (*(ckt->CKTstate0 + here->JFETcd) + *(ckt->CKTstate0 + here->JFETcg)) * *(ckt->CKTrhsOld + here->JFETsourceNode); } return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124060700601006440006700000000000011777770500302375100004600000001600spice3c1/spice3/dev/jfet/jfetdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETdelete.c $Revision: 1.4 $ on $Date: 88/07/21 17:40:22 $") int JFETdelete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { JFETmodel *model = (JFETmodel*)inModel; JFETinstance **fast = (JFETinstance**)inst; JFETinstance **prev = NULL; JFETinstance *here; for( ; model ; model = model->JFETnextModel) { prev = &(model->JFETinstances); for(here = *prev; here ; here = *prev) { if(here->JFETname == name || (fast && here==*fast) ) { *prev= here->JFETnextInstance; FREE(here); return(OK); } prev = &(here->JFETnextInstance); } } return(E_NODEV); } 0707070124060700611006440006700000000000011777770500302375100004700000001442spice3c1/spice3/dev/jfet/jfetdestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "jfetdefs.h" #include "suffix.h" RCSID("JFETdestroy.c $Revision: 1.4 $ on $Date: 88/07/21 17:40:23 $") void JFETdestroy(inModel) GENmodel **inModel; { JFETmodel **model = (JFETmodel**)inModel; JFETinstance *here; JFETinstance *prev = NULL; JFETmodel *mod = *model; JFETmodel *oldmod = NULL; for( ; mod ; mod = mod->JFETnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (JFETinstance *)NULL; for(here = mod->JFETinstances ; here ; here = here->JFETnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124060700621006440006700000000000011777770500302375100004500000002121spice3c1/spice3/dev/jfet/jfetgetic.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETgetic.c $Revision: 1.4 $ on $Date: 88/07/21 17:40:24 $") int JFETgetic(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { JFETmodel *model = (JFETmodel*)inModel; JFETinstance *here; /* * grab initial conditions out of rhs array. User specified, so use * external nodes to get values */ for( ; model ; model = model->JFETnextModel) { for(here = model->JFETinstances; here ; here = here->JFETnextInstance) { if(!here->JFETicVDSGiven) { here->JFETicVDS = *(ckt->CKTrhs + here->JFETdrainNode) - *(ckt->CKTrhs + here->JFETsourceNode); } if(!here->JFETicVGSGiven) { here->JFETicVGS = *(ckt->CKTrhs + here->JFETgateNode) - *(ckt->CKTrhs + here->JFETsourceNode); } } } return(OK); } 0707070124060700631006440006700000000000011777770500302375200004400000042225spice3c1/spice3/dev/jfet/jfetload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "util.h" #include "cktdefs.h" #include "jfetdefs.h" #include "const.h" #include "trandefs.h" #include "sperror.h" #include "devdefs.h" #include "suffix.h" RCSID("JFETload.c $Revision: 1.6 $ on $Date: 88/07/21 17:40:25 $") int JFETload(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current resistance value into the * sparse matrix previously provided */ { register JFETmodel *model = (JFETmodel*)inModel; register JFETinstance *here; double beta; double betap; double capgd; double capgs; double cd; double cdhat; double cdrain; double cdreq; double ceq; double ceqgd; double ceqgs; double cg; double cgd; double cghat; double csat; double czgd; double czgdf2; double czgs; double czgsf2; double delvds; double delvgd; double delvgs; double evgd; double evgs; double fcpb2; double gdpr; double gds; double geq; double ggd; double ggs; double gm; double gspr; double sarg; double twob; double twop; double vds; double vgd; double vgdt; double vgs; double vgst; double xfact; int icheck; int ichk1; int error; /* loop through all the models */ for( ; model != NULL; model = model->JFETnextModel ) { /* loop through all the instances of the model */ for (here = model->JFETinstances; here != NULL ; here=here->JFETnextInstance) { /* * dc model parameters */ beta = model->JFETbeta * here->JFETarea; gdpr=model->JFETdrainConduct*here->JFETarea; gspr=model->JFETsourceConduct*here->JFETarea; csat=here->JFETtSatCur*here->JFETarea; /* * initialization */ icheck=1; if( ckt->CKTmode & MODEINITSMSIG) { vgs= *(ckt->CKTstate0 + here->JFETvgs); vgd= *(ckt->CKTstate0 + here->JFETvgd); } else if (ckt->CKTmode & MODEINITTRAN) { vgs= *(ckt->CKTstate1 + here->JFETvgs); vgd= *(ckt->CKTstate1 + here->JFETvgd); } else if ( (ckt->CKTmode & MODEINITJCT) && (ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC) ) { vds=model->JFETtype*here->JFETicVDS; vgs=model->JFETtype*here->JFETicVGS; vgd=vgs-vds; } else if ( (ckt->CKTmode & MODEINITJCT) && (here->JFEToff == 0) ) { vgs = -1; vgd = -1; } else if( (ckt->CKTmode & MODEINITJCT) || ((ckt->CKTmode & MODEINITFIX) && (here->JFEToff))) { vgs = 0; vgd = 0; } else { #ifndef PREDICTOR if(ckt->CKTmode & MODEINITPRED) { xfact=ckt->CKTdelta/ckt->CKTdeltaOld[2]; *(ckt->CKTstate0 + here->JFETvgs)= *(ckt->CKTstate1 + here->JFETvgs); vgs=(1+xfact)* *(ckt->CKTstate1 + here->JFETvgs)-xfact* *(ckt->CKTstate2 + here->JFETvgs); *(ckt->CKTstate0 + here->JFETvgd)= *(ckt->CKTstate1 + here->JFETvgd); vgd=(1+xfact)* *(ckt->CKTstate1 + here->JFETvgd)-xfact* *(ckt->CKTstate2 + here->JFETvgd); *(ckt->CKTstate0 + here->JFETcg)= *(ckt->CKTstate1 + here->JFETcg); *(ckt->CKTstate0 + here->JFETcd)= *(ckt->CKTstate1 + here->JFETcd); *(ckt->CKTstate0 + here->JFETcgd)= *(ckt->CKTstate1 + here->JFETcgd); *(ckt->CKTstate0 + here->JFETgm)= *(ckt->CKTstate1 + here->JFETgm); *(ckt->CKTstate0 + here->JFETgds)= *(ckt->CKTstate1 + here->JFETgds); *(ckt->CKTstate0 + here->JFETggs)= *(ckt->CKTstate1 + here->JFETggs); *(ckt->CKTstate0 + here->JFETggd)= *(ckt->CKTstate1 + here->JFETggd); } else { #endif /*PREDICTOR*/ /* * compute new nonlinear branch voltages */ vgs=model->JFETtype* (*(ckt->CKTrhsOld+ here->JFETgateNode)- *(ckt->CKTrhsOld+ here->JFETsourcePrimeNode)); vgd=model->JFETtype* (*(ckt->CKTrhsOld+here->JFETgateNode)- *(ckt->CKTrhsOld+ here->JFETdrainPrimeNode)); #ifndef PREDICTOR } #endif /*PREDICTOR*/ delvgs=vgs- *(ckt->CKTstate0 + here->JFETvgs); delvgd=vgd- *(ckt->CKTstate0 + here->JFETvgd); delvds=delvgs-delvgd; cghat= *(ckt->CKTstate0 + here->JFETcg)+ *(ckt->CKTstate0 + here->JFETggd)*delvgd+ *(ckt->CKTstate0 + here->JFETggs)*delvgs; cdhat= *(ckt->CKTstate0 + here->JFETcd)+ *(ckt->CKTstate0 + here->JFETgm)*delvgs+ *(ckt->CKTstate0 + here->JFETgds)*delvds- *(ckt->CKTstate0 + here->JFETggd)*delvgd; /* * bypass if solution has not changed */ if((ckt->CKTbypass) && (!(ckt->CKTmode & MODEINITPRED)) && (FABS(delvgs) < ckt->CKTreltol*MAX(FABS(vgs), FABS(*(ckt->CKTstate0 + here->JFETvgs)))+ ckt->CKTvoltTol) ) if ( (FABS(delvgd) < ckt->CKTreltol*MAX(FABS(vgd), FABS(*(ckt->CKTstate0 + here->JFETvgd)))+ ckt->CKTvoltTol)) if ( (FABS(cghat-*(ckt->CKTstate0 + here->JFETcg)) < ckt->CKTreltol*MAX(FABS(cghat), FABS(*(ckt->CKTstate0 + here->JFETcg)))+ ckt->CKTabstol) ) if ( /* hack - expression too big */ (FABS(cdhat-*(ckt->CKTstate0 + here->JFETcd)) < ckt->CKTreltol*MAX(FABS(cdhat), FABS(*(ckt->CKTstate0 + here->JFETcd)))+ ckt->CKTabstol) ) { /* we can do a bypass */ vgs= *(ckt->CKTstate0 + here->JFETvgs); vgd= *(ckt->CKTstate0 + here->JFETvgd); vds= vgs-vgd; cg= *(ckt->CKTstate0 + here->JFETcg); cd= *(ckt->CKTstate0 + here->JFETcd); cgd= *(ckt->CKTstate0 + here->JFETcgd); gm= *(ckt->CKTstate0 + here->JFETgm); gds= *(ckt->CKTstate0 + here->JFETgds); ggs= *(ckt->CKTstate0 + here->JFETggs); ggd= *(ckt->CKTstate0 + here->JFETggd); goto load; } /* * limit nonlinear branch voltages */ ichk1=1; vgs = DEVpnjlim(vgs,*(ckt->CKTstate0 + here->JFETvgs), (here->JFETtemp*CONSTKoverQ), here->JFETvcrit, &icheck); vgd = DEVpnjlim(vgd,*(ckt->CKTstate0 + here->JFETvgd), (here->JFETtemp*CONSTKoverQ), here->JFETvcrit,&ichk1); if (ichk1 == 1) { icheck=1; } vgs = DEVfetlim(vgs,*(ckt->CKTstate0 + here->JFETvgs), model->JFETthreshold); vgd = DEVfetlim(vgd,*(ckt->CKTstate0 + here->JFETvgd), model->JFETthreshold); } /* * determine dc current and derivatives */ vds=vgs-vgd; if (vgs <= -5*here->JFETtemp*CONSTKoverQ) { ggs = -csat/vgs+ckt->CKTgmin; cg = ggs*vgs; } else { evgs = exp(vgs/(here->JFETtemp*CONSTKoverQ)); ggs = csat*evgs/(here->JFETtemp*CONSTKoverQ)+ckt->CKTgmin; cg = csat*(evgs-1)+ckt->CKTgmin*vgs; } if (vgd <= -5*(here->JFETtemp*CONSTKoverQ)) { ggd = -csat/vgd+ckt->CKTgmin; cgd = ggd*vgd; } else { evgd = exp(vgd/(here->JFETtemp*CONSTKoverQ)); ggd = csat*evgd/(here->JFETtemp*CONSTKoverQ)+ckt->CKTgmin; cgd = csat*(evgd-1)+ckt->CKTgmin*vgd; } cg = cg+cgd; /* * compute drain current and derivitives for normal mode */ if (vds >= 0) { vgst=vgs-model->JFETthreshold; /* * normal mode, cutoff region */ if (vgst <= 0) { cdrain=0; gm=0; gds=0; } else { betap=beta*(1+model->JFETlModulation*vds); twob=betap+betap; if (vgst <= vds) { /* * normal mode, saturation region */ cdrain=betap*vgst*vgst; gm=twob*vgst; gds=model->JFETlModulation*beta*vgst*vgst; } else { /* * normal mode, linear region */ cdrain=betap*vds*(vgst+vgst-vds); gm=twob*vds; gds=twob*(vgst-vds)+model->JFETlModulation*beta* vds*(vgst+vgst-vds); } } } else { /* * compute drain current and derivitives for inverse mode */ vgdt=vgd-model->JFETthreshold; if (vgdt <= 0) { /* * inverse mode, cutoff region */ cdrain=0; gm=0; gds=0; } else { /* * inverse mode, saturation region */ betap=beta*(1-model->JFETlModulation*vds); twob=betap+betap; if (vgdt <= -vds) { cdrain = -betap*vgdt*vgdt; gm = -twob*vgdt; gds = model->JFETlModulation*beta*vgdt*vgdt-gm; } else { /* * inverse mode, linear region */ cdrain=betap*vds*(vgdt+vgdt+vds); gm=twob*vds; gds=twob*vgdt-model->JFETlModulation*beta*vds* (vgdt+vgdt+vds); } } } /* * compute equivalent drain current source */ cd=cdrain-cgd; if ( (ckt->CKTmode & (MODETRAN | MODEAC | MODEINITSMSIG) ) || ((ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)) ){ /* * charge storage elements */ czgs=here->JFETtCGS*here->JFETarea; czgd=here->JFETtCGD*here->JFETarea; twop=here->JFETtGatePot+here->JFETtGatePot; fcpb2=here->JFETcorDepCap*here->JFETcorDepCap; czgsf2=czgs/model->JFETf2; czgdf2=czgd/model->JFETf2; if (vgs < here->JFETcorDepCap) { sarg=sqrt(1-vgs/here->JFETtGatePot); *(ckt->CKTstate0 + here->JFETqgs) = twop*czgs*(1-sarg); capgs=czgs/sarg; } else { *(ckt->CKTstate0 + here->JFETqgs) = czgs*here->JFETf1 + czgsf2*(model->JFETf3 *(vgs- here->JFETcorDepCap)+(vgs*vgs-fcpb2)/ (twop+twop)); capgs=czgsf2*(model->JFETf3+vgs/twop); } if (vgd < here->JFETcorDepCap) { sarg=sqrt(1-vgd/here->JFETtGatePot); *(ckt->CKTstate0 + here->JFETqgd) = twop*czgd*(1-sarg); capgd=czgd/sarg; } else { *(ckt->CKTstate0 + here->JFETqgd) = czgd*here->JFETf1+ czgdf2*(model->JFETf3* (vgd- here->JFETcorDepCap)+(vgd*vgd-fcpb2)/ (twop+twop)); capgd=czgdf2*(model->JFETf3+vgd/twop); } /* * store small-signal parameters */ if( (!(ckt->CKTmode & MODETRANOP)) || (!(ckt->CKTmode & MODEUIC)) ) { if(ckt->CKTmode & MODEINITSMSIG) { *(ckt->CKTstate0 + here->JFETqgs) = capgs; *(ckt->CKTstate0 + here->JFETqgd) = capgd; continue; /*go to 1000*/ } /* * transient analysis */ if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->JFETqgs) = *(ckt->CKTstate0 + here->JFETqgs); *(ckt->CKTstate1 + here->JFETqgd) = *(ckt->CKTstate0 + here->JFETqgd); } error = NIintegrate(ckt,&geq,&ceq,capgs,here->JFETqgs); if(error) return(error); ggs = ggs + geq; cg = cg + *(ckt->CKTstate0 + here->JFETcqgs); error = NIintegrate(ckt,&geq,&ceq,capgd,here->JFETqgd); if(error) return(error); ggd = ggd + geq; cg = cg + *(ckt->CKTstate0 + here->JFETcqgd); cd = cd - *(ckt->CKTstate0 + here->JFETcqgd); cgd = cgd + *(ckt->CKTstate0 + here->JFETcqgd); if (ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->JFETcqgs) = *(ckt->CKTstate0 + here->JFETcqgs); *(ckt->CKTstate1 + here->JFETcqgd) = *(ckt->CKTstate0 + here->JFETcqgd); } } } /* * check convergence */ if( (!(ckt->CKTmode & MODEINITFIX)) | (!(ckt->CKTmode & MODEUIC))) { if( (icheck == 1) #ifndef NEWCONV || (FABS(cghat-cg) >= ckt->CKTreltol* MAX(FABS(cghat),FABS(cg))+ckt->CKTabstol) || (FABS(cdhat-cd) > ckt->CKTreltol* MAX(FABS(cdhat),FABS(cd))+ckt->CKTabstol) #endif /*NEWCONV*/ ) { ckt->CKTnoncon++; } } *(ckt->CKTstate0 + here->JFETvgs) = vgs; *(ckt->CKTstate0 + here->JFETvgd) = vgd; *(ckt->CKTstate0 + here->JFETcg) = cg; *(ckt->CKTstate0 + here->JFETcd) = cd; *(ckt->CKTstate0 + here->JFETcgd) = cgd; *(ckt->CKTstate0 + here->JFETgm) = gm; *(ckt->CKTstate0 + here->JFETgds) = gds; *(ckt->CKTstate0 + here->JFETggs) = ggs; *(ckt->CKTstate0 + here->JFETggd) = ggd; /* * load current vector */ load: ceqgd=model->JFETtype*(cgd-ggd*vgd); ceqgs=model->JFETtype*((cg-cgd)-ggs*vgs); cdreq=model->JFETtype*((cd+cgd)-gds*vds-gm*vgs); *(ckt->CKTrhs + here->JFETgateNode) += (-ceqgs-ceqgd); *(ckt->CKTrhs + here->JFETdrainPrimeNode) += (-cdreq+ceqgd); *(ckt->CKTrhs + here->JFETsourcePrimeNode) += (cdreq+ceqgs); /* * load y matrix */ *(here->JFETdrainDrainPrimePtr) += (-gdpr); *(here->JFETgateDrainPrimePtr) += (-ggd); *(here->JFETgateSourcePrimePtr) += (-ggs); *(here->JFETsourceSourcePrimePtr) += (-gspr); *(here->JFETdrainPrimeDrainPtr) += (-gdpr); *(here->JFETdrainPrimeGatePtr) += (gm-ggd); *(here->JFETdrainPrimeSourcePrimePtr) += (-gds-gm); *(here->JFETsourcePrimeGatePtr) += (-ggs-gm); *(here->JFETsourcePrimeSourcePtr) += (-gspr); *(here->JFETsourcePrimeDrainPrimePtr) += (-gds); *(here->JFETdrainDrainPtr) += (gdpr); *(here->JFETgateGatePtr) += (ggd+ggs); *(here->JFETsourceSourcePtr) += (gspr); *(here->JFETdrainPrimeDrainPrimePtr) += (gdpr+gds+ggd); *(here->JFETsourcePrimeSourcePrimePtr) += (gspr+gds+gm+ggs); } } return(OK); } 0707070124060700641006440006700000000000011777770500302375200004400000003627spice3c1/spice3/dev/jfet/jfetmask.c/* * Copyright (c) 1987 Mathew Lew and Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETmAsk.c $Revision: 1.7 $ on $Date: 88/07/25 12:23:51 $") /*ARGSUSED*/ int JFETmAsk(ckt,inModel,which,value) CKTcircuit *ckt; GENmodel *inModel; int which; IFvalue *value; { JFETmodel *model = (JFETmodel*)inModel; switch(which) { case JFET_MOD_TNOM: value->rValue = model->JFETtnom-CONSTCtoK; return(OK); case JFET_MOD_VTO: value->rValue = model->JFETthreshold; return(OK); case JFET_MOD_BETA: value->rValue = model->JFETbeta; return(OK); case JFET_MOD_LAMBDA: value->rValue = model->JFETlModulation; return(OK); case JFET_MOD_RD: value->rValue = model->JFETdrainResist; return(OK); case JFET_MOD_RS: value->rValue = model->JFETsourceResist; return(OK); case JFET_MOD_CGS: value->rValue = model->JFETcapGS; return(OK); case JFET_MOD_CGD: value->rValue = model->JFETcapGD; return(OK); case JFET_MOD_PB: value->rValue = model->JFETgatePotential; return(OK); case JFET_MOD_IS: value->rValue = model->JFETgateSatCurrent; return(OK); case JFET_MOD_FC: value->rValue = model->JFETdepletionCapCoeff; return(OK); case JFET_MOD_DRAINCONDUCT: value->rValue = model->JFETdrainConduct; return(OK); case JFET_MOD_SOURCECONDUCT: value->rValue = model->JFETsourceConduct; return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124060700651006440006700000000000011777770500302375200004700000002013spice3c1/spice3/dev/jfet/jfetmdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETmDelete.c $Revision: 1.4 $ on $Date: 88/07/21 17:40:30 $") int JFETmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { JFETmodel **model = (JFETmodel**)inModel; JFETmodel *modfast = (JFETmodel*)kill; JFETinstance *here; JFETinstance *prev = NULL; JFETmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->JFETnextModel)) { if( (*model)->JFETmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->JFETnextModel; /* cut deleted device out of list */ for(here = (*model)->JFETinstances ; here ; here = here->JFETnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124060700661006440006700000000000011777770500302375200004600000004466spice3c1/spice3/dev/jfet/jfetmparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "util.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETmParam.c $Revision: 1.7 $ on $Date: 89/01/19 16:37:20 $") int JFETmParam(param,value,inModels) int param; IFvalue *value; GENmodel *inModels; { JFETmodel *model = (JFETmodel*)inModels; switch(param) { case JFET_MOD_TNOM: model->JFETtnomGiven = TRUE+CONSTCtoK; model->JFETtnom = value->rValue; break; case JFET_MOD_VTO: model->JFETthresholdGiven = TRUE; model->JFETthreshold = value->rValue; break; case JFET_MOD_BETA: model->JFETbetaGiven = TRUE; model->JFETbeta = value->rValue; break; case JFET_MOD_LAMBDA: model->JFETlModulationGiven = TRUE; model->JFETlModulation = value->rValue; break; case JFET_MOD_RD: model->JFETdrainResistGiven = TRUE; model->JFETdrainResist = value->rValue; break; case JFET_MOD_RS: model->JFETsourceResistGiven = TRUE; model->JFETsourceResist = value->rValue; break; case JFET_MOD_CGS: model->JFETcapGSGiven = TRUE; model->JFETcapGS = value->rValue; break; case JFET_MOD_CGD: model->JFETcapGDGiven = TRUE; model->JFETcapGD = value->rValue; break; case JFET_MOD_PB: model->JFETgatePotentialGiven = TRUE; model->JFETgatePotential = value->rValue; break; case JFET_MOD_IS: model->JFETgateSatCurrentGiven = TRUE; model->JFETgateSatCurrent = value->rValue; break; case JFET_MOD_FC: model->JFETdepletionCapCoeffGiven = TRUE; model->JFETdepletionCapCoeff = value->rValue; break; case JFET_MOD_NJF: if(value->iValue) { model->JFETtype = NJF; } break; case JFET_MOD_PJF: if(value->iValue) { model->JFETtype = PJF; } break; default: return(E_BADPARM); } return(OK); } 0707070124060700671006440006700000000000011777770500302375200004500000003117spice3c1/spice3/dev/jfet/jfetparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "util.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETparam.c $Revision: 1.8 $ on $Date: 89/01/19 16:37:12 $") /* ARGSUSED */ int JFETparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { JFETinstance *here = (JFETinstance *)inst; switch(param) { case JFET_TEMP: here->JFETtemp = value->rValue+CONSTCtoK; here->JFETtempGiven = TRUE; break; case JFET_AREA: here->JFETarea = value->rValue; here->JFETareaGiven = TRUE; break; case JFET_IC_VDS: here->JFETicVDS = value->rValue; here->JFETicVDSGiven = TRUE; break; case JFET_IC_VGS: here->JFETicVGS = value->rValue; here->JFETicVGSGiven = TRUE; break; case JFET_OFF: here->JFEToff = value->iValue; break; case JFET_IC: switch(value->v.numValue) { case 2: here->JFETicVGS = *(value->v.vec.rVec+1); here->JFETicVGSGiven = TRUE; case 1: here->JFETicVDS = *(value->v.vec.rVec); here->JFETicVDSGiven = TRUE; break; default: return(E_BADPARM); } break; default: return(E_BADPARM); } return(OK); } 0707070124060700701006440006700000000000011777770500302375200004600000005712spice3c1/spice3/dev/jfet/jfetpzload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "complex.h" #include "sperror.h" #include "jfetdefs.h" #include "suffix.h" RCSID("JFETpzLoad.c $Revision: 1.5 $ on $Date: 88/07/26 11:26:39 $") int JFETpzLoad(inModel,ckt,s) GENmodel *inModel; register CKTcircuit *ckt; register SPcomplex *s; { register JFETmodel *model = (JFETmodel*)inModel; register JFETinstance *here; double gdpr; double gspr; double gm; double gds; double ggs; double xgs; double ggd; double xgd; for( ; model != NULL; model = model->JFETnextModel ) { for( here = model->JFETinstances; here != NULL; here = here->JFETnextInstance) { gdpr=model->JFETdrainResist * here->JFETarea; gspr=model->JFETsourceResist * here->JFETarea; gm= *(ckt->CKTstate0 + here->JFETgm) ; gds= *(ckt->CKTstate0 + here->JFETgds) ; ggs= *(ckt->CKTstate0 + here->JFETggs) ; xgs= *(ckt->CKTstate0 + here->JFETqgs) ; ggd= *(ckt->CKTstate0 + here->JFETggd) ; xgd= *(ckt->CKTstate0 + here->JFETqgd) ; *(here->JFETdrainDrainPtr ) += gdpr; *(here->JFETgateGatePtr ) += ggd+ggs; *(here->JFETgateGatePtr ) += (xgd+xgs) * s->real; *(here->JFETgateGatePtr +1) += (xgd+xgs) * s->imag; *(here->JFETsourceSourcePtr ) += gspr; *(here->JFETdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd; *(here->JFETdrainPrimeDrainPrimePtr ) += xgd * s->real; *(here->JFETdrainPrimeDrainPrimePtr +1) += xgd * s->imag; *(here->JFETsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs; *(here->JFETsourcePrimeSourcePrimePtr ) += xgs * s->real; *(here->JFETsourcePrimeSourcePrimePtr +1) += xgs * s->imag; *(here->JFETdrainDrainPrimePtr ) -= gdpr; *(here->JFETgateDrainPrimePtr ) -= ggd; *(here->JFETgateDrainPrimePtr ) -= xgd * s->real; *(here->JFETgateDrainPrimePtr +1) -= xgd * s->imag; *(here->JFETgateSourcePrimePtr ) -= ggs; *(here->JFETgateSourcePrimePtr ) -= xgs * s->real; *(here->JFETgateSourcePrimePtr +1) -= xgs * s->imag; *(here->JFETsourceSourcePrimePtr ) -= gspr; *(here->JFETdrainPrimeDrainPtr ) -= gdpr; *(here->JFETdrainPrimeGatePtr ) += (-ggd+gm); *(here->JFETdrainPrimeGatePtr ) -= xgd * s->real; *(here->JFETdrainPrimeGatePtr +1) -= xgd * s->imag; *(here->JFETdrainPrimeSourcePrimePtr ) += (-gds-gm); *(here->JFETsourcePrimeGatePtr ) += (-ggs-gm); *(here->JFETsourcePrimeGatePtr ) -= xgs * s->real; *(here->JFETsourcePrimeGatePtr +1) -= xgs * s->imag; *(here->JFETsourcePrimeSourcePtr ) -= gspr; *(here->JFETsourcePrimeDrainPrimePtr ) -= gds; } } return(OK); } 0707070124060700711006440006700000000000011777770500302375300004500000011235spice3c1/spice3/dev/jfet/jfetsetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "jfetdefs.h" #include "const.h" #include #include "sperror.h" #include "suffix.h" RCSID("JFETsetup.c $Revision: 1.5 $ on $Date: 88/07/21 17:40:39 $") int JFETsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; CKTcircuit *ckt; int *states; /* load the diode structure with those pointers needed later * for fast matrix loading */ { register JFETmodel *model = (JFETmodel*)inModel; register JFETinstance *here; int error; CKTnode *tmp; /* loop through all the diode models */ for( ; model != NULL; model = model->JFETnextModel ) { if( (model->JFETtype != NJF) && (model->JFETtype != PJF) ) { model->JFETtype = NJF; } if(!model->JFETthresholdGiven) { model->JFETthreshold = -2; } if(!model->JFETbetaGiven) { model->JFETbeta = 1e-4; } if(!model->JFETlModulationGiven) { model->JFETlModulation = 0; } if(!model->JFETdrainResistGiven) { model->JFETdrainResist = 0; } if(!model->JFETsourceResistGiven) { model->JFETsourceResist = 0; } if(!model->JFETcapGSGiven) { model->JFETcapGS = 0; } if(!model->JFETcapGDGiven) { model->JFETcapGD = 0; } if(!model->JFETgatePotentialGiven) { model->JFETgatePotential = 1; } if(!model->JFETgateSatCurrentGiven) { model->JFETgateSatCurrent = 1e-14; } if(!model->JFETdepletionCapCoeffGiven) { model->JFETdepletionCapCoeff = .5; } if(model->JFETdrainResist != 0) { model->JFETdrainConduct = 1/model->JFETdrainResist; } else { model->JFETdrainConduct = 0; } if(model->JFETsourceResist != 0) { model->JFETsourceConduct = 1/model->JFETsourceResist; } else { model->JFETsourceConduct = 0; } /* loop through all the instances of the model */ for (here = model->JFETinstances; here != NULL ; here=here->JFETnextInstance) { if(!here->JFETareaGiven) { here->JFETarea = 1; } here->JFETstate = *states; *states += 13; if(model->JFETsourceResist != 0 && here->JFETsourcePrimeNode==0) { error = CKTmkVolt(ckt,&tmp,here->JFETname,"source"); if(error) return(error); here->JFETsourcePrimeNode = tmp->number; } else { here->JFETsourcePrimeNode = here->JFETsourceNode; } if(model->JFETdrainResist != 0 && here->JFETdrainPrimeNode==0) { error = CKTmkVolt(ckt,&tmp,here->JFETname,"drain"); if(error) return(error); here->JFETdrainPrimeNode = tmp->number; } else { here->JFETdrainPrimeNode = here->JFETdrainNode; } /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(JFETdrainDrainPrimePtr,JFETdrainNode,JFETdrainPrimeNode) TSTALLOC(JFETgateDrainPrimePtr,JFETgateNode,JFETdrainPrimeNode) TSTALLOC(JFETgateSourcePrimePtr,JFETgateNode,JFETsourcePrimeNode) TSTALLOC(JFETsourceSourcePrimePtr,JFETsourceNode, JFETsourcePrimeNode) TSTALLOC(JFETdrainPrimeDrainPtr,JFETdrainPrimeNode,JFETdrainNode) TSTALLOC(JFETdrainPrimeGatePtr,JFETdrainPrimeNode,JFETgateNode) TSTALLOC(JFETdrainPrimeSourcePrimePtr,JFETdrainPrimeNode, JFETsourcePrimeNode) TSTALLOC(JFETsourcePrimeGatePtr,JFETsourcePrimeNode,JFETgateNode) TSTALLOC(JFETsourcePrimeSourcePtr,JFETsourcePrimeNode, JFETsourceNode) TSTALLOC(JFETsourcePrimeDrainPrimePtr,JFETsourcePrimeNode, JFETdrainPrimeNode) TSTALLOC(JFETdrainDrainPtr,JFETdrainNode,JFETdrainNode) TSTALLOC(JFETgateGatePtr,JFETgateNode,JFETgateNode) TSTALLOC(JFETsourceSourcePtr,JFETsourceNode,JFETsourceNode) TSTALLOC(JFETdrainPrimeDrainPrimePtr,JFETdrainPrimeNode, JFETdrainPrimeNode) TSTALLOC(JFETsourcePrimeSourcePrimePtr,JFETsourcePrimeNode, JFETsourcePrimeNode) } } return(OK); } 0707070124060700721006440006700000000000011777770500302375300004400000007336spice3c1/spice3/dev/jfet/jfettemp.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "jfetdefs.h" #include "const.h" #include #include "sperror.h" #include "suffix.h" RCSID("JFETtemp.c $Revision: 1.4 $ on $Date: 88/07/21 17:45:35 $") int JFETtemp(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* Pre-process the model parameters after a possible change */ { register JFETmodel *model = (JFETmodel*)inModel; register JFETinstance *here; double xfc; double vt; double vtnom; double kt,kt1; double arg,arg1; double fact1,fact2; double egfet,egfet1; double pbfact,pbfact1; double gmanew,gmaold; double ratio1; double pbo; double cjfact,cjfact1; /* loop through all the diode models */ for( ; model != NULL; model = model->JFETnextModel ) { if(!(model->JFETtnomGiven)) { model->JFETtnom = ckt->CKTnomTemp; } vtnom = CONSTKoverQ * model->JFETtnom; fact1 = model->JFETtnom/REFTEMP; kt1 = CONSTboltz * model->JFETtnom; egfet1 = 1.16-(7.02e-4*model->JFETtnom*model->JFETtnom)/ (model->JFETtnom+1108); arg1 = -egfet1/(kt1+kt1)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact1 = -2*vtnom * (1.5*log(fact1)+CHARGE*arg1); pbo = (model->JFETgatePotential-pbfact1)/fact1; gmaold = (model->JFETgatePotential-pbo)/pbo; cjfact = 1/(1+.5*(4e-4*(model->JFETtnom-REFTEMP)-gmaold)); if(model->JFETdrainResist != 0) { model->JFETdrainConduct = 1/model->JFETdrainResist; } else { model->JFETdrainConduct = 0; } if(model->JFETsourceResist != 0) { model->JFETsourceConduct = 1/model->JFETsourceResist; } else { model->JFETsourceConduct = 0; } if(model->JFETdepletionCapCoeff >.95) { (*(SPfrontEnd->IFerror))(ERR_WARNING, "%s: Depletion cap. coefficient too large, limited to .95", &(model->JFETmodName)); model->JFETdepletionCapCoeff = .95; } xfc = log(1 - model->JFETdepletionCapCoeff); model->JFETf2 = exp((1+.5)*xfc); model->JFETf3 = 1 - model->JFETdepletionCapCoeff * (1 + .5); /* loop through all the instances of the model */ for (here = model->JFETinstances; here != NULL ; here=here->JFETnextInstance) { if(!(here->JFETtempGiven)) { here->JFETtemp = ckt->CKTtemp; } vt = here->JFETtemp * CONSTKoverQ; fact2 = here->JFETtemp/REFTEMP; ratio1 = here->JFETtemp/model->JFETtnom -1; here->JFETtSatCur = model->JFETgateSatCurrent * exp(ratio1*1.11/vt); here->JFETtCGS = model->JFETcapGS * cjfact; here->JFETtCGD = model->JFETcapGD * cjfact; kt = CONSTboltz*here->JFETtemp; egfet = 1.16-(7.02e-4*here->JFETtemp*here->JFETtemp)/ (here->JFETtemp+1108); arg = -egfet/(kt+kt) + 1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact = -2 * vt * (1.5*log(fact2)+CHARGE*arg); here->JFETtGatePot = fact2 * pbo + pbfact; gmanew = (here->JFETtGatePot-pbo)/pbo; cjfact1 = 1+.5*(4e-4*(here->JFETtemp-REFTEMP)-gmanew); here->JFETtCGS *= cjfact1; here->JFETtCGD *= cjfact1; here->JFETcorDepCap = model->JFETdepletionCapCoeff * here->JFETtGatePot; here->JFETf1 = here->JFETtGatePot * (1 - exp((1-.5)*xfc))/(1-.5); here->JFETvcrit = vt * log(vt/(CONSTroot2 * here->JFETtSatCur)); } } return(OK); } 0707070124060700731006440006700000000000011777770500302375300004500000001310spice3c1/spice3/dev/jfet/jfettrunc.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "jfetdefs.h" #include "sperror.h" #include "suffix.h" RCSID("JFETtrunc.c $Revision: 1.4 $ on $Date: 88/07/21 17:40:44 $") int JFETtrunc(inModel,ckt,timeStep) GENmodel *inModel; register CKTcircuit *ckt; double *timeStep; { register JFETmodel *model = (JFETmodel*)inModel; register JFETinstance *here; for( ; model != NULL; model = model->JFETnextModel) { for(here=model->JFETinstances;here!=NULL;here = here->JFETnextInstance){ CKTterr(here->JFETqgs,ckt,timeStep); CKTterr(here->JFETqgd,ckt,timeStep); } } return(OK); } 0707070124060700741006440006700000000000011777770500302375300004200000030214spice3c1/spice3/dev/jfet/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ jfet.c\ jfetask.c\ jfetacload.c\ jfetdelete.c\ jfetdestroy.c\ jfetgetic.c\ jfetload.c\ jfetmask.c\ jfetmdelete.c\ jfetmparam.c\ jfetparam.c\ jfetpzload.c\ jfetsetup.c\ jfettemp.c\ jfettrunc.c COBJS = \ jfet.o\ jfetask.o\ jfetacload.o\ jfetdelete.o\ jfetdestroy.o\ jfetgetic.o\ jfetload.o\ jfetmask.o\ jfetmdelete.o\ jfetmparam.o\ jfetparam.o\ jfetpzload.o\ jfetsetup.o\ jfettemp.o\ jfettrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG= CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-ljfet.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cjfet ${LINTFLAGS} ${CFILES} mv llib-ljfet.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE jfet.o: ../../include/acdefs.h jfet.o: ../../include/cktdefs.h jfet.o: ../../include/devdefs.h jfet.o: ../../include/gendefs.h jfet.o: ../../include/ifsim.h jfet.o: ../../include/jfetdefs.h jfet.o: ../../include/jobdefs.h jfet.o: ../../include/optdefs.h jfet.o: ../../include/pzdefs.h jfet.o: ../../include/sendefs.h jfet.o: ../../include/smpdefs.h jfet.o: ../../include/trcvdefs.h jfet.o: ../../include/tskdefs.h jfet.o: ../../include/complex.h jfet.o: ../../include/prefix.h jfet.o: ../../include/suffix.h jfetask.o: ../../include/acdefs.h jfetask.o: ../../include/cktdefs.h jfetask.o: ../../include/const.h jfetask.o: ../../include/devdefs.h jfetask.o: ../../include/gendefs.h jfetask.o: ../../include/iferrmsgs.h jfetask.o: ../../include/ifsim.h jfetask.o: ../../include/jfetdefs.h jfetask.o: ../../include/jobdefs.h jfetask.o: ../../include/optdefs.h jfetask.o: ../../include/pzdefs.h jfetask.o: ../../include/sendefs.h jfetask.o: ../../include/smpdefs.h jfetask.o: ../../include/sperror.h jfetask.o: ../../include/trcvdefs.h jfetask.o: ../../include/tskdefs.h jfetask.o: ../../include/complex.h jfetask.o: ../../include/prefix.h jfetask.o: ../../include/suffix.h jfetask.o: ../../include/util.h jfetacload.o: ../../include/acdefs.h jfetacload.o: ../../include/cktdefs.h jfetacload.o: ../../include/gendefs.h jfetacload.o: ../../include/iferrmsgs.h jfetacload.o: ../../include/ifsim.h jfetacload.o: ../../include/jfetdefs.h jfetacload.o: ../../include/jobdefs.h jfetacload.o: ../../include/optdefs.h jfetacload.o: ../../include/pzdefs.h jfetacload.o: ../../include/sendefs.h jfetacload.o: ../../include/smpdefs.h jfetacload.o: ../../include/sperror.h jfetacload.o: ../../include/trcvdefs.h jfetacload.o: ../../include/tskdefs.h jfetacload.o: ../../include/complex.h jfetacload.o: ../../include/prefix.h jfetacload.o: ../../include/suffix.h jfetacload.o: ../../include/util.h jfetdelete.o: ../../include/acdefs.h jfetdelete.o: ../../include/cktdefs.h jfetdelete.o: ../../include/gendefs.h jfetdelete.o: ../../include/iferrmsgs.h jfetdelete.o: ../../include/ifsim.h jfetdelete.o: ../../include/jfetdefs.h jfetdelete.o: ../../include/jobdefs.h jfetdelete.o: ../../include/optdefs.h jfetdelete.o: ../../include/pzdefs.h jfetdelete.o: ../../include/sendefs.h jfetdelete.o: ../../include/smpdefs.h jfetdelete.o: ../../include/sperror.h jfetdelete.o: ../../include/trcvdefs.h jfetdelete.o: ../../include/tskdefs.h jfetdelete.o: ../../include/complex.h jfetdelete.o: ../../include/prefix.h jfetdelete.o: ../../include/suffix.h jfetdelete.o: ../../include/util.h jfetdestroy.o: ../../include/acdefs.h jfetdestroy.o: ../../include/cktdefs.h jfetdestroy.o: ../../include/gendefs.h jfetdestroy.o: ../../include/ifsim.h jfetdestroy.o: ../../include/jfetdefs.h jfetdestroy.o: ../../include/jobdefs.h jfetdestroy.o: ../../include/optdefs.h jfetdestroy.o: ../../include/pzdefs.h jfetdestroy.o: ../../include/sendefs.h jfetdestroy.o: ../../include/smpdefs.h jfetdestroy.o: ../../include/trcvdefs.h jfetdestroy.o: ../../include/tskdefs.h jfetdestroy.o: ../../include/complex.h jfetdestroy.o: ../../include/prefix.h jfetdestroy.o: ../../include/suffix.h jfetdestroy.o: ../../include/util.h jfetgetic.o: ../../include/acdefs.h jfetgetic.o: ../../include/cktdefs.h jfetgetic.o: ../../include/gendefs.h jfetgetic.o: ../../include/iferrmsgs.h jfetgetic.o: ../../include/ifsim.h jfetgetic.o: ../../include/jfetdefs.h jfetgetic.o: ../../include/jobdefs.h jfetgetic.o: ../../include/optdefs.h jfetgetic.o: ../../include/pzdefs.h jfetgetic.o: ../../include/sendefs.h jfetgetic.o: ../../include/smpdefs.h jfetgetic.o: ../../include/sperror.h jfetgetic.o: ../../include/trcvdefs.h jfetgetic.o: ../../include/tskdefs.h jfetgetic.o: ../../include/complex.h jfetgetic.o: ../../include/prefix.h jfetgetic.o: ../../include/suffix.h jfetload.o: ../../include/acdefs.h jfetload.o: ../../include/cktdefs.h jfetload.o: ../../include/const.h jfetload.o: ../../include/devdefs.h jfetload.o: ../../include/gendefs.h jfetload.o: ../../include/iferrmsgs.h jfetload.o: ../../include/ifsim.h jfetload.o: ../../include/jfetdefs.h jfetload.o: ../../include/jobdefs.h jfetload.o: ../../include/optdefs.h jfetload.o: ../../include/pzdefs.h jfetload.o: ../../include/sendefs.h jfetload.o: ../../include/smpdefs.h jfetload.o: ../../include/sperror.h jfetload.o: ../../include/trandefs.h jfetload.o: ../../include/trcvdefs.h jfetload.o: ../../include/tskdefs.h jfetload.o: ../../include/complex.h jfetload.o: ../../include/prefix.h jfetload.o: ../../include/suffix.h jfetload.o: ../../include/util.h jfetmask.o: ../../include/acdefs.h jfetmask.o: ../../include/cktdefs.h jfetmask.o: ../../include/const.h jfetmask.o: ../../include/devdefs.h jfetmask.o: ../../include/gendefs.h jfetmask.o: ../../include/iferrmsgs.h jfetmask.o: ../../include/ifsim.h jfetmask.o: ../../include/jfetdefs.h jfetmask.o: ../../include/jobdefs.h jfetmask.o: ../../include/optdefs.h jfetmask.o: ../../include/pzdefs.h jfetmask.o: ../../include/sendefs.h jfetmask.o: ../../include/smpdefs.h jfetmask.o: ../../include/sperror.h jfetmask.o: ../../include/trcvdefs.h jfetmask.o: ../../include/tskdefs.h jfetmask.o: ../../include/complex.h jfetmask.o: ../../include/prefix.h jfetmask.o: ../../include/suffix.h jfetmdelete.o: ../../include/acdefs.h jfetmdelete.o: ../../include/cktdefs.h jfetmdelete.o: ../../include/gendefs.h jfetmdelete.o: ../../include/iferrmsgs.h jfetmdelete.o: ../../include/ifsim.h jfetmdelete.o: ../../include/jfetdefs.h jfetmdelete.o: ../../include/jobdefs.h jfetmdelete.o: ../../include/optdefs.h jfetmdelete.o: ../../include/pzdefs.h jfetmdelete.o: ../../include/sendefs.h jfetmdelete.o: ../../include/smpdefs.h jfetmdelete.o: ../../include/sperror.h jfetmdelete.o: ../../include/trcvdefs.h jfetmdelete.o: ../../include/tskdefs.h jfetmdelete.o: ../../include/complex.h jfetmdelete.o: ../../include/prefix.h jfetmdelete.o: ../../include/suffix.h jfetmdelete.o: ../../include/util.h jfetmparam.o: ../../include/acdefs.h jfetmparam.o: ../../include/cktdefs.h jfetmparam.o: ../../include/const.h jfetmparam.o: ../../include/gendefs.h jfetmparam.o: ../../include/iferrmsgs.h jfetmparam.o: ../../include/ifsim.h jfetmparam.o: ../../include/jfetdefs.h jfetmparam.o: ../../include/jobdefs.h jfetmparam.o: ../../include/optdefs.h jfetmparam.o: ../../include/pzdefs.h jfetmparam.o: ../../include/sendefs.h jfetmparam.o: ../../include/smpdefs.h jfetmparam.o: ../../include/sperror.h jfetmparam.o: ../../include/trcvdefs.h jfetmparam.o: ../../include/tskdefs.h jfetmparam.o: ../../include/complex.h jfetmparam.o: ../../include/prefix.h jfetmparam.o: ../../include/suffix.h jfetmparam.o: ../../include/util.h jfetparam.o: ../../include/acdefs.h jfetparam.o: ../../include/cktdefs.h jfetparam.o: ../../include/const.h jfetparam.o: ../../include/gendefs.h jfetparam.o: ../../include/iferrmsgs.h jfetparam.o: ../../include/ifsim.h jfetparam.o: ../../include/jfetdefs.h jfetparam.o: ../../include/jobdefs.h jfetparam.o: ../../include/optdefs.h jfetparam.o: ../../include/pzdefs.h jfetparam.o: ../../include/sendefs.h jfetparam.o: ../../include/smpdefs.h jfetparam.o: ../../include/sperror.h jfetparam.o: ../../include/trcvdefs.h jfetparam.o: ../../include/tskdefs.h jfetparam.o: ../../include/complex.h jfetparam.o: ../../include/prefix.h jfetparam.o: ../../include/suffix.h jfetparam.o: ../../include/util.h jfetpzload.o: ../../include/acdefs.h jfetpzload.o: ../../include/cktdefs.h jfetpzload.o: ../../include/gendefs.h jfetpzload.o: ../../include/iferrmsgs.h jfetpzload.o: ../../include/ifsim.h jfetpzload.o: ../../include/jfetdefs.h jfetpzload.o: ../../include/jobdefs.h jfetpzload.o: ../../include/optdefs.h jfetpzload.o: ../../include/pzdefs.h jfetpzload.o: ../../include/sendefs.h jfetpzload.o: ../../include/smpdefs.h jfetpzload.o: ../../include/sperror.h jfetpzload.o: ../../include/trcvdefs.h jfetpzload.o: ../../include/tskdefs.h jfetpzload.o: ../../include/complex.h jfetpzload.o: ../../include/prefix.h jfetpzload.o: ../../include/suffix.h jfetsetup.o: ../../include/acdefs.h jfetsetup.o: ../../include/cktdefs.h jfetsetup.o: ../../include/const.h jfetsetup.o: ../../include/gendefs.h jfetsetup.o: ../../include/iferrmsgs.h jfetsetup.o: ../../include/ifsim.h jfetsetup.o: ../../include/jfetdefs.h jfetsetup.o: ../../include/jobdefs.h jfetsetup.o: ../../include/optdefs.h jfetsetup.o: ../../include/pzdefs.h jfetsetup.o: ../../include/sendefs.h jfetsetup.o: ../../include/smpdefs.h jfetsetup.o: ../../include/sperror.h jfetsetup.o: ../../include/trcvdefs.h jfetsetup.o: ../../include/tskdefs.h jfetsetup.o: ../../include/complex.h jfetsetup.o: ../../include/prefix.h jfetsetup.o: ../../include/suffix.h jfetsetup.o: ../../include/util.h jfettemp.o: ../../include/acdefs.h jfettemp.o: ../../include/cktdefs.h jfettemp.o: ../../include/const.h jfettemp.o: ../../include/gendefs.h jfettemp.o: ../../include/iferrmsgs.h jfettemp.o: ../../include/ifsim.h jfettemp.o: ../../include/jfetdefs.h jfettemp.o: ../../include/jobdefs.h jfettemp.o: ../../include/optdefs.h jfettemp.o: ../../include/pzdefs.h jfettemp.o: ../../include/sendefs.h jfettemp.o: ../../include/smpdefs.h jfettemp.o: ../../include/sperror.h jfettemp.o: ../../include/trcvdefs.h jfettemp.o: ../../include/tskdefs.h jfettemp.o: ../../include/complex.h jfettemp.o: ../../include/prefix.h jfettemp.o: ../../include/suffix.h jfettemp.o: ../../include/util.h jfettrunc.o: ../../include/acdefs.h jfettrunc.o: ../../include/cktdefs.h jfettrunc.o: ../../include/gendefs.h jfettrunc.o: ../../include/iferrmsgs.h jfettrunc.o: ../../include/ifsim.h jfettrunc.o: ../../include/jfetdefs.h jfettrunc.o: ../../include/jobdefs.h jfettrunc.o: ../../include/optdefs.h jfettrunc.o: ../../include/pzdefs.h jfettrunc.o: ../../include/sendefs.h jfettrunc.o: ../../include/smpdefs.h jfettrunc.o: ../../include/sperror.h jfettrunc.o: ../../include/trcvdefs.h jfettrunc.o: ../../include/tskdefs.h jfettrunc.o: ../../include/complex.h jfettrunc.o: ../../include/prefix.h jfettrunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124060700751006440006700000000000011777770500302375300004300000001472spice3c1/spice3/dev/jfet/msc51.batcl /I..\..\include\ /c JFET.c >> ..\..\errs.out cl /I..\..\include\ /c JFETacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c JFETask.c >> ..\..\errs.out cl /I..\..\include\ /c JFETdelete.c >> ..\..\errs.out cl /I..\..\include\ /c JFETdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c JFETgetic.c >> ..\..\errs.out cl /I..\..\include\ /c JFETload.c >> ..\..\errs.out cl /I..\..\include\ /c JFETmAsk.c >> ..\..\errs.out cl /I..\..\include\ /c JFETmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c JFETmParam.c >> ..\..\errs.out cl /I..\..\include\ /c JFETparam.c >> ..\..\errs.out cl /I..\..\include\ /c JFETpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c JFETsetup.c >> ..\..\errs.out cl /I..\..\include\ /c JFETtemp.c >> ..\..\errs.out cl /I..\..\include\ /c JFETtrunc.c >> ..\..\errs.out lib ..\..\DEV2.lib @RESPONSE.LIB 0707070124060700761006440006700000000000011777770500302375400004600000000334spice3c1/spice3/dev/jfet/response.lib+JFET.OBJ& +JFETACLO.OBJ& +JFETASK.OBJ& +JFETDELE.OBJ& +JFETDEST.OBJ& +JFETGETI.OBJ& +JFETLOAD.OBJ& +JFETMASK.OBJ& +JFETMDEL.OBJ& +JFETMPAR.OBJ& +JFETPARA.OBJ& +JFETPZLO.OBJ& +JFETSETU.OBJ& +JFETTEMP.OBJ& +JFETTRUN.OBJ; 0707070124060700771006440006700000000000011777770500302375400004200000001162spice3c1/spice3/dev/jfet/make.com$ cc /nowarn JFET $ cc /nowarn JFETacLoad $ cc /nowarn JFETask $ cc /nowarn JFETdelete $ cc /nowarn JFETdestroy $ cc /nowarn JFETgetic $ cc /nowarn JFETload $ cc /nowarn JFETmAsk $ cc /nowarn JFETmDelete $ cc /nowarn JFETmParam $ cc /nowarn JFETparam $ cc /nowarn JFETpzLoad $ cc /nowarn JFETsetup $ cc /nowarn JFETtemp $ cc /nowarn JFETtrunc $ library/object [-.-]DEV.olb - JFET.obj, - JFETacLoad.obj, - JFETask.obj, - JFETdelete.obj, - JFETdestroy.obj, - JFETgetic.obj, - JFETload.obj, - JFETmAsk.obj, - JFETmDelete.obj, - JFETmParam.obj, - JFETparam.obj, - JFETpzLoad.obj, - JFETsetup.obj, - JFETtemp.obj, - JFETtrunc.obj 0707070124060700540407550006700000000000021777770500302375400003100000000000spice3c1/spice3/dev/jfet0707070124060741011006440006700000000000011777770500302375400003600000007730spice3c1/spice3/dev/mes/mes.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #include "devdefs.h" #include "mesdefs.h" #include "suffix.h" RCSID("MES.c $Revision: 1.10 $ on $Date: 89/03/07 11:31:44 $") static IFparm MESpTable[] = { /* parameters */ OP("off", MES_OFF, IF_FLAG ,"Device initially off"), IOP("area", MES_AREA, IF_REAL ,"Area factor"), IOP("icvds", MES_IC_VDS, IF_REAL ,"Initial D-S voltage"), IOP("icvgs", MES_IC_VGS, IF_REAL ,"Initial G-S voltage"), OP("dnode", MES_DRAINNODE, IF_INTEGER,"Number of drain node"), OP("gnode", MES_GATENODE, IF_INTEGER,"Number of gate node"), OP("snode", MES_SOURCENODE, IF_INTEGER,"Number of source node"), OP("dprimenode",MES_DRAINPRIMENODE,IF_INTEGER,"Number of internal drain node"), OP("sprimenode",MES_SOURCEPRIMENODE,IF_INTEGER, "Number of internal source node"), OP("vgs", MES_VGS, IF_REAL,"Gate-Source voltage"), OP("vgd", MES_VGD, IF_REAL,"Gate-Drain voltage"), OP("cg", MES_CG, IF_REAL,"Gate capacitance"), OP("cd", MES_CD, IF_REAL,"Drain capacitance"), OP("cgd", MES_CGD, IF_REAL,"Gate_Drain capacitance"), OP("gm", MES_GM, IF_REAL,"Transconductance"), OP("gds", MES_GDS, IF_REAL,"Drain-Source conductance"), OP("ggs", MES_GGS, IF_REAL,"Gate-Source conductance"), OP("ggd", MES_GGD, IF_REAL,"Gate-Drain conductance"), OP("qgs", MES_QGS, IF_REAL,"Gate-Source charge storage"), OP("cqgs", MES_CQGS, IF_REAL,"Capacitance due to gate-source charge storage"), OP("qgd", MES_QGD, IF_REAL,"Gate-Drain charge storage"), OP("cqgd", MES_CQGD, IF_REAL,"Capacitance due to gate-drain charge storage"), OP("cs", MES_CS, IF_REAL ,"Source current"), OP("p", MES_POWER, IF_REAL ,"Power dissipated by the mesfet") }; static IFparm MESmPTable[] = { /* model parameters */ IOP( "vt0", MES_MOD_VTO, IF_REAL,"Pinch-off voltage"), IOP( "vto", MES_MOD_VTO, IF_REAL,"Pinch-off voltage"), IOP( "alpha", MES_MOD_ALPHA, IF_REAL,"Saturation voltage parameter"), IOP( "beta", MES_MOD_BETA, IF_REAL,"Transconductance parameter"), IOP( "lambda", MES_MOD_LAMBDA, IF_REAL,"Channel length modulation parm."), IOP( "b", MES_MOD_B, IF_REAL,"Doping tail extending parameter"), IOP( "rd", MES_MOD_RD, IF_REAL,"Drain ohmic resistance"), IOP( "rs", MES_MOD_RS, IF_REAL,"Source ohmic resistance"), IOP( "cgs", MES_MOD_CGS, IF_REAL,"G-S junction capacitance"), IOP( "cgd", MES_MOD_CGD, IF_REAL,"G-D junction capacitance"), IOP( "pb", MES_MOD_PB, IF_REAL,"Gate junction potential"), IOP( "is", MES_MOD_IS, IF_REAL,"Junction saturation current"), IOP( "fc", MES_MOD_FC, IF_REAL,"Forward biad junction fit parm."), OP( "nmf", MES_MOD_NMF, IF_FLAG,"N type MESfet model"), OP( "pmf", MES_MOD_PMF, IF_FLAG,"P type MESfet model"), OP( "gd", MES_MOD_DRAINCONDUCT, IF_REAL,"Drain conductance"), OP( "gs", MES_MOD_SOURCECONDUCT, IF_REAL,"Source conductance"), OP( "depl_cap", MES_MOD_DEPLETIONCAP, IF_REAL,"Depletion capacitance"), OP( "vcrit", MES_MOD_VCRIT, IF_REAL,"Critical voltage"), P("af", 0, IF_REAL,"Flicker noise exponent"), P("kf", 0, IF_REAL,"Flicker noise coefficient"), }; static char *MESnames[] = { "Drain", "Gate", "Source" }; SPICEdev MESinfo = { { "MES", "GaAs MESFET model", sizeof(MESnames)/sizeof(char *), sizeof(MESnames)/sizeof(char *), MESnames, sizeof(MESpTable)/sizeof(IFparm), MESpTable, sizeof(MESmPTable)/sizeof(IFparm), MESmPTable, }, MESparam, MESmParam, MESload, MESsetup, MESsetup, MEStemp, MEStrunc, NULL, MESacLoad, NULL, MESdestroy, #ifdef DELETES MESmDelete, MESdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ MESgetic, MESask, MESmAsk, MESpzLoad, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sizeof(MESinstance), sizeof(MESmodel), }; 0707070124060741021006440006700000000000011777770500302375400004400000004602spice3c1/spice3/dev/mes/mesacload.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESacLoad.c $Revision: 1.4 $ on $Date: 88/07/22 00:04:40 $") int MESacLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MESmodel *model = (MESmodel*)inModel; register MESinstance *here; double gdpr; double gspr; double gm; double gds; double ggs; double xgs; double ggd; double xgd; for( ; model != NULL; model = model->MESnextModel ) { for( here = model->MESinstances; here != NULL; here = here->MESnextInstance) { gdpr=model->MESdrainConduct * here->MESarea; gspr=model->MESsourceConduct * here->MESarea; gm= *(ckt->CKTstate0 + here->MESgm) ; gds= *(ckt->CKTstate0 + here->MESgds) ; ggs= *(ckt->CKTstate0 + here->MESggs) ; xgs= *(ckt->CKTstate0 + here->MESqgs) * ckt->CKTomega ; ggd= *(ckt->CKTstate0 + here->MESggd) ; xgd= *(ckt->CKTstate0 + here->MESqgd) * ckt->CKTomega ; *(here->MESdrainDrainPtr ) += gdpr; *(here->MESgateGatePtr ) += ggd+ggs; *(here->MESgateGatePtr +1) += xgd+xgs; *(here->MESsourceSourcePtr ) += gspr; *(here->MESdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd; *(here->MESdrainPrimeDrainPrimePtr +1) += xgd; *(here->MESsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs; *(here->MESsourcePrimeSourcePrimePtr +1) += xgs; *(here->MESdrainDrainPrimePtr ) -= gdpr; *(here->MESgateDrainPrimePtr ) -= ggd; *(here->MESgateDrainPrimePtr +1) -= xgd; *(here->MESgateSourcePrimePtr ) -= ggs; *(here->MESgateSourcePrimePtr +1) -= xgs; *(here->MESsourceSourcePrimePtr ) -= gspr; *(here->MESdrainPrimeDrainPtr ) -= gdpr; *(here->MESdrainPrimeGatePtr ) += (-ggd+gm); *(here->MESdrainPrimeGatePtr +1) -= xgd; *(here->MESdrainPrimeSourcePrimePtr ) += (-gds-gm); *(here->MESsourcePrimeGatePtr ) += (-ggs-gm); *(here->MESsourcePrimeGatePtr +1) -= xgs; *(here->MESsourcePrimeSourcePtr ) -= gspr; *(here->MESsourcePrimeDrainPrimePtr ) -= gds; } } return(OK); } 0707070124060741031006440006700000000000011777770500302375400004100000007730spice3c1/spice3/dev/mes/mesask.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "mesdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("MESask.c $Revision: 1.6 $ on $Date: 88/07/22 00:29:58 $") /* ARGSUSED */ int MESask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { MESinstance *here = (MESinstance*)inst; static char *msg = "Current and power not available in ac analysis"; switch(which) { case MES_AREA: value->rValue = here->MESarea; return (OK); case MES_IC_VDS: value->rValue = here->MESicVDS; return (OK); case MES_IC_VGS: value->rValue = here->MESicVGS; return (OK); case MES_OFF: value->iValue = here->MESoff; return (OK); case MES_DRAINNODE: value->iValue = here->MESdrainNode; return (OK); case MES_GATENODE: value->iValue = here->MESgateNode; return (OK); case MES_SOURCENODE: value->iValue = here->MESsourceNode; return (OK); case MES_DRAINPRIMENODE: value->iValue = here->MESdrainPrimeNode; return (OK); case MES_VGS: value->rValue = *(ckt->CKTstate0 + here->MESvgs); return (OK); case MES_VGD: value->rValue = *(ckt->CKTstate0 + here->MESvgd); return (OK); case MES_CG: value->rValue = *(ckt->CKTstate0 + here->MEScg); return (OK); case MES_CD: value->rValue = *(ckt->CKTstate0 + here->MEScd); return (OK); case MES_CGD: value->rValue = *(ckt->CKTstate0 + here->MEScgd); return (OK); case MES_GM: value->rValue = *(ckt->CKTstate0 + here->MESgm); return (OK); case MES_GDS: value->rValue = *(ckt->CKTstate0 + here->MESgds); return (OK); case MES_GGS: value->rValue = *(ckt->CKTstate0 + here->MESggs); return (OK); case MES_GGD: value->rValue = *(ckt->CKTstate0 + here->MESggd); return (OK); case MES_QGS: value->rValue = *(ckt->CKTstate0 + here->MESqgs); return (OK); case MES_CQGS: value->rValue = *(ckt->CKTstate0 + here->MEScqgs); return (OK); case MES_QGD: value->rValue = *(ckt->CKTstate0 + here->MESqgd); return (OK); case MES_CQGD: value->rValue = *(ckt->CKTstate0 + here->MEScqgd); return (OK); case MES_CS : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MESask"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = -*(ckt->CKTstate0 + here->MEScd); value->rValue -= *(ckt->CKTstate0 + here->MEScg); } return(OK); case MES_POWER : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MESask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = *(ckt->CKTstate0 + here->MEScd) * *(ckt->CKTrhsOld + here->MESdrainNode); value->rValue += *(ckt->CKTstate0 + here->MEScg) * *(ckt->CKTrhsOld + here->MESgateNode); value->rValue -= (*(ckt->CKTstate0+here->MEScd) + *(ckt->CKTstate0 + here->MEScg)) * *(ckt->CKTrhsOld + here->MESsourceNode); } return(OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124060741041006440006700000000000011777770500302375400004400000001551spice3c1/spice3/dev/mes/mesdelete.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESdelete.c $Revision: 1.4 $ on $Date: 88/07/22 00:04:46 $") int MESdelete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { MESmodel *model = (MESmodel*)inModel; MESinstance **fast = (MESinstance**)inst; MESinstance **prev = NULL; MESinstance *here; for( ; model ; model = model->MESnextModel) { prev = &(model->MESinstances); for(here = *prev; here ; here = *prev) { if(here->MESname == name || (fast && here==*fast) ) { *prev= here->MESnextInstance; FREE(here); return(OK); } prev = &(here->MESnextInstance); } } return(E_NODEV); } 0707070124060741051006440006700000000000011777770500302375400004500000001414spice3c1/spice3/dev/mes/mesdestroy.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "mesdefs.h" #include "suffix.h" RCSID("MESdestroy.c $Revision: 1.4 $ on $Date: 88/07/22 00:04:47 $") void MESdestroy(inModel) GENmodel **inModel; { MESmodel **model = (MESmodel**)inModel; MESinstance *here; MESinstance *prev = NULL; MESmodel *mod = *model; MESmodel *oldmod = NULL; for( ; mod ; mod = mod->MESnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (MESinstance *)NULL; for(here = mod->MESinstances ; here ; here = here->MESnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124060741061006440006700000000000011777770500302375500004300000002111spice3c1/spice3/dev/mes/mesgetic.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESgetic.c $Revision: 1.4 $ on $Date: 88/07/22 00:04:49 $") int MESgetic(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { MESmodel *model = (MESmodel*)inModel; MESinstance *here; /* * grab initial conditions out of rhs array. User specified, so use * external nodes to get values */ for( ; model ; model = model->MESnextModel) { for(here = model->MESinstances; here ; here = here->MESnextInstance) { if(!here->MESicVDSGiven) { here->MESicVDS = *(ckt->CKTrhs + here->MESdrainNode) - *(ckt->CKTrhs + here->MESsourceNode); } if(!here->MESicVGSGiven) { here->MESicVGS = *(ckt->CKTrhs + here->MESgateNode) - *(ckt->CKTrhs + here->MESsourceNode); } } } return(OK); } 0707070124060741071006440006700000000000011777770500302375500004200000046264spice3c1/spice3/dev/mes/mesload.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "devdefs.h" #include "cktdefs.h" #include "mesdefs.h" #include "const.h" #include "trandefs.h" #include #include "sperror.h" #include "suffix.h" RCSID("MESload.c $Revision: 1.8 $ on $Date: 89/01/02 15:15:59 $") /* forward declaraction of our helper function */ #ifdef __STDC__ static double qggnew(double,double,double,double,double,double,double, double*,double*); #else /* stdc */ static double qggnew(); #endif /* stdc */ int MESload(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current resistance value into the * sparse matrix previously provided */ { register MESmodel *model = (MESmodel*)inModel; register MESinstance *here; double afact; double beta; double betap; double capgd; double capgs; double cd; double cdhat; double cdrain; double cdreq; double ceq; double ceqgd; double ceqgs; double cg; double cgd; double cgdna,cgdnb,cgdnc,cgdnd; double cghat; double cgsna,cgsnb,cgsnc,cgsnd; double csat; double czgd; double czgs; double delvds; double delvgd; double delvgs; double denom; double evgd; double evgs; double gdpr; double gds; double geq; double ggd; double ggs; double gm; double gspr; double invdenom; double lfact; double phib; double prod; double qgga,qggb,qggc,qggd; double vcap; double vcrit; double vds; double vgd; double vgd1; double vgdt; double vgs; double vgs1; double vgst; double vto; double xfact; int icheck; int ichk1; int error; /* loop through all the models */ for( ; model != NULL; model = model->MESnextModel ) { /* loop through all the instances of the model */ for (here = model->MESinstances; here != NULL ; here=here->MESnextInstance) { /* * dc model parameters */ beta = model->MESbeta * here->MESarea; gdpr = model->MESdrainConduct * here->MESarea; gspr = model->MESsourceConduct * here->MESarea; csat = model->MESgateSatCurrent * here->MESarea; vcrit = model->MESvcrit; vto = model->MESthreshold; /* * initialization */ icheck = 1; if( ckt->CKTmode & MODEINITSMSIG) { vgs = *(ckt->CKTstate0 + here->MESvgs); vgd = *(ckt->CKTstate0 + here->MESvgd); } else if (ckt->CKTmode & MODEINITTRAN) { vgs = *(ckt->CKTstate1 + here->MESvgs); vgd = *(ckt->CKTstate1 + here->MESvgd); } else if ( (ckt->CKTmode & MODEINITJCT) && (ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC) ) { vds = model->MEStype*here->MESicVDS; vgs = model->MEStype*here->MESicVGS; vgd = vgs-vds; } else if ( (ckt->CKTmode & MODEINITJCT) && (here->MESoff == 0) ) { vgs = -1; vgd = -1; } else if( (ckt->CKTmode & MODEINITJCT) || ((ckt->CKTmode & MODEINITFIX) && (here->MESoff))) { vgs = 0; vgd = 0; } else { #ifndef PREDICTOR if(ckt->CKTmode & MODEINITPRED) { xfact = ckt->CKTdelta/ckt->CKTdeltaOld[2]; *(ckt->CKTstate0 + here->MESvgs) = *(ckt->CKTstate1 + here->MESvgs); vgs = (1+xfact) * *(ckt->CKTstate1 + here->MESvgs) - xfact * *(ckt->CKTstate2 + here->MESvgs); *(ckt->CKTstate0 + here->MESvgd) = *(ckt->CKTstate1 + here->MESvgd); vgd = (1+xfact)* *(ckt->CKTstate1 + here->MESvgd) - xfact * *(ckt->CKTstate2 + here->MESvgd); *(ckt->CKTstate0 + here->MEScg) = *(ckt->CKTstate1 + here->MEScg); *(ckt->CKTstate0 + here->MEScd) = *(ckt->CKTstate1 + here->MEScd); *(ckt->CKTstate0 + here->MEScgd) = *(ckt->CKTstate1 + here->MEScgd); *(ckt->CKTstate0 + here->MESgm) = *(ckt->CKTstate1 + here->MESgm); *(ckt->CKTstate0 + here->MESgds) = *(ckt->CKTstate1 + here->MESgds); *(ckt->CKTstate0 + here->MESggs) = *(ckt->CKTstate1 + here->MESggs); *(ckt->CKTstate0 + here->MESggd) = *(ckt->CKTstate1 + here->MESggd); } else { #endif /* PREDICTOR */ /* * compute new nonlinear branch voltages */ vgs = model->MEStype* (*(ckt->CKTrhsOld+ here->MESgateNode)- *(ckt->CKTrhsOld+ here->MESsourcePrimeNode)); vgd = model->MEStype* (*(ckt->CKTrhsOld+here->MESgateNode)- *(ckt->CKTrhsOld+ here->MESdrainPrimeNode)); #ifndef PREDICTOR } #endif /* PREDICTOR */ delvgs=vgs - *(ckt->CKTstate0 + here->MESvgs); delvgd=vgd - *(ckt->CKTstate0 + here->MESvgd); delvds=delvgs - delvgd; cghat= *(ckt->CKTstate0 + here->MEScg) + *(ckt->CKTstate0 + here->MESggd)*delvgd + *(ckt->CKTstate0 + here->MESggs)*delvgs; cdhat= *(ckt->CKTstate0 + here->MEScd) + *(ckt->CKTstate0 + here->MESgm)*delvgs + *(ckt->CKTstate0 + here->MESgds)*delvds - *(ckt->CKTstate0 + here->MESggd)*delvgd; /* * bypass if solution has not changed */ if((ckt->CKTbypass) && (!(ckt->CKTmode & MODEINITPRED)) && (FABS(delvgs) < ckt->CKTreltol*MAX(FABS(vgs), FABS(*(ckt->CKTstate0 + here->MESvgs)))+ ckt->CKTvoltTol) ) if ( (FABS(delvgd) < ckt->CKTreltol*MAX(FABS(vgd), FABS(*(ckt->CKTstate0 + here->MESvgd)))+ ckt->CKTvoltTol)) if ( (FABS(cghat-*(ckt->CKTstate0 + here->MEScg)) < ckt->CKTreltol*MAX(FABS(cghat), FABS(*(ckt->CKTstate0 + here->MEScg)))+ ckt->CKTabstol) ) if ( /* hack - expression too big */ (FABS(cdhat-*(ckt->CKTstate0 + here->MEScd)) < ckt->CKTreltol*MAX(FABS(cdhat), FABS(*(ckt->CKTstate0 + here->MEScd)))+ ckt->CKTabstol) ) { /* we can do a bypass */ vgs= *(ckt->CKTstate0 + here->MESvgs); vgd= *(ckt->CKTstate0 + here->MESvgd); vds= vgs-vgd; cg= *(ckt->CKTstate0 + here->MEScg); cd= *(ckt->CKTstate0 + here->MEScd); cgd= *(ckt->CKTstate0 + here->MEScgd); gm= *(ckt->CKTstate0 + here->MESgm); gds= *(ckt->CKTstate0 + here->MESgds); ggs= *(ckt->CKTstate0 + here->MESggs); ggd= *(ckt->CKTstate0 + here->MESggd); goto load; } /* * limit nonlinear branch voltages */ ichk1=1; vgs = DEVpnjlim(vgs,*(ckt->CKTstate0 + here->MESvgs),CONSTvt0, vcrit, &icheck); vgd = DEVpnjlim(vgd,*(ckt->CKTstate0 + here->MESvgd),CONSTvt0, vcrit,&ichk1); if (ichk1 == 1) { icheck=1; } vgs = DEVfetlim(vgs,*(ckt->CKTstate0 + here->MESvgs), model->MESthreshold); vgd = DEVfetlim(vgd,*(ckt->CKTstate0 + here->MESvgd), model->MESthreshold); } /* * determine dc current and derivatives */ vds = vgs-vgd; if (vgs <= -5*CONSTvt0) { ggs = -csat/vgs+ckt->CKTgmin; cg = ggs*vgs; } else { evgs = exp(vgs/CONSTvt0); ggs = csat*evgs/CONSTvt0+ckt->CKTgmin; cg = csat*(evgs-1)+ckt->CKTgmin*vgs; } if (vgd <= -5*CONSTvt0) { ggd = -csat/vgd+ckt->CKTgmin; cgd = ggd*vgd; } else { evgd = exp(vgd/CONSTvt0); ggd = csat*evgd/CONSTvt0+ckt->CKTgmin; cgd = csat*(evgd-1)+ckt->CKTgmin*vgd; } cg = cg+cgd; /* * compute drain current and derivitives for normal mode */ if (vds >= 0) { vgst = vgs-model->MESthreshold; /* * normal mode, cutoff region */ if (vgst <= 0) { cdrain = 0; gm = 0; gds = 0; } else { prod = 1 + model->MESlModulation * vds; betap = beta * prod; denom = 1 + model->MESb * vgst; invdenom = 1 / denom; if (vds >= ( 3 / model->MESalpha ) ) { /* * normal mode, saturation region */ cdrain = betap * vgst * vgst * invdenom; gm = betap * vgst * (1 + denom) * invdenom * invdenom; gds = model->MESlModulation * beta * vgst * vgst * invdenom; } else { /* * normal mode, linear region */ afact = 1 - model->MESalpha * vds / 3; lfact = 1 - afact * afact * afact; cdrain = betap * vgst * vgst * invdenom * lfact; gm = betap * vgst * (1 + denom) * invdenom * invdenom * lfact; gds = beta * vgst * vgst * invdenom * (model->MESalpha * afact * afact * prod + lfact * model->MESlModulation); } } } else { /* * compute drain current and derivitives for inverse mode */ vgdt = vgd - model->MESthreshold; if (vgdt <= 0) { /* * inverse mode, cutoff region */ cdrain = 0; gm = 0; gds = 0; } else { /* * inverse mode, saturation region */ prod = 1 - model->MESlModulation * vds; betap = beta * prod; denom = 1 + model->MESb * vgdt; invdenom = 1 / denom; if ( -vds >= ( 3 / model->MESalpha ) ) { cdrain = -betap * vgdt * vgdt * invdenom; gm = -betap * vgdt * (1 + denom) * invdenom * invdenom; gds = model->MESlModulation * beta * vgdt * vgdt * invdenom-gm; } else { /* * inverse mode, linear region */ afact = 1 + model->MESalpha * vds / 3; lfact = 1 - afact * afact * afact; cdrain = -betap * vgdt * vgdt * invdenom * lfact; gm = -betap * vgdt * (1 + denom) * invdenom * invdenom * lfact; gds = beta * vgdt * vgdt * invdenom * (model->MESalpha * afact * afact * prod + lfact * model->MESlModulation)-gm; } } } /* * compute equivalent drain current source */ cd = cdrain - cgd; if ( (ckt->CKTmode & (MODETRAN|MODEINITSMSIG)) || ((ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)) ){ /* * charge storage elements */ czgs = model->MEScapGS * here->MESarea; czgd = model->MEScapGD * here->MESarea; phib = model->MESgatePotential; vgs1 = *(ckt->CKTstate1 + here->MESvgs); vgd1 = *(ckt->CKTstate1 + here->MESvgd); vcap = 1 / model->MESalpha; qgga = qggnew(vgs,vgd,phib,vcap,vto,czgs,czgd,&cgsna,&cgdna); qggb = qggnew(vgs1,vgd,phib,vcap,vto,czgs,czgd,&cgsnb,&cgdnb); qggc = qggnew(vgs,vgd1,phib,vcap,vto,czgs,czgd,&cgsnc,&cgdnc); qggd = qggnew(vgs1,vgd1,phib,vcap,vto,czgs,czgd,&cgsnd,&cgdnd); if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->MESqgs) = qgga; *(ckt->CKTstate1 + here->MESqgd) = qgga; } *(ckt->CKTstate0+here->MESqgs) = *(ckt->CKTstate1+here->MESqgs) + 0.5 * (qgga-qggb + qggc-qggd); *(ckt->CKTstate0+here->MESqgd) = *(ckt->CKTstate1+here->MESqgd) + 0.5 * (qgga-qggc + qggb-qggd); capgs = cgsna; capgd = cgdna; /* * store small-signal parameters */ if( (!(ckt->CKTmode & MODETRANOP)) || (!(ckt->CKTmode & MODEUIC)) ) { if(ckt->CKTmode & MODEINITSMSIG) { *(ckt->CKTstate0 + here->MESqgs) = capgs; *(ckt->CKTstate0 + here->MESqgd) = capgd; continue; /*go to 1000*/ } /* * transient analysis */ if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->MESqgs) = *(ckt->CKTstate0 + here->MESqgs); *(ckt->CKTstate1 + here->MESqgd) = *(ckt->CKTstate0 + here->MESqgd); } error = NIintegrate(ckt,&geq,&ceq,capgs,here->MESqgs); if(error) return(error); ggs = ggs + geq; cg = cg + *(ckt->CKTstate0 + here->MEScqgs); error = NIintegrate(ckt,&geq,&ceq,capgd,here->MESqgd); if(error) return(error); ggd = ggd + geq; cg = cg + *(ckt->CKTstate0 + here->MEScqgd); cd = cd - *(ckt->CKTstate0 + here->MEScqgd); cgd = cgd + *(ckt->CKTstate0 + here->MEScqgd); if (ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->MEScqgs) = *(ckt->CKTstate0 + here->MEScqgs); *(ckt->CKTstate1 + here->MEScqgd) = *(ckt->CKTstate0 + here->MEScqgd); } } } /* * check convergence */ if( (!(ckt->CKTmode & MODEINITFIX)) | (!(ckt->CKTmode & MODEUIC))) { if( (icheck == 1) #ifndef NEWCONV || (FABS(cghat-cg) >= ckt->CKTreltol* MAX(FABS(cghat),FABS(cg))+ckt->CKTabstol) || (FABS(cdhat-cd) > ckt->CKTreltol* MAX(FABS(cdhat),FABS(cd))+ckt->CKTabstol) #endif /* NEWCONV */ ) { ckt->CKTnoncon++; } } *(ckt->CKTstate0 + here->MESvgs) = vgs; *(ckt->CKTstate0 + here->MESvgd) = vgd; *(ckt->CKTstate0 + here->MEScg) = cg; *(ckt->CKTstate0 + here->MEScd) = cd; *(ckt->CKTstate0 + here->MEScgd) = cgd; *(ckt->CKTstate0 + here->MESgm) = gm; *(ckt->CKTstate0 + here->MESgds) = gds; *(ckt->CKTstate0 + here->MESggs) = ggs; *(ckt->CKTstate0 + here->MESggd) = ggd; /* * load current vector */ load: ceqgd=model->MEStype*(cgd-ggd*vgd); ceqgs=model->MEStype*((cg-cgd)-ggs*vgs); cdreq=model->MEStype*((cd+cgd)-gds*vds-gm*vgs); *(ckt->CKTrhs + here->MESgateNode) += (-ceqgs-ceqgd); *(ckt->CKTrhs + here->MESdrainPrimeNode) += (-cdreq+ceqgd); *(ckt->CKTrhs + here->MESsourcePrimeNode) += (cdreq+ceqgs); /* * load y matrix */ *(here->MESdrainDrainPrimePtr) += (-gdpr); *(here->MESgateDrainPrimePtr) += (-ggd); *(here->MESgateSourcePrimePtr) += (-ggs); *(here->MESsourceSourcePrimePtr) += (-gspr); *(here->MESdrainPrimeDrainPtr) += (-gdpr); *(here->MESdrainPrimeGatePtr) += (gm-ggd); *(here->MESdrainPrimeSourcePrimePtr) += (-gds-gm); *(here->MESsourcePrimeGatePtr) += (-ggs-gm); *(here->MESsourcePrimeSourcePtr) += (-gspr); *(here->MESsourcePrimeDrainPrimePtr) += (-gds); *(here->MESdrainDrainPtr) += (gdpr); *(here->MESgateGatePtr) += (ggd+ggs); *(here->MESsourceSourcePtr) += (gspr); *(here->MESdrainPrimeDrainPrimePtr) += (gdpr+gds+ggd); *(here->MESsourcePrimeSourcePrimePtr) += (gspr+gds+gm+ggs); } } return(OK); } /* function qggnew - private, used by MESload*/ static double qggnew(vgs,vgd,phib,vcap,vto,cgs,cgd,cgsnew,cgdnew) double vgs,vgd,phib,vcap,vto,cgs,cgd,*cgsnew,*cgdnew; { double veroot,veff1,veff2,del,vnroot,vnew1,vnew3,vmax,ext; double qroot,qggval,par1,cfact,cplus,cminus; veroot = sqrt( (vgs - vgd) * (vgs - vgd) + vcap*vcap ); veff1 = 0.5 * (vgs + vgd + veroot); veff2 = veff1 - veroot; del = 0.2; vnroot = sqrt( (veff1 - vto)*(veff1 - vto) + del * del ); vnew1 = 0.5 * (veff1 + vto + vnroot); vnew3 = vnew1; vmax = 0.5; if ( vnew1 < vmax ) { ext=0; } else { vnew1 = vmax; ext = (vnew3 - vmax)/sqrt(1 - vmax/phib); } qroot = sqrt(1 - vnew1/phib); qggval = cgs * (2*phib*(1-qroot) + ext) + cgd*veff2; par1 = 0.5 * ( 1 + (veff1-vto)/vnroot); cfact = (vgs- vgd)/veroot; cplus = 0.5 * (1 + cfact); cminus = cplus - cfact; *cgsnew = cgs/qroot*par1*cplus + cgd*cminus; *cgdnew = cgs/qroot*par1*cminus + cgd*cplus; return(qggval); } 0707070124060741101006440006700000000000011777770500302375500004200000004156spice3c1/spice3/dev/mes/mesmask.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESask.c $Revision: 1.5 $ on $Date: 88/10/01 13:47:35 $") /* ARGSUSED */ int MESmAsk(ckt,inst,which,value) CKTcircuit *ckt; GENmodel *inst; int which; IFvalue *value; { MESmodel *here = (MESmodel*)inst; switch(which) { case MES_MOD_VTO: value->rValue = here->MESthreshold; return (OK); case MES_MOD_ALPHA: value->rValue = here->MESalpha; return (OK); case MES_MOD_BETA: value->rValue = here->MESbeta; return (OK); case MES_MOD_LAMBDA: value->rValue = here->MESlModulation; return (OK); case MES_MOD_B: value->rValue = here->MESb; return (OK); case MES_MOD_RD: value->rValue = here->MESdrainResist; return (OK); case MES_MOD_RS: value->rValue = here->MESsourceResist; return (OK); case MES_MOD_CGS: value->rValue = here->MEScapGS; return (OK); case MES_MOD_CGD: value->rValue = here->MEScapGD; return (OK); case MES_MOD_PB: value->rValue = here->MESgatePotential; return (OK); case MES_MOD_IS: value->rValue = here->MESgateSatCurrent; return (OK); case MES_MOD_FC: value->rValue = here->MESdepletionCapCoeff; return (OK); case MES_MOD_DRAINCONDUCT: value->rValue = here->MESdrainConduct; return (OK); case MES_MOD_SOURCECONDUCT: value->rValue = here->MESsourceConduct; return (OK); case MES_MOD_DEPLETIONCAP: value->rValue = here->MESdepletionCap; return (OK); case MES_MOD_VCRIT: value->rValue = here->MESvcrit; return (OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124060741111006440006700000000000011777770500302375500004500000001763spice3c1/spice3/dev/mes/mesmdelete.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESmDelete.c $Revision: 1.4 $ on $Date: 88/07/22 00:04:53 $") int MESmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { MESmodel **model = (MESmodel**)inModel; MESmodel *modfast = (MESmodel*)kill; MESinstance *here; MESinstance *prev = NULL; MESmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->MESnextModel)) { if( (*model)->MESmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->MESnextModel; /* cut deleted device out of list */ for(here = (*model)->MESinstances ; here ; here = here->MESnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124060741121006440006700000000000011777770500302375600004400000004537spice3c1/spice3/dev/mes/mesmparam.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "ifsim.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESmParam.c $Revision: 1.5 $ on $Date: 89/01/19 16:48:30 $") int MESmParam(param,value,inModel) int param; IFvalue *value; GENmodel *inModel; { MESmodel *model = (MESmodel*)inModel; switch(param) { case MES_MOD_VTO: model->MESthresholdGiven = TRUE; model->MESthreshold = value->rValue; break; case MES_MOD_ALPHA: model->MESalphaGiven = TRUE; model->MESalpha = value->rValue; break; case MES_MOD_BETA: model->MESbetaGiven = TRUE; model->MESbeta = value->rValue; break; case MES_MOD_LAMBDA: model->MESlModulationGiven = TRUE; model->MESlModulation = value->rValue; break; case MES_MOD_B: model->MESbGiven = TRUE; model->MESb = value->rValue; break; case MES_MOD_RD: model->MESdrainResistGiven = TRUE; model->MESdrainResist = value->rValue; break; case MES_MOD_RS: model->MESsourceResistGiven = TRUE; model->MESsourceResist = value->rValue; break; case MES_MOD_CGS: model->MEScapGSGiven = TRUE; model->MEScapGS = value->rValue; break; case MES_MOD_CGD: model->MEScapGDGiven = TRUE; model->MEScapGD = value->rValue; break; case MES_MOD_PB: model->MESgatePotentialGiven = TRUE; model->MESgatePotential = value->rValue; break; case MES_MOD_IS: model->MESgateSatCurrentGiven = TRUE; model->MESgateSatCurrent = value->rValue; break; case MES_MOD_FC: model->MESdepletionCapCoeffGiven = TRUE; model->MESdepletionCapCoeff = value->rValue; break; case MES_MOD_NMF: if(value->iValue) { model->MEStype = NMF; } break; case MES_MOD_PMF: if(value->iValue) { model->MEStype = PMF; } break; default: return(E_BADPARM); } return(OK); } 0707070124060741131006440006700000000000011777770500302375600004300000002624spice3c1/spice3/dev/mes/mesparam.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "ifsim.h" #include "util.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MESparam.c $Revision: 1.6 $ on $Date: 89/01/19 16:48:24 $") /* ARGSUSED */ int MESparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { MESinstance *here = (MESinstance*)inst; switch(param) { case MES_AREA: here->MESarea = value->rValue; here->MESareaGiven = TRUE; break; case MES_IC_VDS: here->MESicVDS = value->rValue; here->MESicVDSGiven = TRUE; break; case MES_IC_VGS: here->MESicVGS = value->rValue; here->MESicVGSGiven = TRUE; break; case MES_OFF: here->MESoff = value->iValue; break; case MES_IC: switch(value->v.numValue) { case 2: here->MESicVGS = *(value->v.vec.rVec+1); here->MESicVGSGiven = TRUE; case 1: here->MESicVDS = *(value->v.vec.rVec); here->MESicVDSGiven = TRUE; break; default: return(E_BADPARM); } break; default: return(E_BADPARM); } return(OK); } 0707070124060741141006440006700000000000011777770500302375600004400000005600spice3c1/spice3/dev/mes/mespzload.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "mesdefs.h" #include "sperror.h" #include "complex.h" #include "suffix.h" RCSID("MESpzLoad.c $Revision: 1.4 $ on $Date: 88/07/22 00:04:57 $") int MESpzLoad(inModel,ckt,s) GENmodel *inModel; register CKTcircuit *ckt; SPcomplex *s; { register MESmodel *model = (MESmodel*)inModel; register MESinstance *here; double gdpr; double gspr; double gm; double gds; double ggs; double xgs; double ggd; double xgd; for( ; model != NULL; model = model->MESnextModel ) { for( here = model->MESinstances; here != NULL; here = here->MESnextInstance) { gdpr=model->MESdrainConduct * here->MESarea; gspr=model->MESsourceConduct * here->MESarea; gm= *(ckt->CKTstate0 + here->MESgm) ; gds= *(ckt->CKTstate0 + here->MESgds) ; ggs= *(ckt->CKTstate0 + here->MESggs) ; xgs= *(ckt->CKTstate0 + here->MESqgs) ; ggd= *(ckt->CKTstate0 + here->MESggd) ; xgd= *(ckt->CKTstate0 + here->MESqgd) ; *(here->MESdrainDrainPtr ) += gdpr; *(here->MESgateGatePtr ) += ggd+ggs; *(here->MESgateGatePtr ) += (xgd+xgs)*s->real; *(here->MESgateGatePtr +1) += (xgd+xgs)*s->imag; *(here->MESsourceSourcePtr ) += gspr; *(here->MESdrainPrimeDrainPrimePtr ) += gdpr+gds+ggd; *(here->MESdrainPrimeDrainPrimePtr ) += xgd*s->real; *(here->MESdrainPrimeDrainPrimePtr +1) += xgd*s->imag; *(here->MESsourcePrimeSourcePrimePtr ) += gspr+gds+gm+ggs; *(here->MESsourcePrimeSourcePrimePtr ) += xgs*s->real; *(here->MESsourcePrimeSourcePrimePtr +1) += xgs*s->imag; *(here->MESdrainDrainPrimePtr ) -= gdpr; *(here->MESgateDrainPrimePtr ) -= ggd; *(here->MESgateDrainPrimePtr ) -= xgd*s->real; *(here->MESgateDrainPrimePtr +1) -= xgd*s->imag; *(here->MESgateSourcePrimePtr ) -= ggs; *(here->MESgateSourcePrimePtr ) -= xgs*s->real; *(here->MESgateSourcePrimePtr +1) -= xgs*s->imag; *(here->MESsourceSourcePrimePtr ) -= gspr; *(here->MESdrainPrimeDrainPtr ) -= gdpr; *(here->MESdrainPrimeGatePtr ) += (-ggd+gm); *(here->MESdrainPrimeGatePtr ) -= xgd*s->real; *(here->MESdrainPrimeGatePtr +1) -= xgd*s->imag; *(here->MESdrainPrimeSourcePrimePtr ) += (-gds-gm); *(here->MESsourcePrimeGatePtr ) += (-ggs-gm); *(here->MESsourcePrimeGatePtr ) -= xgs*s->real; *(here->MESsourcePrimeGatePtr +1) -= xgs*s->imag; *(here->MESsourcePrimeSourcePtr ) -= gspr; *(here->MESsourcePrimeDrainPrimePtr ) -= gds; } } return(OK); } 0707070124060741151006440006700000000000011777770500302375600004300000010561spice3c1/spice3/dev/mes/messetup.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "mesdefs.h" #include "const.h" #include #include "sperror.h" #include "suffix.h" RCSID("MESsetup.c $Revision: 1.4 $ on $Date: 88/07/22 00:05:01 $") int MESsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; CKTcircuit *ckt; int *states; /* load the diode structure with those pointers needed later * for fast matrix loading */ { register MESmodel *model = (MESmodel*)inModel; register MESinstance *here; int error; CKTnode *tmp; /* loop through all the diode models */ for( ; model != NULL; model = model->MESnextModel ) { if( (model->MEStype != NMF) && (model->MEStype != PMF) ) { model->MEStype = NMF; } if(!model->MESthresholdGiven) { model->MESthreshold = -2; } if(!model->MESbetaGiven) { model->MESbeta = 2.5e-3; } if(!model->MESbGiven) { model->MESb = 0.3; } if(!model->MESalphaGiven) { model->MESalpha = 2; } if(!model->MESlModulationGiven) { model->MESlModulation = 0; } if(!model->MESdrainResistGiven) { model->MESdrainResist = 0; } if(!model->MESsourceResistGiven) { model->MESsourceResist = 0; } if(!model->MEScapGSGiven) { model->MEScapGS = 0; } if(!model->MEScapGDGiven) { model->MEScapGD = 0; } if(!model->MESgatePotentialGiven) { model->MESgatePotential = 1; } if(!model->MESgateSatCurrentGiven) { model->MESgateSatCurrent = 1e-14; } if(!model->MESdepletionCapCoeffGiven) { model->MESdepletionCapCoeff = .5; } /* loop through all the instances of the model */ for (here = model->MESinstances; here != NULL ; here=here->MESnextInstance) { if(!here->MESareaGiven) { here->MESarea = 1; } here->MESstate = *states; *states += 13; if(model->MESsourceResist != 0 && here->MESsourcePrimeNode==0) { error = CKTmkVolt(ckt,&tmp,here->MESname,"source"); if(error) return(error); here->MESsourcePrimeNode = tmp->number; } else { here->MESsourcePrimeNode = here->MESsourceNode; } if(model->MESdrainResist != 0 && here->MESdrainPrimeNode==0) { error = CKTmkVolt(ckt,&tmp,here->MESname,"drain"); if(error) return(error); here->MESdrainPrimeNode = tmp->number; } else { here->MESdrainPrimeNode = here->MESdrainNode; } /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(MESdrainDrainPrimePtr,MESdrainNode,MESdrainPrimeNode) TSTALLOC(MESgateDrainPrimePtr,MESgateNode,MESdrainPrimeNode) TSTALLOC(MESgateSourcePrimePtr,MESgateNode,MESsourcePrimeNode) TSTALLOC(MESsourceSourcePrimePtr,MESsourceNode, MESsourcePrimeNode) TSTALLOC(MESdrainPrimeDrainPtr,MESdrainPrimeNode,MESdrainNode) TSTALLOC(MESdrainPrimeGatePtr,MESdrainPrimeNode,MESgateNode) TSTALLOC(MESdrainPrimeSourcePrimePtr,MESdrainPrimeNode, MESsourcePrimeNode) TSTALLOC(MESsourcePrimeGatePtr,MESsourcePrimeNode,MESgateNode) TSTALLOC(MESsourcePrimeSourcePtr,MESsourcePrimeNode, MESsourceNode) TSTALLOC(MESsourcePrimeDrainPrimePtr,MESsourcePrimeNode, MESdrainPrimeNode) TSTALLOC(MESdrainDrainPtr,MESdrainNode,MESdrainNode) TSTALLOC(MESgateGatePtr,MESgateNode,MESgateNode) TSTALLOC(MESsourceSourcePtr,MESsourceNode,MESsourceNode) TSTALLOC(MESdrainPrimeDrainPrimePtr,MESdrainPrimeNode, MESdrainPrimeNode) TSTALLOC(MESsourcePrimeSourcePrimePtr,MESsourcePrimeNode, MESsourcePrimeNode) } } return(OK); } 0707070124060741161006440006700000000000011777770500302375600004200000002764spice3c1/spice3/dev/mes/mestemp.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "mesdefs.h" #include "const.h" #include #include "sperror.h" #include "suffix.h" RCSID("MEStemp.c $Revision: 1.2 $ on $Date: 88/07/22 00:05:02 $") /* ARGSUSED */ int MEStemp(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* load the diode structure with those pointers needed later * for fast matrix loading */ { register MESmodel *model = (MESmodel*)inModel; double xfc, temp; /* loop through all the diode models */ for( ; model != NULL; model = model->MESnextModel ) { if(model->MESdrainResist != 0) { model->MESdrainConduct = 1/model->MESdrainResist; } else { model->MESdrainConduct = 0; } if(model->MESsourceResist != 0) { model->MESsourceConduct = 1/model->MESsourceResist; } else { model->MESsourceConduct = 0; } model->MESdepletionCap = model->MESdepletionCapCoeff * model->MESgatePotential; xfc = (1 - model->MESdepletionCapCoeff); temp = sqrt(xfc); model->MESf1 = model->MESgatePotential * (1 - temp)/(1-.5); model->MESf2 = temp * temp * temp; model->MESf3 = 1 - model->MESdepletionCapCoeff * (1 + .5); model->MESvcrit = CONSTvt0 * log(CONSTvt0/ (CONSTroot2 * model->MESgateSatCurrent)); } return(OK); } 0707070124060741171006440006700000000000011777770500302375600004300000001264spice3c1/spice3/dev/mes/mestrunc.c/* * Copyright (c) 1985 S. Hwang */ #include "prefix.h" #include #include "cktdefs.h" #include "mesdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MEStrunc.c $Revision: 1.4 $ on $Date: 88/07/22 00:05:03 $") int MEStrunc(inModel,ckt,timeStep) GENmodel *inModel; register CKTcircuit *ckt; double *timeStep; { register MESmodel *model = (MESmodel*)inModel; register MESinstance *here; for( ; model != NULL; model = model->MESnextModel) { for(here=model->MESinstances;here!=NULL;here = here->MESnextInstance){ CKTterr(here->MESqgs,ckt,timeStep); CKTterr(here->MESqgd,ckt,timeStep); } } return(OK); } 0707070124060741201006440006700000000000011777770500302375600004100000027416spice3c1/spice3/dev/mes/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mes.c\ mesacload.c\ mesask.c\ mesdelete.c\ mesdestroy.c\ mesgetic.c\ mesload.c\ mesmask.c\ mesmdelete.c\ mesmparam.c\ mesparam.c\ mespzload.c\ messetup.c\ mestemp.c\ mestrunc.c COBJS = \ mes.o\ mesacload.o\ mesask.o\ mesdelete.o\ mesdestroy.o\ mesgetic.o\ mesload.o\ mesmask.o\ mesmdelete.o\ mesmparam.o\ mesparam.o\ mespzload.o\ messetup.o\ mestemp.o\ mestrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lnm -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmes.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmes ${LINTFLAGS} ${CFILES} mv llib-lmes.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE mes.o: ../../include/acdefs.h mes.o: ../../include/cktdefs.h mes.o: ../../include/devdefs.h mes.o: ../../include/gendefs.h mes.o: ../../include/ifsim.h mes.o: ../../include/jobdefs.h mes.o: ../../include/mesdefs.h mes.o: ../../include/optdefs.h mes.o: ../../include/pzdefs.h mes.o: ../../include/sendefs.h mes.o: ../../include/smpdefs.h mes.o: ../../include/trcvdefs.h mes.o: ../../include/tskdefs.h mes.o: ../../include/complex.h mes.o: ../../include/prefix.h mes.o: ../../include/suffix.h mesacload.o: ../../include/acdefs.h mesacload.o: ../../include/cktdefs.h mesacload.o: ../../include/gendefs.h mesacload.o: ../../include/iferrmsgs.h mesacload.o: ../../include/ifsim.h mesacload.o: ../../include/jobdefs.h mesacload.o: ../../include/mesdefs.h mesacload.o: ../../include/optdefs.h mesacload.o: ../../include/pzdefs.h mesacload.o: ../../include/sendefs.h mesacload.o: ../../include/smpdefs.h mesacload.o: ../../include/sperror.h mesacload.o: ../../include/trcvdefs.h mesacload.o: ../../include/tskdefs.h mesacload.o: ../../include/complex.h mesacload.o: ../../include/prefix.h mesacload.o: ../../include/suffix.h mesacload.o: ../../include/util.h mesask.o: ../../include/acdefs.h mesask.o: ../../include/cktdefs.h mesask.o: ../../include/devdefs.h mesask.o: ../../include/gendefs.h mesask.o: ../../include/iferrmsgs.h mesask.o: ../../include/ifsim.h mesask.o: ../../include/jobdefs.h mesask.o: ../../include/mesdefs.h mesask.o: ../../include/optdefs.h mesask.o: ../../include/pzdefs.h mesask.o: ../../include/sendefs.h mesask.o: ../../include/smpdefs.h mesask.o: ../../include/sperror.h mesask.o: ../../include/trcvdefs.h mesask.o: ../../include/tskdefs.h mesask.o: ../../include/complex.h mesask.o: ../../include/prefix.h mesask.o: ../../include/suffix.h mesask.o: ../../include/util.h mesdelete.o: ../../include/acdefs.h mesdelete.o: ../../include/cktdefs.h mesdelete.o: ../../include/gendefs.h mesdelete.o: ../../include/iferrmsgs.h mesdelete.o: ../../include/ifsim.h mesdelete.o: ../../include/jobdefs.h mesdelete.o: ../../include/mesdefs.h mesdelete.o: ../../include/optdefs.h mesdelete.o: ../../include/pzdefs.h mesdelete.o: ../../include/sendefs.h mesdelete.o: ../../include/smpdefs.h mesdelete.o: ../../include/sperror.h mesdelete.o: ../../include/trcvdefs.h mesdelete.o: ../../include/tskdefs.h mesdelete.o: ../../include/complex.h mesdelete.o: ../../include/prefix.h mesdelete.o: ../../include/suffix.h mesdelete.o: ../../include/util.h mesdestroy.o: ../../include/acdefs.h mesdestroy.o: ../../include/cktdefs.h mesdestroy.o: ../../include/gendefs.h mesdestroy.o: ../../include/ifsim.h mesdestroy.o: ../../include/jobdefs.h mesdestroy.o: ../../include/mesdefs.h mesdestroy.o: ../../include/optdefs.h mesdestroy.o: ../../include/pzdefs.h mesdestroy.o: ../../include/sendefs.h mesdestroy.o: ../../include/smpdefs.h mesdestroy.o: ../../include/trcvdefs.h mesdestroy.o: ../../include/tskdefs.h mesdestroy.o: ../../include/complex.h mesdestroy.o: ../../include/prefix.h mesdestroy.o: ../../include/suffix.h mesdestroy.o: ../../include/util.h mesgetic.o: ../../include/acdefs.h mesgetic.o: ../../include/cktdefs.h mesgetic.o: ../../include/gendefs.h mesgetic.o: ../../include/iferrmsgs.h mesgetic.o: ../../include/ifsim.h mesgetic.o: ../../include/jobdefs.h mesgetic.o: ../../include/mesdefs.h mesgetic.o: ../../include/optdefs.h mesgetic.o: ../../include/pzdefs.h mesgetic.o: ../../include/sendefs.h mesgetic.o: ../../include/smpdefs.h mesgetic.o: ../../include/sperror.h mesgetic.o: ../../include/trcvdefs.h mesgetic.o: ../../include/tskdefs.h mesgetic.o: ../../include/complex.h mesgetic.o: ../../include/prefix.h mesgetic.o: ../../include/suffix.h mesgetic.o: ../../include/util.h mesload.o: ../../include/acdefs.h mesload.o: ../../include/cktdefs.h mesload.o: ../../include/const.h mesload.o: ../../include/devdefs.h mesload.o: ../../include/gendefs.h mesload.o: ../../include/iferrmsgs.h mesload.o: ../../include/ifsim.h mesload.o: ../../include/jobdefs.h mesload.o: ../../include/mesdefs.h mesload.o: ../../include/optdefs.h mesload.o: ../../include/pzdefs.h mesload.o: ../../include/sendefs.h mesload.o: ../../include/smpdefs.h mesload.o: ../../include/sperror.h mesload.o: ../../include/trandefs.h mesload.o: ../../include/trcvdefs.h mesload.o: ../../include/tskdefs.h mesload.o: ../../include/complex.h mesload.o: ../../include/prefix.h mesload.o: ../../include/suffix.h mesload.o: ../../include/util.h mesmask.o: ../../include/acdefs.h mesmask.o: ../../include/cktdefs.h mesmask.o: ../../include/devdefs.h mesmask.o: ../../include/gendefs.h mesmask.o: ../../include/iferrmsgs.h mesmask.o: ../../include/ifsim.h mesmask.o: ../../include/jobdefs.h mesmask.o: ../../include/mesdefs.h mesmask.o: ../../include/optdefs.h mesmask.o: ../../include/pzdefs.h mesmask.o: ../../include/sendefs.h mesmask.o: ../../include/smpdefs.h mesmask.o: ../../include/sperror.h mesmask.o: ../../include/trcvdefs.h mesmask.o: ../../include/tskdefs.h mesmask.o: ../../include/complex.h mesmask.o: ../../include/prefix.h mesmask.o: ../../include/suffix.h mesmdelete.o: ../../include/acdefs.h mesmdelete.o: ../../include/cktdefs.h mesmdelete.o: ../../include/gendefs.h mesmdelete.o: ../../include/iferrmsgs.h mesmdelete.o: ../../include/ifsim.h mesmdelete.o: ../../include/jobdefs.h mesmdelete.o: ../../include/mesdefs.h mesmdelete.o: ../../include/optdefs.h mesmdelete.o: ../../include/pzdefs.h mesmdelete.o: ../../include/sendefs.h mesmdelete.o: ../../include/smpdefs.h mesmdelete.o: ../../include/sperror.h mesmdelete.o: ../../include/trcvdefs.h mesmdelete.o: ../../include/tskdefs.h mesmdelete.o: ../../include/complex.h mesmdelete.o: ../../include/prefix.h mesmdelete.o: ../../include/suffix.h mesmdelete.o: ../../include/util.h mesmparam.o: ../../include/acdefs.h mesmparam.o: ../../include/cktdefs.h mesmparam.o: ../../include/gendefs.h mesmparam.o: ../../include/iferrmsgs.h mesmparam.o: ../../include/ifsim.h mesmparam.o: ../../include/jobdefs.h mesmparam.o: ../../include/mesdefs.h mesmparam.o: ../../include/optdefs.h mesmparam.o: ../../include/pzdefs.h mesmparam.o: ../../include/sendefs.h mesmparam.o: ../../include/smpdefs.h mesmparam.o: ../../include/sperror.h mesmparam.o: ../../include/trcvdefs.h mesmparam.o: ../../include/tskdefs.h mesmparam.o: ../../include/complex.h mesmparam.o: ../../include/prefix.h mesmparam.o: ../../include/suffix.h mesmparam.o: ../../include/util.h mesparam.o: ../../include/acdefs.h mesparam.o: ../../include/cktdefs.h mesparam.o: ../../include/gendefs.h mesparam.o: ../../include/iferrmsgs.h mesparam.o: ../../include/ifsim.h mesparam.o: ../../include/jobdefs.h mesparam.o: ../../include/mesdefs.h mesparam.o: ../../include/optdefs.h mesparam.o: ../../include/pzdefs.h mesparam.o: ../../include/sendefs.h mesparam.o: ../../include/smpdefs.h mesparam.o: ../../include/sperror.h mesparam.o: ../../include/trcvdefs.h mesparam.o: ../../include/tskdefs.h mesparam.o: ../../include/complex.h mesparam.o: ../../include/prefix.h mesparam.o: ../../include/suffix.h mesparam.o: ../../include/util.h mespzload.o: ../../include/acdefs.h mespzload.o: ../../include/cktdefs.h mespzload.o: ../../include/gendefs.h mespzload.o: ../../include/iferrmsgs.h mespzload.o: ../../include/ifsim.h mespzload.o: ../../include/jobdefs.h mespzload.o: ../../include/mesdefs.h mespzload.o: ../../include/optdefs.h mespzload.o: ../../include/pzdefs.h mespzload.o: ../../include/sendefs.h mespzload.o: ../../include/smpdefs.h mespzload.o: ../../include/sperror.h mespzload.o: ../../include/trcvdefs.h mespzload.o: ../../include/tskdefs.h mespzload.o: ../../include/complex.h mespzload.o: ../../include/prefix.h mespzload.o: ../../include/suffix.h mespzload.o: ../../include/util.h messetup.o: ../../include/acdefs.h messetup.o: ../../include/cktdefs.h messetup.o: ../../include/const.h messetup.o: ../../include/gendefs.h messetup.o: ../../include/iferrmsgs.h messetup.o: ../../include/ifsim.h messetup.o: ../../include/jobdefs.h messetup.o: ../../include/mesdefs.h messetup.o: ../../include/optdefs.h messetup.o: ../../include/pzdefs.h messetup.o: ../../include/sendefs.h messetup.o: ../../include/smpdefs.h messetup.o: ../../include/sperror.h messetup.o: ../../include/trcvdefs.h messetup.o: ../../include/tskdefs.h messetup.o: ../../include/complex.h messetup.o: ../../include/prefix.h messetup.o: ../../include/suffix.h messetup.o: ../../include/util.h mestemp.o: ../../include/acdefs.h mestemp.o: ../../include/cktdefs.h mestemp.o: ../../include/const.h mestemp.o: ../../include/gendefs.h mestemp.o: ../../include/iferrmsgs.h mestemp.o: ../../include/ifsim.h mestemp.o: ../../include/jobdefs.h mestemp.o: ../../include/mesdefs.h mestemp.o: ../../include/optdefs.h mestemp.o: ../../include/pzdefs.h mestemp.o: ../../include/sendefs.h mestemp.o: ../../include/smpdefs.h mestemp.o: ../../include/sperror.h mestemp.o: ../../include/trcvdefs.h mestemp.o: ../../include/tskdefs.h mestemp.o: ../../include/complex.h mestemp.o: ../../include/prefix.h mestemp.o: ../../include/suffix.h mestemp.o: ../../include/util.h mestrunc.o: ../../include/acdefs.h mestrunc.o: ../../include/cktdefs.h mestrunc.o: ../../include/gendefs.h mestrunc.o: ../../include/iferrmsgs.h mestrunc.o: ../../include/ifsim.h mestrunc.o: ../../include/jobdefs.h mestrunc.o: ../../include/mesdefs.h mestrunc.o: ../../include/optdefs.h mestrunc.o: ../../include/pzdefs.h mestrunc.o: ../../include/sendefs.h mestrunc.o: ../../include/smpdefs.h mestrunc.o: ../../include/sperror.h mestrunc.o: ../../include/trcvdefs.h mestrunc.o: ../../include/tskdefs.h mestrunc.o: ../../include/complex.h mestrunc.o: ../../include/prefix.h mestrunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124060741211006440006700000000000011777770500302375600004200000001453spice3c1/spice3/dev/mes/msc51.batcl /I..\..\include\ /c MES.c >> ..\..\errs.out cl /I..\..\include\ /c MESacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MESask.c >> ..\..\errs.out cl /I..\..\include\ /c MESdelete.c >> ..\..\errs.out cl /I..\..\include\ /c MESdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c MESgetic.c >> ..\..\errs.out cl /I..\..\include\ /c MESload.c >> ..\..\errs.out cl /I..\..\include\ /c MESmAsk.c >> ..\..\errs.out cl /I..\..\include\ /c MESmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c MESmParam.c >> ..\..\errs.out cl /I..\..\include\ /c MESparam.c >> ..\..\errs.out cl /I..\..\include\ /c MESpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MESsetup.c >> ..\..\errs.out cl /I..\..\include\ /c MEStemp.c >> ..\..\errs.out cl /I..\..\include\ /c MEStrunc.c >> ..\..\errs.out lib ..\..\DEV2.lib @RESPONSE.LIB 0707070124060741221006440006700000000000011777770500302375600004500000000327spice3c1/spice3/dev/mes/response.lib+MES.OBJ& +MESACLOA.OBJ& +MESASK.OBJ& +MESDELET.OBJ& +MESDESTR.OBJ& +MESGETIC.OBJ& +MESLOAD.OBJ& +MESMASK.OBJ& +MESMDELE.OBJ& +MESMPARA.OBJ& +MESPARAM.OBJ& +MESPZLOA.OBJ& +MESSETUP.OBJ& +MESTEMP.OBJ& +MESTRUNC.OBJ; 0707070124060741231006440006700000000000011777770500302375600004100000001124spice3c1/spice3/dev/mes/make.com$ cc /nowarn MES $ cc /nowarn MESacLoad $ cc /nowarn MESask $ cc /nowarn MESdelete $ cc /nowarn MESdestroy $ cc /nowarn MESgetic $ cc /nowarn MESload $ cc /nowarn MESmAsk $ cc /nowarn MESmDelete $ cc /nowarn MESmParam $ cc /nowarn MESparam $ cc /nowarn MESpzLoad $ cc /nowarn MESsetup $ cc /nowarn MEStemp $ cc /nowarn MEStrunc $ library/object [-.-]DEV.olb - MES.obj, - MESacLoad.obj, - MESask.obj, - MESdelete.obj, - MESdestroy.obj, - MESgetic.obj, - MESload.obj, - MESmAsk.obj, - MESmDelete.obj, - MESmParam.obj, - MESparam.obj, - MESpzLoad.obj, - MESsetup.obj, - MEStemp.obj, - MEStrunc.obj 0707070124060741000407550006700000000000021777770500302375600003000000000000spice3c1/spice3/dev/mes0707070124061002051006440006700000000000011777770500302375600004200000001564spice3c1/spice3/dev/mos1/make.com$ cc /nowarn MOS1 $ cc /nowarn MOS1acLoad $ cc /nowarn MOS1ask $ cc /nowarn MOS1convTest $ cc /nowarn MOS1delete $ cc /nowarn MOS1destroy $ cc /nowarn MOS1getic $ cc /nowarn MOS1load $ cc /nowarn MOS1mAsk $ cc /nowarn MOS1mDelete $ cc /nowarn MOS1mParam $ cc /nowarn MOS1param $ cc /nowarn MOS1pzLoad $ cc /nowarn MOS1sAcLoad $ cc /nowarn MOS1sLoad $ cc /nowarn MOS1sPrint $ cc /nowarn MOS1sSetup $ cc /nowarn MOS1sUpdate $ cc /nowarn MOS1setup $ cc /nowarn MOS1temp $ cc /nowarn MOS1trunc $ library/object [-.-]DEV.olb - MOS1.obj, - MOS1acLoad.obj, - MOS1ask.obj, - MOS1convTest.obj, - MOS1delete.obj, - MOS1destroy.obj, - MOS1getic.obj, - MOS1load.obj, - MOS1mAsk.obj, - MOS1mDelete.obj, - MOS1mParam.obj, - MOS1param.obj, - MOS1pzLoad.obj, - MOS1sAcLoad.obj, - MOS1sLoad.obj, - MOS1sPrint.obj, - MOS1sSetup.obj, - MOS1sUpdate.obj, - MOS1setup.obj, - MOS1temp.obj, - MOS1trunc.obj 0707070124061002061006440006700000000000011777770500302375700004000000022524spice3c1/spice3/dev/mos1/mos1.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "devdefs.h" #include "ifsim.h" #include "mos1defs.h" #include "suffix.h" RCSID("MOS1.c $Revision: 1.14 $ on $Date: 89/03/07 11:31:52 $") static IFparm MOS1pTable[] = { /* parameters */ IOP("l", MOS1_L, IF_REAL , "Length"), IOP("w", MOS1_W, IF_REAL , "Width"), IOP("ad", MOS1_AD, IF_REAL , "Drain area"), IOP("as", MOS1_AS, IF_REAL , "Source area"), IOP("pd", MOS1_PD, IF_REAL , "Drain perimeter"), IOP("ps", MOS1_PS, IF_REAL , "Source perimeter"), IOP("nrd", MOS1_NRD, IF_REAL , "Drain squares"), IOP("nrs", MOS1_NRS, IF_REAL , "Source squares"), IP("off", MOS1_OFF, IF_FLAG , "Device initially off"), IOP("icvds", MOS1_IC_VDS, IF_REAL , "Initial D-S voltage"), IOP("icvgs", MOS1_IC_VGS, IF_REAL , "Initial G-S voltage"), IOP("icvbs", MOS1_IC_VBS, IF_REAL , "Initial B-S voltage"), IOP("temp", MOS1_TEMP, IF_REAL, "Instance temperature"), IP( "ic", MOS1_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"), IP( "sens_l", MOS1_L_SENS, IF_FLAG, "flag to request sensitivity WRT length"), IP( "sens_w", MOS1_W_SENS, IF_FLAG, "flag to request sensitivity WRT width"), OP( "cgs", MOS1_CGS, IF_REAL , "Gate-Source capacitance"), OP( "cgd", MOS1_CGD, IF_REAL , "Gate-Drain capacitance"), OP( "dnode", MOS1_DNODE, IF_INTEGER, "Number of the drain node "), OP( "gnode", MOS1_GNODE, IF_INTEGER, "Number of the gate node "), OP( "snode", MOS1_SNODE, IF_INTEGER, "Number of the source node "), OP( "bnode", MOS1_BNODE, IF_INTEGER, "Number of the node "), OP( "dnodeprime", MOS1_DNODEPRIME, IF_INTEGER, "Number of int. drain node"), OP( "snodeprime", MOS1_SNODEPRIME, IF_INTEGER, "Number of int. source node "), OP( "sourceconductance", MOS1_SOURCECONDUCT, IF_REAL, "Conductance of source"), OP( "drainconductance", MOS1_DRAINCONDUCT, IF_REAL, "Conductance of drain"), OP( "von", MOS1_VON, IF_REAL, " "), OP( "vdsat", MOS1_VDSAT, IF_REAL, "Saturation drain voltage"), OP( "sourcevcrit", MOS1_SOURCEVCRIT,IF_REAL, "Critical source voltage"), OP( "drainvcrit", MOS1_DRAINVCRIT, IF_REAL, "Critical drain voltage"), OP( "cd", MOS1_CD, IF_REAL, "Drain current"), OP( "cbs", MOS1_CBS, IF_REAL, "B-S junction capacitance"), OP( "cbd", MOS1_CBD, IF_REAL, "B-D junction capacitance"), OP( "gmbs", MOS1_GMBS, IF_REAL, "Bulk-Source transconductance"), OP( "gm", MOS1_GM, IF_REAL, "Transconductance"), OP( "gds", MOS1_GDS, IF_REAL, "Drain-Source conductance"), OP( "gbd", MOS1_GBD, IF_REAL, "Bulk-Drain conductance"), OP( "gbs", MOS1_GBS, IF_REAL, "Bulk-Source conductance"), OP( "capbd", MOS1_CAPBD, IF_REAL, "Bulk-Drain capacitance"), OP( "capbs", MOS1_CAPBS, IF_REAL, "Bulk-Source capacitance"), OP( "cbd0", MOS1_CAPZEROBIASBD, IF_REAL, "Zero-Bias B-D junction capacitance"), OP( "cbdsw0", MOS1_CAPZEROBIASBDSW, IF_REAL, " "), OP( "cbs0", MOS1_CAPZEROBIASBS, IF_REAL, "Zero-Bias B-S junction capacitance"), OP( "cbssw0", MOS1_CAPZEROBIASBSSW, IF_REAL, " "), OP( "vbd", MOS1_VBD, IF_REAL, "Bulk-Drain voltage"), OP( "vbs", MOS1_VBS, IF_REAL, "Bulk-Source voltage"), OP( "vgs", MOS1_VGS, IF_REAL, "Gate-Source voltage"), OP( "vds", MOS1_VDS, IF_REAL, "Drain-Source voltage"), OP( "capgs", MOS1_CAPGS, IF_REAL, "Gate-Source capacitance"), OP( "qgs", MOS1_QGS, IF_REAL, "Gate-Source charge storage"), OP( "cqgs",MOS1_CQGS,IF_REAL,"Capacitance due to gate-source charge storage"), OP( "capgd", MOS1_CAPGD, IF_REAL, "Gate-Drain capacitance"), OP( "qgd", MOS1_QGD, IF_REAL, "Gate-Drain charge storage"), OP( "cqgd",MOS1_CQGD,IF_REAL,"Capacitance due to gate-drain charge storage"), OP( "capgb", MOS1_CAPGB, IF_REAL, "Gate-Bulk capacitance"), OP( "qgb", MOS1_QGB, IF_REAL, "Gate-Bulk charge storage"), OP( "cqgb",MOS1_CQGB,IF_REAL,"Capacitance due to gate-bulk charge storage"), OP( "qbd", MOS1_QBD, IF_REAL, "Bulk-Drain charge storage"), OP( "cqbd",MOS1_CQBD,IF_REAL,"Capacitance due to bulk-drain charge storage"), OP( "qbs", MOS1_QBS, IF_REAL, "Bulk-Source charge storage"), OP( "cqbs",MOS1_CQBS,IF_REAL,"Capacitance due to bulk-source charge storage"), OP( "cs", MOS1_CS, IF_REAL, "Source current"), OP( "cg", MOS1_CG, IF_REAL, "Gate current "), OP( "cb", MOS1_CB, IF_REAL, "Bulk current "), OP( "p", MOS1_POWER, IF_REAL, "Instaneous power"), OP( "sens_l_dc", MOS1_L_SENS_DC, IF_REAL, "dc sensitivity wrt length"), OP( "sens_l_real", MOS1_L_SENS_REAL,IF_REAL, "real part of ac sensitivity wrt length"), OP( "sens_l_imag", MOS1_L_SENS_IMAG,IF_REAL, "imag part of ac sensitivity wrt length"), OP( "sens_l_mag", MOS1_L_SENS_MAG, IF_REAL, "sensitivity wrt l of ac magnitude"), OP( "sens_l_ph", MOS1_L_SENS_PH, IF_REAL, "sensitivity wrt l of ac phase"), OP( "sens_l_cplx", MOS1_L_SENS_CPLX,IF_COMPLEX, "ac sensitivity wrt length"), OP( "sens_w_dc", MOS1_W_SENS_DC, IF_REAL, "dc sensitivity wrt width"), OP( "sens_w_real", MOS1_W_SENS_REAL,IF_REAL, "real part of ac sensitivity wrt width"), OP( "sens_w_imag", MOS1_W_SENS_IMAG,IF_REAL, "imag part of ac sensitivity wrt width"), OP( "sens_w_mag", MOS1_W_SENS_MAG, IF_REAL, "sensitivity wrt w of ac magnitude"), OP( "sens_w_ph", MOS1_W_SENS_PH, IF_REAL, "sensitivity wrt w of ac phase"), OP( "sens_w_cplx", MOS1_W_SENS_CPLX,IF_COMPLEX, "ac sensitivity wrt width") }; static IFparm MOS1mPTable[] = { /* model parameters */ IOP("vto", MOS1_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("vt0", MOS1_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("kp", MOS1_MOD_KP, IF_REAL ,"Transconductance parameter"), IOP("gamma", MOS1_MOD_GAMMA, IF_REAL ,"Bulk threshold parameter"), IOP("phi", MOS1_MOD_PHI, IF_REAL ,"Surface potential"), IOP("lambda",MOS1_MOD_LAMBDA,IF_REAL ,"Channel length modulation"), IOP("rd", MOS1_MOD_RD, IF_REAL ,"Drain ohmic resistance"), IOP("rs", MOS1_MOD_RS, IF_REAL ,"Source ohmic resistance"), IOP("cbd", MOS1_MOD_CBD, IF_REAL ,"B-D junction capacitance"), IOP("cbs", MOS1_MOD_CBS, IF_REAL ,"B-S junction capacitance"), IOP("is", MOS1_MOD_IS, IF_REAL ,"Bulk junction sat. current"), IOP("pb", MOS1_MOD_PB, IF_REAL ,"Bulk junction potential"), IOP("cgso", MOS1_MOD_CGSO, IF_REAL ,"Gate-source overlap cap."), IOP("cgdo", MOS1_MOD_CGDO, IF_REAL ,"Gate-drain overlap cap."), IOP("cgbo", MOS1_MOD_CGBO, IF_REAL ,"Gate-bulk overlap cap."), IOP("rsh", MOS1_MOD_RSH, IF_REAL ,"Sheet resistance"), IOP("cj", MOS1_MOD_CJ, IF_REAL ,"Bottom junction cap per area"), IOP("mj", MOS1_MOD_MJ, IF_REAL ,"Bottom grading coefficient"), IOP("cjsw", MOS1_MOD_CJSW, IF_REAL ,"Side junction cap per area"), IOP("mjsw", MOS1_MOD_MJSW, IF_REAL ,"Side grading coefficient"), IOP("js", MOS1_MOD_JS, IF_REAL ,"Bulk jct. sat. current density"), IOP("tox", MOS1_MOD_TOX, IF_REAL ,"Oxide thickness"), IOP("ld", MOS1_MOD_LD, IF_REAL ,"Lateral diffusion"), IOP("u0", MOS1_MOD_U0, IF_REAL ,"Surface mobility"), IOP("uo", MOS1_MOD_U0, IF_REAL ,"Surface mobility"), IOP("fc", MOS1_MOD_FC, IF_REAL ,"Forward bias jct. fit parm."), IP("nmos", MOS1_MOD_NMOS, IF_FLAG ,"N type MOSfet model"), IP("pmos", MOS1_MOD_PMOS, IF_FLAG ,"P type MOSfet model"), IOP("nsub", MOS1_MOD_NSUB, IF_REAL ,"Substrate doping"), IOP("tpg", MOS1_MOD_TPG, IF_INTEGER,"Gate type"), IOP("nss", MOS1_MOD_NSS, IF_REAL ,"Surface state density"), IOP("tnom", MOS1_MOD_TNOM, IF_REAL ,"Parameter measurement temperature"), }; static char *MOS1names[] = { "Drain", "Gate", "Source", "Bulk" }; SPICEdev MOS1info = { { "Mos1", "Level 1 MOSfet model with Meyer capacitance model", sizeof(MOS1names)/sizeof(char *), sizeof(MOS1names)/sizeof(char *), MOS1names, sizeof(MOS1pTable)/sizeof(IFparm), MOS1pTable, sizeof(MOS1mPTable)/sizeof(IFparm), MOS1mPTable, }, MOS1param, MOS1mParam, MOS1load, MOS1setup, MOS1setup, MOS1temp, MOS1trunc, NULL, MOS1acLoad, NULL, MOS1destroy, #ifdef DELETES MOS1mDelete, MOS1delete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ MOS1getic, MOS1ask, NULL, MOS1pzLoad, #ifdef NEWCONV MOS1convTest, #else /* NEWCONV */ NULL, #endif /* NEWCONV */ #ifndef NOSENS MOS1sSetup, MOS1sLoad, MOS1sUpdate, MOS1sAcLoad, MOS1sPrint, NULL, #else /* NOSENS */ NULL, NULL, NULL, NULL, NULL, NULL, #endif /* NOSENS */ sizeof(MOS1instance), sizeof(MOS1model), }; 0707070124061002071006440006700000000000011777770500302376000004600000010320spice3c1/spice3/dev/mos1/mos1acload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1acLoad.c $Revision: 1.4 $ on $Date: 88/07/22 01:27:21 $") int MOS1acLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS1model *model = (MOS1model*)inModel; register MOS1instance *here; int xnrm; int xrev; double xgs; double xgd; double xgb; double xbd; double xbs; double capgs; double capgd; double capgb; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double EffectiveLength; for( ; model != NULL; model = model->MOS1nextModel) { for(here = model->MOS1instances; here!= NULL; here = here->MOS1nextInstance) { if (here->MOS1mode < 0) { xnrm=0; xrev=1; } else { xnrm=1; xrev=0; } /* * meyer's model parameters */ EffectiveLength=here->MOS1l - 2*model->MOS1latDiff; GateSourceOverlapCap = model->MOS1gateSourceOverlapCapFactor * here->MOS1w; GateDrainOverlapCap = model->MOS1gateDrainOverlapCapFactor * here->MOS1w; GateBulkOverlapCap = model->MOS1gateBulkOverlapCapFactor * EffectiveLength; capgs = ( *(ckt->CKTstate0+here->MOS1capgs)+ *(ckt->CKTstate0+here->MOS1capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS1capgd)+ *(ckt->CKTstate0+here->MOS1capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS1capgb)+ *(ckt->CKTstate0+here->MOS1capgb) + GateBulkOverlapCap ); xgs = capgs * ckt->CKTomega; xgd = capgd * ckt->CKTomega; xgb = capgb * ckt->CKTomega; xbd = here->MOS1capbd * ckt->CKTomega; xbs = here->MOS1capbs * ckt->CKTomega; /* * load matrix */ *(here->MOS1GgPtr +1) += xgd+xgs+xgb; *(here->MOS1BbPtr +1) += xgb+xbd+xbs; *(here->MOS1DPdpPtr +1) += xgd+xbd; *(here->MOS1SPspPtr +1) += xgs+xbs; *(here->MOS1GbPtr +1) -= xgb; *(here->MOS1GdpPtr +1) -= xgd; *(here->MOS1GspPtr +1) -= xgs; *(here->MOS1BgPtr +1) -= xgb; *(here->MOS1BdpPtr +1) -= xbd; *(here->MOS1BspPtr +1) -= xbs; *(here->MOS1DPgPtr +1) -= xgd; *(here->MOS1DPbPtr +1) -= xbd; *(here->MOS1SPgPtr +1) -= xgs; *(here->MOS1SPbPtr +1) -= xbs; *(here->MOS1DdPtr) += here->MOS1drainConductance; *(here->MOS1SsPtr) += here->MOS1sourceConductance; *(here->MOS1BbPtr) += here->MOS1gbd+here->MOS1gbs; *(here->MOS1DPdpPtr) += here->MOS1drainConductance+ here->MOS1gds+here->MOS1gbd+ xrev*(here->MOS1gm+here->MOS1gmbs); *(here->MOS1SPspPtr) += here->MOS1sourceConductance+ here->MOS1gds+here->MOS1gbs+ xnrm*(here->MOS1gm+here->MOS1gmbs); *(here->MOS1DdpPtr) -= here->MOS1drainConductance; *(here->MOS1SspPtr) -= here->MOS1sourceConductance; *(here->MOS1BdpPtr) -= here->MOS1gbd; *(here->MOS1BspPtr) -= here->MOS1gbs; *(here->MOS1DPdPtr) -= here->MOS1drainConductance; *(here->MOS1DPgPtr) += (xnrm-xrev)*here->MOS1gm; *(here->MOS1DPbPtr) += -here->MOS1gbd+(xnrm-xrev)*here->MOS1gmbs; *(here->MOS1DPspPtr) -= here->MOS1gds+ xnrm*(here->MOS1gm+here->MOS1gmbs); *(here->MOS1SPgPtr) -= (xnrm-xrev)*here->MOS1gm; *(here->MOS1SPsPtr) -= here->MOS1sourceConductance; *(here->MOS1SPbPtr) -= here->MOS1gbs+(xnrm-xrev)*here->MOS1gmbs; *(here->MOS1SPdpPtr) -= here->MOS1gds+ xrev*(here->MOS1gm+here->MOS1gmbs); } } return(OK); } 0707070124061002101006440006700000000000011777770500302376000004300000036232spice3c1/spice3/dev/mos1/mos1ask.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "mos1defs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("MOS1ask.c $Revision: 1.6 $ on $Date: 89/04/30 12:20:35 $") /*ARGSUSED*/ int MOS1ask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { MOS1instance *here = (MOS1instance*)inst; double vr; double vi; double sr; double si; double vm; static char *msg = "Current and power not available for ac analysis"; switch(which) { case MOS1_TEMP: value->rValue = here->MOS1temp-CONSTCtoK; return(OK); case MOS1_CGS: value->rValue = *(ckt->CKTstate0 + here->MOS1capgs); return(OK); case MOS1_CGD: value->rValue = *(ckt->CKTstate0 + here->MOS1capgd); return(OK); case MOS1_L: value->rValue = here->MOS1l; return(OK); case MOS1_W: value->rValue = here->MOS1w; return(OK); case MOS1_AS: value->rValue = here->MOS1sourceArea; return(OK); case MOS1_AD: value->rValue = here->MOS1drainArea; return(OK); case MOS1_PS: value->rValue = here->MOS1sourcePerimiter; return(OK); case MOS1_PD: value->rValue = here->MOS1drainPerimiter; return(OK); case MOS1_NRS: value->rValue = here->MOS1sourceSquares; return(OK); case MOS1_NRD: value->rValue = here->MOS1drainSquares; return(OK); case MOS1_OFF: value->rValue = here->MOS1off; return(OK); case MOS1_IC_VBS: value->rValue = here->MOS1icVBS; return(OK); case MOS1_IC_VDS: value->rValue = here->MOS1icVDS; return(OK); case MOS1_IC_VGS: value->rValue = here->MOS1icVGS; return(OK); case MOS1_DNODE: value->iValue = here->MOS1dNode; return(OK); case MOS1_GNODE: value->iValue = here->MOS1gNode; return(OK); case MOS1_SNODE: value->iValue = here->MOS1sNode; return(OK); case MOS1_BNODE: value->iValue = here->MOS1bNode; return(OK); case MOS1_DNODEPRIME: value->iValue = here->MOS1dNodePrime; return(OK); case MOS1_SNODEPRIME: value->iValue = here->MOS1sNodePrime; return(OK); case MOS1_SOURCECONDUCT: value->rValue = here->MOS1sourceConductance; return(OK); case MOS1_DRAINCONDUCT: value->rValue = here->MOS1drainConductance; return(OK); case MOS1_VON: value->rValue = here->MOS1von; return(OK); case MOS1_VDSAT: value->rValue = here->MOS1vdsat; return(OK); case MOS1_SOURCEVCRIT: value->rValue = here->MOS1sourceVcrit; return(OK); case MOS1_DRAINVCRIT: value->rValue = here->MOS1drainVcrit; return(OK); case MOS1_CD: value->rValue = here->MOS1cd; return(OK); case MOS1_CBS: value->rValue = here->MOS1cbs; return(OK); case MOS1_CBD: value->rValue = here->MOS1cbd; return(OK); case MOS1_GMBS: value->rValue = here->MOS1gmbs; return(OK); case MOS1_GM: value->rValue = here->MOS1gm; return(OK); case MOS1_GDS: value->rValue = here->MOS1gds; return(OK); case MOS1_GBD: value->rValue = here->MOS1gbd; return(OK); case MOS1_GBS: value->rValue = here->MOS1gbs; return(OK); case MOS1_CAPBD: value->rValue = here->MOS1capbd; return(OK); case MOS1_CAPBS: value->rValue = here->MOS1capbs; return(OK); case MOS1_CAPZEROBIASBD: value->rValue = here->MOS1Cbd; return(OK); case MOS1_CAPZEROBIASBDSW: value->rValue = here->MOS1Cbdsw; return(OK); case MOS1_CAPZEROBIASBS: value->rValue = here->MOS1Cbs; return(OK); case MOS1_CAPZEROBIASBSSW: value->rValue = here->MOS1Cbssw; return(OK); case MOS1_VBD: value->rValue = *(ckt->CKTstate0 + here->MOS1vbd); return(OK); case MOS1_VBS: value->rValue = *(ckt->CKTstate0 + here->MOS1vbs); return(OK); case MOS1_VGS: value->rValue = *(ckt->CKTstate0 + here->MOS1vgs); return(OK); case MOS1_VDS: value->rValue = *(ckt->CKTstate0 + here->MOS1vds); return(OK); case MOS1_CAPGS: value->rValue = *(ckt->CKTstate0 + here->MOS1capgs); return(OK); case MOS1_QGS: value->rValue = *(ckt->CKTstate0 + here->MOS1qgs); return(OK); case MOS1_CQGS: value->rValue = *(ckt->CKTstate0 + here->MOS1cqgs); return(OK); case MOS1_CAPGD: value->rValue = *(ckt->CKTstate0 + here->MOS1capgd); return(OK); case MOS1_QGD: value->rValue = *(ckt->CKTstate0 + here->MOS1qgd); return(OK); case MOS1_CQGD: value->rValue = *(ckt->CKTstate0 + here->MOS1cqgd); return(OK); case MOS1_CAPGB: value->rValue = *(ckt->CKTstate0 + here->MOS1capgb); return(OK); case MOS1_QGB: value->rValue = *(ckt->CKTstate0 + here->MOS1qgb); return(OK); case MOS1_CQGB: value->rValue = *(ckt->CKTstate0 + here->MOS1cqgb); return(OK); case MOS1_QBD: value->rValue = *(ckt->CKTstate0 + here->MOS1qbd); return(OK); case MOS1_CQBD: value->rValue = *(ckt->CKTstate0 + here->MOS1cqbd); return(OK); case MOS1_QBS: value->rValue = *(ckt->CKTstate0 + here->MOS1qbs); return(OK); case MOS1_CQBS: value->rValue = *(ckt->CKTstate0 + here->MOS1cqbs); return(OK); case MOS1_L_SENS_DC: if(ckt->CKTsenInfo && here->MOS1sens_l){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->MOS1senParmNo); } return(OK); case MOS1_L_SENS_REAL: if(ckt->CKTsenInfo && here->MOS1sens_l){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo); } return(OK); case MOS1_L_SENS_IMAG: if(ckt->CKTsenInfo && here->MOS1sens_l){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo); } return(OK); case MOS1_L_SENS_MAG: if(ckt->CKTsenInfo && here->MOS1sens_l){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case MOS1_L_SENS_PH: if(ckt->CKTsenInfo && here->MOS1sens_l){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case MOS1_L_SENS_CPLX: if(ckt->CKTsenInfo && here->MOS1sens_l){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo); } return(OK); case MOS1_W_SENS_DC: if(ckt->CKTsenInfo && here->MOS1sens_w){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); } return(OK); case MOS1_W_SENS_REAL: if(ckt->CKTsenInfo && here->MOS1sens_w){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); } return(OK); case MOS1_W_SENS_IMAG: if(ckt->CKTsenInfo && here->MOS1sens_w){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); } return(OK); case MOS1_W_SENS_MAG: if(ckt->CKTsenInfo && here->MOS1sens_w){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case MOS1_W_SENS_PH: if(ckt->CKTsenInfo && here->MOS1sens_w){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case MOS1_W_SENS_CPLX: if(ckt->CKTsenInfo && here->MOS1sens_w){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS1senParmNo + here->MOS1sens_l); } return(OK); case MOS1_CB : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS1ask.c"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = here->MOS1cbd + here->MOS1cbs - *(ckt->CKTstate0 + here->MOS1cqgb); } return(OK); case MOS1_CG : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS1ask.c"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else if (ckt->CKTcurrentAnalysis & (DOING_DCOP | DOING_TRCV)) { value->rValue = 0; } else if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && (ckt->CKTmode & MODETRANOP)) { value->rValue = 0; } else { value->rValue = *(ckt->CKTstate0 + here->MOS1cqgb) + *(ckt->CKTstate0 + here->MOS1cqgd) + *(ckt->CKTstate0 + here->MOS1cqgs); } return(OK); case MOS1_CS : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS1ask.c"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = -here->MOS1cd; value->rValue -= here->MOS1cbd + here->MOS1cbs - *(ckt->CKTstate0 + here->MOS1cqgb); if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && !(ckt->CKTmode & MODETRANOP)) { value->rValue -= *(ckt->CKTstate0 + here->MOS1cqgb) + *(ckt->CKTstate0 + here->MOS1cqgd) + *(ckt->CKTstate0 + here->MOS1cqgs); } } return(OK); case MOS1_POWER : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS1ask.c"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { double temp; value->rValue = here->MOS1cd * *(ckt->CKTrhsOld + here->MOS1dNode); value->rValue += (here->MOS1cbd + here->MOS1cbs - *(ckt->CKTstate0 + here->MOS1cqgb)) * *(ckt->CKTrhsOld + here->MOS1bNode); if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && !(ckt->CKTmode & MODETRANOP)) { value->rValue += (*(ckt->CKTstate0 + here->MOS1cqgb) + *(ckt->CKTstate0 + here->MOS1cqgd) + *(ckt->CKTstate0 + here->MOS1cqgs)) * *(ckt->CKTrhsOld + here->MOS1gNode); } temp = -here->MOS1cd; temp -= here->MOS1cbd + here->MOS1cbs ; if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && !(ckt->CKTmode & MODETRANOP)) { temp -= *(ckt->CKTstate0 + here->MOS1cqgb) + *(ckt->CKTstate0 + here->MOS1cqgd) + *(ckt->CKTstate0 + here->MOS1cqgs); } value->rValue += temp * *(ckt->CKTrhsOld + here->MOS1sNode); } return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124061002111006440006700000000000011777770500302376000005000000006301spice3c1/spice3/dev/mos1/mos1convtest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "mos1defs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("MOS1convTest.c $Revision: 1.3 $ on $Date: 88/08/05 13:50:16 $") int MOS1convTest(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS1model *model = (MOS1model*)inModel; register MOS1instance *here; double delvbs; double delvbd; double delvgs; double delvds; double delvgd; double cbhat; double cdhat; double vbs; double vbd; double vgs; double vds; double vgd; double vgdo; double tol; for( ; model != NULL; model = model->MOS1nextModel) { for(here = model->MOS1instances; here!= NULL; here = here->MOS1nextInstance) { vbs = model->MOS1type * ( *(ckt->CKTrhs+here->MOS1bNode) - *(ckt->CKTrhs+here->MOS1sNodePrime)); vgs = model->MOS1type * ( *(ckt->CKTrhs+here->MOS1gNode) - *(ckt->CKTrhs+here->MOS1sNodePrime)); vds = model->MOS1type * ( *(ckt->CKTrhs+here->MOS1dNodePrime) - *(ckt->CKTrhs+here->MOS1sNodePrime)); vbd=vbs-vds; vgd=vgs-vds; vgdo = *(ckt->CKTstate0 + here->MOS1vgs) - *(ckt->CKTstate0 + here->MOS1vds); delvbs = vbs - *(ckt->CKTstate0 + here->MOS1vbs); delvbd = vbd - *(ckt->CKTstate0 + here->MOS1vbd); delvgs = vgs - *(ckt->CKTstate0 + here->MOS1vgs); delvds = vds - *(ckt->CKTstate0 + here->MOS1vds); delvgd = vgd-vgdo; /* these are needed for convergence testing */ if (here->MOS1mode >= 0) { cdhat= here->MOS1cd- here->MOS1gbd * delvbd + here->MOS1gmbs * delvbs + here->MOS1gm * delvgs + here->MOS1gds * delvds ; } else { cdhat= here->MOS1cd - ( here->MOS1gbd - here->MOS1gmbs) * delvbd - here->MOS1gm * delvgd + here->MOS1gds * delvds ; } cbhat= here->MOS1cbs + here->MOS1cbd + here->MOS1gbd * delvbd + here->MOS1gbs * delvbs ; /* * check convergence */ tol=ckt->CKTreltol*MAX(FABS(cdhat),FABS(here->MOS1cd))+ ckt->CKTabstol; if (FABS(cdhat-here->MOS1cd) >= tol) { ckt->CKTnoncon++; return(OK); /* no reason to continue, we haven't converged */ } else { tol=ckt->CKTreltol* MAX(FABS(cbhat),FABS(here->MOS1cbs+here->MOS1cbd))+ ckt->CKTabstol; if (FABS(cbhat-(here->MOS1cbs+here->MOS1cbd)) > tol) { ckt->CKTnoncon++; return(OK); /* no reason to continue, we haven't converged*/ } } } } return(OK); } 0707070124061002121006440006700000000000011777770500302376000004600000001602spice3c1/spice3/dev/mos1/mos1delete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1delete.c $Revision: 1.4 $ on $Date: 88/07/22 01:27:26 $") int MOS1delete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { MOS1model *model = (MOS1model *)inModel; MOS1instance **fast = (MOS1instance **)inst; MOS1instance **prev = NULL; MOS1instance *here; for( ; model ; model = model->MOS1nextModel) { prev = &(model->MOS1instances); for(here = *prev; here ; here = *prev) { if(here->MOS1name == name || (fast && here==*fast) ) { *prev= here->MOS1nextInstance; FREE(here); return(OK); } prev = &(here->MOS1nextInstance); } } return(E_NODEV); } 0707070124061002131006440006700000000000011777770500302376000004700000001573spice3c1/spice3/dev/mos1/mos1destroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "mos1defs.h" #include "suffix.h" RCSID("MOS1destroy.c $Revision: 1.4 $ on $Date: 88/07/22 01:27:27 $") void MOS1destroy(inModel) GENmodel **inModel; { MOS1model **model = (MOS1model**)inModel; MOS1instance *here; MOS1instance *prev = NULL; MOS1model *mod = *model; MOS1model *oldmod = NULL; for( ; mod ; mod = mod->MOS1nextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (MOS1instance *)NULL; for(here = mod->MOS1instances ; here ; here = here->MOS1nextInstance) { if(prev){ if(prev->MOS1sens) FREE(prev->MOS1sens); FREE(prev); } prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061002141006440006700000000000011777770500302376000004500000002420spice3c1/spice3/dev/mos1/mos1getic.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1getic.c $Revision: 1.4 $ on $Date: 88/07/22 01:27:28 $") int MOS1getic(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { MOS1model *model = (MOS1model *)inModel; MOS1instance *here; /* * grab initial conditions out of rhs array. User specified, so use * external nodes to get values */ for( ; model ; model = model->MOS1nextModel) { for(here = model->MOS1instances; here ; here = here->MOS1nextInstance) { if(!here->MOS1icVBSGiven) { here->MOS1icVBS = *(ckt->CKTrhs + here->MOS1bNode) - *(ckt->CKTrhs + here->MOS1sNode); } if(!here->MOS1icVDSGiven) { here->MOS1icVDS = *(ckt->CKTrhs + here->MOS1dNode) - *(ckt->CKTrhs + here->MOS1sNode); } if(!here->MOS1icVGSGiven) { here->MOS1icVGS = *(ckt->CKTrhs + here->MOS1gNode) - *(ckt->CKTrhs + here->MOS1sNode); } } } return(OK); } 0707070124061002151006440006700000000000011777770500302376000004400000115326spice3c1/spice3/dev/mos1/mos1load.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "devdefs.h" #include "mos1defs.h" #include "util.h" #include "trandefs.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1load.c $Revision: 1.8 $ on $Date: 89/01/28 01:50:12 $") int MOS1load(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* actually load the current value into the * sparse matrix previously provided */ { register MOS1model *model = (MOS1model *) inModel; register MOS1instance *here; double Beta; double DrainSatCur; double EffectiveLength; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double OxideCap; double SourceSatCur; double arg; double cbhat; double cdhat; double cdrain; double cdreq; double ceq; double ceqbd; double ceqbs; double ceqgb; double ceqgd; double ceqgs; double delvbd; double delvbs; double delvds; double delvgd; double delvgs; double evbd; double evbs; double gcgb; double gcgd; double gcgs; double geq; double sarg; double sargsw; double tol; double vbd; double vbs; double vds; double vdsat; double vgb1; double vgb; double vgd1; double vgd; double vgdo; double vgs1; double vgs; double von; double vt; double xfact; int xnrm; int xrev; double capgs; /* total gate-source capacitance */ double capgd; /* total gate-drain capacitance */ double capgb; /* total gate-bulk capacitance */ int Check; #ifndef NOBYPASS double tempv; #endif /*NOBYPASS*/ int error; #ifdef CAPBYPASS int senflag; #endif /* CAPBYPASS */ int SenCond; #ifdef CAPBYPASS senflag = 0; if(ckt->CKTsenInfo && ckt->CKTsenInfo->SENstatus == PERTURBATION && (ckt->CKTsenInfo->SENmode & (ACSEN | TRANSEN)) { senflag = 1; } #endif /* CAPBYPASS */ /* loop through all the MOS1 device models */ for( ; model != NULL; model = model->MOS1nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS1instances; here != NULL ; here=here->MOS1nextInstance) { vt = CONSTKoverQ * here->MOS1temp; Check=1; if(ckt->CKTsenInfo){ #ifdef SENSDEBUG printf("MOS1load \n"); #endif /* SENSDEBUG */ if((ckt->CKTsenInfo->SENstatus == PERTURBATION)&& (here->MOS1senPertFlag == OFF))continue; } SenCond = ckt->CKTsenInfo && here->MOS1senPertFlag; /* */ #ifdef DETAILPROF asm(" .globl mospta"); asm("mospta:"); #endif /*DETAILPROF*/ /* first, we compute a few useful values - these could be * pre-computed, but for historical reasons are still done * here. They may be moved at the expense of instance size */ EffectiveLength=here->MOS1l - 2*model->MOS1latDiff; if( (here->MOS1tSatCurDens == 0) || (here->MOS1drainArea == 0) || (here->MOS1sourceArea == 0)) { DrainSatCur = here->MOS1tSatCur; SourceSatCur = here->MOS1tSatCur; } else { DrainSatCur = here->MOS1tSatCurDens * here->MOS1drainArea; SourceSatCur = here->MOS1tSatCurDens * here->MOS1sourceArea; } GateSourceOverlapCap = model->MOS1gateSourceOverlapCapFactor * here->MOS1w; GateDrainOverlapCap = model->MOS1gateDrainOverlapCapFactor * here->MOS1w; GateBulkOverlapCap = model->MOS1gateBulkOverlapCapFactor * EffectiveLength; Beta = here->MOS1tTransconductance * here->MOS1w/EffectiveLength; OxideCap = model->MOS1oxideCapFactor * EffectiveLength * here->MOS1w; /* * ok - now to do the start-up operations * * we must get values for vbs, vds, and vgs from somewhere * so we either predict them or recover them from last iteration * These are the two most common cases - either a prediction * step or the general iteration step and they * share some code, so we put them first - others later on */ if(SenCond){ #ifdef SENSDEBUG printf("MOS1senPertFlag = ON \n"); #endif /* SENSDEBUG */ if((ckt->CKTsenInfo->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) { vgs = *(ckt->CKTstate1 + here->MOS1vgs); vds = *(ckt->CKTstate1 + here->MOS1vds); vbs = *(ckt->CKTstate1 + here->MOS1vbs); vbd = *(ckt->CKTstate1 + here->MOS1vbd); vgb = vgs - vbs; vgd = vgs - vds; } else if (ckt->CKTsenInfo->SENmode == ACSEN){ vgb = model->MOS1type * ( *(ckt->CKTrhsOp+here->MOS1gNode) - *(ckt->CKTrhsOp+here->MOS1bNode)); vbs = *(ckt->CKTstate0 + here->MOS1vbs); vbd = *(ckt->CKTstate0 + here->MOS1vbd); vgd = vgb + vbd ; vgs = vgb + vbs ; vds = vbs - vbd ; } else{ vgs = *(ckt->CKTstate0 + here->MOS1vgs); vds = *(ckt->CKTstate0 + here->MOS1vds); vbs = *(ckt->CKTstate0 + here->MOS1vbs); vbd = *(ckt->CKTstate0 + here->MOS1vbd); vgb = vgs - vbs; vgd = vgs - vds; } #ifdef SENSDEBUG printf(" vbs = %.7e ,vbd = %.7e,vgb = %.7e\n",vbs,vbd,vgb); printf(" vgs = %.7e ,vds = %.7e,vgd = %.7e\n",vgs,vds,vgd); #endif /* SENSDEBUG */ goto next1; } if((ckt->CKTmode & (MODEINITFLOAT | MODEINITPRED | MODEINITSMSIG | MODEINITTRAN)) || ( (ckt->CKTmode & MODEINITFIX) && (!here->MOS1off) ) ) { #ifndef PREDICTOR if(ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) { /* predictor step */ xfact=ckt->CKTdelta/ckt->CKTdeltaOld[1]; *(ckt->CKTstate0 + here->MOS1vbs) = *(ckt->CKTstate1 + here->MOS1vbs); vbs = (1+xfact)* (*(ckt->CKTstate1 + here->MOS1vbs)) -(xfact * (*(ckt->CKTstate2 + here->MOS1vbs))); *(ckt->CKTstate0 + here->MOS1vgs) = *(ckt->CKTstate1 + here->MOS1vgs); vgs = (1+xfact)* (*(ckt->CKTstate1 + here->MOS1vgs)) -(xfact * (*(ckt->CKTstate2 + here->MOS1vgs))); *(ckt->CKTstate0 + here->MOS1vds) = *(ckt->CKTstate1 + here->MOS1vds); vds = (1+xfact)* (*(ckt->CKTstate1 + here->MOS1vds)) -(xfact * (*(ckt->CKTstate2 + here->MOS1vds))); *(ckt->CKTstate0 + here->MOS1vbd) = *(ckt->CKTstate0 + here->MOS1vbs)- *(ckt->CKTstate0 + here->MOS1vds); } else { #endif /* PREDICTOR */ /* general iteration */ vbs = model->MOS1type * ( *(ckt->CKTrhsOld+here->MOS1bNode) - *(ckt->CKTrhsOld+here->MOS1sNodePrime)); vgs = model->MOS1type * ( *(ckt->CKTrhsOld+here->MOS1gNode) - *(ckt->CKTrhsOld+here->MOS1sNodePrime)); vds = model->MOS1type * ( *(ckt->CKTrhsOld+here->MOS1dNodePrime) - *(ckt->CKTrhsOld+here->MOS1sNodePrime)); #ifndef PREDICTOR } #endif /* PREDICTOR */ /* now some common crunching for some more useful quantities */ vbd=vbs-vds; vgd=vgs-vds; vgdo = *(ckt->CKTstate0 + here->MOS1vgs) - *(ckt->CKTstate0 + here->MOS1vds); delvbs = vbs - *(ckt->CKTstate0 + here->MOS1vbs); delvbd = vbd - *(ckt->CKTstate0 + here->MOS1vbd); delvgs = vgs - *(ckt->CKTstate0 + here->MOS1vgs); delvds = vds - *(ckt->CKTstate0 + here->MOS1vds); delvgd = vgd-vgdo; /* these are needed for convergence testing */ if (here->MOS1mode >= 0) { cdhat= here->MOS1cd- here->MOS1gbd * delvbd + here->MOS1gmbs * delvbs + here->MOS1gm * delvgs + here->MOS1gds * delvds ; } else { cdhat= here->MOS1cd - ( here->MOS1gbd - here->MOS1gmbs) * delvbd - here->MOS1gm * delvgd + here->MOS1gds * delvds ; } cbhat= here->MOS1cbs + here->MOS1cbd + here->MOS1gbd * delvbd + here->MOS1gbs * delvbs ; /* */ #ifdef DETAILPROF asm(" .globl mosptb"); asm("mosptb:"); #endif /*DETAILPROF*/ #ifndef NOBYPASS /* now lets see if we can bypass (ugh) */ /* the following mess should be one if statement, but * many compilers can't handle it all at once, so it * is split into several successive if statements */ tempv = MAX(FABS(cbhat),FABS(here->MOS1cbs + here->MOS1cbd))+ckt->CKTabstol; if((!(ckt->CKTmode & (MODEINITPRED|MODEINITTRAN|MODEINITSMSIG) )) && (ckt->CKTbypass) ) if ( (FABS(cbhat-(here->MOS1cbs + here->MOS1cbd)) < ckt->CKTreltol * tempv)) if( (FABS(delvbs) < (ckt->CKTreltol * MAX(FABS(vbs), FABS(*(ckt->CKTstate0+here->MOS1vbs)))+ ckt->CKTvoltTol))) if ( (FABS(delvbd) < (ckt->CKTreltol * MAX(FABS(vbd), FABS(*(ckt->CKTstate0+here->MOS1vbd)))+ ckt->CKTvoltTol)) ) if( (FABS(delvgs) < (ckt->CKTreltol * MAX(FABS(vgs), FABS(*(ckt->CKTstate0+here->MOS1vgs)))+ ckt->CKTvoltTol))) if ( (FABS(delvds) < (ckt->CKTreltol * MAX(FABS(vds), FABS(*(ckt->CKTstate0+here->MOS1vds)))+ ckt->CKTvoltTol)) ) if( (FABS(cdhat- here->MOS1cd) < ckt->CKTreltol * MAX(FABS(cdhat),FABS( here->MOS1cd)) + ckt->CKTabstol) ) { /* bypass code * /* nothing interesting has changed since last * iteration on this device, so we just * copy all the values computed last iteration out * and keep going */ vbs = *(ckt->CKTstate0 + here->MOS1vbs); vbd = *(ckt->CKTstate0 + here->MOS1vbd); vgs = *(ckt->CKTstate0 + here->MOS1vgs); vds = *(ckt->CKTstate0 + here->MOS1vds); vgd = vgs - vds; vgb = vgs - vbs; cdrain = here->MOS1mode * (here->MOS1cd + here->MOS1cbd); if(ckt->CKTmode & (MODETRAN | MODETRANOP)) { capgs = ( *(ckt->CKTstate0+here->MOS1capgs)+ *(ckt->CKTstate1+here->MOS1capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS1capgd)+ *(ckt->CKTstate1+here->MOS1capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS1capgb)+ *(ckt->CKTstate1+here->MOS1capgb) + GateBulkOverlapCap ); if(ckt->CKTsenInfo){ here->MOS1cgs = capgs; here->MOS1cgd = capgd; here->MOS1cgb = capgb; } } goto bypass; } #endif /*NOBYPASS*/ /* */ #ifdef DETAILPROF asm(" .globl mosptc"); asm("mosptc:"); #endif /*DETAILPROF*/ /* ok - bypass is out, do it the hard way */ von = model->MOS1type * here->MOS1von; #ifndef NODELIMITING /* * limiting * we want to keep device voltages from changing * so fast that the exponentials churn out overflows * and similar rudeness */ if(*(ckt->CKTstate0 + here->MOS1vds) >=0) { vgs = DEVfetlim(vgs,*(ckt->CKTstate0 + here->MOS1vgs) ,von); vds = vgs - vgd; vds = DEVlimvds(vds,*(ckt->CKTstate0 + here->MOS1vds)); vgd = vgs - vds; } else { vgd = DEVfetlim(vgd,vgdo,von); vds = vgs - vgd; if(!(ckt->CKTfixLimit)) { vds = -DEVlimvds(-vds,-(*(ckt->CKTstate0 + here->MOS1vds))); } vgs = vgd + vds; } if(vds >= 0) { vbs = DEVpnjlim(vbs,*(ckt->CKTstate0 + here->MOS1vbs), vt,here->MOS1sourceVcrit,&Check); vbd = vbs-vds; } else { vbd = DEVpnjlim(vbd,*(ckt->CKTstate0 + here->MOS1vbd), vt,here->MOS1drainVcrit,&Check); vbs = vbd + vds; } #endif /*NODELIMITING*/ /* */ #ifdef DETAILPROF asm(" .globl mosptd"); asm("mosptd:"); #endif /*DETAILPROF*/ } else { /* ok - not one of the simple cases, so we have to * look at all of the possibilities for why we were * called. We still just initialize the three voltages */ if((ckt->CKTmode & MODEINITJCT) && !here->MOS1off) { vds= model->MOS1type * here->MOS1icVDS; vgs= model->MOS1type * here->MOS1icVGS; vbs= model->MOS1type * here->MOS1icVBS; if((vds==0) && (vgs==0) && (vbs==0) && ((ckt->CKTmode & (MODETRAN|MODEDCOP|MODEDCTRANCURVE)) || (!(ckt->CKTmode & MODEUIC)))) { vbs = -1; vgs = model->MOS1type * here->MOS1tVto; vds = 0; } } else { vbs=vgs=vds=0; } } /* */ #ifdef DETAILPROF asm(" .globl mospte"); asm("mospte:"); #endif /*DETAILPROF*/ /* * now all the preliminaries are over - we can start doing the * real work */ vbd = vbs - vds; vgd = vgs - vds; vgb = vgs - vbs; /* * bulk-source and bulk-drain diodes * here we just evaluate the ideal diode current and the * corresponding derivative (conductance). */ next1: if(vbs <= 0) { here->MOS1gbs = SourceSatCur/vt; here->MOS1cbs = here->MOS1gbs*vbs; here->MOS1gbs += ckt->CKTgmin; } else { evbs = exp(MIN(MAX_EXP_ARG,vbs/vt)); here->MOS1gbs = SourceSatCur*evbs/vt + ckt->CKTgmin; here->MOS1cbs = SourceSatCur * (evbs-1); } if(vbd <= 0) { here->MOS1gbd = DrainSatCur/vt; here->MOS1cbd = here->MOS1gbd *vbd; here->MOS1gbd += ckt->CKTgmin; } else { evbd = exp(MIN(MAX_EXP_ARG,vbd/vt)); here->MOS1gbd = DrainSatCur*evbd/vt +ckt->CKTgmin; here->MOS1cbd = DrainSatCur *(evbd-1); } /* now to determine whether the user was able to correctly * identify the source and drain of his device */ if(vds >= 0) { /* normal mode */ here->MOS1mode = 1; } else { /* inverse mode */ here->MOS1mode = -1; } /* */ #ifdef DETAILPROF asm(" .globl mosptf"); asm("mosptf:"); #endif /*DETAILPROF*/ { /* * this block of code evaluates the drain current and its * derivatives using the shichman-hodges model and the * charges associated with the gate, channel and bulk for * mosfets * */ /* the following 4 variables are local to this code block until * it is obvious that they can be made global */ double arg; double betap; double sarg; double vgst; if ((here->MOS1mode==1?vbs:vbd) <= 0 ) { sarg=sqrt(here->MOS1tPhi-(here->MOS1mode==1?vbs:vbd)); } else { sarg=sqrt(here->MOS1tPhi); sarg=sarg-(here->MOS1mode==1?vbs:vbd)/(sarg+sarg); sarg=MAX(0,sarg); } von=(here->MOS1tVbi*model->MOS1type)+model->MOS1gamma*sarg; vgst=(here->MOS1mode==1?vgs:vgd)-von; vdsat=MAX(vgst,0); if (sarg <= 0) { arg=0; } else { arg=model->MOS1gamma/(sarg+sarg); } if (vgst <= 0) { /* * cutoff region */ cdrain=0; here->MOS1gm=0; here->MOS1gds=0; here->MOS1gmbs=0; } else{ /* * saturation region */ betap=Beta*(1+model->MOS1lambda*(vds*here->MOS1mode)); if (vgst <= (vds*here->MOS1mode)){ cdrain=betap*vgst*vgst*.5; here->MOS1gm=betap*vgst; here->MOS1gds=model->MOS1lambda*Beta*vgst*vgst*.5; here->MOS1gmbs=here->MOS1gm*arg; } else { /* * linear region */ cdrain=betap*(vds*here->MOS1mode)* (vgst-.5*(vds*here->MOS1mode)); here->MOS1gm=betap*(vds*here->MOS1mode); here->MOS1gds=betap*(vgst-(vds*here->MOS1mode))+ model->MOS1lambda*Beta* (vds*here->MOS1mode)* (vgst-.5*(vds*here->MOS1mode)); here->MOS1gmbs=here->MOS1gm*arg; } } /* * finished */ } /* */ #ifdef DETAILPROF asm(" .globl mosptg"); asm("mosptg:"); #endif /*DETAILPROF*/ /* now deal with n vs p polarity */ here->MOS1von = model->MOS1type * von; here->MOS1vdsat = model->MOS1type * vdsat; /* line 490 */ /* * COMPUTE EQUIVALENT DRAIN CURRENT SOURCE */ here->MOS1cd=here->MOS1mode * cdrain - here->MOS1cbd; if (ckt->CKTmode & (MODETRAN | MODETRANOP | MODEINITSMSIG)) { /* * now we do the hard part of the bulk-drain and bulk-source * diode - we evaluate the non-linear capacitance and * charge * * the basic equations are not hard, but the implementation * is somewhat long in an attempt to avoid log/exponential * evaluations */ /* * charge storage elements * *.. bulk-drain and bulk-source depletion capacitances */ #ifdef CAPBYPASS if(((ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) || FABS(delvbs) >= ckt->CKTreltol * MAX(FABS(vbs), FABS(*(ckt->CKTstate0+here->MOS1vbs)))+ ckt->CKTvoltTol)|| senflag) #endif /*CAPBYPASS*/ { /* can't bypass the diode capacitance calculations */ #ifdef CAPZEROBYPASS if(here->MOS1Cbs != 0 || here->MOS1Cbssw != 0 ) { #endif /*CAPZEROBYPASS*/ if (vbs < here->MOS1tDepCap){ arg=1-vbs/here->MOS1tBulkPot; /* * the following block looks somewhat long and messy, * but since most users use the default grading * coefficients of .5, and sqrt is MUCH faster than an * exp(log()) we use this special case code to buy time. * (as much as 10% of total job time!) */ #ifndef NOSQRT if(model->MOS1bulkJctBotGradingCoeff == model->MOS1bulkJctSideGradingCoeff) { if(model->MOS1bulkJctBotGradingCoeff == .5) { sarg = sargsw = 1/sqrt(arg); } else { sarg = sargsw = exp(-model->MOS1bulkJctBotGradingCoeff* log(arg)); } } else { if(model->MOS1bulkJctBotGradingCoeff == .5) { sarg = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sarg = exp(-model->MOS1bulkJctBotGradingCoeff* log(arg)); #ifndef NOSQRT } if(model->MOS1bulkJctSideGradingCoeff == .5) { sargsw = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sargsw =exp(-model->MOS1bulkJctSideGradingCoeff* log(arg)); #ifndef NOSQRT } } #endif /*NOSQRT*/ *(ckt->CKTstate0 + here->MOS1qbs) = here->MOS1tBulkPot*(here->MOS1Cbs* (1-arg*sarg)/(1-model->MOS1bulkJctBotGradingCoeff) +here->MOS1Cbssw* (1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff)); here->MOS1capbs=here->MOS1Cbs*sarg+ here->MOS1Cbssw*sargsw; } else { *(ckt->CKTstate0 + here->MOS1qbs) = here->MOS1f4s + vbs*(here->MOS1f2s+vbs*(here->MOS1f3s/2)); here->MOS1capbs=here->MOS1f2s+here->MOS1f3s*vbs; } #ifdef CAPZEROBYPASS } else { *(ckt->CKTstate0 + here->MOS1qbs) = 0; here->MOS1capbs=0; } #endif /*CAPZEROBYPASS*/ } #ifdef CAPBYPASS if(((ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) || FABS(delvbd) >= ckt->CKTreltol * MAX(FABS(vbd), FABS(*(ckt->CKTstate0+here->MOS1vbd)))+ ckt->CKTvoltTol)|| senflag) #endif /*CAPBYPASS*/ /* can't bypass the diode capacitance calculations */ { #ifdef CAPZEROBYPASS if(here->MOS1Cbd != 0 || here->MOS1Cbdsw != 0 ) { #endif /*CAPZEROBYPASS*/ if (vbd < here->MOS1tDepCap) { arg=1-vbd/here->MOS1tBulkPot; /* * the following block looks somewhat long and messy, * but since most users use the default grading * coefficients of .5, and sqrt is MUCH faster than an * exp(log()) we use this special case code to buy time. * (as much as 10% of total job time!) */ #ifndef NOSQRT if(model->MOS1bulkJctBotGradingCoeff == .5 && model->MOS1bulkJctSideGradingCoeff == .5) { sarg = sargsw = 1/sqrt(arg); } else { if(model->MOS1bulkJctBotGradingCoeff == .5) { sarg = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sarg = exp(-model->MOS1bulkJctBotGradingCoeff* log(arg)); #ifndef NOSQRT } if(model->MOS1bulkJctSideGradingCoeff == .5) { sargsw = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sargsw =exp(-model->MOS1bulkJctSideGradingCoeff* log(arg)); #ifndef NOSQRT } } #endif /*NOSQRT*/ *(ckt->CKTstate0 + here->MOS1qbd) = here->MOS1tBulkPot*(here->MOS1Cbd* (1-arg*sarg) /(1-model->MOS1bulkJctBotGradingCoeff) +here->MOS1Cbdsw* (1-arg*sargsw) /(1-model->MOS1bulkJctSideGradingCoeff)); here->MOS1capbd=here->MOS1Cbd*sarg+ here->MOS1Cbdsw*sargsw; } else { *(ckt->CKTstate0 + here->MOS1qbd) = here->MOS1f4d + vbd * (here->MOS1f2d + vbd * here->MOS1f3d/2); here->MOS1capbd=here->MOS1f2d + vbd * here->MOS1f3d; } #ifdef CAPZEROBYPASS } else { *(ckt->CKTstate0 + here->MOS1qbd) = 0; here->MOS1capbd = 0; } #endif /*CAPZEROBYPASS*/ } /* */ #ifdef DETAILPROF asm(" .globl mospth"); asm("mospth:"); #endif /*DETAILPROF*/ if(SenCond && (ckt->CKTsenInfo->SENmode==TRANSEN)) goto next2; if ( (ckt->CKTmode & MODETRAN) || ( (ckt->CKTmode&MODEINITTRAN) && !(ckt->CKTmode&MODEUIC)) ) { /* (above only excludes tranop, since we're only at this * point if tran or tranop ) */ /* * calculate equivalent conductances and currents for * depletion capacitors */ /* integrate the capacitors and save results */ error = NIintegrate(ckt,&geq,&ceq,here->MOS1capbd, here->MOS1qbd); if(error) return(error); here->MOS1gbd += geq; here->MOS1cbd += *(ckt->CKTstate0 + here->MOS1cqbd); here->MOS1cd -= *(ckt->CKTstate0 + here->MOS1cqbd); error = NIintegrate(ckt,&geq,&ceq,here->MOS1capbs, here->MOS1qbs); if(error) return(error); here->MOS1gbs += geq; here->MOS1cbs += *(ckt->CKTstate0 + here->MOS1cqbs); } } /* */ #ifdef DETAILPROF asm(" .globl mospti"); asm("mospti:"); #endif /*DETAILPROF*/ if(SenCond) goto next2; /* * check convergence */ if ( (here->MOS1off == 0) || (!(ckt->CKTmode & (MODEINITFIX|MODEINITSMSIG))) ){ if (Check == 1) { ckt->CKTnoncon++; #ifndef NEWCONV } else { tol=ckt->CKTreltol*MAX(FABS(cdhat), FABS(here->MOS1cd))+ckt->CKTabstol; if (FABS(cdhat-here->MOS1cd) >= tol) { ckt->CKTnoncon++; } else { tol=ckt->CKTreltol*MAX(FABS(cbhat), FABS(here->MOS1cbs+here->MOS1cbd))+ ckt->CKTabstol; if (FABS(cbhat-(here->MOS1cbs+here->MOS1cbd)) > tol) { ckt->CKTnoncon++; } } #endif /*NEWCONV*/ } } /* */ #ifdef DETAILPROF asm(" .globl mosptj"); asm("mosptj:"); #endif /*DETAILPROF*/ /* save things away for next time */ next2: *(ckt->CKTstate0 + here->MOS1vbs) = vbs; *(ckt->CKTstate0 + here->MOS1vbd) = vbd; *(ckt->CKTstate0 + here->MOS1vgs) = vgs; *(ckt->CKTstate0 + here->MOS1vds) = vds; /* */ #ifdef DETAILPROF asm(" .globl mosptk"); asm("mosptk:"); #endif /*DETAILPROF*/ /* * meyer's capacitor model */ if ( ckt->CKTmode & (MODETRAN | MODETRANOP | MODEINITSMSIG) ) { /* * calculate meyer's capacitors */ /* * new cmeyer - this just evaluates at the current time, * expects you to remember values from previous time * returns 1/2 of non-constant portion of capacitance * you must add in the other half from previous time * and the constant part */ if (here->MOS1mode > 0){ DEVqmeyer (vgs,vgd,vgb,von,vdsat, (ckt->CKTstate0 + here->MOS1capgs), (ckt->CKTstate0 + here->MOS1capgd), (ckt->CKTstate0 + here->MOS1capgb), here->MOS1tPhi,OxideCap); } else { DEVqmeyer (vgd,vgs,vgb,von,vdsat, (ckt->CKTstate0 + here->MOS1capgd), (ckt->CKTstate0 + here->MOS1capgs), (ckt->CKTstate0 + here->MOS1capgb), here->MOS1tPhi,OxideCap); } vgs1 = *(ckt->CKTstate1 + here->MOS1vgs); vgd1 = vgs1 - *(ckt->CKTstate1 + here->MOS1vds); vgb1 = vgs1 - *(ckt->CKTstate1 + here->MOS1vbs); if(ckt->CKTmode & (MODETRANOP|MODEINITSMSIG)) { capgs = 2 * *(ckt->CKTstate0+here->MOS1capgs)+ GateSourceOverlapCap ; capgd = 2 * *(ckt->CKTstate0+here->MOS1capgd)+ GateDrainOverlapCap ; capgb = 2 * *(ckt->CKTstate0+here->MOS1capgb)+ GateBulkOverlapCap ; } else { capgs = ( *(ckt->CKTstate0+here->MOS1capgs)+ *(ckt->CKTstate1+here->MOS1capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS1capgd)+ *(ckt->CKTstate1+here->MOS1capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS1capgb)+ *(ckt->CKTstate1+here->MOS1capgb) + GateBulkOverlapCap ); } if(ckt->CKTsenInfo){ here->MOS1cgs = capgs; here->MOS1cgd = capgd; here->MOS1cgb = capgb; } /* */ #ifdef DETAILPROF asm(" .globl mosptl"); asm("mosptl:"); #endif /*DETAILPROF*/ /* * store small-signal parameters (for meyer's model) * all parameters already stored, so done... */ if(SenCond){ if((ckt->CKTsenInfo->SENmode == DCSEN)|| (ckt->CKTsenInfo->SENmode == ACSEN)){ continue; } } #ifndef PREDICTOR if (ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) { *(ckt->CKTstate0 + here->MOS1qgs) = (1+xfact) * *(ckt->CKTstate1 + here->MOS1qgs) - xfact * *(ckt->CKTstate2 + here->MOS1qgs); *(ckt->CKTstate0 + here->MOS1qgd) = (1+xfact) * *(ckt->CKTstate1 + here->MOS1qgd) - xfact * *(ckt->CKTstate2 + here->MOS1qgd); *(ckt->CKTstate0 + here->MOS1qgb) = (1+xfact) * *(ckt->CKTstate1 + here->MOS1qgb) - xfact * *(ckt->CKTstate2 + here->MOS1qgb); } else { #endif /*PREDICTOR*/ if(ckt->CKTmode & MODETRAN) { *(ckt->CKTstate0 + here->MOS1qgs) = (vgs-vgs1)*capgs + *(ckt->CKTstate1 + here->MOS1qgs) ; *(ckt->CKTstate0 + here->MOS1qgd) = (vgd-vgd1)*capgd + *(ckt->CKTstate1 + here->MOS1qgd) ; *(ckt->CKTstate0 + here->MOS1qgb) = (vgb-vgb1)*capgb + *(ckt->CKTstate1 + here->MOS1qgb) ; } else { /* TRANOP only */ *(ckt->CKTstate0 + here->MOS1qgs) = vgs*capgs; *(ckt->CKTstate0 + here->MOS1qgd) = vgd*capgd; *(ckt->CKTstate0 + here->MOS1qgb) = vgb*capgb; } #ifndef PREDICTOR } #endif /*PREDICTOR*/ } bypass: if(SenCond) continue; if ( (ckt->CKTmode & (MODEINITTRAN)) || (! (ckt->CKTmode & (MODETRAN)) ) ) { /* * initialize to zero charge conductances * and current */ gcgs=0; ceqgs=0; gcgd=0; ceqgd=0; gcgb=0; ceqgb=0; } else { if(capgs == 0) *(ckt->CKTstate0 + here->MOS1cqgs) =0; if(capgd == 0) *(ckt->CKTstate0 + here->MOS1cqgd) =0; if(capgb == 0) *(ckt->CKTstate0 + here->MOS1cqgb) =0; /* * calculate equivalent conductances and currents for * meyer"s capacitors */ error = NIintegrate(ckt,&gcgs,&ceqgs,capgs,here->MOS1qgs); if(error) return(error); error = NIintegrate(ckt,&gcgd,&ceqgd,capgd,here->MOS1qgd); if(error) return(error); error = NIintegrate(ckt,&gcgb,&ceqgb,capgb,here->MOS1qgb); if(error) return(error); ceqgs=ceqgs-gcgs*vgs+ckt->CKTag[0]* *(ckt->CKTstate0 + here->MOS1qgs); ceqgd=ceqgd-gcgd*vgd+ckt->CKTag[0]* *(ckt->CKTstate0 + here->MOS1qgd); ceqgb=ceqgb-gcgb*vgb+ckt->CKTag[0]* *(ckt->CKTstate0 + here->MOS1qgb); } /* * store charge storage info for meyer's cap in lx table */ /* * load current vector */ ceqbs = model->MOS1type * (here->MOS1cbs-(here->MOS1gbs-ckt->CKTgmin)*vbs); ceqbd = model->MOS1type * (here->MOS1cbd-(here->MOS1gbd-ckt->CKTgmin)*vbd); if (here->MOS1mode >= 0) { xnrm=1; xrev=0; cdreq=model->MOS1type*(cdrain-here->MOS1gds*vds- here->MOS1gm*vgs-here->MOS1gmbs*vbs); } else { xnrm=0; xrev=1; cdreq = -(model->MOS1type)*(cdrain-here->MOS1gds*(-vds)- here->MOS1gm*vgd-here->MOS1gmbs*vbd); } *(ckt->CKTrhs + here->MOS1gNode) -= (model->MOS1type * (ceqgs + ceqgb + ceqgd)); *(ckt->CKTrhs + here->MOS1bNode) -= (ceqbs + ceqbd - model->MOS1type * ceqgb); *(ckt->CKTrhs + here->MOS1dNodePrime) += (ceqbd - cdreq + model->MOS1type * ceqgd); *(ckt->CKTrhs + here->MOS1sNodePrime) += cdreq + ceqbs + model->MOS1type * ceqgs; /* * load y matrix */ *(here->MOS1DdPtr) += (here->MOS1drainConductance); *(here->MOS1GgPtr) += ((gcgd+gcgs+gcgb)); *(here->MOS1SsPtr) += (here->MOS1sourceConductance); *(here->MOS1BbPtr) += (here->MOS1gbd+here->MOS1gbs+gcgb); *(here->MOS1DPdpPtr) += (here->MOS1drainConductance+here->MOS1gds+ here->MOS1gbd+xrev*(here->MOS1gm+here->MOS1gmbs)+gcgd); *(here->MOS1SPspPtr) += (here->MOS1sourceConductance+here->MOS1gds+ here->MOS1gbs+xnrm*(here->MOS1gm+here->MOS1gmbs)+gcgs); *(here->MOS1DdpPtr) += (-here->MOS1drainConductance); *(here->MOS1GbPtr) -= gcgb; *(here->MOS1GdpPtr) -= gcgd; *(here->MOS1GspPtr) -= gcgs; *(here->MOS1SspPtr) += (-here->MOS1sourceConductance); *(here->MOS1BgPtr) -= gcgb; *(here->MOS1BdpPtr) -= here->MOS1gbd; *(here->MOS1BspPtr) -= here->MOS1gbs; *(here->MOS1DPdPtr) += (-here->MOS1drainConductance); *(here->MOS1DPgPtr) += ((xnrm-xrev)*here->MOS1gm-gcgd); *(here->MOS1DPbPtr) += (-here->MOS1gbd+(xnrm-xrev)*here->MOS1gmbs); *(here->MOS1DPspPtr) += (-here->MOS1gds-xnrm* (here->MOS1gm+here->MOS1gmbs)); *(here->MOS1SPgPtr) += (-(xnrm-xrev)*here->MOS1gm-gcgs); *(here->MOS1SPsPtr) += (-here->MOS1sourceConductance); *(here->MOS1SPbPtr) += (-here->MOS1gbs-(xnrm-xrev)*here->MOS1gmbs); *(here->MOS1SPdpPtr) += (-here->MOS1gds-xrev* (here->MOS1gm+here->MOS1gmbs)); } } return(OK); } 0707070124061002161006440006700000000000011777770500302376000004400000006710spice3c1/spice3/dev/mos1/mos1mask.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1mAsk.c $Revision: 1.4 $ on $Date: 88/07/25 12:41:23 $") /*ARGSUSED*/ int MOS1mAsk(ckt,inst,which,value) CKTcircuit *ckt; GENmodel *inst; int which; IFvalue *value; { MOS1model *model = (MOS1model *)inst; switch(which) { case MOS1_MOD_TNOM: value->rValue = model->MOS1tnom-CONSTCtoK; return(OK); case MOS1_MOD_VTO: value->rValue = model->MOS1vt0; return(OK); case MOS1_MOD_KP: value->rValue = model->MOS1transconductance; return(OK); case MOS1_MOD_GAMMA: value->rValue = model->MOS1gamma; return(OK); case MOS1_MOD_PHI: value->rValue = model->MOS1phi; return(OK); case MOS1_MOD_LAMBDA: value->rValue = model->MOS1lambda; return(OK); case MOS1_MOD_RD: value->rValue = model->MOS1drainResistance; return(OK); case MOS1_MOD_RS: value->rValue = model->MOS1sourceResistance; return(OK); case MOS1_MOD_CBD: value->rValue = model->MOS1capBD; return(OK); case MOS1_MOD_CBS: value->rValue = model->MOS1capBS; return(OK); case MOS1_MOD_IS: value->rValue = model->MOS1jctSatCur; return(OK); case MOS1_MOD_PB: value->rValue = model->MOS1bulkJctPotential; return(OK); case MOS1_MOD_CGSO: value->rValue = model->MOS1gateSourceOverlapCapFactor; return(OK); case MOS1_MOD_CGDO: value->rValue = model->MOS1gateDrainOverlapCapFactor; return(OK); case MOS1_MOD_CGBO: value->rValue = model->MOS1gateBulkOverlapCapFactor; return(OK); case MOS1_MOD_CJ: value->rValue = model->MOS1bulkCapFactor; return(OK); case MOS1_MOD_MJ: value->rValue = model->MOS1bulkJctBotGradingCoeff; return(OK); case MOS1_MOD_CJSW: value->rValue = model->MOS1sideWallCapFactor; return(OK); case MOS1_MOD_MJSW: value->rValue = model->MOS1bulkJctSideGradingCoeff; return(OK); case MOS1_MOD_JS: value->rValue = model->MOS1jctSatCurDensity; return(OK); case MOS1_MOD_TOX: value->rValue = model->MOS1oxideThickness; return(OK); case MOS1_MOD_LD: value->rValue = model->MOS1latDiff; return(OK); case MOS1_MOD_RSH: value->rValue = model->MOS1sheetResistance; return(OK); case MOS1_MOD_U0: value->rValue = model->MOS1surfaceMobility; return(OK); case MOS1_MOD_FC: value->rValue = model->MOS1fwdCapDepCoeff; return(OK); case MOS1_MOD_NSUB: value->rValue = model->MOS1substrateDoping; return(OK); case MOS1_MOD_TPG: value->iValue = model->MOS1gateType; return(OK); case MOS1_MOD_NSS: value->rValue = model->MOS1surfaceStateDensity; return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124061002171006440006700000000000011777770500302376000004700000002015spice3c1/spice3/dev/mos1/mos1mdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1mDelete.c $Revision: 1.4 $ on $Date: 88/07/22 01:27:34 $") int MOS1mDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { MOS1model **model = (MOS1model **)inModel; MOS1model *modfast = (MOS1model *)kill; MOS1instance *here; MOS1instance *prev = NULL; MOS1model **oldmod; oldmod = model; for( ; *model ; model = &((*model)->MOS1nextModel)) { if( (*model)->MOS1modName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->MOS1nextModel; /* cut deleted device out of list */ for(here = (*model)->MOS1instances ; here ; here = here->MOS1nextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061002201006440006700000000000011777770500302376000004600000011761spice3c1/spice3/dev/mos1/mos1mparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "util.h" #include "ifsim.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1mParam.c $Revision: 1.7 $ on $Date: 89/01/19 16:56:01 $") int MOS1mParam(param,value,inModel) int param; IFvalue *value; GENmodel *inModel; { register MOS1model *model = (MOS1model *)inModel; switch(param) { case MOS1_MOD_TNOM: model->MOS1tnom = value->rValue+CONSTCtoK; model->MOS1tnomGiven = TRUE; break; case MOS1_MOD_VTO: model->MOS1vt0 = value->rValue; model->MOS1vt0Given = TRUE; break; case MOS1_MOD_KP: model->MOS1transconductance = value->rValue; model->MOS1transconductanceGiven = TRUE; break; case MOS1_MOD_GAMMA: model->MOS1gamma = value->rValue; model->MOS1gammaGiven = TRUE; break; case MOS1_MOD_PHI: model->MOS1phi = value->rValue; model->MOS1phiGiven = TRUE; break; case MOS1_MOD_LAMBDA: model->MOS1lambda = value->rValue; model->MOS1lambdaGiven = TRUE; break; case MOS1_MOD_RD: model->MOS1drainResistance = value->rValue; model->MOS1drainResistanceGiven = TRUE; break; case MOS1_MOD_RS: model->MOS1sourceResistance = value->rValue; model->MOS1sourceResistanceGiven = TRUE; break; case MOS1_MOD_CBD: model->MOS1capBD = value->rValue; model->MOS1capBDGiven = TRUE; break; case MOS1_MOD_CBS: model->MOS1capBS = value->rValue; model->MOS1capBSGiven = TRUE; break; case MOS1_MOD_IS: model->MOS1jctSatCur = value->rValue; model->MOS1jctSatCurGiven = TRUE; break; case MOS1_MOD_PB: model->MOS1bulkJctPotential = value->rValue; model->MOS1bulkJctPotentialGiven = TRUE; break; case MOS1_MOD_CGSO: model->MOS1gateSourceOverlapCapFactor = value->rValue; model->MOS1gateSourceOverlapCapFactorGiven = TRUE; break; case MOS1_MOD_CGDO: model->MOS1gateDrainOverlapCapFactor = value->rValue; model->MOS1gateDrainOverlapCapFactorGiven = TRUE; break; case MOS1_MOD_CGBO: model->MOS1gateBulkOverlapCapFactor = value->rValue; model->MOS1gateBulkOverlapCapFactorGiven = TRUE; break; case MOS1_MOD_CJ: model->MOS1bulkCapFactor = value->rValue; model->MOS1bulkCapFactorGiven = TRUE; break; case MOS1_MOD_MJ: model->MOS1bulkJctBotGradingCoeff = value->rValue; model->MOS1bulkJctBotGradingCoeffGiven = TRUE; break; case MOS1_MOD_CJSW: model->MOS1sideWallCapFactor = value->rValue; model->MOS1sideWallCapFactorGiven = TRUE; break; case MOS1_MOD_MJSW: model->MOS1bulkJctSideGradingCoeff = value->rValue; model->MOS1bulkJctSideGradingCoeffGiven = TRUE; break; case MOS1_MOD_JS: model->MOS1jctSatCurDensity = value->rValue; model->MOS1jctSatCurDensityGiven = TRUE; break; case MOS1_MOD_TOX: model->MOS1oxideThickness = value->rValue; model->MOS1oxideThicknessGiven = TRUE; break; case MOS1_MOD_LD: model->MOS1latDiff = value->rValue; model->MOS1latDiffGiven = TRUE; break; case MOS1_MOD_RSH: model->MOS1sheetResistance = value->rValue; model->MOS1sheetResistanceGiven = TRUE; break; case MOS1_MOD_U0: model->MOS1surfaceMobility = value->rValue; model->MOS1surfaceMobilityGiven = TRUE; break; case MOS1_MOD_FC: model->MOS1fwdCapDepCoeff = value->rValue; model->MOS1fwdCapDepCoeffGiven = TRUE; break; case MOS1_MOD_NSS: model->MOS1surfaceStateDensity = value->rValue; model->MOS1surfaceStateDensityGiven = TRUE; break; case MOS1_MOD_NSUB: model->MOS1substrateDoping = value->rValue; model->MOS1substrateDopingGiven = TRUE; break; case MOS1_MOD_TPG: model->MOS1gateType = value->iValue; model->MOS1gateTypeGiven = TRUE; break; case MOS1_MOD_NMOS: if(value->iValue) { model->MOS1type = 1; model->MOS1typeGiven = TRUE; } break; case MOS1_MOD_PMOS: if(value->iValue) { model->MOS1type = -1; model->MOS1typeGiven = TRUE; } break; default: return(E_BADPARM); } return(OK); } 0707070124061002211006440006700000000000011777770500302376100004500000006153spice3c1/spice3/dev/mos1/mos1param.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "util.h" #include "ifsim.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1param.c $Revision: 1.9 $ on $Date: 89/01/26 00:53:41 $") /* ARGSUSED */ int MOS1param(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { MOS1instance *here = (MOS1instance *)inst; switch(param) { case MOS1_TEMP: here->MOS1temp = value->rValue+CONSTCtoK; here->MOS1tempGiven = TRUE; break; case MOS1_W: here->MOS1w = value->rValue; here->MOS1wGiven = TRUE; break; case MOS1_L: here->MOS1l = value->rValue; here->MOS1lGiven = TRUE; break; case MOS1_AS: here->MOS1sourceArea = value->rValue; here->MOS1sourceAreaGiven = TRUE; break; case MOS1_AD: here->MOS1drainArea = value->rValue; here->MOS1drainAreaGiven = TRUE; break; case MOS1_PS: here->MOS1sourcePerimiter = value->rValue; here->MOS1sourcePerimiterGiven = TRUE; break; case MOS1_PD: here->MOS1drainPerimiter = value->rValue; here->MOS1drainPerimiterGiven = TRUE; break; case MOS1_NRS: here->MOS1sourceSquares = value->rValue; here->MOS1sourceSquaresGiven = TRUE; break; case MOS1_NRD: here->MOS1drainSquares = value->rValue; here->MOS1drainSquaresGiven = TRUE; break; case MOS1_OFF: here->MOS1off = value->iValue; break; case MOS1_IC_VBS: here->MOS1icVBS = value->rValue; here->MOS1icVBSGiven = TRUE; break; case MOS1_IC_VDS: here->MOS1icVDS = value->rValue; here->MOS1icVDSGiven = TRUE; break; case MOS1_IC_VGS: here->MOS1icVGS = value->rValue; here->MOS1icVGSGiven = TRUE; break; case MOS1_IC: switch(value->v.numValue){ case 3: here->MOS1icVBS = *(value->v.vec.rVec+2); here->MOS1icVBSGiven = TRUE; case 2: here->MOS1icVGS = *(value->v.vec.rVec+1); here->MOS1icVGSGiven = TRUE; case 1: here->MOS1icVDS = *(value->v.vec.rVec); here->MOS1icVDSGiven = TRUE; break; default: return(E_BADPARM); } break; case MOS1_L_SENS: if(value->iValue) { here->MOS1senParmNo = 1; here->MOS1sens_l = 1; } break; case MOS1_W_SENS: if(value->iValue) { here->MOS1senParmNo = 1; here->MOS1sens_w = 1; } break; default: return(E_BADPARM); } return(OK); } 0707070124061002221006440006700000000000011777770500302376100004600000011727spice3c1/spice3/dev/mos1/mos1pzload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "complex.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1pzLoad.c $Revision: 1.4 $ on $Date: 88/07/22 01:27:38 $") int MOS1pzLoad(inModel,ckt,s) GENmodel *inModel; register CKTcircuit *ckt; SPcomplex *s; { register MOS1model *model = (MOS1model*)inModel; register MOS1instance *here; int xnrm; int xrev; double xgs; double xgd; double xgb; double xbd; double xbs; double capgs; double capgd; double capgb; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double EffectiveLength; for( ; model != NULL; model = model->MOS1nextModel) { for(here = model->MOS1instances; here!= NULL; here = here->MOS1nextInstance) { if (here->MOS1mode < 0) { xnrm=0; xrev=1; } else { xnrm=1; xrev=0; } /* * meyer's model parameters */ EffectiveLength=here->MOS1l - 2*model->MOS1latDiff; GateSourceOverlapCap = model->MOS1gateSourceOverlapCapFactor * here->MOS1w; GateDrainOverlapCap = model->MOS1gateDrainOverlapCapFactor * here->MOS1w; GateBulkOverlapCap = model->MOS1gateBulkOverlapCapFactor * EffectiveLength; capgs = ( 2* *(ckt->CKTstate0+here->MOS1capgs)+ GateSourceOverlapCap ); capgd = ( 2* *(ckt->CKTstate0+here->MOS1capgd)+ GateDrainOverlapCap ); capgb = ( 2* *(ckt->CKTstate0+here->MOS1capgb)+ GateBulkOverlapCap ); xgs = capgs; xgd = capgd; xgb = capgb; xbd = here->MOS1capbd; xbs = here->MOS1capbs; /*printf("mos2: xgs=%g, xgd=%g, xgb=%g, xbd=%g, xbs=%g\n", xgs,xgd,xgb,xbd,xbs);*/ /* * load matrix */ *(here->MOS1GgPtr ) += (xgd+xgs+xgb)*s->real; *(here->MOS1GgPtr +1) += (xgd+xgs+xgb)*s->imag; *(here->MOS1BbPtr ) += (xgb+xbd+xbs)*s->real; *(here->MOS1BbPtr +1) += (xgb+xbd+xbs)*s->imag; *(here->MOS1DPdpPtr ) += (xgd+xbd)*s->real; *(here->MOS1DPdpPtr +1) += (xgd+xbd)*s->imag; *(here->MOS1SPspPtr ) += (xgs+xbs)*s->real; *(here->MOS1SPspPtr +1) += (xgs+xbs)*s->imag; *(here->MOS1GbPtr ) -= xgb*s->real; *(here->MOS1GbPtr +1) -= xgb*s->imag; *(here->MOS1GdpPtr ) -= xgd*s->real; *(here->MOS1GdpPtr +1) -= xgd*s->imag; *(here->MOS1GspPtr ) -= xgs*s->real; *(here->MOS1GspPtr +1) -= xgs*s->imag; *(here->MOS1BgPtr ) -= xgb*s->real; *(here->MOS1BgPtr +1) -= xgb*s->imag; *(here->MOS1BdpPtr ) -= xbd*s->real; *(here->MOS1BdpPtr +1) -= xbd*s->imag; *(here->MOS1BspPtr ) -= xbs*s->real; *(here->MOS1BspPtr +1) -= xbs*s->imag; *(here->MOS1DPgPtr ) -= xgd*s->real; *(here->MOS1DPgPtr +1) -= xgd*s->imag; *(here->MOS1DPbPtr ) -= xbd*s->real; *(here->MOS1DPbPtr +1) -= xbd*s->imag; *(here->MOS1SPgPtr ) -= xgs*s->real; *(here->MOS1SPgPtr +1) -= xgs*s->imag; *(here->MOS1SPbPtr ) -= xbs*s->real; *(here->MOS1SPbPtr +1) -= xbs*s->imag; *(here->MOS1DdPtr) += here->MOS1drainConductance; *(here->MOS1SsPtr) += here->MOS1sourceConductance; *(here->MOS1BbPtr) += here->MOS1gbd+here->MOS1gbs; *(here->MOS1DPdpPtr) += here->MOS1drainConductance+ here->MOS1gds+here->MOS1gbd+ xrev*(here->MOS1gm+here->MOS1gmbs); *(here->MOS1SPspPtr) += here->MOS1sourceConductance+ here->MOS1gds+here->MOS1gbs+ xnrm*(here->MOS1gm+here->MOS1gmbs); *(here->MOS1DdpPtr) -= here->MOS1drainConductance; *(here->MOS1SspPtr) -= here->MOS1sourceConductance; *(here->MOS1BdpPtr) -= here->MOS1gbd; *(here->MOS1BspPtr) -= here->MOS1gbs; *(here->MOS1DPdPtr) -= here->MOS1drainConductance; *(here->MOS1DPgPtr) += (xnrm-xrev)*here->MOS1gm; *(here->MOS1DPbPtr) += -here->MOS1gbd+(xnrm-xrev)*here->MOS1gmbs; *(here->MOS1DPspPtr) -= here->MOS1gds+ xnrm*(here->MOS1gm+here->MOS1gmbs); *(here->MOS1SPgPtr) -= (xnrm-xrev)*here->MOS1gm; *(here->MOS1SPsPtr) -= here->MOS1sourceConductance; *(here->MOS1SPbPtr) -= here->MOS1gbs+(xnrm-xrev)*here->MOS1gmbs; *(here->MOS1SPdpPtr) -= here->MOS1gds+ xrev*(here->MOS1gm+here->MOS1gmbs); } } return(OK); } 0707070124061002231006440006700000000000011777770500302376100004700000074011spice3c1/spice3/dev/mos1/mos1sacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "const.h" #include "mos1defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1sAcLoad.c $Revision: 1.3 $ on $Date: 88/08/07 15:24:19 $") /* actually load the current ac sensitivity * information into the array previously provided */ int MOS1sAcLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS1model *model = (MOS1model*)inModel; register MOS1instance *here; int xnrm; int xrev; double A0; double Apert; double DELA; double DELAinv; double gdpr0; double gspr0; double gds0; double gbs0; double gbd0; double gm0; double gmbs0; double gdpr; double gspr; double gds; double gbs; double gbd; double gm; double gmbs; double xcgs0; double xcgd0; double xcgb0; double xbd0; double xbs0; double xcgs; double xcgd; double xcgb; double xbd; double xbs; double vbsOp; double vbdOp; double vspr; double vdpr; double vgs; double vgd; double vgb; double vbs; double vbd; double vds; double ivspr; double ivdpr; double ivgs; double ivgd; double ivgb; double ivbs; double ivbd; double ivds; double cspr; double cdpr; double cgs; double cgd; double cgb; double cbs; double cbd; double cds; double cs0; double csprm0; double cd0; double cdprm0; double cg0; double cb0; double cs; double csprm; double cd; double cdprm; double cg; double cb; double icspr; double icdpr; double icgs; double icgd; double icgb; double icbs; double icbd; double icds; double ics0; double icsprm0; double icd0; double icdprm0; double icg0; double icb0; double ics; double icsprm; double icd; double icdprm; double icg; double icb; double DvDp; int i; int flag; int error; int iparmno; double arg; double sarg; double sargsw; double SaveState[44]; int save_mode; SENstruct *info; #ifdef SENSDEBUG printf("MOS1senacload\n"); printf("CKTomega = %.5e\n",ckt->CKTomega); #endif /* SENSDEBUG */ info = ckt->CKTsenInfo; info->SENstatus = PERTURBATION; for( ; model != NULL; model = model->MOS1nextModel) { for(here = model->MOS1instances; here!= NULL; here = here->MOS1nextInstance) { /* save the unperturbed values in the state vector */ for(i=0; i <= 16; i++) *(SaveState + i) = *(ckt->CKTstate0 + here->MOS1states + i); *(SaveState + 17) = here->MOS1sourceConductance; *(SaveState + 18) = here->MOS1drainConductance; *(SaveState + 19) = here->MOS1cd; *(SaveState + 20) = here->MOS1cbs; *(SaveState + 21) = here->MOS1cbd; *(SaveState + 22) = here->MOS1gmbs; *(SaveState + 23) = here->MOS1gm; *(SaveState + 24) = here->MOS1gds; *(SaveState + 25) = here->MOS1gbd; *(SaveState + 26) = here->MOS1gbs; *(SaveState + 27) = here->MOS1capbd; *(SaveState + 28) = here->MOS1capbs; *(SaveState + 29) = here->MOS1Cbd; *(SaveState + 30) = here->MOS1Cbdsw; *(SaveState + 31) = here->MOS1Cbs; *(SaveState + 32) = here->MOS1Cbssw; *(SaveState + 33) = here->MOS1f2d; *(SaveState + 34) = here->MOS1f3d; *(SaveState + 35) = here->MOS1f4d; *(SaveState + 36) = here->MOS1f2s; *(SaveState + 37) = here->MOS1f3s; *(SaveState + 38) = here->MOS1f4s; *(SaveState + 39) = here->MOS1cgs; *(SaveState + 40) = here->MOS1cgd; *(SaveState + 41) = here->MOS1cgb; *(SaveState + 42) = here->MOS1vdsat; *(SaveState + 43) = here->MOS1von; save_mode = here->MOS1mode; xnrm=1; xrev=0; if (here->MOS1mode < 0) { xnrm=0; xrev=1; } vbsOp = model->MOS1type * ( *(ckt->CKTrhsOp+here->MOS1bNode) - *(ckt->CKTrhsOp+here->MOS1sNodePrime)); vbdOp = model->MOS1type * ( *(ckt->CKTrhsOp+here->MOS1bNode) - *(ckt->CKTrhsOp+here->MOS1dNodePrime)); vspr = *(ckt->CKTrhsOld + here->MOS1sNode) - *(ckt->CKTrhsOld + here->MOS1sNodePrime) ; ivspr = *(ckt->CKTirhsOld + here->MOS1sNode) - *(ckt->CKTirhsOld + here->MOS1sNodePrime) ; vdpr = *(ckt->CKTrhsOld + here->MOS1dNode) - *(ckt->CKTrhsOld + here->MOS1dNodePrime) ; ivdpr = *(ckt->CKTirhsOld + here->MOS1dNode) - *(ckt->CKTirhsOld + here->MOS1dNodePrime) ; vgb = *(ckt->CKTrhsOld + here->MOS1gNode) - *(ckt->CKTrhsOld + here->MOS1bNode) ; ivgb = *(ckt->CKTirhsOld + here->MOS1gNode) - *(ckt->CKTirhsOld + here->MOS1bNode) ; vbs = *(ckt->CKTrhsOld + here->MOS1bNode) - *(ckt->CKTrhsOld + here->MOS1sNodePrime) ; ivbs = *(ckt->CKTirhsOld + here->MOS1bNode) - *(ckt->CKTirhsOld + here->MOS1sNodePrime) ; vbd = *(ckt->CKTrhsOld + here->MOS1bNode) - *(ckt->CKTrhsOld + here->MOS1dNodePrime) ; ivbd = *(ckt->CKTirhsOld + here->MOS1bNode) - *(ckt->CKTirhsOld + here->MOS1dNodePrime) ; vds = vbs - vbd ; ivds = ivbs - ivbd ; vgs = vgb + vbs ; ivgs = ivgb + ivbs ; vgd = vgb + vbd ; ivgd = ivgb + ivbd ; #ifdef SENSDEBUG printf("senacload instance name %s\n",here->MOS1name); printf("gate = %d ,drain = %d, drainprm = %d\n", here->MOS1gNode,here->MOS1dNode,here->MOS1dNodePrime); printf("source = %d , sourceprm = %d ,body = %d, senparmno = %d\n", here->MOS1sNode ,here->MOS1sNodePrime,here->MOS1bNode, here->MOS1senParmNo); printf("\n without perturbation \n"); #endif /* SENSDEBUG */ /* without perturbation */ *(ckt->CKTstate0 + here->MOS1vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS1vbd) = vbdOp; here->MOS1senPertFlag = ON ; if(info->SENacpertflag == 1){ /* store the unperturbed values of small signal parameters */ if(error = MOS1load((GENmodel*)model,ckt)) return(error); *(here->MOS1senCgs) = here->MOS1cgs; *(here->MOS1senCgd) = here->MOS1cgd; *(here->MOS1senCgb) = here->MOS1cgb; *(here->MOS1senCbd) = here->MOS1capbd; *(here->MOS1senCbs) = here->MOS1capbs; *(here->MOS1senGds) = here->MOS1gds; *(here->MOS1senGbs) = here->MOS1gbs; *(here->MOS1senGbd) = here->MOS1gbd; *(here->MOS1senGm) = here->MOS1gm; *(here->MOS1senGmbs) = here->MOS1gmbs; } xcgs0= *(here->MOS1senCgs) * ckt->CKTomega; xcgd0= *(here->MOS1senCgd) * ckt->CKTomega; xcgb0= *(here->MOS1senCgb) * ckt->CKTomega; xbd0= *(here->MOS1senCbd) * ckt->CKTomega; xbs0= *(here->MOS1senCbs) * ckt->CKTomega; gds0= *(here->MOS1senGds); gbs0= *(here->MOS1senGbs); gbd0= *(here->MOS1senGbd); gm0= *(here->MOS1senGm); gmbs0= *(here->MOS1senGmbs); gdpr0 = here->MOS1drainConductance; gspr0 = here->MOS1sourceConductance; cspr = gspr0 * vspr ; icspr = gspr0 * ivspr ; cdpr = gdpr0 * vdpr ; icdpr = gdpr0 * ivdpr ; cgs = ( - xcgs0 * ivgs ); icgs = xcgs0 * vgs ; cgd = ( - xcgd0 * ivgd ); icgd = xcgd0 * vgd ; cgb = ( - xcgb0 * ivgb ); icgb = xcgb0 * vgb ; cbs = ( gbs0 * vbs - xbs0 * ivbs ); icbs = ( xbs0 * vbs + gbs0 * ivbs ); cbd = ( gbd0 * vbd - xbd0 * ivbd ); icbd = ( xbd0 * vbd + gbd0 * ivbd ); cds = ( gds0 * vds + xnrm * (gm0 * vgs + gmbs0 * vbs) - xrev * (gm0 * vgd + gmbs0 * vbd) ); icds = ( gds0 * ivds + xnrm * (gm0 * ivgs + gmbs0 * ivbs) - xrev * (gm0 * ivgd + gmbs0 * ivbd) ); cs0 = cspr; ics0 = icspr; csprm0 = ( -cspr - cgs - cbs - cds ) ; icsprm0 = ( -icspr - icgs - icbs - icds ) ; cd0 = cdpr; icd0 = icdpr; cdprm0 = ( -cdpr - cgd - cbd + cds ) ; icdprm0 = ( -icdpr - icgd - icbd + icds ) ; cg0 = cgs + cgd + cgb ; icg0 = icgs + icgd + icgb ; cb0 = cbs + cbd - cgb ; icb0 = icbs + icbd - icgb ; #ifdef SENSDEBUG printf("gspr0 = %.7e , gdpr0 = %.7e , gds0 = %.7e, gbs0 = %.7e\n", gspr0,gdpr0,gds0,gbs0); printf("gbd0 = %.7e , gm0 = %.7e , gmbs0 = %.7e\n",gbd0,gm0,gmbs0); printf("xcgs0 = %.7e , xcgd0 = %.7e , xcgb0 = %.7e,", xcgs0,xcgd0,xcgb0); printf("xbd0 = %.7e,xbs0 = %.7e\n",xbd0,xbs0); printf("vbs = %.7e , vbd = %.7e , vgb = %.7e\n",vbs,vbd,vgb); printf("ivbs = %.7e , ivbd = %.7e , ivgb = %.7e\n",ivbs,ivbd,ivgb); printf("cbs0 = %.7e , cbd0 = %.7e , cgb0 = %.7e\n",cbs,cbd,cgb); printf("cb0 = %.7e , cg0 = %.7e , cs0 = %.7e\n",cb0,cg0,cs0); printf("csprm0 = %.7e, cd0 = %.7e, cdprm0 = %.7e\n", csprm0,cd0,cdprm0); printf("icb0 = %.7e , icg0 = %.7e , ics0 = %.7e\n",icb0,icg0,ics0); printf("icsprm0 = %.7e, icd0 = %.7e, icdprm0 = %.7e\n", icsprm0,icd0,icdprm0); printf("\nPerturbation of vbs\n"); #endif /* SENSDEBUG */ /* Perturbation of vbs */ flag = 1; A0 = vbsOp; DELA = info->SENpertfac * here->MOS1tVto ; DELAinv = 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed vbs */ Apert = A0 + DELA; *(ckt->CKTstate0 + here->MOS1vbs) = Apert; *(ckt->CKTstate0 + here->MOS1vbd) = vbdOp; if(error = MOS1load((GENmodel*)model,ckt)) return(error); *(here->MOS1senCgs + 1) = here->MOS1cgs; *(here->MOS1senCgd + 1) = here->MOS1cgd; *(here->MOS1senCgb + 1) = here->MOS1cgb; *(here->MOS1senCbd + 1) = here->MOS1capbd; *(here->MOS1senCbs + 1) = here->MOS1capbs; *(here->MOS1senGds + 1) = here->MOS1gds; *(here->MOS1senGbs + 1) = here->MOS1gbs; *(here->MOS1senGbd + 1) = here->MOS1gbd; *(here->MOS1senGm + 1) = here->MOS1gm; *(here->MOS1senGmbs + 1) = here->MOS1gmbs; *(ckt->CKTstate0 + here->MOS1vbs) = A0; } goto load; pertvbd: /* Perturbation of vbd */ #ifdef SENSDEBUG printf("\nPerturbation of vbd\n"); #endif /* SENSDEBUG */ flag = 2; A0 = vbdOp; DELA = info->SENpertfac * here->MOS1tVto + 1e-8; DELAinv = 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed vbd */ Apert = A0 + DELA; *(ckt->CKTstate0 + here->MOS1vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS1vbd) = Apert; if(error = MOS1load((GENmodel*)model,ckt)) return(error); *(here->MOS1senCgs + 2) = here->MOS1cgs; *(here->MOS1senCgd + 2) = here->MOS1cgd; *(here->MOS1senCgb + 2) = here->MOS1cgb; *(here->MOS1senCbd + 2) = here->MOS1capbd; *(here->MOS1senCbs + 2) = here->MOS1capbs; *(here->MOS1senGds + 2) = here->MOS1gds; *(here->MOS1senGbs + 2) = here->MOS1gbs; *(here->MOS1senGbd + 2) = here->MOS1gbd; *(here->MOS1senGm + 2) = here->MOS1gm; *(here->MOS1senGmbs + 2) = here->MOS1gmbs; *(ckt->CKTstate0 + here->MOS1vbd) = A0; } goto load; pertvgb: /* Perturbation of vgb */ #ifdef SENSDEBUG printf("\nPerturbation of vgb\n"); #endif /* SENSDEBUG */ flag = 3; A0 = model->MOS1type * (*(ckt->CKTrhsOp + here->MOS1gNode) - *(ckt->CKTrhsOp + here->MOS1bNode)); DELA = info->SENpertfac * A0 + 1e-8; DELAinv = model->MOS1type * 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed vgb */ *(ckt->CKTstate0 + here->MOS1vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS1vbd) = vbdOp; *(ckt->CKTrhsOp + here->MOS1bNode) -= DELA; if(error = MOS1load((GENmodel*)model,ckt)) return(error); *(here->MOS1senCgs + 3) = here->MOS1cgs; *(here->MOS1senCgd + 3) = here->MOS1cgd; *(here->MOS1senCgb + 3) = here->MOS1cgb; *(here->MOS1senCbd + 3) = here->MOS1capbd; *(here->MOS1senCbs + 3) = here->MOS1capbs; *(here->MOS1senGds + 3) = here->MOS1gds; *(here->MOS1senGbs + 3) = here->MOS1gbs; *(here->MOS1senGbd + 3) = here->MOS1gbd; *(here->MOS1senGm + 3) = here->MOS1gm; *(here->MOS1senGmbs + 3) = here->MOS1gmbs; *(ckt->CKTrhsOp + here->MOS1bNode) += DELA; } goto load; pertl: /* Perturbation of length */ if(here->MOS1sens_l == 0){ goto pertw; } #ifdef SENSDEBUG printf("\nPerturbation of length\n"); #endif /* SENSDEBUG */ flag = 4; A0 = here->MOS1l; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed length */ Apert = A0 + DELA; here->MOS1l = Apert; *(ckt->CKTstate0 + here->MOS1vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS1vbd) = vbdOp; if(error = MOS1load((GENmodel*)model,ckt)) return(error); *(here->MOS1senCgs + 4) = here->MOS1cgs; *(here->MOS1senCgd + 4) = here->MOS1cgd; *(here->MOS1senCgb + 4) = here->MOS1cgb; *(here->MOS1senCbd + 4) = here->MOS1capbd; *(here->MOS1senCbs + 4) = here->MOS1capbs; *(here->MOS1senGds + 4) = here->MOS1gds; *(here->MOS1senGbs + 4) = here->MOS1gbs; *(here->MOS1senGbd + 4) = here->MOS1gbd; *(here->MOS1senGm + 4) = here->MOS1gm; *(here->MOS1senGmbs + 4) = here->MOS1gmbs; here->MOS1l = A0; } goto load; pertw: /* Perturbation of width */ if(here->MOS1sens_w == 0) goto next; #ifdef SENSDEBUG printf("\nPerturbation of width\n"); #endif /* SENSDEBUG */ flag = 5; A0 = here->MOS1w; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; Apert = A0 + DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed width */ here->MOS1w = Apert; here->MOS1drainArea *= (1 + info->SENpertfac); here->MOS1sourceArea *= (1 + info->SENpertfac); here->MOS1Cbd *= (1 + info->SENpertfac); here->MOS1Cbs *= (1 + info->SENpertfac); if(here->MOS1drainPerimiter){ here->MOS1Cbdsw += here->MOS1Cbdsw * DELA/here->MOS1drainPerimiter; } if(here->MOS1sourcePerimiter){ here->MOS1Cbssw += here->MOS1Cbssw * DELA/here->MOS1sourcePerimiter; } if(vbdOp >= here->MOS1tDepCap){ arg = 1-model->MOS1fwdCapDepCoeff; sarg = exp( (-model->MOS1bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS1bulkJctSideGradingCoeff) * log(arg) ); here->MOS1f2d = here->MOS1Cbd*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctBotGradingCoeff))* sarg/arg + here->MOS1Cbdsw*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctSideGradingCoeff))* sargsw/arg; here->MOS1f3d = here->MOS1Cbd * model->MOS1bulkJctBotGradingCoeff * sarg/arg/ here->MOS1tBulkPot + here->MOS1Cbdsw * model->MOS1bulkJctSideGradingCoeff * sargsw/arg / here->MOS1tBulkPot; here->MOS1f4d = here->MOS1Cbd*here->MOS1tBulkPot* (1-arg*sarg)/ (1-model->MOS1bulkJctBotGradingCoeff) + here->MOS1Cbdsw*here->MOS1tBulkPot*(1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff) -here->MOS1f3d/2* (here->MOS1tDepCap*here->MOS1tDepCap) -here->MOS1tDepCap * here->MOS1f2d; } if(vbsOp >= here->MOS1tDepCap){ arg = 1-model->MOS1fwdCapDepCoeff; sarg = exp( (-model->MOS1bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS1bulkJctSideGradingCoeff) * log(arg) ); here->MOS1f2s = here->MOS1Cbs*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctBotGradingCoeff))* sarg/arg + here->MOS1Cbssw*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctSideGradingCoeff))* sargsw/arg; here->MOS1f3s = here->MOS1Cbs * model->MOS1bulkJctBotGradingCoeff * sarg/arg/ here->MOS1tBulkPot + here->MOS1Cbssw * model->MOS1bulkJctSideGradingCoeff * sargsw/arg / here->MOS1tBulkPot; here->MOS1f4s = here->MOS1Cbs* here->MOS1tBulkPot*(1-arg*sarg)/ (1-model->MOS1bulkJctBotGradingCoeff) + here->MOS1Cbssw*here->MOS1tBulkPot*(1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff) -here->MOS1f3s/2* (here->MOS1tDepCap*here->MOS1tDepCap) -here->MOS1tDepCap * here->MOS1f2s; } *(ckt->CKTstate0 + here->MOS1vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS1vbd) = vbdOp; if(error = MOS1load((GENmodel*)model,ckt)) return(error); *(here->MOS1senCgs + 5) = here->MOS1cgs; *(here->MOS1senCgd + 5) = here->MOS1cgd; *(here->MOS1senCgb + 5) = here->MOS1cgb; *(here->MOS1senCbd + 5) = here->MOS1capbd; *(here->MOS1senCbs + 5) = here->MOS1capbs; *(here->MOS1senGds + 5) = here->MOS1gds; *(here->MOS1senGbs + 5) = here->MOS1gbs; *(here->MOS1senGbd + 5) = here->MOS1gbd; *(here->MOS1senGm + 5) = here->MOS1gm; *(here->MOS1senGmbs + 5) = here->MOS1gmbs; here->MOS1w = A0; here->MOS1drainArea /= (1 + info->SENpertfac); here->MOS1sourceArea /= (1 + info->SENpertfac); } load: gds= *(here->MOS1senGds + flag); gbs= *(here->MOS1senGbs + flag); gbd= *(here->MOS1senGbd + flag); gm= *(here->MOS1senGm + flag); gmbs= *(here->MOS1senGmbs + flag); if(flag == 5){ gdpr = here->MOS1drainConductance * Apert/A0; gspr = here->MOS1sourceConductance * Apert/A0; } else{ gdpr = here->MOS1drainConductance; gspr = here->MOS1sourceConductance; } xcgs= *(here->MOS1senCgs + flag) * ckt->CKTomega; xcgd= *(here->MOS1senCgd + flag) * ckt->CKTomega; xcgb= *(here->MOS1senCgb + flag) * ckt->CKTomega; xbd= *(here->MOS1senCbd + flag) * ckt->CKTomega; xbs= *(here->MOS1senCbs + flag) * ckt->CKTomega; #ifdef SENSDEBUG printf("flag = %d \n",flag); printf("gspr = %.7e , gdpr = %.7e , gds = %.7e, gbs = %.7e\n", gspr,gdpr,gds,gbs); printf("gbd = %.7e , gm = %.7e , gmbs = %.7e\n",gbd,gm,gmbs); printf("xcgs = %.7e , xcgd = %.7e , xcgb = %.7e,", xcgs,xcgd,xcgb); printf("xbd = %.7e,xbs = %.7e\n",xbd,xbs); #endif /* SENSDEBUG */ cspr = gspr * vspr ; icspr = gspr * ivspr ; cdpr = gdpr * vdpr ; icdpr = gdpr * ivdpr ; cgs = ( - xcgs * ivgs ); icgs = xcgs * vgs ; cgd = ( - xcgd * ivgd ); icgd = xcgd * vgd ; cgb = ( - xcgb * ivgb ); icgb = xcgb * vgb ; cbs = ( gbs * vbs - xbs * ivbs ); icbs = ( xbs * vbs + gbs * ivbs ); cbd = ( gbd * vbd - xbd * ivbd ); icbd = ( xbd * vbd + gbd * ivbd ); cds = ( gds * vds + xnrm * (gm * vgs + gmbs * vbs) - xrev * (gm * vgd + gmbs * vbd) ); icds = ( gds * ivds + xnrm * (gm * ivgs + gmbs * ivbs) - xrev * (gm * ivgd + gmbs * ivbd) ); cs = cspr; ics = icspr; csprm = ( -cspr - cgs - cbs - cds ) ; icsprm = ( -icspr - icgs - icbs - icds ) ; cd = cdpr; icd = icdpr; cdprm = ( -cdpr - cgd - cbd + cds ) ; icdprm = ( -icdpr - icgd - icbd + icds ) ; cg = cgs + cgd + cgb ; icg = icgs + icgd + icgb ; cb = cbs + cbd - cgb ; icb = icbs + icbd - icgb ; #ifdef SENSDEBUG printf("vbs = %.7e , vbd = %.7e , vgb = %.7e\n",vbs,vbd,vgb); printf("ivbs = %.7e , ivbd = %.7e , ivgb = %.7e\n",ivbs,ivbd,ivgb); printf("cbs = %.7e , cbd = %.7e , cgb = %.7e\n",cbs,cbd,cgb); printf("cb = %.7e , cg = %.7e , cs = %.7e\n",cb,cg,cs); printf("csprm = %.7e, cd = %.7e, cdprm = %.7e\n",csprm,cd,cdprm); printf("icb = %.7e , icg = %.7e , ics = %.7e\n",icb,icg,ics); printf("icsprm = %.7e, icd = %.7e, icdprm = %.7e\n", icsprm,icd,icdprm); #endif /* SENSDEBUG */ for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ if((flag == 4) && (iparmno != here->MOS1senParmNo)) continue; if( (flag == 5) && (iparmno != (here->MOS1senParmNo + here->MOS1sens_l))) continue; switch(flag){ case 1: DvDp = model->MOS1type * (info->SEN_Sap[here->MOS1bNode][iparmno] - info->SEN_Sap[here->MOS1sNodePrime][iparmno]); break; case 2: DvDp = model->MOS1type * ( info->SEN_Sap[here->MOS1bNode][iparmno] - info->SEN_Sap[here->MOS1dNodePrime][iparmno]); break; case 3: DvDp = model->MOS1type * ( info->SEN_Sap[here->MOS1gNode][iparmno] - info->SEN_Sap[here->MOS1bNode][iparmno]); break; case 4: DvDp = 1; break; case 5: DvDp = 1; break; } *(info->SEN_RHS[here->MOS1bNode] + iparmno) -= ( cb - cb0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS1bNode] + iparmno) -= ( icb - icb0) * DELAinv * DvDp; *(info->SEN_RHS[here->MOS1gNode] + iparmno) -= ( cg - cg0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS1gNode] + iparmno) -= ( icg - icg0) * DELAinv * DvDp; if(here->MOS1sNode != here->MOS1sNodePrime){ *(info->SEN_RHS[here->MOS1sNode] + iparmno) -= ( cs - cs0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS1sNode] + iparmno) -= ( ics - ics0) * DELAinv * DvDp; } *(info->SEN_RHS[here->MOS1sNodePrime] + iparmno) -= ( csprm - csprm0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS1sNodePrime] + iparmno) -= ( icsprm - icsprm0) * DELAinv * DvDp; if(here->MOS1dNode != here->MOS1dNodePrime){ *(info->SEN_RHS[here->MOS1dNode] + iparmno) -= ( cd - cd0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS1dNode] + iparmno) -= ( icd - icd0) * DELAinv * DvDp; } *(info->SEN_RHS[here->MOS1dNodePrime] + iparmno) -= ( cdprm - cdprm0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS1dNodePrime] + iparmno) -= ( icdprm - icdprm0) * DELAinv * DvDp; #ifdef SENSDEBUG printf("after loading\n"); printf("DvDp = %.5e , DELAinv = %.5e ,flag = %d ,", DvDp,DELAinv,flag); printf("iparmno = %d,senparmno = %d\n", iparmno,here->MOS1senParmNo); printf("A0 = %.5e , Apert = %.5e ,CONSTvt = %.5e \n", A0,Apert,here->MOS1tVto); printf("senb = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS1bNode] + iparmno), *(info->SEN_iRHS[here->MOS1bNode] + iparmno)); printf("seng = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS1gNode] + iparmno), *(info->SEN_iRHS[here->MOS1gNode] + iparmno)); printf("sens = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS1sNode] + iparmno), *(info->SEN_iRHS[here->MOS1sNode] + iparmno)); printf("sensprm = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS1sNodePrime] + iparmno), *(info->SEN_iRHS[here->MOS1sNodePrime] + iparmno)); printf("send = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS1dNode] + iparmno), *(info->SEN_iRHS[here->MOS1dNode] + iparmno)); printf("sendprm = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS1dNodePrime] + iparmno), *(info->SEN_iRHS[here->MOS1dNodePrime] + iparmno)); #endif /* SENSDEBUG */ } switch(flag){ case 1: goto pertvbd ; case 2: goto pertvgb ; case 3: goto pertl ; case 4: goto pertw ; case 5: break; } next: ; /* put the unperturbed values back into the state vector */ for(i=0; i <= 16; i++) *(ckt->CKTstate0 + here->MOS1states + i) = *(SaveState + i); here->MOS1sourceConductance = *(SaveState + 17) ; here->MOS1drainConductance = *(SaveState + 18) ; here->MOS1cd = *(SaveState + 19) ; here->MOS1cbs = *(SaveState + 20) ; here->MOS1cbd = *(SaveState + 21) ; here->MOS1gmbs = *(SaveState + 22) ; here->MOS1gm = *(SaveState + 23) ; here->MOS1gds = *(SaveState + 24) ; here->MOS1gbd = *(SaveState + 25) ; here->MOS1gbs = *(SaveState + 26) ; here->MOS1capbd = *(SaveState + 27) ; here->MOS1capbs = *(SaveState + 28) ; here->MOS1Cbd = *(SaveState + 29) ; here->MOS1Cbdsw = *(SaveState + 30) ; here->MOS1Cbs = *(SaveState + 31) ; here->MOS1Cbssw = *(SaveState + 32) ; here->MOS1f2d = *(SaveState + 33) ; here->MOS1f3d = *(SaveState + 34) ; here->MOS1f4d = *(SaveState + 35) ; here->MOS1f2s = *(SaveState + 36) ; here->MOS1f3s = *(SaveState + 37) ; here->MOS1f4s = *(SaveState + 38) ; here->MOS1cgs = *(SaveState + 39) ; here->MOS1cgd = *(SaveState + 40) ; here->MOS1cgb = *(SaveState + 41) ; here->MOS1vdsat = *(SaveState + 42) ; here->MOS1von = *(SaveState + 43) ; here->MOS1mode = save_mode ; here->MOS1senPertFlag = OFF; } } info->SENstatus = NORMAL; #ifdef SENSDEBUG printf("MOS1senacload end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124061002241006440006700000000000011777770500302376200004500000064271spice3c1/spice3/dev/mos1/mos1sload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* actually load the current sensitivity * information into the array previously provided */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos1defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1sLoad.c $Revision: 1.2 $ on $Date: 88/07/22 01:27:57 $") int MOS1sLoad(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; double SaveState[44]; int save_mode; int i; int iparmno; int error; int flag; double A0; double DELA; double Apert; double DELAinv; double gspr0; double gspr; double gdpr0; double gdpr; double cdpr0; double cspr0; double cd0; double cbd0; double cbs0; double cd; double cbd; double cbs; double DcdprDp; double DcsprDp; double DcbDp; double DcdDp; double DcbsDp; double DcbdDp; double DcdprmDp; double DcsprmDp; double qgs0; double qgd0; double qgb0; double qbd0; double qbd; double qbs0; double qbs; double DqgsDp; double DqgdDp; double DqgbDp; double DqbdDp; double DqbsDp; double Osxpgs; double Osxpgd; double Osxpgb; double Osxpbd; double Osxpbs; double tag0; double tag1; double arg; double sarg; double sargsw; int offset; double EffectiveLength; SENstruct *info; #ifdef SENSDEBUG printf("MOS1senload \n"); printf("CKTtime = %.5e\n",ckt->CKTtime); printf("CKTorder = %d\n",ckt->CKTorder); #endif /* SENSDEBUG */ info = ckt->CKTsenInfo; info->SENstatus = PERTURBATION; tag0 = ckt->CKTag[0]; tag1 = ckt->CKTag[1]; if(ckt->CKTorder == 1){ tag1 = 0; } /* loop through all the models */ for( ; model != NULL; model = model->MOS1nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS1instances; here != NULL ; here=here->MOS1nextInstance) { #ifdef SENSDEBUG printf("senload instance name %s\n",here->MOS1name); printf("gate = %d ,drain = %d, drainprm = %d\n", here->MOS1gNode,here->MOS1dNode,here->MOS1dNodePrime); printf("source = %d , sourceprm = %d ,body = %d, senparmno = %d\n", here->MOS1sNode ,here->MOS1sNodePrime, here->MOS1bNode,here->MOS1senParmNo); #endif /* SENSDEBUG */ /* save the unperturbed values in the state vector */ for(i=0; i <= 16; i++){ *(SaveState + i) = *(ckt->CKTstate0 + here->MOS1states + i); } *(SaveState + 17) = here->MOS1sourceConductance; *(SaveState + 18) = here->MOS1drainConductance; *(SaveState + 19) = here->MOS1cd; *(SaveState + 20) = here->MOS1cbs; *(SaveState + 21) = here->MOS1cbd; *(SaveState + 22) = here->MOS1gmbs; *(SaveState + 23) = here->MOS1gm; *(SaveState + 24) = here->MOS1gds; *(SaveState + 25) = here->MOS1gbd; *(SaveState + 26) = here->MOS1gbs; *(SaveState + 27) = here->MOS1capbd; *(SaveState + 28) = here->MOS1capbs; *(SaveState + 29) = here->MOS1Cbd; *(SaveState + 30) = here->MOS1Cbdsw; *(SaveState + 31) = here->MOS1Cbs; *(SaveState + 32) = here->MOS1Cbssw; *(SaveState + 33) = here->MOS1f2d; *(SaveState + 34) = here->MOS1f3d; *(SaveState + 35) = here->MOS1f4d; *(SaveState + 36) = here->MOS1f2s; *(SaveState + 37) = here->MOS1f3s; *(SaveState + 38) = here->MOS1f4s; *(SaveState + 39) = here->MOS1cgs; *(SaveState + 40) = here->MOS1cgd; *(SaveState + 41) = here->MOS1cgb; *(SaveState + 42) = here->MOS1vdsat; *(SaveState + 43) = here->MOS1von; save_mode = here->MOS1mode; if(here->MOS1senParmNo == 0) goto next1; #ifdef SENSDEBUG printf("without perturbation \n"); printf("gbd =%.5e\n",here->MOS1gbd); printf("satCur =%.5e\n",here->MOS1tSatCur); printf("satCurDens =%.5e\n",here->MOS1tSatCurDens); printf("vbd =%.5e\n",*(ckt->CKTstate0 + here->MOS1vbd)); #endif /* SENSDEBUG */ cdpr0= here->MOS1cd; cspr0= -(here->MOS1cd + here->MOS1cbd + here->MOS1cbs); if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)){ qgs0 = *(ckt->CKTstate1 + here->MOS1qgs); qgd0 = *(ckt->CKTstate1 + here->MOS1qgd); qgb0 = *(ckt->CKTstate1 + here->MOS1qgb); } else{ qgs0 = *(ckt->CKTstate0 + here->MOS1qgs); qgd0 = *(ckt->CKTstate0 + here->MOS1qgd); qgb0 = *(ckt->CKTstate0 + here->MOS1qgb); } here->MOS1senPertFlag = ON; error = MOS1load((GENmodel*)model,ckt); if(error) return(error); cd0 = here->MOS1cd ; cbd0 = here->MOS1cbd ; cbs0 = here->MOS1cbs ; gspr0= here->MOS1sourceConductance ; gdpr0= here->MOS1drainConductance ; qbs0 = *(ckt->CKTstate0 + here->MOS1qbs); qbd0 = *(ckt->CKTstate0 + here->MOS1qbd); for( flag = 0 ; flag <= 1 ; flag++){ if(here->MOS1sens_l == 0) if(flag == 0) goto next2; if(here->MOS1sens_w == 0) if(flag == 1) goto next2; if(flag == 0){ A0 = here->MOS1l; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; Apert = A0 + DELA; here->MOS1l = Apert; } else{ A0 = here->MOS1w; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; Apert = A0 + DELA; here->MOS1w = Apert; here->MOS1drainArea *= (1 + info->SENpertfac); here->MOS1sourceArea *= (1 + info->SENpertfac); here->MOS1Cbd *= (1 + info->SENpertfac); here->MOS1Cbs *= (1 + info->SENpertfac); if(here->MOS1drainPerimiter){ here->MOS1Cbdsw += here->MOS1Cbdsw * DELA/here->MOS1drainPerimiter; } if(here->MOS1sourcePerimiter){ here->MOS1Cbssw += here->MOS1Cbssw * DELA/here->MOS1sourcePerimiter; } if(*(ckt->CKTstate0 + here->MOS1vbd) >= here->MOS1tDepCap){ arg = 1-model->MOS1fwdCapDepCoeff; sarg = exp( (-model->MOS1bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS1bulkJctSideGradingCoeff) * log(arg) ); here->MOS1f2d = here->MOS1Cbd* (1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctBotGradingCoeff))* sarg/arg + here->MOS1Cbdsw*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctSideGradingCoeff))* sargsw/arg; here->MOS1f3d = here->MOS1Cbd * model->MOS1bulkJctBotGradingCoeff * sarg/arg/ here->MOS1tBulkPot + here->MOS1Cbdsw * model->MOS1bulkJctSideGradingCoeff * sargsw/arg/ here->MOS1tBulkPot; here->MOS1f4d = here->MOS1Cbd* here->MOS1tBulkPot*(1-arg*sarg)/ (1-model->MOS1bulkJctBotGradingCoeff) + here->MOS1Cbdsw*here->MOS1tBulkPot* (1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff) -here->MOS1f3d/2* (here->MOS1tDepCap*here->MOS1tDepCap) -here->MOS1tDepCap * here->MOS1f2d; } if(*(ckt->CKTstate0 + here->MOS1vbs) >= here->MOS1tDepCap){ arg = 1-model->MOS1fwdCapDepCoeff; sarg = exp( (-model->MOS1bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS1bulkJctSideGradingCoeff) * log(arg) ); here->MOS1f2s = here->MOS1Cbs* (1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctBotGradingCoeff))* sarg/arg + here->MOS1Cbssw*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctSideGradingCoeff))* sargsw/arg; here->MOS1f3s = here->MOS1Cbs * model->MOS1bulkJctBotGradingCoeff * sarg/arg/ here->MOS1tBulkPot + here->MOS1Cbssw * model->MOS1bulkJctSideGradingCoeff * sargsw/arg/ here->MOS1tBulkPot; here->MOS1f4s = here->MOS1Cbs* here->MOS1tBulkPot*(1-arg*sarg)/ (1-model->MOS1bulkJctBotGradingCoeff) + here->MOS1Cbssw*here->MOS1tBulkPot* (1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff) -here->MOS1f3s/2* (here->MOS1tDepCap*here->MOS1tDepCap) -here->MOS1tDepCap * here->MOS1f2s; } here->MOS1drainConductance *= Apert/A0; here->MOS1sourceConductance *= Apert/A0; } #ifdef SENSDEBUG if(flag == 0) printf("perturbation of l\n"); if(flag == 1) printf("perturbation of w\n"); #endif /* SENSDEBUG */ error = MOS1load((GENmodel*)model,ckt); if(error) return(error); if(flag == 0){ here->MOS1l = A0; } else{ here->MOS1w = A0; here->MOS1drainArea /= (1 + info->SENpertfac); here->MOS1sourceArea /= (1 + info->SENpertfac); here->MOS1drainConductance *= A0/Apert; here->MOS1sourceConductance *= A0/Apert; } cd = here->MOS1cd ; cbd = here->MOS1cbd ; cbs = here->MOS1cbs ; gspr= here->MOS1sourceConductance ; gdpr= here->MOS1drainConductance ; DcdDp = (cd - cd0) * DELAinv; DcbsDp = (cbs - cbs0) * DELAinv; DcbdDp = (cbd - cbd0) * DELAinv; DcbDp = ( DcbsDp + DcbdDp ); DcdprDp = 0; DcsprDp = 0; if(here->MOS1dNode != here->MOS1dNodePrime) if(gdpr0) DcdprDp = cdpr0 * (gdpr - gdpr0)/gdpr0 * DELAinv; if(here->MOS1sNode != here->MOS1sNodePrime) if(gspr0) DcsprDp = cspr0 * (gspr - gspr0)/gspr0 * DELAinv; DcdprmDp = ( - DcdprDp + DcdDp); DcsprmDp = ( - DcbsDp - DcdDp - DcbdDp - DcsprDp); if(flag == 0){ EffectiveLength = here->MOS1l - 2*model->MOS1latDiff; if(EffectiveLength == 0){ DqgsDp = 0; DqgdDp = 0; DqgbDp = 0; } else{ DqgsDp = model->MOS1type * qgs0 / EffectiveLength; DqgdDp = model->MOS1type * qgd0 / EffectiveLength; DqgbDp = model->MOS1type * qgb0 / EffectiveLength; } } else{ DqgsDp = model->MOS1type * qgs0 / here->MOS1w; DqgdDp = model->MOS1type * qgd0 / here->MOS1w; DqgbDp = model->MOS1type * qgb0 / here->MOS1w; } qbd = *(ckt->CKTstate0 + here->MOS1qbd); qbs = *(ckt->CKTstate0 + here->MOS1qbs); DqbsDp = model->MOS1type * (qbs - qbs0)*DELAinv; DqbdDp = model->MOS1type * (qbd - qbd0)*DELAinv; if(flag == 0){ *(here->MOS1dphigs_dl) = DqgsDp; *(here->MOS1dphigd_dl) = DqgdDp; *(here->MOS1dphibs_dl) = DqbsDp; *(here->MOS1dphibd_dl) = DqbdDp; *(here->MOS1dphigb_dl) = DqgbDp; } else{ *(here->MOS1dphigs_dw) = DqgsDp; *(here->MOS1dphigd_dw) = DqgdDp; *(here->MOS1dphibs_dw) = DqbsDp; *(here->MOS1dphibd_dw) = DqbdDp; *(here->MOS1dphigb_dw) = DqgbDp; } #ifdef SENSDEBUG printf("CKTag[0]=%.7e,CKTag[1]=%.7e,flag= %d\n", ckt->CKTag[0],ckt->CKTag[1],flag); printf("cd0 = %.7e ,cd = %.7e,\n",cd0,cd); printf("cbs0 = %.7e ,cbs = %.7e,\n",cbs0,cbs); printf("cbd0 = %.7e ,cbd = %.7e,\n",cbd0,cbd); printf("DcdprmDp = %.7e,\n",DcdprmDp); printf("DcsprmDp = %.7e,\n",DcsprmDp); printf("DcdprDp = %.7e,\n",DcdprDp); printf("DcsprDp = %.7e,\n",DcsprDp); printf("qgs0 = %.7e \n",qgs0); printf("qgd0 = %.7e \n",qgd0); printf("qgb0 = %.7e \n",qgb0); printf("qbs0 = %.7e ,qbs = %.7e,\n",qbs0,qbs); printf("qbd0 = %.7e ,qbd = %.7e,\n",qbd0,qbd); printf("DqgsDp = %.7e \n",DqgsDp); printf("DqgdDp = %.7e \n",DqgdDp); printf("DqgbDp = %.7e \n",DqgbDp); printf("DqbsDp = %.7e \n",DqbsDp); printf("DqbdDp = %.7e \n",DqbdDp); printf("EffectiveLength = %.7e \n",EffectiveLength); printf("tdepCap = %.7e \n",here->MOS1tDepCap); printf("\n"); #endif /* SENSDEBUG*/ if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) goto next2; /* * load RHS matrix */ if(flag == 0){ *(info->SEN_RHS[here->MOS1bNode] + here->MOS1senParmNo) -= model->MOS1type * DcbDp; *(info->SEN_RHS[here->MOS1dNode] + here->MOS1senParmNo) -= model->MOS1type * DcdprDp; *(info->SEN_RHS[here->MOS1dNodePrime] + here->MOS1senParmNo) -= model->MOS1type * DcdprmDp; *(info->SEN_RHS[here->MOS1sNode] + here->MOS1senParmNo) -= model->MOS1type * DcsprDp; *(info->SEN_RHS[here->MOS1sNodePrime] + here->MOS1senParmNo) -= model->MOS1type * DcsprmDp; } else{ offset = here->MOS1sens_l; *(info->SEN_RHS[here->MOS1bNode] + here->MOS1senParmNo + offset) -= model->MOS1type * DcbDp; *(info->SEN_RHS[here->MOS1dNode] + here->MOS1senParmNo + offset) -= model->MOS1type * DcdprDp; *(info->SEN_RHS[here->MOS1dNodePrime] + here->MOS1senParmNo + offset) -= model->MOS1type * DcdprmDp; *(info->SEN_RHS[here->MOS1sNode] + here->MOS1senParmNo + offset) -= model->MOS1type * DcsprDp; *(info->SEN_RHS[here->MOS1sNodePrime] + here->MOS1senParmNo + offset) -= model->MOS1type * DcsprmDp; } #ifdef SENSDEBUG printf("after loading\n"); if(flag == 0){ printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS1bNode] + here->MOS1senParmNo)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNode] + here->MOS1senParmNo)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNode] + here->MOS1senParmNo)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNodePrime] + here->MOS1senParmNo)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNodePrime] + here->MOS1senParmNo)); printf("\n"); } else{ printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS1bNode] + here->MOS1senParmNo + here->MOS1sens_l)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNode] + here->MOS1senParmNo + here->MOS1sens_l)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNode] + here->MOS1senParmNo + here->MOS1sens_l)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNodePrime] + here->MOS1senParmNo + here->MOS1sens_l)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNodePrime] + here->MOS1senParmNo + here->MOS1sens_l)); } #endif /* SENSDEBUG*/ next2: ; } next1: if((info->SENmode == DCSEN) || (ckt->CKTmode&MODETRANOP) ) goto restore; if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) goto restore; for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ #ifdef SENSDEBUG printf("after conductive currents\n"); printf("iparmno = %d\n",iparmno); printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS1bNode] + iparmno)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNode] + iparmno)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNodePrime] + iparmno)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNode] + iparmno)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNodePrime] + iparmno)); printf("\n"); #endif /* SENSDEBUG */ Osxpgs = tag0 * *(ckt->CKTstate1 + here->MOS1sensxpgs + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS1sensxpgs + 10*(iparmno - 1) + 1); Osxpgd = tag0 * *(ckt->CKTstate1 + here->MOS1sensxpgd + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS1sensxpgd + 10*(iparmno - 1) + 1); Osxpbs = tag0 * *(ckt->CKTstate1 + here->MOS1sensxpbs + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS1sensxpbs + 10*(iparmno - 1) + 1); Osxpbd =tag0 * *(ckt->CKTstate1 + here->MOS1sensxpbd + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS1sensxpbd + 10*(iparmno - 1) + 1); Osxpgb = tag0 * *(ckt->CKTstate1 + here->MOS1sensxpgb + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS1sensxpgb + 10*(iparmno - 1) + 1); #ifdef SENSDEBUG printf("iparmno=%d\n",iparmno); printf("sxpgs=%.7e,sdgs=%.7e\n", *(ckt->CKTstate1 + here->MOS1sensxpgs + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS1sensxpgs + 10*(iparmno - 1) + 1)); printf("sxpgd=%.7e,sdgd=%.7e\n", *(ckt->CKTstate1 + here->MOS1sensxpgd + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS1sensxpgd + 10*(iparmno - 1) + 1)); printf("sxpbs=%.7e,sdbs=%.7e\n", *(ckt->CKTstate1 + here->MOS1sensxpbs + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS1sensxpbs + 10*(iparmno - 1) + 1)); printf("sxpbd=%.7e,sdbd=%.7e\n", *(ckt->CKTstate1 + here->MOS1sensxpbd + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS1sensxpbd + 10*(iparmno - 1) + 1)); printf("sxpgb=%.7e,sdgb=%.7e\n", *(ckt->CKTstate1 + here->MOS1sensxpgb + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS1sensxpgb + 10*(iparmno - 1) + 1)); printf("before loading DqDp\n"); printf("Osxpgs=%.7e,Osxpgd=%.7e\n",Osxpgs,Osxpgd); printf("Osxpbs=%.7e,Osxpbd=%.7e,Osxpgb=%.7e\n", Osxpbs,Osxpbd,Osxpgb); printf("\n"); #endif /* SENSDEBUG */ if(here->MOS1sens_l && (iparmno == here->MOS1senParmNo)){ Osxpgs -= tag0 * *(here->MOS1dphigs_dl); Osxpgd -= tag0 * *(here->MOS1dphigd_dl); Osxpbs -= tag0 * *(here->MOS1dphibs_dl); Osxpbd -= tag0 * *(here->MOS1dphibd_dl); Osxpgb -= tag0 * *(here->MOS1dphigb_dl); } if(here->MOS1sens_w && (iparmno == (here->MOS1senParmNo + here->MOS1sens_l))){ Osxpgs -= tag0 * *(here->MOS1dphigs_dw); Osxpgd -= tag0 * *(here->MOS1dphigd_dw); Osxpbs -= tag0 * *(here->MOS1dphibs_dw); Osxpbd -= tag0 * *(here->MOS1dphibd_dw); Osxpgb -= tag0 * *(here->MOS1dphigb_dw); } #ifdef SENSDEBUG printf("after loading DqDp\n"); printf("DqgsDp=%.7e",DqgsDp); printf("Osxpgs=%.7e,Osxpgd=%.7e\n",Osxpgs,Osxpgd); printf("Osxpbs=%.7e,Osxpbd=%.7e,Osxpgb=%.7e\n", Osxpbs,Osxpbd,Osxpgb); #endif /* SENSDEBUG */ *(info->SEN_RHS[here->MOS1bNode] + iparmno) += Osxpbs + Osxpbd -Osxpgb; *(info->SEN_RHS[here->MOS1gNode] + iparmno) += Osxpgs + Osxpgd + Osxpgb; *(info->SEN_RHS[here->MOS1dNodePrime] + iparmno) -= Osxpgd + Osxpbd ; *(info->SEN_RHS[here->MOS1sNodePrime] + iparmno) -= Osxpgs + Osxpbs; #ifdef SENSDEBUG printf("after capacitive currents\n"); printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS1bNode] + iparmno)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNode] + iparmno)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1dNodePrime] + iparmno)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNode] + iparmno)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS1sNodePrime] + iparmno)); #endif /* SENSDEBUG */ } restore: /* put the unperturbed values back into the state vector */ for(i=0; i <= 16; i++) *(ckt->CKTstate0 + here->MOS1states + i) = *(SaveState + i); here->MOS1sourceConductance = *(SaveState + 17) ; here->MOS1drainConductance = *(SaveState + 18) ; here->MOS1cd = *(SaveState + 19) ; here->MOS1cbs = *(SaveState + 20) ; here->MOS1cbd = *(SaveState + 21) ; here->MOS1gmbs = *(SaveState + 22) ; here->MOS1gm = *(SaveState + 23) ; here->MOS1gds = *(SaveState + 24) ; here->MOS1gbd = *(SaveState + 25) ; here->MOS1gbs = *(SaveState + 26) ; here->MOS1capbd = *(SaveState + 27) ; here->MOS1capbs = *(SaveState + 28) ; here->MOS1Cbd = *(SaveState + 29) ; here->MOS1Cbdsw = *(SaveState + 30) ; here->MOS1Cbs = *(SaveState + 31) ; here->MOS1Cbssw = *(SaveState + 32) ; here->MOS1f2d = *(SaveState + 33) ; here->MOS1f3d = *(SaveState + 34) ; here->MOS1f4d = *(SaveState + 35) ; here->MOS1f2s = *(SaveState + 36) ; here->MOS1f3s = *(SaveState + 37) ; here->MOS1f4s = *(SaveState + 38) ; here->MOS1cgs = *(SaveState + 39) ; here->MOS1cgd = *(SaveState + 40) ; here->MOS1cgb = *(SaveState + 41) ; here->MOS1vdsat = *(SaveState + 42) ; here->MOS1von = *(SaveState + 43) ; here->MOS1mode = save_mode ; here->MOS1senPertFlag = OFF; } } info->SENstatus = NORMAL; #ifdef SENSDEBUG printf("MOS1senload end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124061002251006440006700000000000011777770500302376200004600000003656spice3c1/spice3/dev/mos1/mos1sprint.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* Pretty print the sensitivity info for all * the MOS1 devices in the circuit. */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos1defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1sPrint.c $Revision: 1.2 $ on $Date: 88/07/22 01:28:01 $") void MOS1sPrint(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* Pretty print the sensitivity info for all the MOS1 * devices in the circuit. */ { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; printf("LEVEL 1 MOSFETS-----------------\n"); /* loop through all the MOS1 models */ for( ; model != NULL; model = model->MOS1nextModel ) { printf("Model name:%s\n",model->MOS1modName); /* loop through all the instances of the model */ for (here = model->MOS1instances; here != NULL ; here=here->MOS1nextInstance) { printf(" Instance name:%s\n",here->MOS1name); printf(" Drain, Gate , Source nodes: %s, %s ,%s\n", CKTnodName(ckt,here->MOS1dNode),CKTnodName(ckt,here->MOS1gNode), CKTnodName(ckt,here->MOS1sNode)); printf(" Length: %g ",here->MOS1l); printf(here->MOS1lGiven ? "(specified)\n" : "(default)\n"); printf(" Width: %g ",here->MOS1w); printf(here->MOS1wGiven ? "(specified)\n" : "(default)\n"); if(here->MOS1sens_l == 1){ printf(" MOS1senParmNo:l = %d ",here->MOS1senParmNo); } else{ printf(" MOS1senParmNo:l = 0 "); } if(here->MOS1sens_w == 1){ printf(" w = %d \n",here->MOS1senParmNo + here->MOS1sens_l); } else{ printf(" w = 0 \n"); } } } } 0707070124061002261006440006700000000000011777770500302376200004600000002573spice3c1/spice3/dev/mos1/mos1ssetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos1defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1sSetup.c $Revision: 1.2 $ on $Date: 88/07/22 01:28:02 $") int MOS1sSetup(info,inModel) register SENstruct *info; GENmodel *inModel; /* loop through all the devices and * allocate parameter #s to design parameters */ { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; /* loop through all the models */ for( ; model != NULL; model = model->MOS1nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS1instances; here != NULL ; here=here->MOS1nextInstance) { if(here->MOS1senParmNo){ if((here->MOS1sens_l)&&(here->MOS1sens_w)){ here->MOS1senParmNo = ++(info->SENparms); ++(info->SENparms);/* MOS has two design parameters */ } else{ here->MOS1senParmNo = ++(info->SENparms); } } if((here->MOS1sens = (double *)MALLOC(70*sizeof(double))) == NULL) { return(E_NOMEM); } here->MOS1senPertFlag = OFF; } } return(OK); } 0707070124061002271006440006700000000000011777770500302376200004700000015600spice3c1/spice3/dev/mos1/mos1supdate.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos1defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1sUpdate.c $Revision: 1.3 $ on $Date: 88/07/22 01:31:04 $") /* update the charge sensitivities and their derivatives */ int MOS1sUpdate(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; int iparmno; double sb; double sg; double sdprm; double ssprm; double sxpgs; double sxpgd; double sxpbs; double sxpbd; double sxpgb; double dummy1; double dummy2; SENstruct *info; if(ckt->CKTtime == 0) return(OK); info = ckt->CKTsenInfo; #ifdef SENSDEBUG printf("MOS1senupdate\n"); printf("CKTtime = %.5e\n",ckt->CKTtime); #endif /* SENSDEBUG */ sxpgs = 0; sxpgd = 0; sxpbs = 0; sxpbd = 0; sxpgb = 0; dummy1 = 0; dummy2 = 0; /* loop through all the MOS1 models */ for( ; model != NULL; model = model->MOS1nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS1instances; here != NULL ; here=here->MOS1nextInstance) { #ifdef SENSDEBUG printf("senupdate instance name %s\n",here->MOS1name); printf("before loading\n"); printf("CKTag[0] = %.2e,CKTag[1] = %.2e\n", ckt->CKTag[0],ckt->CKTag[1]); printf("capgs = %.7e\n",here->MOS1cgs); printf("capgd = %.7e\n",here->MOS1cgd); printf("capgb = %.7e\n",here->MOS1cgb); printf("capbs = %.7e\n",here->MOS1capbs); printf("capbd = %.7e\n",here->MOS1capbd); #endif /* SENSDEBUG */ for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ sb = *(info->SEN_Sap[here->MOS1bNode] + iparmno); sg = *(info->SEN_Sap[here->MOS1gNode] + iparmno); ssprm = *(info->SEN_Sap[here->MOS1sNodePrime] + iparmno); sdprm = *(info->SEN_Sap[here->MOS1dNodePrime] + iparmno); #ifdef SENSDEBUG printf("iparmno = %d\n",iparmno); printf("sb = %.7e,sg = %.7e\n",sb,sg); printf("ssprm = %.7e,sdprm = %.7e\n",ssprm,sdprm); #endif /* SENSDEBUG */ sxpgs = (sg - ssprm) * here->MOS1cgs ; sxpgd = (sg - sdprm) * here->MOS1cgd ; sxpgb = (sg - sb) * here->MOS1cgb ; sxpbs = (sb - ssprm) * here->MOS1capbs ; sxpbd = (sb - sdprm) * here->MOS1capbd ; if(here->MOS1sens_l && (iparmno == here->MOS1senParmNo)){ sxpgs += *(here->MOS1dphigs_dl); sxpgd += *(here->MOS1dphigd_dl); sxpbs += *(here->MOS1dphibs_dl); sxpbd += *(here->MOS1dphibd_dl); sxpgb += *(here->MOS1dphigb_dl); } if(here->MOS1sens_w && (iparmno == (here->MOS1senParmNo+here->MOS1sens_l))){ sxpgs += *(here->MOS1dphigs_dw); sxpgd += *(here->MOS1dphigd_dw); sxpbs += *(here->MOS1dphibs_dw); sxpbd += *(here->MOS1dphibd_dw); sxpgb += *(here->MOS1dphigb_dw); } if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->MOS1sensxpgs + 10 * (iparmno - 1)) = sxpgs; *(ckt->CKTstate1 + here->MOS1sensxpgd + 10 * (iparmno - 1)) = sxpgd; *(ckt->CKTstate1 + here->MOS1sensxpbs + 10 * (iparmno - 1)) = sxpbs; *(ckt->CKTstate1 + here->MOS1sensxpbd + 10 * (iparmno - 1)) = sxpbd; *(ckt->CKTstate1 + here->MOS1sensxpgb + 10 * (iparmno - 1)) = sxpgb; *(ckt->CKTstate1 + here->MOS1sensxpgs + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS1sensxpgd + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS1sensxpbs + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS1sensxpbd + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS1sensxpgb + 10 * (iparmno - 1) + 1) = 0; goto next; } *(ckt->CKTstate0 + here->MOS1sensxpgs + 10 * (iparmno - 1)) = sxpgs; *(ckt->CKTstate0 + here->MOS1sensxpgd + 10 * (iparmno - 1)) = sxpgd; *(ckt->CKTstate0 + here->MOS1sensxpbs + 10 * (iparmno - 1)) = sxpbs; *(ckt->CKTstate0 + here->MOS1sensxpbd + 10 * (iparmno - 1)) = sxpbd; *(ckt->CKTstate0 + here->MOS1sensxpgb + 10 * (iparmno - 1)) = sxpgb; NIintegrate(ckt,&dummy1,&dummy2,here->MOS1cgs, here->MOS1sensxpgs + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS1cgd, here->MOS1sensxpgd + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS1cgb, here->MOS1sensxpgb + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS1capbs, here->MOS1sensxpbs + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS1capbd, here->MOS1sensxpbd + 10*(iparmno -1)); next: ; #ifdef SENSDEBUG printf("after loading\n"); printf("sxpgs = %.7e,sdotxpgs = %.7e\n", sxpgs,*(ckt->CKTstate0 + here->MOS1sensxpgs + 10 * (iparmno - 1) + 1)); printf("sxpgd = %.7e,sdotxpgd = %.7e\n", sxpgd,*(ckt->CKTstate0 + here->MOS1sensxpgd + 10 * (iparmno - 1) + 1)); printf("sxpgb = %.7e,sdotxpgb = %.7e\n", sxpgb,*(ckt->CKTstate0 + here->MOS1sensxpgb + 10 * (iparmno - 1) + 1)); printf("sxpbs = %.7e,sdotxpbs = %.7e\n", sxpbs,*(ckt->CKTstate0 + here->MOS1sensxpbs + 10 * (iparmno - 1) + 1)); printf("sxpbd = %.7e,sdotxpbd = %.7e\n", sxpbd,*(ckt->CKTstate0 + here->MOS1sensxpbd + 10 * (iparmno - 1) + 1)); #endif /* SENSDEBUG */ } } } #ifdef SENSDEBUG printf("MOS1senupdate end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124061002301006440006700000000000011777770500302376200004500000013765spice3c1/spice3/dev/mos1/mos1setup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* load the MOS1 device structure with those pointers needed later * for fast matrix loading */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos1defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1setup.c $Revision: 1.5 $ on $Date: 88/07/22 01:28:04 $") int MOS1setup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; register CKTcircuit *ckt; int *states; { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; int error; CKTnode *tmp; /* loop through all the MOS1 device models */ for( ; model != NULL; model = model->MOS1nextModel ) { if(!model->MOS1typeGiven) { model->MOS1type = NMOS; } if(!model->MOS1latDiffGiven) { model->MOS1latDiff = 0; } if(!model->MOS1jctSatCurDensityGiven) { model->MOS1jctSatCurDensity = 0; } if(!model->MOS1jctSatCurGiven) { model->MOS1jctSatCur = 1e-14; } if(!model->MOS1transconductanceGiven) { model->MOS1transconductance = 2e-5; } if(!model->MOS1gateSourceOverlapCapFactorGiven) { model->MOS1gateSourceOverlapCapFactor = 0; } if(!model->MOS1gateDrainOverlapCapFactorGiven) { model->MOS1gateDrainOverlapCapFactor = 0; } if(!model->MOS1gateBulkOverlapCapFactorGiven) { model->MOS1gateBulkOverlapCapFactor = 0; } if(!model->MOS1vt0Given) { model->MOS1vt0 = 0; } if(!model->MOS1bulkCapFactorGiven) { model->MOS1bulkCapFactor = 0; } if(!model->MOS1sideWallCapFactorGiven) { model->MOS1sideWallCapFactor = 0; } if(!model->MOS1bulkJctPotentialGiven) { model->MOS1bulkJctPotential = .8; } if(!model->MOS1bulkJctBotGradingCoeffGiven) { model->MOS1bulkJctBotGradingCoeff = .5; } if(!model->MOS1bulkJctSideGradingCoeffGiven) { model->MOS1bulkJctSideGradingCoeff = .5; } if(!model->MOS1fwdCapDepCoeffGiven) { model->MOS1fwdCapDepCoeff = .5; } if(!model->MOS1phiGiven) { model->MOS1phi = .6; } if(!model->MOS1lambdaGiven) { model->MOS1lambda = 0; } if(!model->MOS1gammaGiven) { model->MOS1gamma = 0; } /* loop through all the instances of the model */ for (here = model->MOS1instances; here != NULL ; here=here->MOS1nextInstance) { if(!here->MOS1drainPerimiterGiven) { here->MOS1drainPerimiter = 0; } if(!here->MOS1icVBSGiven) { here->MOS1icVBS = 0; } if(!here->MOS1icVDSGiven) { here->MOS1icVDS = 0; } if(!here->MOS1icVGSGiven) { here->MOS1icVGS = 0; } if(!here->MOS1sourcePerimiterGiven) { here->MOS1sourcePerimiter = 0; } if(!here->MOS1vdsatGiven) { here->MOS1vdsat = 0; } if(!here->MOS1vonGiven) { here->MOS1von = 0; } /* allocate a chunk of the state vector */ here->MOS1states = *states; *states += MOS1numStates; if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN) ){ *states += 10 * (ckt->CKTsenInfo->SENparms); } if((model->MOS1drainResistance != 0 || (model->MOS1sheetResistance != 0 && here->MOS1drainSquares != 0) ) && here->MOS1dNodePrime==0) { error = CKTmkVolt(ckt,&tmp,here->MOS1name,"drain"); if(error) return(error); here->MOS1dNodePrime = tmp->number; } else { here->MOS1dNodePrime = here->MOS1dNode; } if((model->MOS1sourceResistance != 0 || (model->MOS1sheetResistance != 0 && here->MOS1sourceSquares != 0) ) && here->MOS1sNodePrime==0) { error = CKTmkVolt(ckt,&tmp,here->MOS1name,"source"); if(error) return(error); here->MOS1sNodePrime = tmp->number; } else { here->MOS1sNodePrime = here->MOS1sNode; } /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(MOS1DdPtr,MOS1dNode,MOS1dNode) TSTALLOC(MOS1GgPtr,MOS1gNode,MOS1gNode) TSTALLOC(MOS1SsPtr,MOS1sNode,MOS1sNode) TSTALLOC(MOS1BbPtr,MOS1bNode,MOS1bNode) TSTALLOC(MOS1DPdpPtr,MOS1dNodePrime,MOS1dNodePrime) TSTALLOC(MOS1SPspPtr,MOS1sNodePrime,MOS1sNodePrime) TSTALLOC(MOS1DdpPtr,MOS1dNode,MOS1dNodePrime) TSTALLOC(MOS1GbPtr,MOS1gNode,MOS1bNode) TSTALLOC(MOS1GdpPtr,MOS1gNode,MOS1dNodePrime) TSTALLOC(MOS1GspPtr,MOS1gNode,MOS1sNodePrime) TSTALLOC(MOS1SspPtr,MOS1sNode,MOS1sNodePrime) TSTALLOC(MOS1BdpPtr,MOS1bNode,MOS1dNodePrime) TSTALLOC(MOS1BspPtr,MOS1bNode,MOS1sNodePrime) TSTALLOC(MOS1DPspPtr,MOS1dNodePrime,MOS1sNodePrime) TSTALLOC(MOS1DPdPtr,MOS1dNodePrime,MOS1dNode) TSTALLOC(MOS1BgPtr,MOS1bNode,MOS1gNode) TSTALLOC(MOS1DPgPtr,MOS1dNodePrime,MOS1gNode) TSTALLOC(MOS1SPgPtr,MOS1sNodePrime,MOS1gNode) TSTALLOC(MOS1SPsPtr,MOS1sNodePrime,MOS1sNode) TSTALLOC(MOS1DPbPtr,MOS1dNodePrime,MOS1bNode) TSTALLOC(MOS1SPbPtr,MOS1sNodePrime,MOS1bNode) TSTALLOC(MOS1SPdpPtr,MOS1sNodePrime,MOS1dNodePrime) } } return(OK); } 0707070124061002311006440006700000000000011777770500302376200004400000033275spice3c1/spice3/dev/mos1/mos1temp.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "mos1defs.h" #include "util.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1temp.c $Revision: 1.4 $ on $Date: 88/07/22 01:28:06 $") int MOS1temp(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; double egfet,egfet1; double fact1,fact2; double kt,kt1; double arg1; double ratio,ratio4; double phio; double pbo; double gmanew,gmaold; double capfact; double pbfact1,pbfact; double vt,vtnom; double wkfngs; double wkfng; double fermig; double fermis; double vfb; /* loop through all the resistor models */ for( ; model != NULL; model = model->MOS1nextModel) { /* perform model defaulting */ if(!model->MOS1tnomGiven) { model->MOS1tnom = ckt->CKTnomTemp; } fact1 = model->MOS1tnom/REFTEMP; vtnom = model->MOS1tnom*CONSTKoverQ; kt1 = CONSTboltz * model->MOS1tnom; egfet1 = 1.16-(7.02e-4*model->MOS1tnom*model->MOS1tnom)/ (model->MOS1tnom+1108); arg1 = -egfet1/(kt1+kt1)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact1 = -2*vtnom *(1.5*log(fact1)+CHARGE*arg1); /* now model parameter preprocessing */ if(!model->MOS1oxideThicknessGiven || model->MOS1oxideThickness == 0) { model->MOS1oxideCapFactor = 0; } else { model->MOS1oxideCapFactor = 3.9 * 8.854214871e-12/ model->MOS1oxideThickness; if(!model->MOS1transconductanceGiven) { if(!model->MOS1surfaceMobilityGiven) { model->MOS1surfaceMobility=600; } model->MOS1transconductance = model->MOS1surfaceMobility * model->MOS1oxideCapFactor * 1e-4 /*(m**2/cm**2)*/; } if(model->MOS1substrateDopingGiven) { if(model->MOS1substrateDoping*1e6 /*(cm**3/m**3)*/ >1.45e16) { if(!model->MOS1phiGiven) { model->MOS1phi = 2*vtnom* log(model->MOS1substrateDoping* 1e6/*(cm**3/m**3)*//1.45e16); model->MOS1phi = MAX(.1,model->MOS1phi); } fermis = model->MOS1type * .5 * model->MOS1phi; wkfng = 3.2; if(!model->MOS1gateTypeGiven) model->MOS1gateType=1; if(model->MOS1gateType != 0) { fermig = model->MOS1type *model->MOS1gateType*.5*egfet1; wkfng = 3.25 + .5 * egfet1 - fermig; } wkfngs = wkfng - (3.25 + .5 * egfet1 +fermis); if(!model->MOS1gammaGiven) { model->MOS1gamma = sqrt(2 * 11.70 * 8.854214871e-12 * CHARGE * model->MOS1substrateDoping* 1e6/*(cm**3/m**3)*/)/ model->MOS1oxideCapFactor; } if(!model->MOS1vt0Given) { if(!model->MOS1surfaceStateDensityGiven) model->MOS1surfaceStateDensity=0; vfb = wkfngs - model->MOS1surfaceStateDensity * 1e4 /*(cm**2/m**2)*/ * CHARGE/model->MOS1oxideCapFactor; model->MOS1vt0 = vfb + model->MOS1type * (model->MOS1gamma * sqrt(model->MOS1phi)+ model->MOS1phi); } } else { model->MOS1substrateDoping = 0; (*(SPfrontEnd->IFerror))(ERR_FATAL, "%s: Nsub < Ni",&model->MOS1modName); return(E_BADPARM); } } } /* loop through all instances of the model */ for(here = model->MOS1instances; here!= NULL; here = here->MOS1nextInstance) { double czbd; /* zero voltage bulk-drain capacitance */ double czbdsw; /* zero voltage bulk-drain sidewall capacitance */ double czbs; /* zero voltage bulk-source capacitance */ double czbssw; /* zero voltage bulk-source sidewall capacitance */ double arg; /* 1 - fc */ double sarg; /* (1-fc) ^^ (-mj) */ double sargsw; /* (1-fc) ^^ (-mjsw) */ /* perform the parameter defaulting */ if(!here->MOS1tempGiven) { here->MOS1temp = ckt->CKTtemp; } vt = here->MOS1temp * CONSTKoverQ; ratio = here->MOS1temp/model->MOS1tnom; fact2 = here->MOS1temp/REFTEMP; kt = here->MOS1temp * CONSTboltz; egfet = 1.16-(7.02e-4*here->MOS1temp*here->MOS1temp)/ (here->MOS1temp+1108); arg = -egfet/(kt+kt)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact = -2*vt *(1.5*log(fact2)+CHARGE*arg); if(!here->MOS1drainAreaGiven) { here->MOS1drainArea = ckt->CKTdefaultMosAD; } if(!here->MOS1lGiven) { here->MOS1l = ckt->CKTdefaultMosL; } if(!here->MOS1sourceAreaGiven) { here->MOS1sourceArea = ckt->CKTdefaultMosAS; } if(!here->MOS1wGiven) { here->MOS1w = ckt->CKTdefaultMosW; } if(here->MOS1l - 2 * model->MOS1latDiff <=0) { (*(SPfrontEnd->IFerror))(ERR_WARNING, "%s: effective channel length less than zero", &(model->MOS1modName)); } ratio4 = ratio * sqrt(ratio); here->MOS1tTransconductance = model->MOS1transconductance / ratio4; here->MOS1tSurfMob = model->MOS1surfaceMobility/ratio4; phio= (model->MOS1phi-pbfact1)/fact1; here->MOS1tPhi = fact2 * phio + pbfact; here->MOS1tVbi = model->MOS1vt0 - model->MOS1type * (model->MOS1gamma* sqrt(model->MOS1phi)) +.5*(egfet1-egfet) + model->MOS1type*.5* (here->MOS1tPhi-model->MOS1phi); here->MOS1tVto = here->MOS1tVbi + model->MOS1type * model->MOS1gamma * sqrt(here->MOS1tPhi); here->MOS1tSatCur = model->MOS1jctSatCur* exp(-egfet/vt+egfet1/vtnom); here->MOS1tSatCurDens = model->MOS1jctSatCurDensity * exp(-egfet/vt+egfet1/vtnom); pbo = (model->MOS1bulkJctPotential - pbfact1)/fact1; gmaold = (model->MOS1bulkJctPotential-pbo)/pbo; capfact = 1/(1+model->MOS1bulkJctBotGradingCoeff* (4e-4*(model->MOS1tnom-REFTEMP)-gmaold)); here->MOS1tCbd = model->MOS1capBD * capfact; here->MOS1tCbs = model->MOS1capBS * capfact; here->MOS1tCj = model->MOS1bulkCapFactor * capfact; capfact = 1/(1+model->MOS1bulkJctSideGradingCoeff* (4e-4*(model->MOS1tnom-REFTEMP)-gmaold)); here->MOS1tCjsw = model->MOS1sideWallCapFactor * capfact; here->MOS1tBulkPot = fact2 * pbo+pbfact; gmanew = (here->MOS1tBulkPot-pbo)/pbo; capfact = (1+model->MOS1bulkJctBotGradingCoeff* (4e-4*(here->MOS1temp-REFTEMP)-gmanew)); here->MOS1tCbd *= capfact; here->MOS1tCbs *= capfact; here->MOS1tCj *= capfact; capfact = (1+model->MOS1bulkJctSideGradingCoeff* (4e-4*(here->MOS1temp-REFTEMP)-gmanew)); here->MOS1tCjsw *= capfact; here->MOS1tDepCap = model->MOS1fwdCapDepCoeff * here->MOS1tBulkPot; if( (here->MOS1tSatCurDens == 0) || (here->MOS1drainArea == 0) || (here->MOS1sourceArea == 0) ) { here->MOS1sourceVcrit = here->MOS1drainVcrit = vt*log(vt/(CONSTroot2*here->MOS1tSatCur)); } else { here->MOS1drainVcrit = vt * log( vt / (CONSTroot2 * here->MOS1tSatCurDens * here->MOS1drainArea)); here->MOS1sourceVcrit = vt * log( vt / (CONSTroot2 * here->MOS1tSatCurDens * here->MOS1sourceArea)); } if(model->MOS1capBDGiven) { czbd = here->MOS1tCbd; } else { if(model->MOS1bulkCapFactorGiven) { czbd=here->MOS1tCj*here->MOS1drainArea; } else { czbd=0; } } if(model->MOS1sideWallCapFactorGiven) { czbdsw= here->MOS1tCjsw * here->MOS1drainPerimiter; } else { czbdsw=0; } arg = 1-model->MOS1fwdCapDepCoeff; sarg = exp( (-model->MOS1bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS1bulkJctSideGradingCoeff) * log(arg) ); here->MOS1Cbd = czbd; here->MOS1Cbdsw = czbdsw; here->MOS1f2d = czbd*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctBotGradingCoeff))* sarg/arg + czbdsw*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctSideGradingCoeff))* sargsw/arg; here->MOS1f3d = czbd * model->MOS1bulkJctBotGradingCoeff * sarg/arg/ here->MOS1tBulkPot + czbdsw * model->MOS1bulkJctSideGradingCoeff * sargsw/arg / here->MOS1tBulkPot; here->MOS1f4d = czbd*here->MOS1tBulkPot*(1-arg*sarg)/ (1-model->MOS1bulkJctBotGradingCoeff) + czbdsw*here->MOS1tBulkPot*(1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff) -here->MOS1f3d/2* (here->MOS1tDepCap*here->MOS1tDepCap) -here->MOS1tDepCap * here->MOS1f2d; if(model->MOS1capBSGiven) { czbs=here->MOS1tCbs; } else { if(model->MOS1bulkCapFactorGiven) { czbs=here->MOS1tCj*here->MOS1sourceArea; } else { czbs=0; } } if(model->MOS1sideWallCapFactorGiven) { czbssw = here->MOS1tCjsw * here->MOS1sourcePerimiter; } else { czbssw=0; } arg = 1-model->MOS1fwdCapDepCoeff; sarg = exp( (-model->MOS1bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS1bulkJctSideGradingCoeff) * log(arg) ); here->MOS1Cbs = czbs; here->MOS1Cbssw = czbssw; here->MOS1f2s = czbs*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctBotGradingCoeff))* sarg/arg + czbssw*(1-model->MOS1fwdCapDepCoeff* (1+model->MOS1bulkJctSideGradingCoeff))* sargsw/arg; here->MOS1f3s = czbs * model->MOS1bulkJctBotGradingCoeff * sarg/arg/ here->MOS1tBulkPot + czbssw * model->MOS1bulkJctSideGradingCoeff * sargsw/arg / here->MOS1tBulkPot; here->MOS1f4s = czbs*here->MOS1tBulkPot*(1-arg*sarg)/ (1-model->MOS1bulkJctBotGradingCoeff) + czbssw*here->MOS1tBulkPot*(1-arg*sargsw)/ (1-model->MOS1bulkJctSideGradingCoeff) -here->MOS1f3s/2* (here->MOS1tDepCap*here->MOS1tDepCap) -here->MOS1tDepCap * here->MOS1f2s; if(model->MOS1drainResistanceGiven) { if(model->MOS1drainResistance != 0) { here->MOS1drainConductance = 1/model->MOS1drainResistance; } else { here->MOS1drainConductance = 0; } } else if (model->MOS1sheetResistanceGiven) { if( (!here->MOS1drainSquaresGiven) || ( here->MOS1drainSquares==0) ){ here->MOS1drainSquares=1; } if(model->MOS1sheetResistance != 0) { here->MOS1drainConductance = 1/(model->MOS1sheetResistance*here->MOS1drainSquares); } else { here->MOS1drainConductance = 0; } } else { here->MOS1drainConductance = 0; } if(model->MOS1sourceResistanceGiven) { if(model->MOS1sourceResistance != 0) { here->MOS1sourceConductance = 1/model->MOS1sourceResistance; } else { here->MOS1sourceConductance = 0; } } else if (model->MOS1sheetResistanceGiven) { if( (!here->MOS1sourceSquaresGiven) || ( here->MOS1sourceSquares==0) ) { here->MOS1sourceSquares=1; } if(model->MOS1sheetResistance != 0) { here->MOS1sourceConductance = 1/(model->MOS1sheetResistance*here->MOS1sourceSquares); } else { here->MOS1sourceConductance = 0; } } else { here->MOS1sourceConductance = 0; } } } return(OK); } 0707070124061002321006440006700000000000011777770500302376200004500000001372spice3c1/spice3/dev/mos1/mos1trunc.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos1defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS1trunc.c $Revision: 1.4 $ on $Date: 88/07/22 01:28:08 $") int MOS1trunc(inModel,ckt,timeStep) GENmodel *inModel; register CKTcircuit *ckt; double *timeStep; { register MOS1model *model = (MOS1model *)inModel; register MOS1instance *here; for( ; model != NULL; model = model->MOS1nextModel) { for(here=model->MOS1instances;here!=NULL;here = here->MOS1nextInstance){ CKTterr(here->MOS1qgs,ckt,timeStep); CKTterr(here->MOS1qgd,ckt,timeStep); CKTterr(here->MOS1qgb,ckt,timeStep); } } return(OK); } 0707070124061002331006440006700000000000011777770500302376200004600000000466spice3c1/spice3/dev/mos1/response.lib+MOS1.OBJ& +MOS1ACLO.OBJ& +MOS1ASK.OBJ& +MOS1CONV.OBJ& +MOS1DELE.OBJ& +MOS1DEST.OBJ& +MOS1GETI.OBJ& +MOS1LOAD.OBJ& +MOS1MASK.OBJ& +MOS1MDEL.OBJ& +MOS1MPAR.OBJ& +MOS1PARA.OBJ& +MOS1PZLO.OBJ& +MOS1SACL.OBJ& +MOS1SLOA.OBJ& +MOS1SPRI.OBJ& +MOS1SSET.OBJ& +MOS1SUPD.OBJ& +MOS1SETU.OBJ& +MOS1TEMP.OBJ& +MOS1TRUN.OBJ; 0707070124061002341006440006700000000000011777770500302376300004200000040523spice3c1/spice3/dev/mos1/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mos1.c\ mos1acload.c\ mos1ask.c\ mos1convtest.c\ mos1delete.c\ mos1destroy.c\ mos1getic.c\ mos1load.c\ mos1mask.c\ mos1mdelete.c\ mos1mparam.c\ mos1param.c\ mos1pzload.c\ mos1sacload.c\ mos1sload.c\ mos1sprint.c\ mos1ssetup.c\ mos1supdate.c\ mos1setup.c\ mos1temp.c\ mos1trunc.c COBJS = \ mos1.o\ mos1acload.o\ mos1ask.o\ mos1convtest.o\ mos1delete.o\ mos1destroy.o\ mos1getic.o\ mos1load.o\ mos1mask.o\ mos1mdelete.o\ mos1mparam.o\ mos1param.o\ mos1pzload.o\ mos1sacload.o\ mos1sload.o\ mos1sprint.o\ mos1ssetup.o\ mos1supdate.o\ mos1setup.o\ mos1temp.o\ mos1trunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS = -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmos1.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmos1 ${LINTFLAGS} ${CFILES} mv llib-lmos1.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE mos1.o: ../../include/acdefs.h mos1.o: ../../include/cktdefs.h mos1.o: ../../include/devdefs.h mos1.o: ../../include/gendefs.h mos1.o: ../../include/ifsim.h mos1.o: ../../include/jobdefs.h mos1.o: ../../include/mos1defs.h mos1.o: ../../include/optdefs.h mos1.o: ../../include/pzdefs.h mos1.o: ../../include/sendefs.h mos1.o: ../../include/smpdefs.h mos1.o: ../../include/trcvdefs.h mos1.o: ../../include/tskdefs.h mos1.o: ../../include/complex.h mos1.o: ../../include/prefix.h mos1.o: ../../include/suffix.h mos1acload.o: ../../include/acdefs.h mos1acload.o: ../../include/cktdefs.h mos1acload.o: ../../include/gendefs.h mos1acload.o: ../../include/iferrmsgs.h mos1acload.o: ../../include/ifsim.h mos1acload.o: ../../include/jobdefs.h mos1acload.o: ../../include/mos1defs.h mos1acload.o: ../../include/optdefs.h mos1acload.o: ../../include/pzdefs.h mos1acload.o: ../../include/sendefs.h mos1acload.o: ../../include/smpdefs.h mos1acload.o: ../../include/sperror.h mos1acload.o: ../../include/trcvdefs.h mos1acload.o: ../../include/tskdefs.h mos1acload.o: ../../include/complex.h mos1acload.o: ../../include/prefix.h mos1acload.o: ../../include/suffix.h mos1ask.o: ../../include/acdefs.h mos1ask.o: ../../include/cktdefs.h mos1ask.o: ../../include/const.h mos1ask.o: ../../include/devdefs.h mos1ask.o: ../../include/gendefs.h mos1ask.o: ../../include/iferrmsgs.h mos1ask.o: ../../include/ifsim.h mos1ask.o: ../../include/jobdefs.h mos1ask.o: ../../include/mos1defs.h mos1ask.o: ../../include/optdefs.h mos1ask.o: ../../include/pzdefs.h mos1ask.o: ../../include/sendefs.h mos1ask.o: ../../include/smpdefs.h mos1ask.o: ../../include/sperror.h mos1ask.o: ../../include/trcvdefs.h mos1ask.o: ../../include/tskdefs.h mos1ask.o: ../../include/complex.h mos1ask.o: ../../include/prefix.h mos1ask.o: ../../include/suffix.h mos1ask.o: ../../include/util.h mos1convtest.o: ../../include/acdefs.h mos1convtest.o: ../../include/cktdefs.h mos1convtest.o: ../../include/gendefs.h mos1convtest.o: ../../include/iferrmsgs.h mos1convtest.o: ../../include/ifsim.h mos1convtest.o: ../../include/jobdefs.h mos1convtest.o: ../../include/mos1defs.h mos1convtest.o: ../../include/optdefs.h mos1convtest.o: ../../include/pzdefs.h mos1convtest.o: ../../include/sendefs.h mos1convtest.o: ../../include/smpdefs.h mos1convtest.o: ../../include/sperror.h mos1convtest.o: ../../include/trcvdefs.h mos1convtest.o: ../../include/tskdefs.h mos1convtest.o: ../../include/complex.h mos1convtest.o: ../../include/prefix.h mos1convtest.o: ../../include/suffix.h mos1convtest.o: ../../include/util.h mos1delete.o: ../../include/acdefs.h mos1delete.o: ../../include/cktdefs.h mos1delete.o: ../../include/gendefs.h mos1delete.o: ../../include/iferrmsgs.h mos1delete.o: ../../include/ifsim.h mos1delete.o: ../../include/jobdefs.h mos1delete.o: ../../include/mos1defs.h mos1delete.o: ../../include/optdefs.h mos1delete.o: ../../include/pzdefs.h mos1delete.o: ../../include/sendefs.h mos1delete.o: ../../include/smpdefs.h mos1delete.o: ../../include/sperror.h mos1delete.o: ../../include/trcvdefs.h mos1delete.o: ../../include/tskdefs.h mos1delete.o: ../../include/complex.h mos1delete.o: ../../include/prefix.h mos1delete.o: ../../include/suffix.h mos1delete.o: ../../include/util.h mos1destroy.o: ../../include/acdefs.h mos1destroy.o: ../../include/cktdefs.h mos1destroy.o: ../../include/gendefs.h mos1destroy.o: ../../include/ifsim.h mos1destroy.o: ../../include/jobdefs.h mos1destroy.o: ../../include/mos1defs.h mos1destroy.o: ../../include/optdefs.h mos1destroy.o: ../../include/pzdefs.h mos1destroy.o: ../../include/sendefs.h mos1destroy.o: ../../include/smpdefs.h mos1destroy.o: ../../include/trcvdefs.h mos1destroy.o: ../../include/tskdefs.h mos1destroy.o: ../../include/complex.h mos1destroy.o: ../../include/prefix.h mos1destroy.o: ../../include/suffix.h mos1destroy.o: ../../include/util.h mos1getic.o: ../../include/acdefs.h mos1getic.o: ../../include/cktdefs.h mos1getic.o: ../../include/gendefs.h mos1getic.o: ../../include/iferrmsgs.h mos1getic.o: ../../include/ifsim.h mos1getic.o: ../../include/jobdefs.h mos1getic.o: ../../include/mos1defs.h mos1getic.o: ../../include/optdefs.h mos1getic.o: ../../include/pzdefs.h mos1getic.o: ../../include/sendefs.h mos1getic.o: ../../include/smpdefs.h mos1getic.o: ../../include/sperror.h mos1getic.o: ../../include/trcvdefs.h mos1getic.o: ../../include/tskdefs.h mos1getic.o: ../../include/complex.h mos1getic.o: ../../include/prefix.h mos1getic.o: ../../include/suffix.h mos1load.o: ../../include/acdefs.h mos1load.o: ../../include/cktdefs.h mos1load.o: ../../include/const.h mos1load.o: ../../include/devdefs.h mos1load.o: ../../include/gendefs.h mos1load.o: ../../include/iferrmsgs.h mos1load.o: ../../include/ifsim.h mos1load.o: ../../include/jobdefs.h mos1load.o: ../../include/mos1defs.h mos1load.o: ../../include/optdefs.h mos1load.o: ../../include/pzdefs.h mos1load.o: ../../include/sendefs.h mos1load.o: ../../include/smpdefs.h mos1load.o: ../../include/sperror.h mos1load.o: ../../include/trandefs.h mos1load.o: ../../include/trcvdefs.h mos1load.o: ../../include/tskdefs.h mos1load.o: ../../include/complex.h mos1load.o: ../../include/prefix.h mos1load.o: ../../include/suffix.h mos1load.o: ../../include/util.h mos1mask.o: ../../include/acdefs.h mos1mask.o: ../../include/cktdefs.h mos1mask.o: ../../include/const.h mos1mask.o: ../../include/devdefs.h mos1mask.o: ../../include/gendefs.h mos1mask.o: ../../include/iferrmsgs.h mos1mask.o: ../../include/ifsim.h mos1mask.o: ../../include/jobdefs.h mos1mask.o: ../../include/mos1defs.h mos1mask.o: ../../include/optdefs.h mos1mask.o: ../../include/pzdefs.h mos1mask.o: ../../include/sendefs.h mos1mask.o: ../../include/smpdefs.h mos1mask.o: ../../include/sperror.h mos1mask.o: ../../include/trcvdefs.h mos1mask.o: ../../include/tskdefs.h mos1mask.o: ../../include/complex.h mos1mask.o: ../../include/prefix.h mos1mask.o: ../../include/suffix.h mos1mdelete.o: ../../include/acdefs.h mos1mdelete.o: ../../include/cktdefs.h mos1mdelete.o: ../../include/gendefs.h mos1mdelete.o: ../../include/iferrmsgs.h mos1mdelete.o: ../../include/ifsim.h mos1mdelete.o: ../../include/jobdefs.h mos1mdelete.o: ../../include/mos1defs.h mos1mdelete.o: ../../include/optdefs.h mos1mdelete.o: ../../include/pzdefs.h mos1mdelete.o: ../../include/sendefs.h mos1mdelete.o: ../../include/smpdefs.h mos1mdelete.o: ../../include/sperror.h mos1mdelete.o: ../../include/trcvdefs.h mos1mdelete.o: ../../include/tskdefs.h mos1mdelete.o: ../../include/complex.h mos1mdelete.o: ../../include/prefix.h mos1mdelete.o: ../../include/suffix.h mos1mdelete.o: ../../include/util.h mos1mparam.o: ../../include/acdefs.h mos1mparam.o: ../../include/cktdefs.h mos1mparam.o: ../../include/const.h mos1mparam.o: ../../include/gendefs.h mos1mparam.o: ../../include/iferrmsgs.h mos1mparam.o: ../../include/ifsim.h mos1mparam.o: ../../include/jobdefs.h mos1mparam.o: ../../include/mos1defs.h mos1mparam.o: ../../include/optdefs.h mos1mparam.o: ../../include/pzdefs.h mos1mparam.o: ../../include/sendefs.h mos1mparam.o: ../../include/smpdefs.h mos1mparam.o: ../../include/sperror.h mos1mparam.o: ../../include/trcvdefs.h mos1mparam.o: ../../include/tskdefs.h mos1mparam.o: ../../include/complex.h mos1mparam.o: ../../include/prefix.h mos1mparam.o: ../../include/suffix.h mos1mparam.o: ../../include/util.h mos1param.o: ../../include/acdefs.h mos1param.o: ../../include/cktdefs.h mos1param.o: ../../include/const.h mos1param.o: ../../include/gendefs.h mos1param.o: ../../include/iferrmsgs.h mos1param.o: ../../include/ifsim.h mos1param.o: ../../include/jobdefs.h mos1param.o: ../../include/mos1defs.h mos1param.o: ../../include/optdefs.h mos1param.o: ../../include/pzdefs.h mos1param.o: ../../include/sendefs.h mos1param.o: ../../include/smpdefs.h mos1param.o: ../../include/sperror.h mos1param.o: ../../include/trcvdefs.h mos1param.o: ../../include/tskdefs.h mos1param.o: ../../include/complex.h mos1param.o: ../../include/prefix.h mos1param.o: ../../include/suffix.h mos1param.o: ../../include/util.h mos1pzload.o: ../../include/acdefs.h mos1pzload.o: ../../include/cktdefs.h mos1pzload.o: ../../include/gendefs.h mos1pzload.o: ../../include/iferrmsgs.h mos1pzload.o: ../../include/ifsim.h mos1pzload.o: ../../include/jobdefs.h mos1pzload.o: ../../include/mos1defs.h mos1pzload.o: ../../include/optdefs.h mos1pzload.o: ../../include/pzdefs.h mos1pzload.o: ../../include/sendefs.h mos1pzload.o: ../../include/smpdefs.h mos1pzload.o: ../../include/sperror.h mos1pzload.o: ../../include/trcvdefs.h mos1pzload.o: ../../include/tskdefs.h mos1pzload.o: ../../include/complex.h mos1pzload.o: ../../include/prefix.h mos1pzload.o: ../../include/suffix.h mos1sacload.o: ../../include/acdefs.h mos1sacload.o: ../../include/cktdefs.h mos1sacload.o: ../../include/const.h mos1sacload.o: ../../include/gendefs.h mos1sacload.o: ../../include/iferrmsgs.h mos1sacload.o: ../../include/ifsim.h mos1sacload.o: ../../include/jobdefs.h mos1sacload.o: ../../include/mos1defs.h mos1sacload.o: ../../include/optdefs.h mos1sacload.o: ../../include/pzdefs.h mos1sacload.o: ../../include/sendefs.h mos1sacload.o: ../../include/smpdefs.h mos1sacload.o: ../../include/sperror.h mos1sacload.o: ../../include/trcvdefs.h mos1sacload.o: ../../include/tskdefs.h mos1sacload.o: ../../include/complex.h mos1sacload.o: ../../include/prefix.h mos1sacload.o: ../../include/suffix.h mos1sacload.o: ../../include/util.h mos1sload.o: ../../include/acdefs.h mos1sload.o: ../../include/cktdefs.h mos1sload.o: ../../include/gendefs.h mos1sload.o: ../../include/iferrmsgs.h mos1sload.o: ../../include/ifsim.h mos1sload.o: ../../include/jobdefs.h mos1sload.o: ../../include/mos1defs.h mos1sload.o: ../../include/optdefs.h mos1sload.o: ../../include/pzdefs.h mos1sload.o: ../../include/sendefs.h mos1sload.o: ../../include/smpdefs.h mos1sload.o: ../../include/sperror.h mos1sload.o: ../../include/trcvdefs.h mos1sload.o: ../../include/tskdefs.h mos1sload.o: ../../include/complex.h mos1sload.o: ../../include/prefix.h mos1sload.o: ../../include/suffix.h mos1sload.o: ../../include/util.h mos1sprint.o: ../../include/acdefs.h mos1sprint.o: ../../include/cktdefs.h mos1sprint.o: ../../include/gendefs.h mos1sprint.o: ../../include/iferrmsgs.h mos1sprint.o: ../../include/ifsim.h mos1sprint.o: ../../include/jobdefs.h mos1sprint.o: ../../include/mos1defs.h mos1sprint.o: ../../include/optdefs.h mos1sprint.o: ../../include/pzdefs.h mos1sprint.o: ../../include/sendefs.h mos1sprint.o: ../../include/smpdefs.h mos1sprint.o: ../../include/sperror.h mos1sprint.o: ../../include/trcvdefs.h mos1sprint.o: ../../include/tskdefs.h mos1sprint.o: ../../include/complex.h mos1sprint.o: ../../include/prefix.h mos1sprint.o: ../../include/suffix.h mos1sprint.o: ../../include/util.h mos1ssetup.o: ../../include/acdefs.h mos1ssetup.o: ../../include/cktdefs.h mos1ssetup.o: ../../include/gendefs.h mos1ssetup.o: ../../include/iferrmsgs.h mos1ssetup.o: ../../include/ifsim.h mos1ssetup.o: ../../include/jobdefs.h mos1ssetup.o: ../../include/mos1defs.h mos1ssetup.o: ../../include/optdefs.h mos1ssetup.o: ../../include/pzdefs.h mos1ssetup.o: ../../include/sendefs.h mos1ssetup.o: ../../include/smpdefs.h mos1ssetup.o: ../../include/sperror.h mos1ssetup.o: ../../include/trcvdefs.h mos1ssetup.o: ../../include/tskdefs.h mos1ssetup.o: ../../include/complex.h mos1ssetup.o: ../../include/prefix.h mos1ssetup.o: ../../include/suffix.h mos1ssetup.o: ../../include/util.h mos1supdate.o: ../../include/acdefs.h mos1supdate.o: ../../include/cktdefs.h mos1supdate.o: ../../include/gendefs.h mos1supdate.o: ../../include/iferrmsgs.h mos1supdate.o: ../../include/ifsim.h mos1supdate.o: ../../include/jobdefs.h mos1supdate.o: ../../include/mos1defs.h mos1supdate.o: ../../include/optdefs.h mos1supdate.o: ../../include/pzdefs.h mos1supdate.o: ../../include/sendefs.h mos1supdate.o: ../../include/smpdefs.h mos1supdate.o: ../../include/sperror.h mos1supdate.o: ../../include/trcvdefs.h mos1supdate.o: ../../include/tskdefs.h mos1supdate.o: ../../include/complex.h mos1supdate.o: ../../include/prefix.h mos1supdate.o: ../../include/suffix.h mos1supdate.o: ../../include/util.h mos1setup.o: ../../include/acdefs.h mos1setup.o: ../../include/cktdefs.h mos1setup.o: ../../include/gendefs.h mos1setup.o: ../../include/iferrmsgs.h mos1setup.o: ../../include/ifsim.h mos1setup.o: ../../include/jobdefs.h mos1setup.o: ../../include/mos1defs.h mos1setup.o: ../../include/optdefs.h mos1setup.o: ../../include/pzdefs.h mos1setup.o: ../../include/sendefs.h mos1setup.o: ../../include/smpdefs.h mos1setup.o: ../../include/sperror.h mos1setup.o: ../../include/trcvdefs.h mos1setup.o: ../../include/tskdefs.h mos1setup.o: ../../include/complex.h mos1setup.o: ../../include/prefix.h mos1setup.o: ../../include/suffix.h mos1setup.o: ../../include/util.h mos1temp.o: ../../include/acdefs.h mos1temp.o: ../../include/cktdefs.h mos1temp.o: ../../include/const.h mos1temp.o: ../../include/gendefs.h mos1temp.o: ../../include/iferrmsgs.h mos1temp.o: ../../include/ifsim.h mos1temp.o: ../../include/jobdefs.h mos1temp.o: ../../include/mos1defs.h mos1temp.o: ../../include/optdefs.h mos1temp.o: ../../include/pzdefs.h mos1temp.o: ../../include/sendefs.h mos1temp.o: ../../include/smpdefs.h mos1temp.o: ../../include/sperror.h mos1temp.o: ../../include/trcvdefs.h mos1temp.o: ../../include/tskdefs.h mos1temp.o: ../../include/complex.h mos1temp.o: ../../include/prefix.h mos1temp.o: ../../include/suffix.h mos1temp.o: ../../include/util.h mos1trunc.o: ../../include/acdefs.h mos1trunc.o: ../../include/cktdefs.h mos1trunc.o: ../../include/gendefs.h mos1trunc.o: ../../include/iferrmsgs.h mos1trunc.o: ../../include/ifsim.h mos1trunc.o: ../../include/jobdefs.h mos1trunc.o: ../../include/mos1defs.h mos1trunc.o: ../../include/optdefs.h mos1trunc.o: ../../include/pzdefs.h mos1trunc.o: ../../include/sendefs.h mos1trunc.o: ../../include/smpdefs.h mos1trunc.o: ../../include/sperror.h mos1trunc.o: ../../include/trcvdefs.h mos1trunc.o: ../../include/tskdefs.h mos1trunc.o: ../../include/complex.h mos1trunc.o: ../../include/prefix.h mos1trunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061002351006440006700000000000011777770500302376300004300000002201spice3c1/spice3/dev/mos1/msc51.batcl /I..\..\include\ /c MOS1.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1acLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1ask.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1convTest.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1delete.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1destroy.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1getic.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1load.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1mAsk.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1mDelete.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1mParam.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1param.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1pzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1sAcLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1sLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1sPrint.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1sSetup.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1sUpdate.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1setup.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1temp.c >> ..\..\errs.out cl /I..\..\include\ /c MOS1trunc.c >> ..\..\errs.out lib ..\..\DEV2.lib @RESPONSE.LIB 0707070124061002040407550006700000000000021777770500302376300003100000000000spice3c1/spice3/dev/mos10707070124061041001006440006700000000000011777770500302376300004000000022621spice3c1/spice3/dev/mos3/mos3.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "devdefs.h" #include "ifsim.h" #include "mos3defs.h" #include "suffix.h" RCSID("MOS3.c $Revision: 1.15 $ on $Date: 89/03/07 11:32:13 $") static IFparm MOS3pTable[] = { /* parameters */ IOP("l", MOS3_L, IF_REAL , "Length"), IOP("w", MOS3_W, IF_REAL , "Width"), IOP("ad", MOS3_AD, IF_REAL , "Drain area"), IOP("as", MOS3_AS, IF_REAL , "Source area"), IOP("pd", MOS3_PD, IF_REAL , "Drain perimeter"), IOP("ps", MOS3_PS, IF_REAL , "Source perimeter"), IOP("nrd", MOS3_NRD, IF_REAL , "Drain squares"), IOP("nrs", MOS3_NRS, IF_REAL , "Source squares"), IP("off", MOS3_OFF, IF_FLAG , "Device initially off"), IOP("icvds", MOS3_IC_VDS, IF_REAL , "Initial D-S voltage"), IOP("icvgs", MOS3_IC_VGS, IF_REAL , "Initial G-S voltage"), IOP("icvbs", MOS3_IC_VBS, IF_REAL , "Initial B-S voltage"), IOP("ic", MOS3_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"), IOP("temp", MOS3_TEMP, IF_REAL , "Instance operating temperature"), IP("sens_l", MOS3_L_SENS, IF_FLAG, "flag to request sensitivity WRT length"), IP("sens_w", MOS3_W_SENS, IF_FLAG, "flag to request sensitivity WRT width"), OP("cgs", MOS3_CGS, IF_REAL , "Gate-Source capacitance"), OP("cgd", MOS3_CGD, IF_REAL , "Gate-Drain capacitance"), OP("dnode", MOS3_DNODE, IF_INTEGER, "Number of drain node"), OP("gnode", MOS3_GNODE, IF_INTEGER, "Number of gate node"), OP("snode", MOS3_SNODE, IF_INTEGER, "Number of source node"), OP("bnode", MOS3_BNODE, IF_INTEGER, "Number of bulk node"), OP("dnodeprime", MOS3_DNODEPRIME,IF_INTEGER,"Number of internal drain node"), OP("snodeprime", MOS3_SNODEPRIME,IF_INTEGER,"Number of internal source node"), OP("sourceconductance", MOS3_SOURCECONDUCT, IF_REAL, "Source conductance"), OP("drainconductance", MOS3_DRAINCONDUCT, IF_REAL, "Drain conductance"), OP("von", MOS3_VON, IF_REAL, " "), OP("vdsat", MOS3_VDSAT, IF_REAL, "Saturation drain voltage"), OP("sourcevcrit", MOS3_SOURCEVCRIT, IF_REAL, "Critical source voltage"), OP("drainvcrit", MOS3_DRAINVCRIT, IF_REAL, "Critical drain voltage"), OP("cd", MOS3_CD, IF_REAL, "Drain current"), OP("cbs", MOS3_CBS, IF_REAL, "B-S junction capacitance"), OP("cbd", MOS3_CBD, IF_REAL, "B-D junction capacitance"), OP("gmbs", MOS3_GMBS, IF_REAL, "Bulk-Source transconductance"), OP("gm", MOS3_GM, IF_REAL, "Transconductance"), OP("gds", MOS3_GDS, IF_REAL, "Drain-Source conductance"), OP("gbd", MOS3_GBD, IF_REAL, "Bulk-Drain conductance"), OP("gbs", MOS3_GBS, IF_REAL, "Bulk-Source conductance"), OP("capbd", MOS3_CAPBD, IF_REAL, "Bulk-Drain capacitance"), OP("capbs", MOS3_CAPBS, IF_REAL, "Bulk-Source capacitance"), OP("cbd0", MOS3_CAPZEROBIASBD, IF_REAL,"Zero-Bias B-D junction capacitance"), OP("cbdsw0",MOS3_CAPZEROBIASBDSW,IF_REAL, " "), OP("cbs0", MOS3_CAPZEROBIASBS, IF_REAL,"Zero-Bias B-S junction capacitance"), OP("cbssw0",MOS3_CAPZEROBIASBSSW,IF_REAL, " "), OP("vbd", MOS3_VBD, IF_REAL, "Bulk-Drain voltage"), OP("vbs", MOS3_VBS, IF_REAL, "Bulk-Source voltage"), OP("vgs", MOS3_VGS, IF_REAL, "Gate-Source voltage"), OP("vds", MOS3_VDS, IF_REAL, "Drain-Source voltage"), OP("capgs", MOS3_CAPGS, IF_REAL, "Gate-Source capacitance"), OP("qgs", MOS3_QGS, IF_REAL, "Gate-Source charge storage"), OP("cqgs",MOS3_CQGS,IF_REAL,"Capacitance due to gate-source charge storage"), OP("capgd", MOS3_CAPGD, IF_REAL, "Gate-Drain capacitance"), OP("qgd", MOS3_QGD, IF_REAL, "Gate-Drain charge storage"), OP("cqgd", MOS3_CQGD, IF_REAL,"Capacitance due to gate-drain charge storage"), OP("capgb",MOS3_CAPGB, IF_REAL, "Gate-Bulk capacitance"), OP("qgb", MOS3_QGB, IF_REAL, "Gate-Bulk charge storage"), OP("cqgb", MOS3_CQGB, IF_REAL,"Capacitance due to gate-bulk charge storage"), OP("qbd", MOS3_QBD, IF_REAL, "Bulk-Drain charge storage"), OP("cqbd", MOS3_CQBD,IF_REAL,"Capacitance due to bulk-drain charge storage"), OP("qbs", MOS3_QBS, IF_REAL, "Bulk-Source charge storage"), OP("cqbs", MOS3_CQBS,IF_REAL,"Capacitance due to bulk-source charge storage"), OP("cs", MOS3_CS, IF_REAL, "Source current"), OP("cg", MOS3_CG, IF_REAL, "Gate current"), OP("cb", MOS3_CB, IF_REAL, "Bulk current"), OP("p", MOS3_POWER, IF_REAL, "Instantaneous power"), OP("sens_l_dc", MOS3_L_SENS_DC, IF_REAL, "dc sensitivity wrt length"), OP("sens_l_real",MOS3_L_SENS_REAL, IF_REAL, "real part of ac sensitivity wrt length"), OP("sens_l_imag",MOS3_L_SENS_IMAG, IF_REAL, "imag part of ac sensitivity wrt length"), OP("sens_l_cplx",MOS3_L_SENS_CPLX, IF_COMPLEX, "ac sensitivity wrt length"), OP("sens_l_mag", MOS3_L_SENS_MAG, IF_REAL, "sensitivity wrt l of ac magnitude"), OP("sens_l_ph", MOS3_L_SENS_PH, IF_REAL, "sensitivity wrt l of ac phase"), OP("sens_w_dc", MOS3_W_SENS_DC, IF_REAL, "dc sensitivity wrt width"), OP("sens_w_real",MOS3_W_SENS_REAL, IF_REAL, "real part of ac sensitivity wrt width"), OP("sens_w_imag",MOS3_W_SENS_IMAG, IF_REAL, "imag part of ac sensitivity wrt width"), OP("sens_w_mag", MOS3_W_SENS_MAG, IF_REAL, "sensitivity wrt w of ac magnitude"), OP("sens_w_ph", MOS3_W_SENS_PH, IF_REAL, "sensitivity wrt w of ac phase"), OP("sens_w_cplx",MOS3_W_SENS_CPLX, IF_COMPLEX, "ac sensitivity wrt width") }; static IFparm MOS3mPTable[] = { /* model parameters */ IOP("vto", MOS3_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("vt0", MOS3_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("kp", MOS3_MOD_KP, IF_REAL ,"Transconductance parameter"), IOP("gamma", MOS3_MOD_GAMMA, IF_REAL ,"Bulk threshold parameter"), IOP("phi", MOS3_MOD_PHI, IF_REAL ,"Surface potential"), IOP("rd", MOS3_MOD_RD, IF_REAL ,"Drain ohmic resistance"), IOP("rs", MOS3_MOD_RS, IF_REAL ,"Source ohmic resistance"), IOP("cbd", MOS3_MOD_CBD, IF_REAL ,"B-D junction capacitance"), IOP("cbs", MOS3_MOD_CBS, IF_REAL ,"B-S junction capacitance"), IOP("is", MOS3_MOD_IS, IF_REAL ,"Bulk junction sat. current"), IOP("pb", MOS3_MOD_PB, IF_REAL ,"Bulk junction potential"), IOP("cgso", MOS3_MOD_CGSO, IF_REAL ,"Gate-source overlap cap."), IOP("cgdo", MOS3_MOD_CGDO, IF_REAL ,"Gate-drain overlap cap."), IOP("cgbo", MOS3_MOD_CGBO, IF_REAL ,"Gate-bulk overlap cap."), IOP("rsh", MOS3_MOD_RSH, IF_REAL ,"Sheet resistance"), IOP("cj", MOS3_MOD_CJ, IF_REAL ,"Bottom junction cap per area"), IOP("mj", MOS3_MOD_MJ, IF_REAL ,"Bottom grading coefficient"), IOP("cjsw", MOS3_MOD_CJSW, IF_REAL ,"Side junction cap per area"), IOP("mjsw", MOS3_MOD_MJSW, IF_REAL ,"Side grading coefficient"), IOP("js", MOS3_MOD_JS, IF_REAL ,"Bulk jct. sat. current density"), IOP("tox", MOS3_MOD_TOX, IF_REAL ,"Oxide thickness"), IOP("ld", MOS3_MOD_LD, IF_REAL ,"Lateral diffusion"), IOP("u0", MOS3_MOD_U0, IF_REAL ,"Surface mobility"), IOP("uo", MOS3_MOD_U0, IF_REAL ,"Surface mobility"), IOP("fc", MOS3_MOD_FC, IF_REAL ,"Forward bias jct. fit parm."), IP("nmos", MOS3_MOD_NMOS, IF_FLAG ,"N type MOSfet model"), IP("pmos", MOS3_MOD_PMOS, IF_FLAG ,"P type MOSfet model"), IOP("nsub", MOS3_MOD_NSUB, IF_REAL ,"Substrate doping"), IOP("tpg", MOS3_MOD_TPG, IF_INTEGER,"Gate type"), IOP("nss", MOS3_MOD_NSS, IF_REAL ,"Surface state density"), IOP("delta", MOS3_MOD_DELTA, IF_REAL ,"Width effect on threshold"), IOP("vmax", MOS3_MOD_VMAX, IF_REAL ,"Maximum carrier drift velocity"), IOP("xj", MOS3_MOD_XJ, IF_REAL ,"Junction depth"), IOP("nfs", MOS3_MOD_NFS, IF_REAL ,"Fast surface state density"), IOP("eta", MOS3_MOD_ETA, IF_REAL ,""), IOP("xd", MOS3_MOD_XD, IF_REAL ,"Depletion layer width"), IOP("input_delta", MOS3_DELTA, IF_REAL ,"Input delta"), IOP("theta", MOS3_MOD_THETA, IF_REAL ,"Theta"), IOP("alpha", MOS3_MOD_ALPHA, IF_REAL ,"Alpha"), IOP("kappa", MOS3_MOD_KAPPA, IF_REAL ,"Kappa"), IOP("tnom", MOS3_MOD_TNOM, IF_REAL ,"Parameter measurement temperature"), }; static char *MOS3names[] = { "Drain", "Gate", "Source", "Bulk" }; SPICEdev MOS3info = { { "Mos3", "Level 3 MOSfet model with Meyer capacitance model", sizeof(MOS3names)/sizeof(char *), sizeof(MOS3names)/sizeof(char *), MOS3names, sizeof(MOS3pTable)/sizeof(IFparm), MOS3pTable, sizeof(MOS3mPTable)/sizeof(IFparm), MOS3mPTable, }, MOS3param, MOS3mParam, MOS3load, MOS3setup, MOS3setup, MOS3temp, MOS3trunc, NULL, MOS3acLoad, NULL, MOS3destroy, #ifdef DELETES MOS3mDelete, MOS3delete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ MOS3getic, MOS3ask, MOS3mAsk, MOS3pzLoad, #ifdef NEWCONV MOS3convTest, #else /* NEWCONV */ NULL, #endif /* NEWCONV */ #ifndef NOSENS MOS3sSetup, MOS3sLoad, MOS3sUpdate, MOS3sAcLoad, MOS3sPrint, NULL, #else /* NOSENS */ NULL, NULL, NULL, NULL, NULL, NULL, #endif /* NOSENS */ sizeof(MOS3instance), sizeof(MOS3model), }; 0707070124061041011006440006700000000000011777770500302376300004600000010440spice3c1/spice3/dev/mos3/mos3acload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3acLoad.c $Revision: 1.4 $ on $Date: 88/07/22 05:10:29 $") int MOS3acLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; int xnrm; int xrev; double EffectiveLength; double xgs; double xgd; double xgb; double xbd; double xbs; double capgs; double capgd; double capgb; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; for( ; model != NULL; model = model->MOS3nextModel) { for(here = model->MOS3instances; here!= NULL; here = here->MOS3nextInstance) { if (here->MOS3mode < 0) { xnrm=0; xrev=1; } else { xnrm=1; xrev=0; } /* * charge oriented model parameters */ EffectiveLength=here->MOS3l-2*model->MOS3latDiff; GateSourceOverlapCap = model->MOS3gateSourceOverlapCapFactor * here->MOS3w; GateDrainOverlapCap = model->MOS3gateDrainOverlapCapFactor * here->MOS3w; GateBulkOverlapCap = model->MOS3gateBulkOverlapCapFactor * EffectiveLength; /* * meyer"s model parameters */ capgs = ( *(ckt->CKTstate0+here->MOS3capgs)+ *(ckt->CKTstate0+here->MOS3capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS3capgd)+ *(ckt->CKTstate0+here->MOS3capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS3capgb)+ *(ckt->CKTstate0+here->MOS3capgb) + GateBulkOverlapCap ); xgs = capgs * ckt->CKTomega; xgd = capgd * ckt->CKTomega; xgb = capgb * ckt->CKTomega; xbd = here->MOS3capbd * ckt->CKTomega; xbs = here->MOS3capbs * ckt->CKTomega; /* * load matrix */ *(here->MOS3GgPtr +1) += xgd+xgs+xgb; *(here->MOS3BbPtr +1) += xgb+xbd+xbs; *(here->MOS3DPdpPtr +1) += xgd+xbd; *(here->MOS3SPspPtr +1) += xgs+xbs; *(here->MOS3GbPtr +1) -= xgb; *(here->MOS3GdpPtr +1) -= xgd; *(here->MOS3GspPtr +1) -= xgs; *(here->MOS3BgPtr +1) -= xgb; *(here->MOS3BdpPtr +1) -= xbd; *(here->MOS3BspPtr +1) -= xbs; *(here->MOS3DPgPtr +1) -= xgd; *(here->MOS3DPbPtr +1) -= xbd; *(here->MOS3SPgPtr +1) -= xgs; *(here->MOS3SPbPtr +1) -= xbs; *(here->MOS3DdPtr) += here->MOS3drainConductance; *(here->MOS3SsPtr) += here->MOS3sourceConductance; *(here->MOS3BbPtr) += here->MOS3gbd+here->MOS3gbs; *(here->MOS3DPdpPtr) += here->MOS3drainConductance+ here->MOS3gds+here->MOS3gbd+ xrev*(here->MOS3gm+here->MOS3gmbs); *(here->MOS3SPspPtr) += here->MOS3sourceConductance+ here->MOS3gds+here->MOS3gbs+ xnrm*(here->MOS3gm+here->MOS3gmbs); *(here->MOS3DdpPtr) -= here->MOS3drainConductance; *(here->MOS3SspPtr) -= here->MOS3sourceConductance; *(here->MOS3BdpPtr) -= here->MOS3gbd; *(here->MOS3BspPtr) -= here->MOS3gbs; *(here->MOS3DPdPtr) -= here->MOS3drainConductance; *(here->MOS3DPgPtr) += (xnrm-xrev)*here->MOS3gm; *(here->MOS3DPbPtr) += -here->MOS3gbd+(xnrm-xrev)*here->MOS3gmbs; *(here->MOS3DPspPtr) -= here->MOS3gds+ xnrm*(here->MOS3gm+here->MOS3gmbs); *(here->MOS3SPgPtr) -= (xnrm-xrev)*here->MOS3gm; *(here->MOS3SPsPtr) -= here->MOS3sourceConductance; *(here->MOS3SPbPtr) -= here->MOS3gbs+(xnrm-xrev)*here->MOS3gmbs; *(here->MOS3SPdpPtr) -= here->MOS3gds+ xrev*(here->MOS3gm+here->MOS3gmbs); } } return(OK); } 0707070124061041021006440006700000000000011777770500302376300004300000035650spice3c1/spice3/dev/mos3/mos3ask.c/* * Copyright (c) 1987 Mathew Lew and Thomas L. Quarles */ #include "prefix.h" #include #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "mos3defs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("MOS3ask.c $Revision: 1.6 $ on $Date: 89/04/30 12:27:53 $") /*ARGSUSED*/ int MOS3ask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { MOS3instance *here = (MOS3instance *)inst; double vr; double vi; double sr; double si; double vm; static char *msg = "Current and power not available for ac analysis"; switch(which) { case MOS3_TEMP: value->rValue = here->MOS3temp-CONSTCtoK; return(OK); case MOS3_CGS: value->rValue = *(ckt->CKTstate0 + here->MOS3capgs); return(OK); case MOS3_CGD: value->rValue = *(ckt->CKTstate0 + here->MOS3capgd); return(OK); case MOS3_L: value->rValue = here->MOS3l; return(OK); case MOS3_W: value->rValue = here->MOS3w; return(OK); case MOS3_AS: value->rValue = here->MOS3sourceArea; return(OK); case MOS3_AD: value->rValue = here->MOS3drainArea; return(OK); case MOS3_PS: value->rValue = here->MOS3sourcePerimiter; return(OK); case MOS3_PD: value->rValue = here->MOS3drainPerimiter; return(OK); case MOS3_NRS: value->rValue = here->MOS3sourceSquares; return(OK); case MOS3_NRD: value->rValue = here->MOS3drainSquares; return(OK); case MOS3_OFF: value->rValue = here->MOS3off; return(OK); case MOS3_IC_VBS: value->rValue = here->MOS3icVBS; return(OK); case MOS3_IC_VDS: value->rValue = here->MOS3icVDS; return(OK); case MOS3_IC_VGS: value->rValue = here->MOS3icVGS; return(OK); case MOS3_DNODE: value->iValue = here->MOS3dNode; return(OK); case MOS3_GNODE: value->iValue = here->MOS3gNode; return(OK); case MOS3_SNODE: value->iValue = here->MOS3sNode; return(OK); case MOS3_BNODE: value->iValue = here->MOS3bNode; return(OK); case MOS3_DNODEPRIME: value->iValue = here->MOS3dNodePrime; return(OK); case MOS3_SNODEPRIME: value->iValue = here->MOS3sNodePrime; return(OK); case MOS3_SOURCECONDUCT: value->rValue = here->MOS3sourceConductance; return(OK); case MOS3_DRAINCONDUCT: value->rValue = here->MOS3drainConductance; return(OK); case MOS3_VON: value->rValue = here->MOS3von; return(OK); case MOS3_VDSAT: value->rValue = here->MOS3vdsat; return(OK); case MOS3_SOURCEVCRIT: value->rValue = here->MOS3sourceVcrit; return(OK); case MOS3_DRAINVCRIT: value->rValue = here->MOS3drainVcrit; return(OK); case MOS3_CD: value->rValue = here->MOS3cd; return(OK); case MOS3_CBS: value->rValue = here->MOS3cbs; return(OK); case MOS3_CBD: value->rValue = here->MOS3cbd; return(OK); case MOS3_GMBS: value->rValue = here->MOS3gmbs; return(OK); case MOS3_GM: value->rValue = here->MOS3gm; return(OK); case MOS3_GDS: value->rValue = here->MOS3gds; return(OK); case MOS3_GBD: value->rValue = here->MOS3gbd; return(OK); case MOS3_GBS: value->rValue = here->MOS3gbs; return(OK); case MOS3_CAPBD: value->rValue = here->MOS3capbd; return(OK); case MOS3_CAPBS: value->rValue = here->MOS3capbs; return(OK); case MOS3_CAPZEROBIASBD: value->rValue = here->MOS3Cbd; return(OK); case MOS3_CAPZEROBIASBDSW: value->rValue = here->MOS3Cbdsw; return(OK); case MOS3_CAPZEROBIASBS: value->rValue = here->MOS3Cbs; return(OK); case MOS3_CAPZEROBIASBSSW: value->rValue = here->MOS3Cbssw; return(OK); case MOS3_VBD: value->rValue = *(ckt->CKTstate0 + here->MOS3vbd); return(OK); case MOS3_VBS: value->rValue = *(ckt->CKTstate0 + here->MOS3vbs); return(OK); case MOS3_VGS: value->rValue = *(ckt->CKTstate0 + here->MOS3vgs); return(OK); case MOS3_VDS: value->rValue = *(ckt->CKTstate0 + here->MOS3vds); return(OK); case MOS3_CAPGS: value->rValue = *(ckt->CKTstate0 + here->MOS3capgs); return(OK); case MOS3_QGS: value->rValue = *(ckt->CKTstate0 + here->MOS3qgs); return(OK); case MOS3_CQGS: value->rValue = *(ckt->CKTstate0 + here->MOS3cqgs); return(OK); case MOS3_CAPGD: value->rValue = *(ckt->CKTstate0 + here->MOS3capgd); return(OK); case MOS3_QGD: value->rValue = *(ckt->CKTstate0 + here->MOS3qgd); return(OK); case MOS3_CQGD: value->rValue = *(ckt->CKTstate0 + here->MOS3cqgd); return(OK); case MOS3_CAPGB: value->rValue = *(ckt->CKTstate0 + here->MOS3capgb); return(OK); case MOS3_QGB: value->rValue = *(ckt->CKTstate0 + here->MOS3qgb); return(OK); case MOS3_CQGB: value->rValue = *(ckt->CKTstate0 + here->MOS3cqgb); return(OK); case MOS3_QBD: value->rValue = *(ckt->CKTstate0 + here->MOS3qbd); return(OK); case MOS3_CQBD: value->rValue = *(ckt->CKTstate0 + here->MOS3cqbd); return(OK); case MOS3_QBS: value->rValue = *(ckt->CKTstate0 + here->MOS3qbs); return(OK); case MOS3_CQBS: value->rValue = *(ckt->CKTstate0 + here->MOS3cqbs); return(OK); case MOS3_L_SENS_DC: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->MOS3senParmNo); } return(OK); case MOS3_L_SENS_REAL: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo); } return(OK); case MOS3_L_SENS_IMAG: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo); } return(OK); case MOS3_L_SENS_MAG: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case MOS3_L_SENS_PH: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case MOS3_L_SENS_CPLX: if(ckt->CKTsenInfo){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo); } return(OK); case MOS3_W_SENS_DC: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); } return(OK); case MOS3_W_SENS_REAL: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); } return(OK); case MOS3_W_SENS_IMAG: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); } return(OK); case MOS3_W_SENS_MAG: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case MOS3_W_SENS_PH: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case MOS3_W_SENS_CPLX: if(ckt->CKTsenInfo){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS3senParmNo + here->MOS3sens_l); } return(OK); case MOS3_CB : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS3ask.c"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = here->MOS3cbd + here->MOS3cbs - *(ckt->CKTstate0 + here->MOS3cqgb); } return(OK); case MOS3_CG : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS3ask.c"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else if (ckt->CKTcurrentAnalysis & (DOING_DCOP | DOING_TRCV)) { value->rValue = 0; } else if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && (ckt->CKTmode & MODETRANOP)) { value->rValue = 0; } else { value->rValue = *(ckt->CKTstate0 + here->MOS3cqgb) + *(ckt->CKTstate0 + here->MOS3cqgd) + *(ckt->CKTstate0 + here->MOS3cqgs); } return(OK); case MOS3_CS : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS3ask.c"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = -here->MOS3cd; value->rValue -= here->MOS3cbd + here->MOS3cbs - *(ckt->CKTstate0 + here->MOS3cqgb); if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && !(ckt->CKTmode & MODETRANOP)) { value->rValue -= *(ckt->CKTstate0 + here->MOS3cqgb) + *(ckt->CKTstate0 + here->MOS3cqgd) + *(ckt->CKTstate0 + here->MOS3cqgs); } } return(OK); case MOS3_POWER : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MOS3ask.c"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { double temp; value->rValue = here->MOS3cd * *(ckt->CKTrhsOld + here->MOS3dNode); value->rValue += (here->MOS3cbd + here->MOS3cbs - *(ckt->CKTstate0 + here->MOS3cqgb)) * *(ckt->CKTrhsOld + here->MOS3bNode); if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && !(ckt->CKTmode & MODETRANOP)) { value->rValue += (*(ckt->CKTstate0 + here->MOS3cqgb) + *(ckt->CKTstate0 + here->MOS3cqgd) + *(ckt->CKTstate0 + here->MOS3cqgs)) * *(ckt->CKTrhsOld + here->MOS3gNode); } temp = -here->MOS3cd; temp -= here->MOS3cbd + here->MOS3cbs ; if ((ckt->CKTcurrentAnalysis & DOING_TRAN) && !(ckt->CKTmode & MODETRANOP)) { temp -= *(ckt->CKTstate0 + here->MOS3cqgb) + *(ckt->CKTstate0 + here->MOS3cqgd) + *(ckt->CKTstate0 + here->MOS3cqgs); } value->rValue += temp * *(ckt->CKTrhsOld + here->MOS3sNode); } return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124061041031006440006700000000000011777770500302376400005000000006303spice3c1/spice3/dev/mos3/mos3convtest.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos3defs.h" #include "sperror.h" #include "util.h" #include #include "suffix.h" RCSID("MOS3convTest.c $Revision: 1.3 $ on $Date: 88/10/01 13:49:44 $") int MOS3convTest(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; double delvbs; double delvbd; double delvgs; double delvds; double delvgd; double cbhat; double cdhat; double vbs; double vbd; double vgs; double vds; double vgd; double vgdo; double tol; for( ; model != NULL; model = model->MOS3nextModel) { for(here = model->MOS3instances; here!= NULL; here = here->MOS3nextInstance) { vbs = model->MOS3type * ( *(ckt->CKTrhs+here->MOS3bNode) - *(ckt->CKTrhs+here->MOS3sNodePrime)); vgs = model->MOS3type * ( *(ckt->CKTrhs+here->MOS3gNode) - *(ckt->CKTrhs+here->MOS3sNodePrime)); vds = model->MOS3type * ( *(ckt->CKTrhs+here->MOS3dNodePrime) - *(ckt->CKTrhs+here->MOS3sNodePrime)); vbd=vbs-vds; vgd=vgs-vds; vgdo = *(ckt->CKTstate0 + here->MOS3vgs) - *(ckt->CKTstate0 + here->MOS3vds); delvbs = vbs - *(ckt->CKTstate0 + here->MOS3vbs); delvbd = vbd - *(ckt->CKTstate0 + here->MOS3vbd); delvgs = vgs - *(ckt->CKTstate0 + here->MOS3vgs); delvds = vds - *(ckt->CKTstate0 + here->MOS3vds); delvgd = vgd-vgdo; /* these are needed for convergence testing */ if (here->MOS3mode >= 0) { cdhat= here->MOS3cd- here->MOS3gbd * delvbd + here->MOS3gmbs * delvbs + here->MOS3gm * delvgs + here->MOS3gds * delvds ; } else { cdhat= here->MOS3cd - ( here->MOS3gbd - here->MOS3gmbs) * delvbd - here->MOS3gm * delvgd + here->MOS3gds * delvds ; } cbhat= here->MOS3cbs + here->MOS3cbd + here->MOS3gbd * delvbd + here->MOS3gbs * delvbs ; /* * check convergence */ tol=ckt->CKTreltol*MAX(FABS(cdhat),FABS(here->MOS3cd))+ ckt->CKTabstol; if (FABS(cdhat-here->MOS3cd) >= tol) { ckt->CKTnoncon++; return(OK); /* no reason to continue, we haven't converged */ } else { tol=ckt->CKTreltol* MAX(FABS(cbhat),FABS(here->MOS3cbs+here->MOS3cbd)) + ckt->CKTabstol; if (FABS(cbhat-(here->MOS3cbs+here->MOS3cbd)) > tol) { ckt->CKTnoncon++; return(OK); /* no reason to continue, we haven't converged*/ } } } } return(OK); } 0707070124061041041006440006700000000000011777770500302376400004600000001602spice3c1/spice3/dev/mos3/mos3delete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3delete.c $Revision: 1.4 $ on $Date: 88/07/22 05:10:35 $") int MOS3delete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { MOS3model *model = (MOS3model *)inModel; MOS3instance **fast = (MOS3instance **)inst; MOS3instance **prev = NULL; MOS3instance *here; for( ; model ; model = model->MOS3nextModel) { prev = &(model->MOS3instances); for(here = *prev; here ; here = *prev) { if(here->MOS3name == name || (fast && here==*fast) ) { *prev= here->MOS3nextInstance; FREE(here); return(OK); } prev = &(here->MOS3nextInstance); } } return(E_NODEV); } 0707070124061041051006440006700000000000011777770500302376400004700000001557spice3c1/spice3/dev/mos3/mos3destroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "mos3defs.h" #include "suffix.h" RCSID("MOS3destroy.c $Revision: 1.4 $ on $Date: 88/07/22 05:10:36 $") void MOS3destroy(inModel) GENmodel **inModel; { MOS3model **model = (MOS3model **)inModel; MOS3instance *here; MOS3instance *prev = NULL; MOS3model *mod = *model; MOS3model *oldmod = NULL; for( ; mod ; mod = mod->MOS3nextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (MOS3instance *)NULL; for(here = mod->MOS3instances ; here ; here = here->MOS3nextInstance) { if(prev){ if(prev->MOS3sens) FREE(prev->MOS3sens); FREE(prev); } prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061041061006440006700000000000011777770500302376400004500000002420spice3c1/spice3/dev/mos3/mos3getic.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3getic.c $Revision: 1.4 $ on $Date: 88/07/22 05:10:37 $") int MOS3getic(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { MOS3model *model = (MOS3model *)inModel; MOS3instance *here; /* * grab initial conditions out of rhs array. User specified, so use * external nodes to get values */ for( ; model ; model = model->MOS3nextModel) { for(here = model->MOS3instances; here ; here = here->MOS3nextInstance) { if(!here->MOS3icVBSGiven) { here->MOS3icVBS = *(ckt->CKTrhs + here->MOS3bNode) - *(ckt->CKTrhs + here->MOS3sNode); } if(!here->MOS3icVDSGiven) { here->MOS3icVDS = *(ckt->CKTrhs + here->MOS3dNode) - *(ckt->CKTrhs + here->MOS3sNode); } if(!here->MOS3icVGSGiven) { here->MOS3icVGS = *(ckt->CKTrhs + here->MOS3gNode) - *(ckt->CKTrhs + here->MOS3sNode); } } } return(OK); } 0707070124061041071006440006700000000000011777770500302376400004400000146526spice3c1/spice3/dev/mos3/mos3load.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "devdefs.h" #include "mos3defs.h" #include "util.h" #include "trandefs.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3load.c $Revision: 1.9 $ on $Date: 89/02/27 18:16:04 $") int MOS3load(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* actually load the current value into the * sparse matrix previously provided */ { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; double Beta; double DrainSatCur; double EffectiveLength; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double OxideCap; double SourceSatCur; double arg; double cbhat; double cdhat; double cdrain; double cdreq; double ceq; double ceqbd; double ceqbs; double ceqgb; double ceqgd; double ceqgs; double delvbd; double delvbs; double delvds; double delvgd; double delvgs; double evbd; double evbs; double gcgb; double gcgd; double gcgs; double geq; double sarg; double sargsw; double tol; double vbd; double vbs; double vds; double vdsat; double vgb1; double vgb; double vgd1; double vgd; double vgdo; double vgs1; double vgs; double von; double xfact; int xnrm; int xrev; double capgs; /* total gate-source capacitance */ double capgd; /* total gate-drain capacitance */ double capgb; /* total gate-bulk capacitance */ int Check; #ifndef NOBYPASS double tempv; #endif /*NOBYPASS*/ int error; #ifdef CAPBYPASS int senflag; #endif /* CAPBYPASS */ int SenCond; double vt; /* vt at instance temperature */ #ifdef CAPBYPASS senflag = 0; #endif /* CAPBYPASS */ if(ckt->CKTsenInfo){ if(ckt->CKTsenInfo->SENstatus == PERTURBATION) { if((ckt->CKTsenInfo->SENmode == ACSEN)|| (ckt->CKTsenInfo->SENmode == TRANSEN)){ #ifdef CAPBYPASS senflag = 1; #endif /* CAPBYPASS */ } goto next; } } if(ckt->CKTmode & MODEINITSMSIG) return(OK);/* all done by previous call */ /* loop through all the MOS3 device models */ next: for( ; model != NULL; model = model->MOS3nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS3instances; here != NULL ; here=here->MOS3nextInstance) { vt = CONSTKoverQ * here->MOS3temp; Check=1; if(ckt->CKTsenInfo){ #ifdef SENSDEBUG printf("MOS3load \n"); #endif /* SENSDEBUG */ if(ckt->CKTsenInfo->SENstatus == PERTURBATION) if(here->MOS3senPertFlag == OFF)continue; } SenCond = ckt->CKTsenInfo && here->MOS3senPertFlag; #ifdef DETAILPROF asm(" .globl mos3pta"); asm("mos3pta:"); #endif /* DETAILPROF */ /* first, we compute a few useful values - these could be * pre-computed, but for historical reasons are still done * here. They may be moved at the expense of instance size */ EffectiveLength=here->MOS3l - 2*model->MOS3latDiff; if( (here->MOS3tSatCurDens == 0) || (here->MOS3drainArea == 0) || (here->MOS3sourceArea == 0)) { DrainSatCur = here->MOS3tSatCur; SourceSatCur = here->MOS3tSatCur; } else { DrainSatCur = here->MOS3tSatCurDens * here->MOS3drainArea; SourceSatCur = here->MOS3tSatCurDens * here->MOS3sourceArea; } GateSourceOverlapCap = model->MOS3gateSourceOverlapCapFactor * here->MOS3w; GateDrainOverlapCap = model->MOS3gateDrainOverlapCapFactor * here->MOS3w; GateBulkOverlapCap = model->MOS3gateBulkOverlapCapFactor * EffectiveLength; Beta = here->MOS3tTransconductance * here->MOS3w/EffectiveLength; OxideCap = model->MOS3oxideCapFactor * EffectiveLength * here->MOS3w; if(SenCond){ #ifdef SENSDEBUG printf("MOS3senPertFlag = ON \n"); #endif /* SENSDEBUG */ if((ckt->CKTsenInfo->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) { vgs = *(ckt->CKTstate1 + here->MOS3vgs); vds = *(ckt->CKTstate1 + here->MOS3vds); vbs = *(ckt->CKTstate1 + here->MOS3vbs); vbd = *(ckt->CKTstate1 + here->MOS3vbd); vgb = vgs - vbs; vgd = vgs - vds; } else if (ckt->CKTsenInfo->SENmode == ACSEN){ vgb = model->MOS3type * ( *(ckt->CKTrhsOp+here->MOS3gNode) - *(ckt->CKTrhsOp+here->MOS3bNode)); vbs = *(ckt->CKTstate0 + here->MOS3vbs); vbd = *(ckt->CKTstate0 + here->MOS3vbd); vgd = vgb + vbd ; vgs = vgb + vbs ; vds = vbs - vbd ; } else{ vgs = *(ckt->CKTstate0 + here->MOS3vgs); vds = *(ckt->CKTstate0 + here->MOS3vds); vbs = *(ckt->CKTstate0 + here->MOS3vbs); vbd = *(ckt->CKTstate0 + here->MOS3vbd); vgb = vgs - vbs; vgd = vgs - vds; } #ifdef SENSDEBUG printf(" vbs = %.7e ,vbd = %.7e,vgb = %.7e\n",vbs,vbd,vgb); printf(" vgs = %.7e ,vds = %.7e,vgd = %.7e\n",vgs,vds,vgd); #endif /* SENSDEBUG */ goto next1; } #ifdef DETAILPROF asm(" .globl mos3ptax"); asm("mos3ptax:"); #endif /* DETAILPROF */ /* * ok - now to do the start-up operations * * we must get values for vbs, vds, and vgs from somewhere * so we either predict them or recover them from last iteration * These are the two most common cases - either a prediction * step or the general iteration step and they * share some code, so we put them first - others later on */ if((ckt->CKTmode & (MODEINITFLOAT | MODEINITPRED | MODEINITSMSIG | MODEINITTRAN)) || ( (ckt->CKTmode & MODEINITFIX) && (!here->MOS3off) ) ) { #ifndef PREDICTOR if(ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) { /* predictor step */ xfact=ckt->CKTdelta/ckt->CKTdeltaOld[1]; *(ckt->CKTstate0 + here->MOS3vbs) = *(ckt->CKTstate1 + here->MOS3vbs); vbs = (1+xfact)* (*(ckt->CKTstate1 + here->MOS3vbs)) -(xfact * (*(ckt->CKTstate2 + here->MOS3vbs))); *(ckt->CKTstate0 + here->MOS3vgs) = *(ckt->CKTstate1 + here->MOS3vgs); vgs = (1+xfact)* (*(ckt->CKTstate1 + here->MOS3vgs)) -(xfact * (*(ckt->CKTstate2 + here->MOS3vgs))); *(ckt->CKTstate0 + here->MOS3vds) = *(ckt->CKTstate1 + here->MOS3vds); vds = (1+xfact)* (*(ckt->CKTstate1 + here->MOS3vds)) -(xfact * (*(ckt->CKTstate2 + here->MOS3vds))); *(ckt->CKTstate0 + here->MOS3vbd) = *(ckt->CKTstate0 + here->MOS3vbs)- *(ckt->CKTstate0 + here->MOS3vds); } else { #endif /*PREDICTOR*/ /* general iteration */ vbs = model->MOS3type * ( *(ckt->CKTrhsOld+here->MOS3bNode) - *(ckt->CKTrhsOld+here->MOS3sNodePrime)); vgs = model->MOS3type * ( *(ckt->CKTrhsOld+here->MOS3gNode) - *(ckt->CKTrhsOld+here->MOS3sNodePrime)); vds = model->MOS3type * ( *(ckt->CKTrhsOld+here->MOS3dNodePrime) - *(ckt->CKTrhsOld+here->MOS3sNodePrime)); #ifndef PREDICTOR } #endif /*PREDICTOR*/ /* now some common crunching for some more useful quantities */ #ifdef DETAILPROF asm(" .globl mos3ptay"); asm("mos3ptay:"); #endif /* DETAILPROF */ vbd=vbs-vds; vgd=vgs-vds; vgdo = *(ckt->CKTstate0 + here->MOS3vgs) - *(ckt->CKTstate0 + here->MOS3vds); delvbs = vbs - *(ckt->CKTstate0 + here->MOS3vbs); delvbd = vbd - *(ckt->CKTstate0 + here->MOS3vbd); delvgs = vgs - *(ckt->CKTstate0 + here->MOS3vgs); delvds = vds - *(ckt->CKTstate0 + here->MOS3vds); delvgd = vgd-vgdo; /* these are needed for convergence testing */ if (here->MOS3mode >= 0) { cdhat= here->MOS3cd- here->MOS3gbd * delvbd + here->MOS3gmbs * delvbs + here->MOS3gm * delvgs + here->MOS3gds * delvds ; } else { cdhat= here->MOS3cd - ( here->MOS3gbd - here->MOS3gmbs) * delvbd - here->MOS3gm * delvgd + here->MOS3gds * delvds ; } cbhat= here->MOS3cbs + here->MOS3cbd + here->MOS3gbd * delvbd + here->MOS3gbs * delvbs ; #ifdef DETAILPROF asm(" .globl mos3ptb"); asm("mos3ptb:"); #endif /* DETAILPROF */ #ifndef NOBYPASS /* now lets see if we can bypass (ugh) */ /* the following mess should be one if statement, but * many compilers can't handle it all at once, so it * is split into several successive if statements */ tempv = MAX(FABS(cbhat),FABS(here->MOS3cbs + here->MOS3cbd))+ckt->CKTabstol; if((!(ckt->CKTmode & (MODEINITPRED|MODEINITTRAN|MODEINITSMSIG) )) && (ckt->CKTbypass) ) if ( (FABS(cbhat-(here->MOS3cbs + here->MOS3cbd)) < ckt->CKTreltol * tempv)) if( (FABS(delvbs) < (ckt->CKTreltol * MAX(FABS(vbs), FABS(*(ckt->CKTstate0+here->MOS3vbs)))+ ckt->CKTvoltTol))) if ( (FABS(delvbd) < (ckt->CKTreltol * MAX(FABS(vbd), FABS(*(ckt->CKTstate0+here->MOS3vbd)))+ ckt->CKTvoltTol)) ) if( (FABS(delvgs) < (ckt->CKTreltol * MAX(FABS(vgs), FABS(*(ckt->CKTstate0+here->MOS3vgs)))+ ckt->CKTvoltTol))) if ( (FABS(delvds) < (ckt->CKTreltol * MAX(FABS(vds), FABS(*(ckt->CKTstate0+here->MOS3vds)))+ ckt->CKTvoltTol)) ) if( (FABS(cdhat- here->MOS3cd) < ckt->CKTreltol * MAX(FABS(cdhat),FABS( here->MOS3cd)) + ckt->CKTabstol) ) { /* bypass code * /* nothing interesting has changed since last * iteration on this device, so we just * copy all the values computed last iteration out * and keep going */ vbs = *(ckt->CKTstate0 + here->MOS3vbs); vbd = *(ckt->CKTstate0 + here->MOS3vbd); vgs = *(ckt->CKTstate0 + here->MOS3vgs); vds = *(ckt->CKTstate0 + here->MOS3vds); vgd = vgs - vds; vgb = vgs - vbs; cdrain = here->MOS3mode * (here->MOS3cd + here->MOS3cbd); if(ckt->CKTmode & (MODETRAN | MODETRANOP)) { capgs = ( *(ckt->CKTstate0+here->MOS3capgs)+ *(ckt->CKTstate1+here->MOS3capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS3capgd)+ *(ckt->CKTstate1+here->MOS3capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS3capgb)+ *(ckt->CKTstate1+here->MOS3capgb) + GateBulkOverlapCap ); } goto bypass; } #endif /*NOBYPASS*/ #ifdef DETAILPROF asm(" .globl mos3ptc"); asm("mos3ptc:"); #endif /* DETAILPROF */ /* ok - bypass is out, do it the hard way */ von = model->MOS3type * here->MOS3von; #ifndef NODELIMITING /* * limiting * we want to keep device voltages from changing * so fast that the exponentials churn out overflows * and similar rudeness */ if(*(ckt->CKTstate0 + here->MOS3vds) >=0) { vgs = DEVfetlim(vgs,*(ckt->CKTstate0 + here->MOS3vgs) ,von); vds = vgs - vgd; vds = DEVlimvds(vds,*(ckt->CKTstate0 + here->MOS3vds)); vgd = vgs - vds; } else { vgd = DEVfetlim(vgd,vgdo,von); vds = vgs - vgd; if(!(ckt->CKTfixLimit)) { vds = -DEVlimvds(-vds,-(*(ckt->CKTstate0 + here->MOS3vds))); } vgs = vgd + vds; } if(vds >= 0) { vbs = DEVpnjlim(vbs,*(ckt->CKTstate0 + here->MOS3vbs), vt,here->MOS3sourceVcrit,&Check); vbd = vbs-vds; } else { vbd = DEVpnjlim(vbd,*(ckt->CKTstate0 + here->MOS3vbd), vt,here->MOS3drainVcrit,&Check); vbs = vbd + vds; } #endif /*NODELIMITING*/ } else { #ifdef DETAILPROF asm(" .globl mos3ptd"); asm("mos3ptd:"); #endif /* DETAILPROF */ /* ok - not one of the simple cases, so we have to * look at all of the possibilities for why we were * called. We still just initialize the three voltages */ if((ckt->CKTmode & MODEINITJCT) && !here->MOS3off) { vds= model->MOS3type * here->MOS3icVDS; vgs= model->MOS3type * here->MOS3icVGS; vbs= model->MOS3type * here->MOS3icVBS; if((vds==0) && (vgs==0) && (vbs==0) && ((ckt->CKTmode & (MODETRAN|MODEDCOP|MODEDCTRANCURVE)) || (!(ckt->CKTmode & MODEUIC)))) { vbs = -1; vgs = model->MOS3type * here->MOS3tVto; vds = 0; } } else { vbs=vgs=vds=0; } } #ifdef DETAILPROF asm(" .globl mos3pte"); asm("mos3pte:"); #endif /* DETAILPROF */ /* * now all the preliminaries are over - we can start doing the * real work */ vbd = vbs - vds; vgd = vgs - vds; vgb = vgs - vbs; /* * bulk-source and bulk-drain diodes * here we just evaluate the ideal diode current and the * corresponding derivative (conductance). */ next1: if(vbs <= 0) { here->MOS3gbs = SourceSatCur/vt; here->MOS3cbs = here->MOS3gbs*vbs; here->MOS3gbs += ckt->CKTgmin; } else { evbs = exp(MIN(MAX_EXP_ARG,vbs/vt)); here->MOS3gbs = SourceSatCur*evbs/vt + ckt->CKTgmin; here->MOS3cbs = SourceSatCur * (evbs-1); } if(vbd <= 0) { here->MOS3gbd = DrainSatCur/vt; here->MOS3cbd = here->MOS3gbd *vbd; here->MOS3gbd += ckt->CKTgmin; } else { evbd = exp(MIN(MAX_EXP_ARG,vbd/vt)); here->MOS3gbd = DrainSatCur*evbd/vt +ckt->CKTgmin; here->MOS3cbd = DrainSatCur *(evbd-1); } /* now to determine whether the user was able to correctly * identify the source and drain of his device */ if(vds >= 0) { /* normal mode */ here->MOS3mode = 1; } else { /* inverse mode */ here->MOS3mode = -1; } #ifdef DETAILPROF asm(" .globl mos3ptf"); asm("mos3ptf:"); #endif /* DETAILPROF */ { /* * subroutine moseq3(vds,vbs,vgs,gm,gds,gmbs, * qg,qc,qb,cggb,cgdb,cgsb,cbgb,cbdb,cbsb) */ /* * this routine evaluates the drain current, its derivatives and * the charges associated with the gate, channel and bulk * for mosfets based on semi-empirical equations */ /* common /mosarg/ vto,beta,gamma,phi,phib,cox,xnsub,xnfs,xd,xj,xld, 1 xlamda,uo,uexp,vbp,utra,vmax,xneff,xl,xw,vbi,von,vdsat,qspof, 2 beta0,beta1,cdrain,xqco,xqc,fnarrw,fshort,lev common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet, 1 xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon, 2 iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile common /knstnt/ twopi,xlog2,xlog10,root2,rad,boltz,charge,ctok, 1 gmin,reltol,abstol,vntol,trtol,chgtol,eps0,epssil,epsox, 2 pivtol,pivrel */ /* equivalence (xlamda,alpha),(vbp,theta),(uexp,eta),(utra,xkappa)*/ double coeff0 = 0.0631353e0; double coeff1 = 0.8013292e0; double coeff2 = -0.01110777e0; double oneoverxl; /* 1/effective length */ double eta; /* eta from model after length factor */ double phibs; /* phi - vbs */ double sqphbs; /* square root of phibs */ double dsqdvb; /* */ double sqphis; /* square root of phi */ double sqphs3; /* square root of phi cubed */ double wps; double oneoverxj; /* 1/junction depth */ double xjonxl; /* junction depth/effective length */ double djonxj; double wponxj; double arga; double argb; double argc; double dwpdvb; double dadvb; double dbdvb; double gammas; double fbodys; double fbody; double onfbdy; double qbonco; double vbix; double wconxj; double dfsdvb; double dfbdvb; double dqbdvb; double vth; double dvtdvb; double csonco; double cdonco; double dxndvb; double dvodvb; double dvodvd; double vgsx; double dvtdvd; double onfg; double fgate; double us; double dfgdvg; double dfgdvd; double dfgdvb; double dvsdvg; double dvsdvb; double dvsdvd; double xn; double vdsc; double onvdsc; double dvsdga; double vdsx; double dcodvb; double cdnorm; double cdo; double cd1; double fdrain; double fd2; double dfddvg; double dfddvb; double dfddvd; double gdsat; double cdsat; double gdoncd; double gdonfd; double gdonfg; double dgdvg; double dgdvd; double dgdvb; double emax; double emongd; double demdvg; double demdvd; double demdvb; double delxl; double dldvd; double dldem; double ddldvg; double ddldvd; double ddldvb; double dlonxl; double xlfact; double diddl; double gds0; double emoncd; double ondvt; double onxn; double wfact; double gms; double gmw; double fshort; /* * bypasses the computation of charges */ /* * reference cdrain equations to source and * charge equations to bulk */ vdsat = 0.0; oneoverxl = 1.0/EffectiveLength; eta = model->MOS3eta * 8.15e-22/(model->MOS3oxideCapFactor* EffectiveLength*EffectiveLength*EffectiveLength); /* *.....square root term */ if ( (here->MOS3mode==1?vbs:vbd) <= 0.0 ) { phibs = here->MOS3tPhi-(here->MOS3mode==1?vbs:vbd); sqphbs = sqrt(phibs); dsqdvb = -0.5/sqphbs; } else { sqphis = sqrt(here->MOS3tPhi); sqphs3 = here->MOS3tPhi*sqphis; sqphbs = sqphis/(1.0+(here->MOS3mode==1?vbs:vbd)/ (here->MOS3tPhi+here->MOS3tPhi)); phibs = sqphbs*sqphbs; dsqdvb = -phibs/(sqphs3+sqphs3); } /* *.....short channel effect factor */ if ( (model->MOS3junctionDepth != 0.0) && (model->MOS3coeffDepLayWidth != 0.0) ) { wps = model->MOS3coeffDepLayWidth*sqphbs; oneoverxj = 1.0/model->MOS3junctionDepth; xjonxl = model->MOS3junctionDepth*oneoverxl; djonxj = model->MOS3latDiff*oneoverxj; wponxj = wps*oneoverxj; wconxj = coeff0+coeff1*wponxj+coeff2*wponxj*wponxj; arga = wconxj+djonxj; argc = wponxj/(1.0+wponxj); argb = sqrt(1.0-argc*argc); fshort = 1.0-xjonxl*(arga*argb-djonxj); dwpdvb = model->MOS3coeffDepLayWidth*dsqdvb; dadvb = (coeff1+coeff2*(wponxj+wponxj))*dwpdvb*oneoverxj; dbdvb = -argc*argc*(1.0-argc)*dwpdvb/(argb*wps); dfsdvb = -xjonxl*(dadvb*argb+arga*dbdvb); } else { fshort = 1.0; dfsdvb = 0.0; } /* *.....body effect */ gammas = model->MOS3gamma*fshort; fbodys = 0.5*gammas/(sqphbs+sqphbs); fbody = fbodys+model->MOS3narrowFactor/here->MOS3w; onfbdy = 1.0/(1.0+fbody); dfbdvb = -fbodys*dsqdvb/sqphbs+fbodys*dfsdvb/fshort; qbonco =gammas*sqphbs+model->MOS3narrowFactor*phibs/here->MOS3w; dqbdvb = gammas*dsqdvb+model->MOS3gamma*dfsdvb*sqphbs- model->MOS3narrowFactor/here->MOS3w; /* *.....static feedback effect */ vbix = here->MOS3tVbi*model->MOS3type-eta*(here->MOS3mode*vds); /* *.....threshold voltage */ vth = vbix+qbonco; dvtdvd = -eta; dvtdvb = dqbdvb; /* *.....joint weak inversion and strong inversion */ von = vth; if ( model->MOS3fastSurfaceStateDensity != 0.0 ) { csonco = CHARGE*model->MOS3fastSurfaceStateDensity * 1e4 /*(cm**2/m**2)*/ *EffectiveLength*here->MOS3w/OxideCap; cdonco = qbonco/(phibs+phibs); xn = 1.0+csonco+cdonco; von = vth+vt*xn; dxndvb = dqbdvb/(phibs+phibs)-qbonco*dsqdvb/(phibs*sqphbs); dvodvd = dvtdvd; dvodvb = dvtdvb+vt*dxndvb; } else { /* *.....cutoff region */ if ( (here->MOS3mode==1?vgs:vgd) <= von ) { cdrain = 0.0; here->MOS3gm = 0.0; here->MOS3gds = 0.0; here->MOS3gmbs = 0.0; goto innerline1000; } } /* *.....device is on */ vgsx = MAX((here->MOS3mode==1?vgs:vgd),von); /* *.....mobility modulation by gate voltage */ onfg = 1.0+model->MOS3theta*(vgsx-vth); fgate = 1.0/onfg; us = here->MOS3tSurfMob * 1e-4 /*(m**2/cm**2)*/ *fgate; dfgdvg = -model->MOS3theta*fgate*fgate; dfgdvd = -dfgdvg*dvtdvd; dfgdvb = -dfgdvg*dvtdvb; /* *.....saturation voltage */ vdsat = (vgsx-vth)*onfbdy; if ( model->MOS3maxDriftVel <= 0.0 ) { dvsdvg = onfbdy; dvsdvd = -dvsdvg*dvtdvd; dvsdvb = -dvsdvg*dvtdvb-vdsat*dfbdvb*onfbdy; } else { vdsc = EffectiveLength*model->MOS3maxDriftVel/us; onvdsc = 1.0/vdsc; arga = (vgsx-vth)*onfbdy; argb = sqrt(arga*arga+vdsc*vdsc); vdsat = arga+vdsc-argb; dvsdga = (1.0-arga/argb)*onfbdy; dvsdvg = dvsdga-(1.0-vdsc/argb)*vdsc*dfgdvg*onfg; dvsdvd = -dvsdvg*dvtdvd; dvsdvb = -dvsdvg*dvtdvb-arga*dvsdga*dfbdvb; } /* *.....current factors in linear region */ vdsx = MIN((here->MOS3mode*vds),vdsat); if ( vdsx == 0.0 ) goto line900; cdo = vgsx-vth-0.5*(1.0+fbody)*vdsx; dcodvb = -dvtdvb-0.5*dfbdvb*vdsx; /* *.....normalized drain current */ cdnorm = cdo*vdsx; here->MOS3gm = vdsx; here->MOS3gds = vgsx-vth-(1.0+fbody+dvtdvd)*vdsx; here->MOS3gmbs = dcodvb*vdsx; /* *.....drain current without velocity saturation effect */ cd1 = Beta*cdnorm; Beta = Beta*fgate; cdrain = Beta*cdnorm; here->MOS3gm = Beta*here->MOS3gm+dfgdvg*cd1; here->MOS3gds = Beta*here->MOS3gds+dfgdvd*cd1; here->MOS3gmbs = Beta*here->MOS3gmbs; /* *.....velocity saturation factor */ if ( model->MOS3maxDriftVel != 0.0 ) { fdrain = 1.0/(1.0+vdsx*onvdsc); fd2 = fdrain*fdrain; arga = fd2*vdsx*onvdsc*onfg; dfddvg = -dfgdvg*arga; dfddvd = -dfgdvd*arga-fd2*onvdsc; dfddvb = -dfgdvb*arga; /* *.....drain current */ here->MOS3gm = fdrain*here->MOS3gm+dfddvg*cdrain; here->MOS3gds = fdrain*here->MOS3gds+dfddvd*cdrain; here->MOS3gmbs = fdrain*here->MOS3gmbs+dfddvb*cdrain; cdrain = fdrain*cdrain; Beta = Beta*fdrain; } /* *.....channel length modulation */ if ( (here->MOS3mode*vds) <= vdsat ) goto line700; if ( model->MOS3maxDriftVel == 0.0 ) goto line510; if (model->MOS3alpha == 0.0) goto line700; cdsat = cdrain; gdsat = cdsat*(1.0-fdrain)*onvdsc; gdsat = MAX(1.0e-12,gdsat); gdoncd = gdsat/cdsat; gdonfd = gdsat/(1.0-fdrain); gdonfg = gdsat*onfg; dgdvg = gdoncd*here->MOS3gm-gdonfd*dfddvg+gdonfg*dfgdvg; dgdvd = gdoncd*here->MOS3gds-gdonfd*dfddvd+gdonfg*dfgdvd; dgdvb = gdoncd*here->MOS3gmbs-gdonfd*dfddvb+gdonfg*dfgdvb; emax = cdsat*oneoverxl/gdsat; emoncd = emax/cdsat; emongd = emax/gdsat; demdvg = emoncd*here->MOS3gm-emongd*dgdvg; demdvd = emoncd*here->MOS3gds-emongd*dgdvd; demdvb = emoncd*here->MOS3gmbs-emongd*dgdvb; arga = 0.5*emax*model->MOS3alpha; argc = model->MOS3kappa*model->MOS3alpha; argb = sqrt(arga*arga+argc*((here->MOS3mode*vds)-vdsat)); delxl = argb-arga; dldvd = argc/(argb+argb); dldem = 0.5*(arga/argb-1.0)*model->MOS3alpha; ddldvg = dldem*demdvg; ddldvd = dldem*demdvd-dldvd; ddldvb = dldem*demdvb; goto line520; line510: delxl = sqrt(model->MOS3kappa*((here->MOS3mode*vds)-vdsat)* model->MOS3alpha); dldvd = 0.5*delxl/((here->MOS3mode*vds)-vdsat); ddldvg = 0.0; ddldvd = -dldvd; ddldvb = 0.0; /* *.....punch through approximation */ line520: if ( delxl > (0.5*EffectiveLength) ) { delxl = EffectiveLength-(EffectiveLength*EffectiveLength/ (4.0*delxl)); arga = 4.0*(EffectiveLength-delxl)*(EffectiveLength-delxl)/ (EffectiveLength*EffectiveLength); ddldvg = ddldvg*arga; ddldvd = ddldvd*arga; ddldvb = ddldvb*arga; dldvd = dldvd*arga; } /* *.....saturation region */ dlonxl = delxl*oneoverxl; xlfact = 1.0/(1.0-dlonxl); cdrain = cdrain*xlfact; diddl = cdrain/(EffectiveLength-delxl); here->MOS3gm = here->MOS3gm*xlfact+diddl*ddldvg; gds0 = here->MOS3gds*xlfact+diddl*ddldvd; here->MOS3gmbs = here->MOS3gmbs*xlfact+diddl*ddldvb; here->MOS3gm = here->MOS3gm+gds0*dvsdvg; here->MOS3gmbs = here->MOS3gmbs+gds0*dvsdvb; here->MOS3gds = gds0*dvsdvd+diddl*dldvd; /* *.....finish strong inversion case */ line700: if ( (here->MOS3mode==1?vgs:vgd) < von ) { /* *.....weak inversion */ onxn = 1.0/xn; ondvt = onxn/vt; wfact = exp( ((here->MOS3mode==1?vgs:vgd)-von)*ondvt ); cdrain = cdrain*wfact; gms = here->MOS3gm*wfact; gmw = cdrain*ondvt; here->MOS3gm = gmw; if ((here->MOS3mode*vds) > vdsat) { here->MOS3gm = here->MOS3gm+gds0*dvsdvg*wfact; } here->MOS3gds = here->MOS3gds*wfact+(gms-gmw)*dvodvd; here->MOS3gmbs = here->MOS3gmbs*wfact+(gms-gmw)*dvodvb-gmw* ((here->MOS3mode==1?vgs:vgd)-von)*onxn*dxndvb; } /* *.....charge computation */ goto innerline1000; /* *.....special case of vds = 0.0d0 */ line900: Beta = Beta*fgate; cdrain = 0.0; here->MOS3gm = 0.0; here->MOS3gds = Beta*(vgsx-vth); here->MOS3gmbs = 0.0; if ( (model->MOS3fastSurfaceStateDensity != 0.0) && ((here->MOS3mode==1?vgs:vgd) < von) ) { here->MOS3gds *=exp(((here->MOS3mode==1?vgs:vgd)-von)/(vt*xn)); } innerline1000:; /* *.....done */ } #ifdef DETAILPROF asm(" .globl mos3ptg"); asm("mos3ptg:"); #endif /* DETAILPROF */ /* now deal with n vs p polarity */ here->MOS3von = model->MOS3type * von; here->MOS3vdsat = model->MOS3type * vdsat; /* line 490 */ /* * COMPUTE EQUIVALENT DRAIN CURRENT SOURCE */ here->MOS3cd=here->MOS3mode * cdrain - here->MOS3cbd; if (ckt->CKTmode & (MODETRAN | MODETRANOP | MODEINITSMSIG)) { /* * now we do the hard part of the bulk-drain and bulk-source * diode - we evaluate the non-linear capacitance and * charge * * the basic equations are not hard, but the implementation * is somewhat long in an attempt to avoid log/exponential * evaluations */ /* * charge storage elements * *.. bulk-drain and bulk-source depletion capacitances */ #ifdef CAPBYPASS if(((ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) || FABS(delvbs) >= ckt->CKTreltol * MAX(FABS(vbs), FABS(*(ckt->CKTstate0+here->MOS3vbs)))+ ckt->CKTvoltTol)|| senflag ) #endif /*CAPBYPASS*/ { /* can't bypass the diode capacitance calculations */ #ifdef CAPZEROBYPASS if(here->MOS3Cbs != 0 || here->MOS3Cbssw != 0 ) { #endif /*CAPZEROBYPASS*/ if (vbs < here->MOS3tDepCap){ arg=1-vbs/here->MOS3tBulkPot; /* * the following block looks somewhat long and messy, * but since most users use the default grading * coefficients of .5, and sqrt is MUCH faster than an * exp(log()) we use this special case code to buy time. * (as much as 10% of total job time!) */ #ifndef NOSQRT if(model->MOS3bulkJctBotGradingCoeff == model->MOS3bulkJctSideGradingCoeff) { if(model->MOS3bulkJctBotGradingCoeff == .5) { sarg = sargsw = 1/sqrt(arg); } else { sarg = sargsw = exp(-model->MOS3bulkJctBotGradingCoeff* log(arg)); } } else { if(model->MOS3bulkJctBotGradingCoeff == .5) { sarg = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sarg = exp(-model->MOS3bulkJctBotGradingCoeff* log(arg)); #ifndef NOSQRT } if(model->MOS3bulkJctSideGradingCoeff == .5) { sargsw = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sargsw =exp(-model->MOS3bulkJctSideGradingCoeff* log(arg)); #ifndef NOSQRT } } #endif /*NOSQRT*/ *(ckt->CKTstate0 + here->MOS3qbs) = here->MOS3tBulkPot*(here->MOS3Cbs* (1-arg*sarg)/(1-model->MOS3bulkJctBotGradingCoeff) +here->MOS3Cbssw* (1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff)); here->MOS3capbs=here->MOS3Cbs*sarg+ here->MOS3Cbssw*sargsw; } else { *(ckt->CKTstate0 + here->MOS3qbs) = here->MOS3f4s + vbs*(here->MOS3f2s+vbs*(here->MOS3f3s/2)); here->MOS3capbs=here->MOS3f2s+here->MOS3f3s*vbs; } #ifdef CAPZEROBYPASS } else { *(ckt->CKTstate0 + here->MOS3qbs) = 0; here->MOS3capbs=0; } #endif /*CAPZEROBYPASS*/ } #ifdef CAPBYPASS if(((ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) || FABS(delvbd) >= ckt->CKTreltol * MAX(FABS(vbd), FABS(*(ckt->CKTstate0+here->MOS3vbd)))+ ckt->CKTvoltTol)|| senflag ) #endif /*CAPBYPASS*/ /* can't bypass the diode capacitance calculations */ { #ifdef CAPZEROBYPASS if(here->MOS3Cbd != 0 || here->MOS3Cbdsw != 0 ) { #endif /*CAPZEROBYPASS*/ if (vbd < here->MOS3tDepCap) { arg=1-vbd/here->MOS3tBulkPot; /* * the following block looks somewhat long and messy, * but since most users use the default grading * coefficients of .5, and sqrt is MUCH faster than an * exp(log()) we use this special case code to buy time. * (as much as 10% of total job time!) */ #ifndef NOSQRT if(model->MOS3bulkJctBotGradingCoeff == .5 && model->MOS3bulkJctSideGradingCoeff == .5) { sarg = sargsw = 1/sqrt(arg); } else { if(model->MOS3bulkJctBotGradingCoeff == .5) { sarg = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sarg = exp(-model->MOS3bulkJctBotGradingCoeff* log(arg)); #ifndef NOSQRT } if(model->MOS3bulkJctSideGradingCoeff == .5) { sargsw = 1/sqrt(arg); } else { #endif /*NOSQRT*/ sargsw =exp(-model->MOS3bulkJctSideGradingCoeff* log(arg)); #ifndef NOSQRT } } #endif /*NOSQRT*/ *(ckt->CKTstate0 + here->MOS3qbd) = here->MOS3tBulkPot*(here->MOS3Cbd* (1-arg*sarg) /(1-model->MOS3bulkJctBotGradingCoeff) +here->MOS3Cbdsw* (1-arg*sargsw) /(1-model->MOS3bulkJctSideGradingCoeff)); here->MOS3capbd=here->MOS3Cbd*sarg+ here->MOS3Cbdsw*sargsw; } else { *(ckt->CKTstate0 + here->MOS3qbd) = here->MOS3f4d + vbd * (here->MOS3f2d + vbd * here->MOS3f3d/2); here->MOS3capbd=here->MOS3f2d + vbd * here->MOS3f3d; } #ifdef CAPZEROBYPASS } else { *(ckt->CKTstate0 + here->MOS3qbd) = 0; here->MOS3capbd = 0; } #endif /*CAPZEROBYPASS*/ } #ifdef DETAILPROF asm(" .globl mos3pth"); asm("mos3pth:"); #endif /* DETAILPROF */ if(SenCond && (ckt->CKTsenInfo->SENmode==TRANSEN)) goto next2; if ( ckt->CKTmode & MODETRAN ) { /* (above only excludes tranop, since we're only at this * point if tran or tranop ) */ /* * calculate equivalent conductances and currents for * depletion capacitors */ /* integrate the capacitors and save results */ error = NIintegrate(ckt,&geq,&ceq,here->MOS3capbd, here->MOS3qbd); if(error) return(error); here->MOS3gbd += geq; here->MOS3cbd += *(ckt->CKTstate0 + here->MOS3cqbd); here->MOS3cd -= *(ckt->CKTstate0 + here->MOS3cqbd); error = NIintegrate(ckt,&geq,&ceq,here->MOS3capbs, here->MOS3qbs); if(error) return(error); here->MOS3gbs += geq; here->MOS3cbs += *(ckt->CKTstate0 + here->MOS3cqbs); } } #ifdef DETAILPROF asm(" .globl mos3pti"); asm("mos3pti:"); #endif /* DETAILPROF */ if(SenCond) goto next2; /* * check convergence */ if ( (here->MOS3off == 0) || (!(ckt->CKTmode & (MODEINITFIX|MODEINITSMSIG))) ){ if (Check == 1) { ckt->CKTnoncon++; #ifndef NEWCONV } else { tol=ckt->CKTreltol*MAX(FABS(cdhat), FABS(here->MOS3cd))+ckt->CKTabstol; if (FABS(cdhat-here->MOS3cd) >= tol) { ckt->CKTnoncon++; } else { tol=ckt->CKTreltol*MAX(FABS(cbhat), FABS(here->MOS3cbs+here->MOS3cbd))+ ckt->CKTabstol; if (FABS(cbhat-(here->MOS3cbs+here->MOS3cbd)) > tol) { ckt->CKTnoncon++; } } #endif /* NEWCONV */ } } #ifdef DETAILPROF asm(" .globl mos3ptj"); asm("mos3ptj:"); #endif /* DETAILPROF */ /* save things away for next time */ next2: *(ckt->CKTstate0 + here->MOS3vbs) = vbs; *(ckt->CKTstate0 + here->MOS3vbd) = vbd; *(ckt->CKTstate0 + here->MOS3vgs) = vgs; *(ckt->CKTstate0 + here->MOS3vds) = vds; #ifdef DETAILPROF asm(" .globl mos3ptk"); asm("mos3ptk:"); #endif /* DETAILPROF */ /* * meyer's capacitor model */ if ( ckt->CKTmode & (MODETRAN | MODETRANOP | MODEINITSMSIG) ) { /* * calculate meyer's capacitors */ /* * new cmeyer - this just evaluates at the current time, * expects you to remember values from previous time * returns 1/2 of non-constant portion of capacitance * you must add in the other half from previous time * and the constant part */ if (here->MOS3mode > 0){ DEVqmeyer (vgs,vgd,vgb,von,vdsat, (ckt->CKTstate0 + here->MOS3capgs), (ckt->CKTstate0 + here->MOS3capgd), (ckt->CKTstate0 + here->MOS3capgb), here->MOS3tPhi,OxideCap); } else { DEVqmeyer (vgd,vgs,vgb,von,vdsat, (ckt->CKTstate0 + here->MOS3capgd), (ckt->CKTstate0 + here->MOS3capgs), (ckt->CKTstate0 + here->MOS3capgb), here->MOS3tPhi,OxideCap); } vgs1 = *(ckt->CKTstate1 + here->MOS3vgs); vgd1 = vgs1 - *(ckt->CKTstate1 + here->MOS3vds); vgb1 = vgs1 - *(ckt->CKTstate1 + here->MOS3vbs); if(ckt->CKTmode & MODETRANOP) { capgs = 2 * *(ckt->CKTstate0+here->MOS3capgs)+ GateSourceOverlapCap ; capgd = 2 * *(ckt->CKTstate0+here->MOS3capgd)+ GateDrainOverlapCap ; capgb = 2 * *(ckt->CKTstate0+here->MOS3capgb)+ GateBulkOverlapCap ; } else { capgs = ( *(ckt->CKTstate0+here->MOS3capgs)+ *(ckt->CKTstate1+here->MOS3capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS3capgd)+ *(ckt->CKTstate1+here->MOS3capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS3capgb)+ *(ckt->CKTstate1+here->MOS3capgb) + GateBulkOverlapCap ); } if(ckt->CKTsenInfo){ here->MOS3cgs = capgs; here->MOS3cgd = capgd; here->MOS3cgb = capgb; } #ifdef DETAILPROF asm(" .globl mos3ptl"); asm("mos3ptl:"); #endif /* DETAILPROF */ /* * store small-signal parameters (for meyer's model) * all parameters already stored, so done... */ if(SenCond){ if(ckt->CKTsenInfo->SENmode & (DCSEN|ACSEN)) { continue; } } #ifndef PREDICTOR if (ckt->CKTmode & (MODEINITPRED | MODEINITTRAN) ) { *(ckt->CKTstate0 + here->MOS3qgs) = (1+xfact) * *(ckt->CKTstate1 + here->MOS3qgs) - xfact * *(ckt->CKTstate2 + here->MOS3qgs); *(ckt->CKTstate0 + here->MOS3qgd) = (1+xfact) * *(ckt->CKTstate1 + here->MOS3qgd) - xfact * *(ckt->CKTstate2 + here->MOS3qgd); *(ckt->CKTstate0 + here->MOS3qgb) = (1+xfact) * *(ckt->CKTstate1 + here->MOS3qgb) - xfact * *(ckt->CKTstate2 + here->MOS3qgb); } else { #endif /*PREDICTOR*/ if(ckt->CKTmode & MODETRAN) { *(ckt->CKTstate0 + here->MOS3qgs) = (vgs-vgs1)*capgs + *(ckt->CKTstate1 + here->MOS3qgs) ; *(ckt->CKTstate0 + here->MOS3qgd) = (vgd-vgd1)*capgd + *(ckt->CKTstate1 + here->MOS3qgd) ; *(ckt->CKTstate0 + here->MOS3qgb) = (vgb-vgb1)*capgb + *(ckt->CKTstate1 + here->MOS3qgb) ; } else { /* TRANOP only */ *(ckt->CKTstate0 + here->MOS3qgs) = vgs*capgs; *(ckt->CKTstate0 + here->MOS3qgd) = vgd*capgd; *(ckt->CKTstate0 + here->MOS3qgb) = vgb*capgb; } #ifndef PREDICTOR } #endif /*PREDICTOR*/ } bypass: if(SenCond) continue; #ifdef DETAILPROF asm(" .globl mos3ptm"); asm("mos3ptm:"); #endif /* DETAILPROF */ if ( (ckt->CKTmode & (MODEINITTRAN)) || (! (ckt->CKTmode & (MODETRAN)) ) ) { /* * initialize to zero charge conductances * and current */ gcgs=0; ceqgs=0; gcgd=0; ceqgd=0; gcgb=0; ceqgb=0; } else { if(capgs == 0) *(ckt->CKTstate0 + here->MOS3cqgs) =0; if(capgd == 0) *(ckt->CKTstate0 + here->MOS3cqgd) =0; if(capgb == 0) *(ckt->CKTstate0 + here->MOS3cqgb) =0; /* * calculate equivalent conductances and currents for * meyer"s capacitors */ error = NIintegrate(ckt,&gcgs,&ceqgs,capgs,here->MOS3qgs); if(error) return(error); error = NIintegrate(ckt,&gcgd,&ceqgd,capgd,here->MOS3qgd); if(error) return(error); error = NIintegrate(ckt,&gcgb,&ceqgb,capgb,here->MOS3qgb); if(error) return(error); ceqgs=ceqgs-gcgs*vgs+ckt->CKTag[0]* *(ckt->CKTstate0 + here->MOS3qgs); ceqgd=ceqgd-gcgd*vgd+ckt->CKTag[0]* *(ckt->CKTstate0 + here->MOS3qgd); ceqgb=ceqgb-gcgb*vgb+ckt->CKTag[0]* *(ckt->CKTstate0 + here->MOS3qgb); } /* * store charge storage info for meyer's cap in lx table */ #ifdef DETAILPROF asm(" .globl mos3ptn"); asm("mos3ptn:"); #endif /* DETAILPROF */ /* * load current vector */ ceqbs = model->MOS3type * (here->MOS3cbs-(here->MOS3gbs-ckt->CKTgmin)*vbs); ceqbd = model->MOS3type * (here->MOS3cbd-(here->MOS3gbd-ckt->CKTgmin)*vbd); if (here->MOS3mode >= 0) { xnrm=1; xrev=0; cdreq=model->MOS3type*(cdrain-here->MOS3gds*vds- here->MOS3gm*vgs-here->MOS3gmbs*vbs); } else { xnrm=0; xrev=1; cdreq = -(model->MOS3type)*(cdrain-here->MOS3gds*(-vds)- here->MOS3gm*vgd-here->MOS3gmbs*vbd); } *(ckt->CKTrhs + here->MOS3gNode) -= (model->MOS3type * (ceqgs + ceqgb + ceqgd)); *(ckt->CKTrhs + here->MOS3bNode) -= (ceqbs + ceqbd - model->MOS3type * ceqgb); *(ckt->CKTrhs + here->MOS3dNodePrime) += (ceqbd - cdreq + model->MOS3type * ceqgd); *(ckt->CKTrhs + here->MOS3sNodePrime) += cdreq + ceqbs + model->MOS3type * ceqgs; /* * load y matrix */ /*printf(" loading %s at time %g\n",here->MOS3name,ckt->CKTtime);*/ /*printf("%g %g %g %g %g\n", here->MOS3drainConductance,gcgd+gcgs+gcgb, here->MOS3sourceConductance,here->MOS3gbd,here->MOS3gbs);*/ /*printf("%g %g %g %g %g\n",-gcgb,0.0,0.0,here->MOS3gds,here->MOS3gm);*/ /*printf("%g %g %g %g %g\n", here->MOS3gds,here->MOS3gmbs,gcgd,-gcgs,-gcgd);*/ /*printf("%g %g %g %g %g\n", -gcgs,-gcgd,0.0,-gcgs,0.0);*/ *(here->MOS3DdPtr) += (here->MOS3drainConductance); *(here->MOS3GgPtr) += ((gcgd+gcgs+gcgb)); *(here->MOS3SsPtr) += (here->MOS3sourceConductance); *(here->MOS3BbPtr) += (here->MOS3gbd+here->MOS3gbs+gcgb); *(here->MOS3DPdpPtr) += (here->MOS3drainConductance+here->MOS3gds+ here->MOS3gbd+xrev*(here->MOS3gm+here->MOS3gmbs)+gcgd); *(here->MOS3SPspPtr) += (here->MOS3sourceConductance+here->MOS3gds+ here->MOS3gbs+xnrm*(here->MOS3gm+here->MOS3gmbs)+gcgs); *(here->MOS3DdpPtr) += (-here->MOS3drainConductance); *(here->MOS3GbPtr) -= gcgb; *(here->MOS3GdpPtr) -= gcgd; *(here->MOS3GspPtr) -= gcgs; *(here->MOS3SspPtr) += (-here->MOS3sourceConductance); *(here->MOS3BgPtr) -= gcgb; *(here->MOS3BdpPtr) -= here->MOS3gbd; *(here->MOS3BspPtr) -= here->MOS3gbs; *(here->MOS3DPdPtr) += (-here->MOS3drainConductance); *(here->MOS3DPgPtr) += ((xnrm-xrev)*here->MOS3gm-gcgd); *(here->MOS3DPbPtr) += (-here->MOS3gbd+(xnrm-xrev)*here->MOS3gmbs); *(here->MOS3DPspPtr) += (-here->MOS3gds- xnrm*(here->MOS3gm+here->MOS3gmbs)); *(here->MOS3SPgPtr) += (-(xnrm-xrev)*here->MOS3gm-gcgs); *(here->MOS3SPsPtr) += (-here->MOS3sourceConductance); *(here->MOS3SPbPtr) += (-here->MOS3gbs-(xnrm-xrev)*here->MOS3gmbs); *(here->MOS3SPdpPtr) += (-here->MOS3gds- xrev*(here->MOS3gm+here->MOS3gmbs)); } } return(OK); } 0707070124061041101006440006700000000000011777770500302376500004400000010474spice3c1/spice3/dev/mos3/mos3mask.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3mAsk.c $Revision: 1.4 $ on $Date: 88/07/25 12:59:49 $") /*ARGSUSED*/ int MOS3mAsk(ckt,inst,which,value) CKTcircuit *ckt; GENmodel *inst; int which; IFvalue *value; { MOS3model *here = (MOS3model *)inst; switch(which) { case MOS3_MOD_TNOM: value->rValue = here->MOS3tnom-CONSTCtoK; return(OK); case MOS3_MOD_VTO: value->rValue = here->MOS3vt0; return(OK); case MOS3_MOD_KP: value->rValue = here->MOS3transconductance; return(OK); case MOS3_MOD_GAMMA: value->rValue = here->MOS3gamma; return(OK); case MOS3_MOD_PHI: value->rValue = here->MOS3phi; return(OK); case MOS3_MOD_RD: value->rValue = here->MOS3drainResistance; return(OK); case MOS3_MOD_RS: value->rValue = here->MOS3sourceResistance; return(OK); case MOS3_MOD_CBD: value->rValue = here->MOS3capBD; return(OK); case MOS3_MOD_CBS: value->rValue = here->MOS3capBS; return(OK); case MOS3_MOD_IS: value->rValue = here->MOS3jctSatCur; return(OK); case MOS3_MOD_PB: value->rValue = here->MOS3bulkJctPotential; return(OK); case MOS3_MOD_CGSO: value->rValue = here->MOS3gateSourceOverlapCapFactor; return(OK); case MOS3_MOD_CGDO: value->rValue = here->MOS3gateDrainOverlapCapFactor; return(OK); case MOS3_MOD_CGBO: value->rValue = here->MOS3gateBulkOverlapCapFactor; return(OK); case MOS3_MOD_CJ: value->rValue = here->MOS3bulkCapFactor; return(OK); case MOS3_MOD_MJ: value->rValue = here->MOS3bulkJctBotGradingCoeff; return(OK); case MOS3_MOD_CJSW: value->rValue = here->MOS3sideWallCapFactor; return(OK); case MOS3_MOD_MJSW: value->rValue = here->MOS3bulkJctSideGradingCoeff; return(OK); case MOS3_MOD_JS: value->rValue = here->MOS3jctSatCurDensity; return(OK); case MOS3_MOD_TOX: value->rValue = here->MOS3oxideThickness; return(OK); case MOS3_MOD_LD: value->rValue = here->MOS3latDiff; return(OK); case MOS3_MOD_RSH: value->rValue = here->MOS3sheetResistance; return(OK); case MOS3_MOD_U0: value->rValue = here->MOS3surfaceMobility; return(OK); case MOS3_MOD_FC: value->rValue = here->MOS3fwdCapDepCoeff; return(OK); case MOS3_MOD_NSUB: value->rValue = here->MOS3substrateDoping; return(OK); case MOS3_MOD_TPG: value->iValue = here->MOS3gateType; return(OK); case MOS3_MOD_NSS: value->rValue = here->MOS3surfaceStateDensity; return(OK); case MOS3_MOD_NFS: value->rValue = here->MOS3fastSurfaceStateDensity; return(OK); case MOS3_MOD_DELTA: value->rValue = here->MOS3narrowFactor; return(OK); case MOS3_MOD_VMAX: value->rValue = here->MOS3maxDriftVel; return(OK); case MOS3_MOD_XJ: value->rValue = here->MOS3junctionDepth; return(OK); case MOS3_MOD_ETA: value->rValue = here->MOS3eta; return(OK); case MOS3_MOD_XD: value->rValue = here->MOS3coeffDepLayWidth; return(OK); case MOS3_DELTA: value->rValue = here->MOS3delta; return(OK); case MOS3_MOD_THETA: value->rValue = here->MOS3theta; return(OK); case MOS3_MOD_ALPHA: value->rValue = here->MOS3alpha; return(OK); case MOS3_MOD_KAPPA: value->rValue = here->MOS3kappa; return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124061041111006440006700000000000011777770500302376500004700000002015spice3c1/spice3/dev/mos3/mos3mdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3mDelete.c $Revision: 1.4 $ on $Date: 88/07/22 05:10:48 $") int MOS3mDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { MOS3model **model = (MOS3model **)inModel; MOS3model *modfast = (MOS3model *)kill; MOS3instance *here; MOS3instance *prev = NULL; MOS3model **oldmod; oldmod = model; for( ; *model ; model = &((*model)->MOS3nextModel)) { if( (*model)->MOS3modName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->MOS3nextModel; /* cut deleted device out of list */ for(here = (*model)->MOS3instances ; here ; here = here->MOS3nextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061041121006440006700000000000011777770500302376500004600000013522spice3c1/spice3/dev/mos3/mos3mparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "util.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3mParam.c $Revision: 1.6 $ on $Date: 89/01/19 17:17:37 $") int MOS3mParam(param,value,inModel) int param; IFvalue *value; GENmodel *inModel; { register MOS3model *model = (MOS3model *)inModel; switch(param) { case MOS3_MOD_VTO: model->MOS3vt0 = value->rValue; model->MOS3vt0Given = TRUE; break; case MOS3_MOD_KP: model->MOS3transconductance = value->rValue; model->MOS3transconductanceGiven = TRUE; break; case MOS3_MOD_GAMMA: model->MOS3gamma = value->rValue; model->MOS3gammaGiven = TRUE; break; case MOS3_MOD_PHI: model->MOS3phi = value->rValue; model->MOS3phiGiven = TRUE; break; case MOS3_MOD_RD: model->MOS3drainResistance = value->rValue; model->MOS3drainResistanceGiven = TRUE; break; case MOS3_MOD_RS: model->MOS3sourceResistance = value->rValue; model->MOS3sourceResistanceGiven = TRUE; break; case MOS3_MOD_CBD: model->MOS3capBD = value->rValue; model->MOS3capBDGiven = TRUE; break; case MOS3_MOD_CBS: model->MOS3capBS = value->rValue; model->MOS3capBSGiven = TRUE; break; case MOS3_MOD_IS: model->MOS3jctSatCur = value->rValue; model->MOS3jctSatCurGiven = TRUE; break; case MOS3_MOD_PB: model->MOS3bulkJctPotential = value->rValue; model->MOS3bulkJctPotentialGiven = TRUE; break; case MOS3_MOD_CGSO: model->MOS3gateSourceOverlapCapFactor = value->rValue; model->MOS3gateSourceOverlapCapFactorGiven = TRUE; break; case MOS3_MOD_CGDO: model->MOS3gateDrainOverlapCapFactor = value->rValue; model->MOS3gateDrainOverlapCapFactorGiven = TRUE; break; case MOS3_MOD_CGBO: model->MOS3gateBulkOverlapCapFactor = value->rValue; model->MOS3gateBulkOverlapCapFactorGiven = TRUE; break; case MOS3_MOD_RSH: model->MOS3sheetResistance = value->rValue; model->MOS3sheetResistanceGiven = TRUE; break; case MOS3_MOD_CJ: model->MOS3bulkCapFactor = value->rValue; model->MOS3bulkCapFactorGiven = TRUE; break; case MOS3_MOD_MJ: model->MOS3bulkJctBotGradingCoeff = value->rValue; model->MOS3bulkJctBotGradingCoeffGiven = TRUE; break; case MOS3_MOD_CJSW: model->MOS3sideWallCapFactor = value->rValue; model->MOS3sideWallCapFactorGiven = TRUE; break; case MOS3_MOD_MJSW: model->MOS3bulkJctSideGradingCoeff = value->rValue; model->MOS3bulkJctSideGradingCoeffGiven = TRUE; break; case MOS3_MOD_JS: model->MOS3jctSatCurDensity = value->rValue; model->MOS3jctSatCurDensityGiven = TRUE; break; case MOS3_MOD_TOX: model->MOS3oxideThickness = value->rValue; model->MOS3oxideThicknessGiven = TRUE; break; case MOS3_MOD_LD: model->MOS3latDiff = value->rValue; model->MOS3latDiffGiven = TRUE; break; case MOS3_MOD_U0: model->MOS3surfaceMobility = value->rValue; model->MOS3surfaceMobilityGiven = TRUE; break; case MOS3_MOD_FC: model->MOS3fwdCapDepCoeff = value->rValue; model->MOS3fwdCapDepCoeffGiven = TRUE; break; case MOS3_MOD_NSUB: model->MOS3substrateDoping = value->rValue; model->MOS3substrateDopingGiven = TRUE; break; case MOS3_MOD_TPG: model->MOS3gateType = value->iValue; model->MOS3gateTypeGiven = TRUE; break; case MOS3_MOD_NSS: model->MOS3surfaceStateDensity = value->rValue; model->MOS3surfaceStateDensityGiven = TRUE; break; case MOS3_MOD_ETA: model->MOS3eta = value->rValue; model->MOS3etaGiven = TRUE; break; case MOS3_MOD_DELTA: model->MOS3delta = value->rValue; model->MOS3deltaGiven = TRUE; break; case MOS3_MOD_NFS: model->MOS3fastSurfaceStateDensity = value->rValue; model->MOS3fastSurfaceStateDensityGiven = TRUE; break; case MOS3_MOD_THETA: model->MOS3theta = value->rValue; model->MOS3thetaGiven = TRUE; break; case MOS3_MOD_VMAX: model->MOS3maxDriftVel = value->rValue; model->MOS3maxDriftVelGiven = TRUE; break; case MOS3_MOD_KAPPA: model->MOS3kappa = value->rValue; model->MOS3kappaGiven = TRUE; break; case MOS3_MOD_NMOS: if(value->iValue) { model->MOS3type = 1; model->MOS3typeGiven = TRUE; } break; case MOS3_MOD_PMOS: if(value->iValue) { model->MOS3type = -1; model->MOS3typeGiven = TRUE; } break; case MOS3_MOD_XJ: model->MOS3junctionDepth = value->rValue; model->MOS3junctionDepthGiven = TRUE; break; case MOS3_MOD_TNOM: model->MOS3tnom = value->rValue+CONSTCtoK; model->MOS3tnomGiven = TRUE; break; default: return(E_BADPARM); } return(OK); } 0707070124061041131006440006700000000000011777770500302376500004500000006153spice3c1/spice3/dev/mos3/mos3param.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "ifsim.h" #include "util.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3param.c $Revision: 1.7 $ on $Date: 89/01/19 17:17:27 $") /* ARGSUSED */ int MOS3param(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { MOS3instance *here = (MOS3instance *)inst; switch(param) { case MOS3_W: here->MOS3w = value->rValue; here->MOS3wGiven = TRUE; break; case MOS3_L: here->MOS3l = value->rValue; here->MOS3lGiven = TRUE; break; case MOS3_AS: here->MOS3sourceArea = value->rValue; here->MOS3sourceAreaGiven = TRUE; break; case MOS3_AD: here->MOS3drainArea = value->rValue; here->MOS3drainAreaGiven = TRUE; break; case MOS3_PS: here->MOS3sourcePerimiter = value->rValue; here->MOS3sourcePerimiterGiven = TRUE; break; case MOS3_PD: here->MOS3drainPerimiter = value->rValue; here->MOS3drainPerimiterGiven = TRUE; break; case MOS3_NRS: here->MOS3sourceSquares = value->rValue; here->MOS3sourceSquaresGiven = TRUE; break; case MOS3_NRD: here->MOS3drainSquares = value->rValue; here->MOS3drainSquaresGiven = TRUE; break; case MOS3_OFF: here->MOS3off = value->iValue; break; case MOS3_IC_VBS: here->MOS3icVBS = value->rValue; here->MOS3icVBSGiven = TRUE; break; case MOS3_IC_VDS: here->MOS3icVDS = value->rValue; here->MOS3icVDSGiven = TRUE; break; case MOS3_IC_VGS: here->MOS3icVGS = value->rValue; here->MOS3icVGSGiven = TRUE; break; case MOS3_TEMP: here->MOS3temp = value->rValue+CONSTCtoK; here->MOS3tempGiven = TRUE; break; case MOS3_IC: switch(value->v.numValue){ case 3: here->MOS3icVBS = *(value->v.vec.rVec+2); here->MOS3icVBSGiven = TRUE; case 2: here->MOS3icVGS = *(value->v.vec.rVec+1); here->MOS3icVGSGiven = TRUE; case 1: here->MOS3icVDS = *(value->v.vec.rVec); here->MOS3icVDSGiven = TRUE; break; default: return(E_BADPARM); } break; case MOS3_L_SENS: if(value->iValue) { here->MOS3senParmNo = 1; here->MOS3sens_l = 1; } break; case MOS3_W_SENS: if(value->iValue) { here->MOS3senParmNo = 1; here->MOS3sens_w = 1; } break; default: return(E_BADPARM); } return(OK); } 0707070124061041141006440006700000000000011777770500302376500004600000011730spice3c1/spice3/dev/mos3/mos3pzload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "complex.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3pzLoad.c $Revision: 1.4 $ on $Date: 88/07/22 05:10:52 $") int MOS3pzLoad(inModel,ckt,s) GENmodel *inModel; register CKTcircuit *ckt; SPcomplex *s; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; int xnrm; int xrev; double xgs; double xgd; double xgb; double xbd; double xbs; double capgs; double capgd; double capgb; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double EffectiveLength; for( ; model != NULL; model = model->MOS3nextModel) { for(here = model->MOS3instances; here!= NULL; here = here->MOS3nextInstance) { if (here->MOS3mode < 0) { xnrm=0; xrev=1; } else { xnrm=1; xrev=0; } /* * meyer's model parameters */ EffectiveLength=here->MOS3l - 2*model->MOS3latDiff; GateSourceOverlapCap = model->MOS3gateSourceOverlapCapFactor * here->MOS3w; GateDrainOverlapCap = model->MOS3gateDrainOverlapCapFactor * here->MOS3w; GateBulkOverlapCap = model->MOS3gateBulkOverlapCapFactor * EffectiveLength; capgs = ( 2* *(ckt->CKTstate0+here->MOS3capgs)+ GateSourceOverlapCap ); capgd = ( 2* *(ckt->CKTstate0+here->MOS3capgd)+ GateDrainOverlapCap ); capgb = ( 2* *(ckt->CKTstate0+here->MOS3capgb)+ GateBulkOverlapCap ); xgs = capgs; xgd = capgd; xgb = capgb; xbd = here->MOS3capbd; xbs = here->MOS3capbs; /*printf("mos2: xgs=%g, xgd=%g, xgb=%g, xbd=%g, xbs=%g\n", xgs,xgd,xgb,xbd,xbs);*/ /* * load matrix */ *(here->MOS3GgPtr ) += (xgd+xgs+xgb)*s->real; *(here->MOS3GgPtr +1) += (xgd+xgs+xgb)*s->imag; *(here->MOS3BbPtr ) += (xgb+xbd+xbs)*s->real; *(here->MOS3BbPtr +1) += (xgb+xbd+xbs)*s->imag; *(here->MOS3DPdpPtr ) += (xgd+xbd)*s->real; *(here->MOS3DPdpPtr +1) += (xgd+xbd)*s->imag; *(here->MOS3SPspPtr ) += (xgs+xbs)*s->real; *(here->MOS3SPspPtr +1) += (xgs+xbs)*s->imag; *(here->MOS3GbPtr ) -= xgb*s->real; *(here->MOS3GbPtr +1) -= xgb*s->imag; *(here->MOS3GdpPtr ) -= xgd*s->real; *(here->MOS3GdpPtr +1) -= xgd*s->imag; *(here->MOS3GspPtr ) -= xgs*s->real; *(here->MOS3GspPtr +1) -= xgs*s->imag; *(here->MOS3BgPtr ) -= xgb*s->real; *(here->MOS3BgPtr +1) -= xgb*s->imag; *(here->MOS3BdpPtr ) -= xbd*s->real; *(here->MOS3BdpPtr +1) -= xbd*s->imag; *(here->MOS3BspPtr ) -= xbs*s->real; *(here->MOS3BspPtr +1) -= xbs*s->imag; *(here->MOS3DPgPtr ) -= xgd*s->real; *(here->MOS3DPgPtr +1) -= xgd*s->imag; *(here->MOS3DPbPtr ) -= xbd*s->real; *(here->MOS3DPbPtr +1) -= xbd*s->imag; *(here->MOS3SPgPtr ) -= xgs*s->real; *(here->MOS3SPgPtr +1) -= xgs*s->imag; *(here->MOS3SPbPtr ) -= xbs*s->real; *(here->MOS3SPbPtr +1) -= xbs*s->imag; *(here->MOS3DdPtr) += here->MOS3drainConductance; *(here->MOS3SsPtr) += here->MOS3sourceConductance; *(here->MOS3BbPtr) += here->MOS3gbd+here->MOS3gbs; *(here->MOS3DPdpPtr) += here->MOS3drainConductance+ here->MOS3gds+here->MOS3gbd+ xrev*(here->MOS3gm+here->MOS3gmbs); *(here->MOS3SPspPtr) += here->MOS3sourceConductance+ here->MOS3gds+here->MOS3gbs+ xnrm*(here->MOS3gm+here->MOS3gmbs); *(here->MOS3DdpPtr) -= here->MOS3drainConductance; *(here->MOS3SspPtr) -= here->MOS3sourceConductance; *(here->MOS3BdpPtr) -= here->MOS3gbd; *(here->MOS3BspPtr) -= here->MOS3gbs; *(here->MOS3DPdPtr) -= here->MOS3drainConductance; *(here->MOS3DPgPtr) += (xnrm-xrev)*here->MOS3gm; *(here->MOS3DPbPtr) += -here->MOS3gbd+(xnrm-xrev)*here->MOS3gmbs; *(here->MOS3DPspPtr) -= here->MOS3gds+ xnrm*(here->MOS3gm+here->MOS3gmbs); *(here->MOS3SPgPtr) -= (xnrm-xrev)*here->MOS3gm; *(here->MOS3SPsPtr) -= here->MOS3sourceConductance; *(here->MOS3SPbPtr) -= here->MOS3gbs+(xnrm-xrev)*here->MOS3gmbs; *(here->MOS3SPdpPtr) -= here->MOS3gds+ xrev*(here->MOS3gm+here->MOS3gmbs); } } return(OK); } 0707070124061041151006440006700000000000011777770500302376500004700000074170spice3c1/spice3/dev/mos3/mos3sacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* actually load the current ac sensitivity * information into the array previously provided */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "const.h" #include "mos3defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3sAcLoad.c $Revision: 1.4 $ on $Date: 88/08/07 15:27:57 $") int MOS3sAcLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; int xnrm; int xrev; double A0; double Apert; double DELA; double DELAinv; double gdpr0; double gspr0; double gds0; double gbs0; double gbd0; double gm0; double gmbs0; double gdpr; double gspr; double gds; double gbs; double gbd; double gm; double gmbs; double xcgs0; double xcgd0; double xcgb0; double xbd0; double xbs0; double xcgs; double xcgd; double xcgb; double xbd; double xbs; double vbsOp; double vbdOp; double vspr; double vdpr; double vgs; double vgd; double vgb; double vbs; double vbd; double vds; double ivspr; double ivdpr; double ivgs; double ivgd; double ivgb; double ivbs; double ivbd; double ivds; double cspr; double cdpr; double cgs; double cgd; double cgb; double cbs; double cbd; double cds; double cs0; double csprm0; double cd0; double cdprm0; double cg0; double cb0; double cs; double csprm; double cd; double cdprm; double cg; double cb; double icspr; double icdpr; double icgs; double icgd; double icgb; double icbs; double icbd; double icds; double ics0; double icsprm0; double icd0; double icdprm0; double icg0; double icb0; double ics; double icsprm; double icd; double icdprm; double icg; double icb; double DvDp; int i; int flag; int error; int iparmno; double arg; double sarg; double sargsw; double SaveState[44]; int save_mode; SENstruct *info; #ifdef SENSDEBUG printf("MOS3senacload\n"); printf("CKTomega = %.5e\n",ckt->CKTomega); #endif /* SENSDEBUG */ info = ckt->CKTsenInfo; info->SENstatus = PERTURBATION; for( ; model != NULL; model = model->MOS3nextModel) { for(here = model->MOS3instances; here!= NULL; here = here->MOS3nextInstance) { /* save the unperturbed values in the state vector */ for(i=0; i <= 16; i++) *(SaveState + i) = *(ckt->CKTstate0 + here->MOS3states + i); *(SaveState + 17) = here->MOS3sourceConductance; *(SaveState + 18) = here->MOS3drainConductance; *(SaveState + 19) = here->MOS3cd; *(SaveState + 20) = here->MOS3cbs; *(SaveState + 21) = here->MOS3cbd; *(SaveState + 22) = here->MOS3gmbs; *(SaveState + 23) = here->MOS3gm; *(SaveState + 24) = here->MOS3gds; *(SaveState + 25) = here->MOS3gbd; *(SaveState + 26) = here->MOS3gbs; *(SaveState + 27) = here->MOS3capbd; *(SaveState + 28) = here->MOS3capbs; *(SaveState + 29) = here->MOS3Cbd; *(SaveState + 30) = here->MOS3Cbdsw; *(SaveState + 31) = here->MOS3Cbs; *(SaveState + 32) = here->MOS3Cbssw; *(SaveState + 33) = here->MOS3f2d; *(SaveState + 34) = here->MOS3f3d; *(SaveState + 35) = here->MOS3f4d; *(SaveState + 36) = here->MOS3f2s; *(SaveState + 37) = here->MOS3f3s; *(SaveState + 38) = here->MOS3f4s; *(SaveState + 39) = here->MOS3cgs; *(SaveState + 40) = here->MOS3cgd; *(SaveState + 41) = here->MOS3cgb; *(SaveState + 42) = here->MOS3vdsat; *(SaveState + 43) = here->MOS3von; save_mode = here->MOS3mode; xnrm=1; xrev=0; if (here->MOS3mode < 0) { xnrm=0; xrev=1; } vbsOp = model->MOS3type * ( *(ckt->CKTrhsOp+here->MOS3bNode) - *(ckt->CKTrhsOp+here->MOS3sNodePrime)); vbdOp = model->MOS3type * ( *(ckt->CKTrhsOp+here->MOS3bNode) - *(ckt->CKTrhsOp+here->MOS3dNodePrime)); vspr = *(ckt->CKTrhsOld + here->MOS3sNode) - *(ckt->CKTrhsOld + here->MOS3sNodePrime) ; ivspr = *(ckt->CKTirhsOld + here->MOS3sNode) - *(ckt->CKTirhsOld + here->MOS3sNodePrime) ; vdpr = *(ckt->CKTrhsOld + here->MOS3dNode) - *(ckt->CKTrhsOld + here->MOS3dNodePrime) ; ivdpr = *(ckt->CKTirhsOld + here->MOS3dNode) - *(ckt->CKTirhsOld + here->MOS3dNodePrime) ; vgb = *(ckt->CKTrhsOld + here->MOS3gNode) - *(ckt->CKTrhsOld + here->MOS3bNode) ; ivgb = *(ckt->CKTirhsOld + here->MOS3gNode) - *(ckt->CKTirhsOld + here->MOS3bNode) ; vbs = *(ckt->CKTrhsOld + here->MOS3bNode) - *(ckt->CKTrhsOld + here->MOS3sNodePrime) ; ivbs = *(ckt->CKTirhsOld + here->MOS3bNode) - *(ckt->CKTirhsOld + here->MOS3sNodePrime) ; vbd = *(ckt->CKTrhsOld + here->MOS3bNode) - *(ckt->CKTrhsOld + here->MOS3dNodePrime) ; ivbd = *(ckt->CKTirhsOld + here->MOS3bNode) - *(ckt->CKTirhsOld + here->MOS3dNodePrime) ; vds = vbs - vbd ; ivds = ivbs - ivbd ; vgs = vgb + vbs ; ivgs = ivgb + ivbs ; vgd = vgb + vbd ; ivgd = ivgb + ivbd ; #ifdef SENSDEBUG printf("senacload instance name %s\n",here->MOS3name); printf("gate = %d ,drain = %d, drainprm = %d\n", here->MOS3gNode,here->MOS3dNode,here->MOS3dNodePrime); printf("source = %d , sourceprm = %d ,body = %d, senparmno = %d\n", here->MOS3sNode ,here->MOS3sNodePrime, here->MOS3bNode,here->MOS3senParmNo); printf("\n without perturbation \n"); #endif /* SENSDEBUG */ /* without perturbation */ *(ckt->CKTstate0 + here->MOS3vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS3vbd) = vbdOp; here->MOS3senPertFlag = ON ; if(info->SENacpertflag == 1){ /* store the unperturbed values of small signal parameters */ if(error = MOS3load((GENmodel*)model,ckt)) return(error); *(here->MOS3senCgs) = here->MOS3cgs; *(here->MOS3senCgd) = here->MOS3cgd; *(here->MOS3senCgb) = here->MOS3cgb; *(here->MOS3senCbd) = here->MOS3capbd; *(here->MOS3senCbs) = here->MOS3capbs; *(here->MOS3senGds) = here->MOS3gds; *(here->MOS3senGbs) = here->MOS3gbs; *(here->MOS3senGbd) = here->MOS3gbd; *(here->MOS3senGm) = here->MOS3gm; *(here->MOS3senGmbs) = here->MOS3gmbs; } xcgs0= *(here->MOS3senCgs) * ckt->CKTomega; xcgd0= *(here->MOS3senCgd) * ckt->CKTomega; xcgb0= *(here->MOS3senCgb) * ckt->CKTomega; xbd0= *(here->MOS3senCbd) * ckt->CKTomega; xbs0= *(here->MOS3senCbs) * ckt->CKTomega; gds0= *(here->MOS3senGds); gbs0= *(here->MOS3senGbs); gbd0= *(here->MOS3senGbd); gm0= *(here->MOS3senGm); gmbs0= *(here->MOS3senGmbs); gdpr0 = here->MOS3drainConductance; gspr0 = here->MOS3sourceConductance; cspr = gspr0 * vspr ; icspr = gspr0 * ivspr ; cdpr = gdpr0 * vdpr ; icdpr = gdpr0 * ivdpr ; cgs = ( - xcgs0 * ivgs ); icgs = xcgs0 * vgs ; cgd = ( - xcgd0 * ivgd ); icgd = xcgd0 * vgd ; cgb = ( - xcgb0 * ivgb ); icgb = xcgb0 * vgb ; cbs = ( gbs0 * vbs - xbs0 * ivbs ); icbs = ( xbs0 * vbs + gbs0 * ivbs ); cbd = ( gbd0 * vbd - xbd0 * ivbd ); icbd = ( xbd0 * vbd + gbd0 * ivbd ); cds = ( gds0 * vds + xnrm * (gm0 * vgs + gmbs0 * vbs) - xrev * (gm0 * vgd + gmbs0 * vbd) ); icds = ( gds0 * ivds + xnrm * (gm0 * ivgs + gmbs0 * ivbs) - xrev * (gm0 * ivgd + gmbs0 * ivbd) ); cs0 = cspr; ics0 = icspr; csprm0 = ( -cspr - cgs - cbs - cds ) ; icsprm0 = ( -icspr - icgs - icbs - icds ) ; cd0 = cdpr; icd0 = icdpr; cdprm0 = ( -cdpr - cgd - cbd + cds ) ; icdprm0 = ( -icdpr - icgd - icbd + icds ) ; cg0 = cgs + cgd + cgb ; icg0 = icgs + icgd + icgb ; cb0 = cbs + cbd - cgb ; icb0 = icbs + icbd - icgb ; #ifdef SENSDEBUG printf("gspr0 = %.7e , gdpr0 = %.7e , gds0 = %.7e, gbs0 = %.7e\n", gspr0,gdpr0,gds0,gbs0); printf("gbd0 = %.7e , gm0 = %.7e , gmbs0 = %.7e\n",gbd0,gm0,gmbs0); printf("xcgs0 = %.7e , xcgd0 = %.7e ,", xcgs0,xcgd0); printf("xcgb0 = %.7e, xbd0 = %.7e,xbs0 = %.7e\n" ,xcgb0,xbd0,xbs0); printf("vbs = %.7e , vbd = %.7e , vgb = %.7e\n",vbs,vbd,vgb); printf("ivbs = %.7e , ivbd = %.7e , ivgb = %.7e\n",ivbs,ivbd,ivgb); printf("cbs0 = %.7e , cbd0 = %.7e , cgb0 = %.7e\n",cbs,cbd,cgb); printf("cb0 = %.7e , cg0 = %.7e , cs0 = %.7e\n",cb0,cg0,cs0); printf("csprm0 = %.7e, cd0 = %.7e, cdprm0 = %.7e\n", csprm0,cd0,cdprm0); printf("icb0 = %.7e , icg0 = %.7e , ics0 = %.7e\n",icb0,icg0,ics0); printf("icsprm0 = %.7e, icd0 = %.7e, icdprm0 = %.7e\n", icsprm0,icd0,icdprm0); printf("\nPerturbation of vbs\n"); #endif /* SENSDEBUG */ /* Perturbation of vbs */ flag = 1; A0 = vbsOp; DELA = info->SENpertfac * CONSTvt0 ; DELAinv = 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed vbs */ Apert = A0 + DELA; *(ckt->CKTstate0 + here->MOS3vbs) = Apert; *(ckt->CKTstate0 + here->MOS3vbd) = vbdOp; if(error = MOS3load((GENmodel*)model,ckt)) return(error); *(here->MOS3senCgs + 1) = here->MOS3cgs; *(here->MOS3senCgd + 1) = here->MOS3cgd; *(here->MOS3senCgb + 1) = here->MOS3cgb; *(here->MOS3senCbd + 1) = here->MOS3capbd; *(here->MOS3senCbs + 1) = here->MOS3capbs; *(here->MOS3senGds + 1) = here->MOS3gds; *(here->MOS3senGbs + 1) = here->MOS3gbs; *(here->MOS3senGbd + 1) = here->MOS3gbd; *(here->MOS3senGm + 1) = here->MOS3gm; *(here->MOS3senGmbs + 1) = here->MOS3gmbs; *(ckt->CKTstate0 + here->MOS3vbs) = A0; } goto load; pertvbd: /* Perturbation of vbd */ #ifdef SENSDEBUG printf("\nPerturbation of vbd\n"); #endif /* SENSDEBUG */ flag = 2; A0 = vbdOp; DELA = info->SENpertfac * CONSTvt0 + 1e-8; DELAinv = 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed vbd */ Apert = A0 + DELA; *(ckt->CKTstate0 + here->MOS3vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS3vbd) = Apert; if(error = MOS3load((GENmodel*)model,ckt)) return(error); *(here->MOS3senCgs + 2) = here->MOS3cgs; *(here->MOS3senCgd + 2) = here->MOS3cgd; *(here->MOS3senCgb + 2) = here->MOS3cgb; *(here->MOS3senCbd + 2) = here->MOS3capbd; *(here->MOS3senCbs + 2) = here->MOS3capbs; *(here->MOS3senGds + 2) = here->MOS3gds; *(here->MOS3senGbs + 2) = here->MOS3gbs; *(here->MOS3senGbd + 2) = here->MOS3gbd; *(here->MOS3senGm + 2) = here->MOS3gm; *(here->MOS3senGmbs + 2) = here->MOS3gmbs; *(ckt->CKTstate0 + here->MOS3vbd) = A0; } goto load; pertvgb: /* Perturbation of vgb */ #ifdef SENSDEBUG printf("\nPerturbation of vgb\n"); #endif /* SENSDEBUG */ flag = 3; A0 = model->MOS3type * (*(ckt->CKTrhsOp + here->MOS3gNode) - *(ckt->CKTrhsOp + here->MOS3bNode)); DELA = info->SENpertfac * A0 + 1e-8; DELAinv = model->MOS3type * 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed vgb */ *(ckt->CKTstate0 + here->MOS3vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS3vbd) = vbdOp; *(ckt->CKTrhsOp + here->MOS3bNode) -= DELA; if(error = MOS3load((GENmodel*)model,ckt)) return(error); *(here->MOS3senCgs + 3) = here->MOS3cgs; *(here->MOS3senCgd + 3) = here->MOS3cgd; *(here->MOS3senCgb + 3) = here->MOS3cgb; *(here->MOS3senCbd + 3) = here->MOS3capbd; *(here->MOS3senCbs + 3) = here->MOS3capbs; *(here->MOS3senGds + 3) = here->MOS3gds; *(here->MOS3senGbs + 3) = here->MOS3gbs; *(here->MOS3senGbd + 3) = here->MOS3gbd; *(here->MOS3senGm + 3) = here->MOS3gm; *(here->MOS3senGmbs + 3) = here->MOS3gmbs; *(ckt->CKTrhsOp + here->MOS3bNode) += DELA; } goto load; pertl: /* Perturbation of length */ if(here->MOS3sens_l == 0){ goto pertw; } #ifdef SENSDEBUG printf("\nPerturbation of length\n"); #endif /* SENSDEBUG */ flag = 4; A0 = here->MOS3l; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed length */ Apert = A0 + DELA; here->MOS3l = Apert; *(ckt->CKTstate0 + here->MOS3vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS3vbd) = vbdOp; if(error = MOS3load((GENmodel*)model,ckt)) return(error); *(here->MOS3senCgs + 4) = here->MOS3cgs; *(here->MOS3senCgd + 4) = here->MOS3cgd; *(here->MOS3senCgb + 4) = here->MOS3cgb; *(here->MOS3senCbd + 4) = here->MOS3capbd; *(here->MOS3senCbs + 4) = here->MOS3capbs; *(here->MOS3senGds + 4) = here->MOS3gds; *(here->MOS3senGbs + 4) = here->MOS3gbs; *(here->MOS3senGbd + 4) = here->MOS3gbd; *(here->MOS3senGm + 4) = here->MOS3gm; *(here->MOS3senGmbs + 4) = here->MOS3gmbs; here->MOS3l = A0; } goto load; pertw: /* Perturbation of width */ if(here->MOS3sens_w == 0) goto next; #ifdef SENSDEBUG printf("\nPerturbation of width\n"); #endif /* SENSDEBUG */ flag = 5; A0 = here->MOS3w; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; Apert = A0 + DELA; if(info->SENacpertflag == 1){ /* store the values of small signal parameters * corresponding to perturbed width */ here->MOS3w = Apert; here->MOS3drainArea *= (1 + info->SENpertfac); here->MOS3sourceArea *= (1 + info->SENpertfac); here->MOS3Cbd *= (1 + info->SENpertfac); here->MOS3Cbs *= (1 + info->SENpertfac); if(here->MOS3drainPerimiter){ here->MOS3Cbdsw += here->MOS3Cbdsw * DELA/here->MOS3drainPerimiter; } if(here->MOS3sourcePerimiter){ here->MOS3Cbssw += here->MOS3Cbssw * DELA/here->MOS3sourcePerimiter; } if(vbdOp >= here->MOS3tDepCap){ arg = 1-model->MOS3fwdCapDepCoeff; sarg = exp( (-model->MOS3bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS3bulkJctSideGradingCoeff) * log(arg) ); here->MOS3f2d = here->MOS3Cbd*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctBotGradingCoeff))* sarg/arg + here->MOS3Cbdsw*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctSideGradingCoeff))* sargsw/arg; here->MOS3f3d = here->MOS3Cbd * model->MOS3bulkJctBotGradingCoeff * sarg/arg/ model->MOS3bulkJctPotential + here->MOS3Cbdsw * model->MOS3bulkJctSideGradingCoeff * sargsw/arg / model->MOS3bulkJctPotential; here->MOS3f4d = here->MOS3Cbd*model->MOS3bulkJctPotential* (1-arg*sarg)/ (1-model->MOS3bulkJctBotGradingCoeff) + here->MOS3Cbdsw*model->MOS3bulkJctPotential* (1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff) -here->MOS3f3d/2* (here->MOS3tDepCap*here->MOS3tDepCap) -here->MOS3tDepCap * here->MOS3f2d; } if(vbsOp >= here->MOS3tDepCap){ arg = 1-model->MOS3fwdCapDepCoeff; sarg = exp( (-model->MOS3bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS3bulkJctSideGradingCoeff) * log(arg) ); here->MOS3f2s = here->MOS3Cbs*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctBotGradingCoeff))* sarg/arg + here->MOS3Cbssw*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctSideGradingCoeff))* sargsw/arg; here->MOS3f3s = here->MOS3Cbs * model->MOS3bulkJctBotGradingCoeff * sarg/arg/ model->MOS3bulkJctPotential + here->MOS3Cbssw * model->MOS3bulkJctSideGradingCoeff * sargsw/arg / model->MOS3bulkJctPotential; here->MOS3f4s = here->MOS3Cbs*model->MOS3bulkJctPotential* (1-arg*sarg)/ (1-model->MOS3bulkJctBotGradingCoeff) + here->MOS3Cbssw*model->MOS3bulkJctPotential* (1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff) -here->MOS3f3s/2* (here->MOS3tBulkPot*here->MOS3tBulkPot) -here->MOS3tBulkPot * here->MOS3f2s; } *(ckt->CKTstate0 + here->MOS3vbs) = vbsOp; *(ckt->CKTstate0 + here->MOS3vbd) = vbdOp; if(error = MOS3load((GENmodel*)model,ckt)) return(error); *(here->MOS3senCgs + 5) = here->MOS3cgs; *(here->MOS3senCgd + 5) = here->MOS3cgd; *(here->MOS3senCgb + 5) = here->MOS3cgb; *(here->MOS3senCbd + 5) = here->MOS3capbd; *(here->MOS3senCbs + 5) = here->MOS3capbs; *(here->MOS3senGds + 5) = here->MOS3gds; *(here->MOS3senGbs + 5) = here->MOS3gbs; *(here->MOS3senGbd + 5) = here->MOS3gbd; *(here->MOS3senGm + 5) = here->MOS3gm; *(here->MOS3senGmbs + 5) = here->MOS3gmbs; here->MOS3w = A0; here->MOS3drainArea /= (1 + info->SENpertfac); here->MOS3sourceArea /= (1 + info->SENpertfac); } load: gds= *(here->MOS3senGds + flag); gbs= *(here->MOS3senGbs + flag); gbd= *(here->MOS3senGbd + flag); gm= *(here->MOS3senGm + flag); gmbs= *(here->MOS3senGmbs + flag); if(flag == 5){ gdpr = here->MOS3drainConductance * Apert/A0; gspr = here->MOS3sourceConductance * Apert/A0; } else{ gdpr = here->MOS3drainConductance; gspr = here->MOS3sourceConductance; } xcgs= *(here->MOS3senCgs + flag) * ckt->CKTomega; xcgd= *(here->MOS3senCgd + flag) * ckt->CKTomega; xcgb= *(here->MOS3senCgb + flag) * ckt->CKTomega; xbd= *(here->MOS3senCbd + flag) * ckt->CKTomega; xbs= *(here->MOS3senCbs + flag) * ckt->CKTomega; #ifdef SENSDEBUG printf("flag = %d \n",flag); printf("gspr = %.7e , gdpr = %.7e , gds = %.7e, gbs = %.7e\n", gspr,gdpr,gds,gbs); printf("gbd = %.7e , gm = %.7e , gmbs = %.7e\n",gbd,gm,gmbs); printf("xcgs = %.7e , xcgd = %.7e , xcgb = %.7e,", xcgs,xcgd,xcgb); printf("xbd = %.7e,xbs = %.7e\n" ,xbd,xbs); #endif /* SENSDEBUG */ cspr = gspr * vspr ; icspr = gspr * ivspr ; cdpr = gdpr * vdpr ; icdpr = gdpr * ivdpr ; cgs = ( - xcgs * ivgs ); icgs = xcgs * vgs ; cgd = ( - xcgd * ivgd ); icgd = xcgd * vgd ; cgb = ( - xcgb * ivgb ); icgb = xcgb * vgb ; cbs = ( gbs * vbs - xbs * ivbs ); icbs = ( xbs * vbs + gbs * ivbs ); cbd = ( gbd * vbd - xbd * ivbd ); icbd = ( xbd * vbd + gbd * ivbd ); cds = ( gds * vds + xnrm * (gm * vgs + gmbs * vbs) - xrev * (gm * vgd + gmbs * vbd) ); icds = ( gds * ivds + xnrm * (gm * ivgs + gmbs * ivbs) - xrev * (gm * ivgd + gmbs * ivbd) ); cs = cspr; ics = icspr; csprm = ( -cspr - cgs - cbs - cds ) ; icsprm = ( -icspr - icgs - icbs - icds ) ; cd = cdpr; icd = icdpr; cdprm = ( -cdpr - cgd - cbd + cds ) ; icdprm = ( -icdpr - icgd - icbd + icds ) ; cg = cgs + cgd + cgb ; icg = icgs + icgd + icgb ; cb = cbs + cbd - cgb ; icb = icbs + icbd - icgb ; #ifdef SENSDEBUG printf("vbs = %.7e , vbd = %.7e , vgb = %.7e\n",vbs,vbd,vgb); printf("ivbs = %.7e , ivbd = %.7e , ivgb = %.7e\n",ivbs,ivbd,ivgb); printf("cbs = %.7e , cbd = %.7e , cgb = %.7e\n",cbs,cbd,cgb); printf("cb = %.7e , cg = %.7e , cs = %.7e\n",cb,cg,cs); printf("csprm = %.7e, cd = %.7e, cdprm = %.7e\n",csprm,cd,cdprm); printf("icb = %.7e , icg = %.7e , ics = %.7e\n",icb,icg,ics); printf("icsprm = %.7e, icd = %.7e, icdprm = %.7e\n", icsprm,icd,icdprm); #endif /* SENSDEBUG */ for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ if( (flag == 4) && (iparmno != here->MOS3senParmNo) ) continue; if( (flag == 5) && (iparmno != (here->MOS3senParmNo + here->MOS3sens_l)) ) continue; switch(flag){ case 1: DvDp = model->MOS3type * (info->SEN_Sap[here->MOS3bNode][iparmno] - info->SEN_Sap[here->MOS3sNodePrime][iparmno]); break; case 2: DvDp = model->MOS3type * ( info->SEN_Sap[here->MOS3bNode][iparmno] - info->SEN_Sap[here->MOS3dNodePrime][iparmno]); break; case 3: DvDp = model->MOS3type * ( info->SEN_Sap[here->MOS3gNode][iparmno] - info->SEN_Sap[here->MOS3bNode][iparmno]); break; case 4: DvDp = 1; break; case 5: DvDp = 1; break; } *(info->SEN_RHS[here->MOS3bNode] + iparmno) -= ( cb - cb0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS3bNode] + iparmno) -= ( icb - icb0) * DELAinv * DvDp; *(info->SEN_RHS[here->MOS3gNode] + iparmno) -= ( cg - cg0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS3gNode] + iparmno) -= ( icg - icg0) * DELAinv * DvDp; if(here->MOS3sNode != here->MOS3sNodePrime){ *(info->SEN_RHS[here->MOS3sNode] + iparmno) -= ( cs - cs0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS3sNode] + iparmno) -= ( ics - ics0) * DELAinv * DvDp; } *(info->SEN_RHS[here->MOS3sNodePrime] + iparmno) -= ( csprm - csprm0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS3sNodePrime] + iparmno) -= ( icsprm - icsprm0) * DELAinv * DvDp; if(here->MOS3dNode != here->MOS3dNodePrime){ *(info->SEN_RHS[here->MOS3dNode] + iparmno) -= ( cd - cd0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS3dNode] + iparmno) -= ( icd - icd0) * DELAinv * DvDp; } *(info->SEN_RHS[here->MOS3dNodePrime] + iparmno) -= ( cdprm - cdprm0) * DELAinv * DvDp; *(info->SEN_iRHS[here->MOS3dNodePrime] + iparmno) -= ( icdprm - icdprm0) * DELAinv * DvDp; #ifdef SENSDEBUG printf("after loading\n"); printf("DvDp = %.5e , DELAinv = %.5e ,flag = %d ,", DvDp,DELAinv,flag); printf("iparmno = %d,senparmno = %d\n", iparmno,here->MOS3senParmNo); printf("A0 = %.5e , Apert = %.5e ,CONSTvt0 = %.5e \n", A0,Apert,CONSTvt0); printf("senb = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS3bNode] + iparmno), *(info->SEN_iRHS[here->MOS3bNode] + iparmno)); printf("seng = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS3gNode] + iparmno), *(info->SEN_iRHS[here->MOS3gNode] + iparmno)); printf("sens = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS3sNode] + iparmno), *(info->SEN_iRHS[here->MOS3sNode] + iparmno)); printf("sensprm = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS3sNodePrime] + iparmno), *(info->SEN_iRHS[here->MOS3sNodePrime] + iparmno)); printf("send = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS3dNode] + iparmno), *(info->SEN_iRHS[here->MOS3dNode] + iparmno)); printf("sendprm = %.7e + j%.7e ", *(info->SEN_RHS[here->MOS3dNodePrime] + iparmno), *(info->SEN_iRHS[here->MOS3dNodePrime] + iparmno)); #endif /* SENSDEBUG */ } switch(flag){ case 1: goto pertvbd ; case 2: goto pertvgb ; case 3: goto pertl ; case 4: goto pertw ; case 5: break; } next: ; /* put the unperturbed values back into the state vector */ for(i=0; i <= 16; i++) *(ckt->CKTstate0 + here->MOS3states + i) = *(SaveState + i); here->MOS3sourceConductance = *(SaveState + 17) ; here->MOS3drainConductance = *(SaveState + 18) ; here->MOS3cd = *(SaveState + 19) ; here->MOS3cbs = *(SaveState + 20) ; here->MOS3cbd = *(SaveState + 21) ; here->MOS3gmbs = *(SaveState + 22) ; here->MOS3gm = *(SaveState + 23) ; here->MOS3gds = *(SaveState + 24) ; here->MOS3gbd = *(SaveState + 25) ; here->MOS3gbs = *(SaveState + 26) ; here->MOS3capbd = *(SaveState + 27) ; here->MOS3capbs = *(SaveState + 28) ; here->MOS3Cbd = *(SaveState + 29) ; here->MOS3Cbdsw = *(SaveState + 30) ; here->MOS3Cbs = *(SaveState + 31) ; here->MOS3Cbssw = *(SaveState + 32) ; here->MOS3f2d = *(SaveState + 33) ; here->MOS3f3d = *(SaveState + 34) ; here->MOS3f4d = *(SaveState + 35) ; here->MOS3f2s = *(SaveState + 36) ; here->MOS3f3s = *(SaveState + 37) ; here->MOS3f4s = *(SaveState + 38) ; here->MOS3cgs = *(SaveState + 39) ; here->MOS3cgd = *(SaveState + 40) ; here->MOS3cgb = *(SaveState + 41) ; here->MOS3vdsat = *(SaveState + 42) ; here->MOS3von = *(SaveState + 43) ; here->MOS3mode = save_mode ; here->MOS3senPertFlag = OFF; } } info->SENstatus = NORMAL; #ifdef SENSDEBUG printf("MOS3senacload end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124061041161006440006700000000000011777770500302376500004500000064013spice3c1/spice3/dev/mos3/mos3sload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* actually load the current sensitivity * information into the array previously provided */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos3defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3sLoad.c $Revision: 1.2 $ on $Date: 88/07/22 05:10:57 $") int MOS3sLoad(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; double SaveState[44]; int save_mode; int i; int iparmno; int error; int flag; double A0; double DELA; double Apert; double DELAinv; double gspr0; double gspr; double gdpr0; double gdpr; double cdpr0; double cspr0; double cd0; double cbd0; double cbs0; double cd; double cbd; double cbs; double DcdprDp; double DcsprDp; double DcbDp; double DcdDp; double DcbsDp; double DcbdDp; double DcdprmDp; double DcsprmDp; double qgs0; double qgd0; double qgb0; double qbd0; double qbd; double qbs0; double qbs; double DqgsDp; double DqgdDp; double DqgbDp; double DqbdDp; double DqbsDp; double Osxpgs; double Osxpgd; double Osxpgb; double Osxpbd; double Osxpbs; double tag0; double tag1; double arg; double sarg; double sargsw; int offset; double EffectiveLength; SENstruct *info; #ifdef SENSDEBUG printf("MOS3senload \n"); printf("CKTtime = %.5e\n",ckt->CKTtime); printf("CKTorder = %d\n",ckt->CKTorder); #endif /* SENSDEBUG */ info = ckt->CKTsenInfo; info->SENstatus = PERTURBATION; tag0 = ckt->CKTag[0]; tag1 = ckt->CKTag[1]; if(ckt->CKTorder == 1){ tag1 = 0; } /* loop through all the models */ for( ; model != NULL; model = model->MOS3nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS3instances; here != NULL ; here=here->MOS3nextInstance) { #ifdef SENSDEBUG printf("senload instance name %s\n",here->MOS3name); printf("gate = %d ,drain = %d, drainprm = %d\n", here->MOS3gNode,here->MOS3dNode,here->MOS3dNodePrime); printf("source = %d , sourceprm = %d ,body = %d, senparmno = %d\n", here->MOS3sNode ,here->MOS3sNodePrime, here->MOS3bNode,here->MOS3senParmNo); #endif /* SENSDEBUG */ /* save the unperturbed values in the state vector */ for(i=0; i <= 16; i++){ *(SaveState + i) = *(ckt->CKTstate0 + here->MOS3states + i); } *(SaveState + 17) = here->MOS3sourceConductance; *(SaveState + 18) = here->MOS3drainConductance; *(SaveState + 19) = here->MOS3cd; *(SaveState + 20) = here->MOS3cbs; *(SaveState + 21) = here->MOS3cbd; *(SaveState + 22) = here->MOS3gmbs; *(SaveState + 23) = here->MOS3gm; *(SaveState + 24) = here->MOS3gds; *(SaveState + 25) = here->MOS3gbd; *(SaveState + 26) = here->MOS3gbs; *(SaveState + 27) = here->MOS3capbd; *(SaveState + 28) = here->MOS3capbs; *(SaveState + 29) = here->MOS3Cbd; *(SaveState + 30) = here->MOS3Cbdsw; *(SaveState + 31) = here->MOS3Cbs; *(SaveState + 32) = here->MOS3Cbssw; *(SaveState + 33) = here->MOS3f2d; *(SaveState + 34) = here->MOS3f3d; *(SaveState + 35) = here->MOS3f4d; *(SaveState + 36) = here->MOS3f2s; *(SaveState + 37) = here->MOS3f3s; *(SaveState + 38) = here->MOS3f4s; *(SaveState + 39) = here->MOS3cgs; *(SaveState + 40) = here->MOS3cgd; *(SaveState + 41) = here->MOS3cgb; *(SaveState + 42) = here->MOS3vdsat; *(SaveState + 43) = here->MOS3von; save_mode = here->MOS3mode; if(here->MOS3senParmNo == 0) goto next1; #ifdef SENSDEBUG printf("without perturbation \n"); #endif /* SENSDEBUG */ cdpr0= here->MOS3cd; cspr0= -(here->MOS3cd + here->MOS3cbd + here->MOS3cbs); if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)){ qgs0 = *(ckt->CKTstate1 + here->MOS3qgs); qgd0 = *(ckt->CKTstate1 + here->MOS3qgd); qgb0 = *(ckt->CKTstate1 + here->MOS3qgb); } else{ qgs0 = *(ckt->CKTstate0 + here->MOS3qgs); qgd0 = *(ckt->CKTstate0 + here->MOS3qgd); qgb0 = *(ckt->CKTstate0 + here->MOS3qgb); } here->MOS3senPertFlag = ON; error = MOS3load((GENmodel*)model,ckt); if(error) return(error); cd0 = here->MOS3cd ; cbd0 = here->MOS3cbd ; cbs0 = here->MOS3cbs ; gspr0= here->MOS3sourceConductance ; gdpr0= here->MOS3drainConductance ; qbs0 = *(ckt->CKTstate0 + here->MOS3qbs); qbd0 = *(ckt->CKTstate0 + here->MOS3qbd); for( flag = 0 ; flag <= 1 ; flag++){ if(here->MOS3sens_l == 0) if(flag == 0) goto next2; if(here->MOS3sens_w == 0) if(flag == 1) goto next2; if(flag == 0){ A0 = here->MOS3l; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; Apert = A0 + DELA; here->MOS3l = Apert; } else{ A0 = here->MOS3w; DELA = info->SENpertfac * A0; DELAinv = 1.0/DELA; Apert = A0 + DELA; here->MOS3w = Apert; here->MOS3drainArea *= (1 + info->SENpertfac); here->MOS3sourceArea *= (1 + info->SENpertfac); here->MOS3Cbd *= (1 + info->SENpertfac); here->MOS3Cbs *= (1 + info->SENpertfac); if(here->MOS3drainPerimiter){ here->MOS3Cbdsw += here->MOS3Cbdsw * DELA/here->MOS3drainPerimiter; } if(here->MOS3sourcePerimiter){ here->MOS3Cbssw += here->MOS3Cbssw * DELA/here->MOS3sourcePerimiter; } if(*(ckt->CKTstate0 + here->MOS3vbd) >= here->MOS3tDepCap){ arg = 1-model->MOS3fwdCapDepCoeff; sarg = exp( (-model->MOS3bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS3bulkJctSideGradingCoeff) * log(arg) ); here->MOS3f2d = here->MOS3Cbd* (1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctBotGradingCoeff))* sarg/arg + here->MOS3Cbdsw*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctSideGradingCoeff))* sargsw/arg; here->MOS3f3d = here->MOS3Cbd * model->MOS3bulkJctBotGradingCoeff * sarg/arg/ model->MOS3bulkJctPotential + here->MOS3Cbdsw * model->MOS3bulkJctSideGradingCoeff *sargsw/arg / model->MOS3bulkJctPotential; here->MOS3f4d = here->MOS3Cbd* model->MOS3bulkJctPotential*(1-arg*sarg)/ (1-model->MOS3bulkJctBotGradingCoeff) + here->MOS3Cbdsw*model->MOS3bulkJctPotential* (1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff) -here->MOS3f3d/2* (here->MOS3tDepCap*here->MOS3tDepCap) -here->MOS3tDepCap * here->MOS3f2d; } if(*(ckt->CKTstate0 + here->MOS3vbs) >= here->MOS3tDepCap){ arg = 1-model->MOS3fwdCapDepCoeff; sarg = exp( (-model->MOS3bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS3bulkJctSideGradingCoeff) * log(arg) ); here->MOS3f2s = here->MOS3Cbs* (1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctBotGradingCoeff))* sarg/arg + here->MOS3Cbssw*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctSideGradingCoeff))* sargsw/arg; here->MOS3f3s = here->MOS3Cbs * model->MOS3bulkJctBotGradingCoeff * sarg/arg/ model->MOS3bulkJctPotential + here->MOS3Cbssw * model->MOS3bulkJctSideGradingCoeff * sargsw/arg/ model->MOS3bulkJctPotential; here->MOS3f4s = here->MOS3Cbs* model->MOS3bulkJctPotential*(1-arg*sarg)/ (1-model->MOS3bulkJctBotGradingCoeff) + here->MOS3Cbssw*model->MOS3bulkJctPotential* (1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff) -here->MOS3f3s/2* (here->MOS3tBulkPot*here->MOS3tBulkPot) -here->MOS3tBulkPot * here->MOS3f2s; } here->MOS3drainConductance *= Apert/A0; here->MOS3sourceConductance *= Apert/A0; } #ifdef SENSDEBUG if(flag == 0) printf("perturbation of l\n"); if(flag == 1) printf("perturbation of w\n"); #endif /* SENSDEBUG */ error = MOS3load((GENmodel*)model,ckt); if(error) return(error); if(flag == 0){ here->MOS3l = A0; } else{ here->MOS3w = A0; here->MOS3drainArea /= (1 + info->SENpertfac); here->MOS3sourceArea /= (1 + info->SENpertfac); here->MOS3drainConductance *= A0/Apert; here->MOS3sourceConductance *= A0/Apert; } cd = here->MOS3cd ; cbd = here->MOS3cbd ; cbs = here->MOS3cbs ; gspr= here->MOS3sourceConductance ; gdpr= here->MOS3drainConductance ; DcdDp = (cd - cd0) * DELAinv; DcbsDp = (cbs - cbs0) * DELAinv; DcbdDp = (cbd - cbd0) * DELAinv; DcbDp = ( DcbsDp + DcbdDp ); DcdprDp = 0; DcsprDp = 0; if(here->MOS3dNode != here->MOS3dNodePrime) if(gdpr0) DcdprDp = cdpr0 * (gdpr - gdpr0)/gdpr0 * DELAinv; if(here->MOS3sNode != here->MOS3sNodePrime) if(gspr0) DcsprDp = cspr0 * (gspr - gspr0)/gspr0 * DELAinv; DcdprmDp = ( - DcdprDp + DcdDp); DcsprmDp = ( - DcbsDp - DcdDp - DcbdDp - DcsprDp); if(flag == 0){ EffectiveLength = here->MOS3l - 2*model->MOS3latDiff; if(EffectiveLength == 0){ DqgsDp = 0; DqgdDp = 0; DqgbDp = 0; } else{ DqgsDp = model->MOS3type * qgs0 / EffectiveLength; DqgdDp = model->MOS3type * qgd0 / EffectiveLength; DqgbDp = model->MOS3type * qgb0 / EffectiveLength; } } else{ DqgsDp = model->MOS3type * qgs0 / here->MOS3w; DqgdDp = model->MOS3type * qgd0 / here->MOS3w; DqgbDp = model->MOS3type * qgb0 / here->MOS3w; } qbd = *(ckt->CKTstate0 + here->MOS3qbd); qbs = *(ckt->CKTstate0 + here->MOS3qbs); DqbsDp = model->MOS3type * (qbs - qbs0)*DELAinv; DqbdDp = model->MOS3type * (qbd - qbd0)*DELAinv; if(flag == 0){ *(here->MOS3dphigs_dl) = DqgsDp; *(here->MOS3dphigd_dl) = DqgdDp; *(here->MOS3dphibs_dl) = DqbsDp; *(here->MOS3dphibd_dl) = DqbdDp; *(here->MOS3dphigb_dl) = DqgbDp; } else{ *(here->MOS3dphigs_dw) = DqgsDp; *(here->MOS3dphigd_dw) = DqgdDp; *(here->MOS3dphibs_dw) = DqbsDp; *(here->MOS3dphibd_dw) = DqbdDp; *(here->MOS3dphigb_dw) = DqgbDp; } #ifdef SENSDEBUG printf("CKTag[0]=%.7e,CKTag[1]=%.7e,flag= %d\n", ckt->CKTag[0],ckt->CKTag[1],flag); printf("cd0 = %.7e ,cd = %.7e,\n",cd0,cd); printf("cbs0 = %.7e ,cbs = %.7e,\n",cbs0,cbs); printf("cbd0 = %.7e ,cbd = %.7e,\n",cbd0,cbd); printf("DcdprmDp = %.7e,\n",DcdprmDp); printf("DcsprmDp = %.7e,\n",DcsprmDp); printf("DcdprDp = %.7e,\n",DcdprDp); printf("DcsprDp = %.7e,\n",DcsprDp); printf("qgs0 = %.7e \n",qgs0); printf("qgd0 = %.7e \n",qgd0); printf("qgb0 = %.7e \n",qgb0); printf("qbs0 = %.7e ,qbs = %.7e,\n",qbs0,qbs); printf("qbd0 = %.7e ,qbd = %.7e,\n",qbd0,qbd); printf("DqgsDp = %.7e \n",DqgsDp); printf("DqgdDp = %.7e \n",DqgdDp); printf("DqgbDp = %.7e \n",DqgbDp); printf("DqbsDp = %.7e \n",DqbsDp); printf("DqbdDp = %.7e \n",DqbdDp); printf("EffectiveLength = %.7e \n",EffectiveLength); printf("tdepCap = %.7e \n",here->MOS3tDepCap); printf("\n"); #endif /* SENSDEBUG*/ if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) goto next2; /* * load RHS matrix */ if(flag == 0){ *(info->SEN_RHS[here->MOS3bNode] + here->MOS3senParmNo) -= model->MOS3type * DcbDp; *(info->SEN_RHS[here->MOS3dNode] + here->MOS3senParmNo) -= model->MOS3type * DcdprDp; *(info->SEN_RHS[here->MOS3dNodePrime] + here->MOS3senParmNo) -= model->MOS3type * DcdprmDp; *(info->SEN_RHS[here->MOS3sNode] + here->MOS3senParmNo) -= model->MOS3type * DcsprDp; *(info->SEN_RHS[here->MOS3sNodePrime] + here->MOS3senParmNo) -= model->MOS3type * DcsprmDp; } else{ offset = here->MOS3sens_l; *(info->SEN_RHS[here->MOS3bNode] + here->MOS3senParmNo + offset) -= model->MOS3type * DcbDp; *(info->SEN_RHS[here->MOS3dNode] + here->MOS3senParmNo + offset) -= model->MOS3type * DcdprDp; *(info->SEN_RHS[here->MOS3dNodePrime] + here->MOS3senParmNo + offset) -= model->MOS3type * DcdprmDp; *(info->SEN_RHS[here->MOS3sNode] + here->MOS3senParmNo + offset) -= model->MOS3type * DcsprDp; *(info->SEN_RHS[here->MOS3sNodePrime] + here->MOS3senParmNo + offset) -= model->MOS3type * DcsprmDp; } #ifdef SENSDEBUG printf("after loading\n"); if(flag == 0){ printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS3bNode] + here->MOS3senParmNo)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNode] + here->MOS3senParmNo)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNode] + here->MOS3senParmNo)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNodePrime] + here->MOS3senParmNo)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNodePrime] + here->MOS3senParmNo)); printf("\n"); } else{ printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS3bNode] + here->MOS3senParmNo + here->MOS3sens_l)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNode] + here->MOS3senParmNo + here->MOS3sens_l)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNode] + here->MOS3senParmNo + here->MOS3sens_l)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNodePrime] + here->MOS3senParmNo + here->MOS3sens_l)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNodePrime] + here->MOS3senParmNo + here->MOS3sens_l)); } #endif /* SENSDEBUG*/ next2: ; } next1: if((info->SENmode == DCSEN) || (ckt->CKTmode&MODETRANOP) ) goto restore; if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) goto restore; for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ #ifdef SENSDEBUG printf("after conductive currents\n"); printf("iparmno = %d\n",iparmno); printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS3bNode] + iparmno)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNode] + iparmno)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNodePrime] + iparmno)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNode] + iparmno)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNodePrime] + iparmno)); printf("\n"); #endif /* SENSDEBUG */ Osxpgs = tag0 * *(ckt->CKTstate1 + here->MOS3sensxpgs + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS3sensxpgs + 10*(iparmno - 1) + 1); Osxpgd = tag0 * *(ckt->CKTstate1 + here->MOS3sensxpgd + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS3sensxpgd + 10*(iparmno - 1) + 1); Osxpbs = tag0 * *(ckt->CKTstate1 + here->MOS3sensxpbs + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS3sensxpbs + 10*(iparmno - 1) + 1); Osxpbd =tag0 * *(ckt->CKTstate1 + here->MOS3sensxpbd + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS3sensxpbd + 10*(iparmno - 1) + 1); Osxpgb = tag0 * *(ckt->CKTstate1 + here->MOS3sensxpgb + 10*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->MOS3sensxpgb + 10*(iparmno - 1) + 1); #ifdef SENSDEBUG printf("iparmno=%d\n",iparmno); printf("sxpgs=%.7e,sdgs=%.7e\n", *(ckt->CKTstate1 + here->MOS3sensxpgs + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS3sensxpgs + 10*(iparmno - 1) + 1)); printf("sxpgd=%.7e,sdgd=%.7e\n", *(ckt->CKTstate1 + here->MOS3sensxpgd + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS3sensxpgd + 10*(iparmno - 1) + 1)); printf("sxpbs=%.7e,sdbs=%.7e\n", *(ckt->CKTstate1 + here->MOS3sensxpbs + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS3sensxpbs + 10*(iparmno - 1) + 1)); printf("sxpbd=%.7e,sdbd=%.7e\n", *(ckt->CKTstate1 + here->MOS3sensxpbd + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS3sensxpbd + 10*(iparmno - 1) + 1)); printf("sxpgb=%.7e,sdgb=%.7e\n", *(ckt->CKTstate1 + here->MOS3sensxpgb + 10*(iparmno - 1)), *(ckt->CKTstate1 + here->MOS3sensxpgb + 10*(iparmno - 1) + 1)); printf("before loading DqDp\n"); printf("Osxpgs=%.7e,Osxpgd=%.7e\n",Osxpgs,Osxpgd); printf("Osxpbs=%.7e,Osxpbd=%.7e,Osxpgb=%.7e\n", Osxpbs,Osxpbd,Osxpgb); printf("\n"); #endif /* SENSDEBUG */ if(here->MOS3sens_l && (iparmno == here->MOS3senParmNo)){ Osxpgs -= tag0 * *(here->MOS3dphigs_dl); Osxpgd -= tag0 * *(here->MOS3dphigd_dl); Osxpbs -= tag0 * *(here->MOS3dphibs_dl); Osxpbd -= tag0 * *(here->MOS3dphibd_dl); Osxpgb -= tag0 * *(here->MOS3dphigb_dl); } if(here->MOS3sens_w && (iparmno == (here->MOS3senParmNo + here->MOS3sens_l))){ Osxpgs -= tag0 * *(here->MOS3dphigs_dw); Osxpgd -= tag0 * *(here->MOS3dphigd_dw); Osxpbs -= tag0 * *(here->MOS3dphibs_dw); Osxpbd -= tag0 * *(here->MOS3dphibd_dw); Osxpgb -= tag0 * *(here->MOS3dphigb_dw); } #ifdef SENSDEBUG printf("after loading DqDp\n"); printf("DqgsDp=%.7e",DqgsDp); printf("Osxpgs=%.7e,Osxpgd=%.7e\n",Osxpgs,Osxpgd); printf("Osxpbs=%.7e,Osxpbd=%.7e,Osxpgb=%.7e\n", Osxpbs,Osxpbd,Osxpgb); #endif /* SENSDEBUG */ *(info->SEN_RHS[here->MOS3bNode] + iparmno) += Osxpbs + Osxpbd -Osxpgb; *(info->SEN_RHS[here->MOS3gNode] + iparmno) += Osxpgs + Osxpgd + Osxpgb; *(info->SEN_RHS[here->MOS3dNodePrime] + iparmno) -= Osxpgd + Osxpbd ; *(info->SEN_RHS[here->MOS3sNodePrime] + iparmno) -= Osxpgs + Osxpbs; #ifdef SENSDEBUG printf("after capacitive currents\n"); printf("DcbDp=%.7e\n", *(info->SEN_RHS[here->MOS3bNode] + iparmno)); printf("DcdprDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNode] + iparmno)); printf("DcdprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3dNodePrime] + iparmno)); printf("DcsprDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNode] + iparmno)); printf("DcsprmDp=%.7e\n", *(info->SEN_RHS[here->MOS3sNodePrime] + iparmno)); #endif /* SENSDEBUG */ } restore: /* put the unperturbed values back into the state vector */ for(i=0; i <= 16; i++) *(ckt->CKTstate0 + here->MOS3states + i) = *(SaveState + i); here->MOS3sourceConductance = *(SaveState + 17) ; here->MOS3drainConductance = *(SaveState + 18) ; here->MOS3cd = *(SaveState + 19) ; here->MOS3cbs = *(SaveState + 20) ; here->MOS3cbd = *(SaveState + 21) ; here->MOS3gmbs = *(SaveState + 22) ; here->MOS3gm = *(SaveState + 23) ; here->MOS3gds = *(SaveState + 24) ; here->MOS3gbd = *(SaveState + 25) ; here->MOS3gbs = *(SaveState + 26) ; here->MOS3capbd = *(SaveState + 27) ; here->MOS3capbs = *(SaveState + 28) ; here->MOS3Cbd = *(SaveState + 29) ; here->MOS3Cbdsw = *(SaveState + 30) ; here->MOS3Cbs = *(SaveState + 31) ; here->MOS3Cbssw = *(SaveState + 32) ; here->MOS3f2d = *(SaveState + 33) ; here->MOS3f3d = *(SaveState + 34) ; here->MOS3f4d = *(SaveState + 35) ; here->MOS3f2s = *(SaveState + 36) ; here->MOS3f3s = *(SaveState + 37) ; here->MOS3f4s = *(SaveState + 38) ; here->MOS3cgs = *(SaveState + 39) ; here->MOS3cgd = *(SaveState + 40) ; here->MOS3cgb = *(SaveState + 41) ; here->MOS3vdsat = *(SaveState + 42) ; here->MOS3von = *(SaveState + 43) ; here->MOS3mode = save_mode ; here->MOS3senPertFlag = OFF; } } info->SENstatus = NORMAL; #ifdef SENSDEBUG printf("MOS3senload end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124061041171006440006700000000000011777770500302376500004600000003534spice3c1/spice3/dev/mos3/mos3sprint.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* Pretty print the sensitivity info for all the MOS3 * devices in the circuit. */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos3defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3sPrint.c $Revision: 1.2 $ on $Date: 88/07/22 05:11:02 $") void MOS3sPrint(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; printf("LEVEL 1 MOSFETS-----------------\n"); /* loop through all the MOS3 models */ for( ; model != NULL; model = model->MOS3nextModel ) { printf("Model name:%s\n",model->MOS3modName); /* loop through all the instances of the model */ for (here = model->MOS3instances; here != NULL ; here=here->MOS3nextInstance) { printf(" Instance name:%s\n",here->MOS3name); printf(" Drain, Gate , Source nodes: %s, %s ,%s\n", CKTnodName(ckt,here->MOS3dNode),CKTnodName(ckt,here->MOS3gNode), CKTnodName(ckt,here->MOS3sNode)); printf(" Length: %g ",here->MOS3l); printf(here->MOS3lGiven ? "(specified)\n" : "(default)\n"); printf(" Width: %g ",here->MOS3w); printf(here->MOS3wGiven ? "(specified)\n" : "(default)\n"); if(here->MOS3sens_l == 1){ printf(" MOS3senParmNo:l = %d ",here->MOS3senParmNo); } else{ printf(" MOS3senParmNo:l = 0 "); } if(here->MOS3sens_w == 1){ printf(" w = %d \n",here->MOS3senParmNo + here->MOS3sens_l); } else{ printf(" w = 0 \n"); } } } } 0707070124061041201006440006700000000000011777770500302376500004600000002601spice3c1/spice3/dev/mos3/mos3ssetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* loop through all the devices and * allocate parameter #s to design parameters */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos3defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3sSetup.c $Revision: 1.2 $ on $Date: 88/07/22 05:11:03 $") int MOS3sSetup(info,inModel) register SENstruct *info; GENmodel *inModel; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; /* loop through all the models */ for( ; model != NULL; model = model->MOS3nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS3instances; here != NULL ; here=here->MOS3nextInstance) { if(here->MOS3senParmNo){ if((here->MOS3sens_l)&&(here->MOS3sens_w)){ here->MOS3senParmNo = ++(info->SENparms); ++(info->SENparms);/* MOS has two design parameters */ } else{ here->MOS3senParmNo = ++(info->SENparms); } } here->MOS3senPertFlag = OFF; if((here->MOS3sens = (double *)MALLOC(72*sizeof(double))) == NULL) { return(E_NOMEM); } } } return(OK); } 0707070124061041211006440006700000000000011777770500302376500004700000015534spice3c1/spice3/dev/mos3/mos3supdate.c/* * Copyright (c) 1985 Thomas L. Quarles */ #ifndef LINT static char rcsid[] = "MOS3sUpdate.c $Revision: 1.2 $ on $Date: 88/07/22 05:11:04 $"; #endif #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos3defs.h" #include "util.h" #include "sperror.h" #include "suffix.h" int MOS3sUpdate(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; int iparmno; double sb; double sg; double sdprm; double ssprm; double sxpgs; double sxpgd; double sxpbs; double sxpbd; double sxpgb; double dummy1; double dummy2; SENstruct *info; if(ckt->CKTtime == 0) return(OK); info = ckt->CKTsenInfo; #ifdef SENSDEBUG printf("MOS3senupdate\n"); printf("CKTtime = %.5e\n",ckt->CKTtime); #endif /* SENSDEBUG */ sxpgs = 0; sxpgd = 0; sxpbs = 0; sxpbd = 0; sxpgb = 0; dummy1 = 0; dummy2 = 0; /* loop through all the MOS3 models */ for( ; model != NULL; model = model->MOS3nextModel ) { /* loop through all the instances of the model */ for (here = model->MOS3instances; here != NULL ; here=here->MOS3nextInstance) { #ifdef SENSDEBUG printf("senupdate instance name %s\n",here->MOS3name); printf("before loading\n"); printf("CKTag[0] = %.2e,CKTag[1] = %.2e\n", ckt->CKTag[0],ckt->CKTag[1]); printf("capgs = %.7e\n",here->MOS3cgs); printf("capgd = %.7e\n",here->MOS3cgd); printf("capgb = %.7e\n",here->MOS3cgb); printf("capbs = %.7e\n",here->MOS3capbs); printf("capbd = %.7e\n",here->MOS3capbd); #endif /* SENSDEBUG */ for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ sb = *(info->SEN_Sap[here->MOS3bNode] + iparmno); sg = *(info->SEN_Sap[here->MOS3gNode] + iparmno); ssprm = *(info->SEN_Sap[here->MOS3sNodePrime] + iparmno); sdprm = *(info->SEN_Sap[here->MOS3dNodePrime] + iparmno); #ifdef SENSDEBUG printf("iparmno = %d\n",iparmno); printf("sb = %.7e,sg = %.7e\n",sb,sg); printf("ssprm = %.7e,sdprm = %.7e\n",ssprm,sdprm); #endif /* SENSDEBUG */ sxpgs = (sg - ssprm) * here->MOS3cgs ; sxpgd = (sg - sdprm) * here->MOS3cgd ; sxpgb = (sg - sb) * here->MOS3cgb ; sxpbs = (sb - ssprm) * here->MOS3capbs ; sxpbd = (sb - sdprm) * here->MOS3capbd ; if(here->MOS3sens_l && (iparmno == here->MOS3senParmNo)){ sxpgs += *(here->MOS3dphigs_dl); sxpgd += *(here->MOS3dphigd_dl); sxpbs += *(here->MOS3dphibs_dl); sxpbd += *(here->MOS3dphibd_dl); sxpgb += *(here->MOS3dphigb_dl); } if(here->MOS3sens_w && (iparmno == (here->MOS3senParmNo+here->MOS3sens_l))){ sxpgs += *(here->MOS3dphigs_dw); sxpgd += *(here->MOS3dphigd_dw); sxpbs += *(here->MOS3dphibs_dw); sxpbd += *(here->MOS3dphibd_dw); sxpgb += *(here->MOS3dphigb_dw); } if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->MOS3sensxpgs + 10 * (iparmno - 1)) = sxpgs; *(ckt->CKTstate1 + here->MOS3sensxpgd + 10 * (iparmno - 1)) = sxpgd; *(ckt->CKTstate1 + here->MOS3sensxpbs + 10 * (iparmno - 1)) = sxpbs; *(ckt->CKTstate1 + here->MOS3sensxpbd + 10 * (iparmno - 1)) = sxpbd; *(ckt->CKTstate1 + here->MOS3sensxpgb + 10 * (iparmno - 1)) = sxpgb; *(ckt->CKTstate1 + here->MOS3sensxpgs + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS3sensxpgd + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS3sensxpbs + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS3sensxpbd + 10 * (iparmno - 1) + 1) = 0; *(ckt->CKTstate1 + here->MOS3sensxpgb + 10 * (iparmno - 1) + 1) = 0; goto next; } *(ckt->CKTstate0 + here->MOS3sensxpgs + 10 * (iparmno - 1)) = sxpgs; *(ckt->CKTstate0 + here->MOS3sensxpgd + 10 * (iparmno - 1)) = sxpgd; *(ckt->CKTstate0 + here->MOS3sensxpbs + 10 * (iparmno - 1)) = sxpbs; *(ckt->CKTstate0 + here->MOS3sensxpbd + 10 * (iparmno - 1)) = sxpbd; *(ckt->CKTstate0 + here->MOS3sensxpgb + 10 * (iparmno - 1)) = sxpgb; NIintegrate(ckt,&dummy1,&dummy2,here->MOS3cgs, here->MOS3sensxpgs + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS3cgd, here->MOS3sensxpgd + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS3cgb, here->MOS3sensxpgb + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS3capbs, here->MOS3sensxpbs + 10*(iparmno -1)); NIintegrate(ckt,&dummy1,&dummy2,here->MOS3capbd, here->MOS3sensxpbd + 10*(iparmno -1)); next: ; #ifdef SENSDEBUG printf("after loading\n"); printf("sxpgs = %.7e,sdotxpgs = %.7e\n", sxpgs,*(ckt->CKTstate0 + here->MOS3sensxpgs + 10 * (iparmno - 1) + 1)); printf("sxpgd = %.7e,sdotxpgd = %.7e\n", sxpgd,*(ckt->CKTstate0 + here->MOS3sensxpgd + 10 * (iparmno - 1) + 1)); printf("sxpgb = %.7e,sdotxpgb = %.7e\n", sxpgb,*(ckt->CKTstate0 + here->MOS3sensxpgb + 10 * (iparmno - 1) + 1)); printf("sxpbs = %.7e,sdotxpbs = %.7e\n", sxpbs,*(ckt->CKTstate0 + here->MOS3sensxpbs + 10 * (iparmno - 1) + 1)); printf("sxpbd = %.7e,sdotxpbd = %.7e\n", sxpbd,*(ckt->CKTstate0 + here->MOS3sensxpbd + 10 * (iparmno - 1) + 1)); #endif /* SENSDEBUG */ } } } #ifdef SENSDEBUG printf("MOS3senupdate end\n"); #endif /* SENSDEBUG */ return(OK); } 0707070124061041221006440006700000000000011777770500302376600004500000020106spice3c1/spice3/dev/mos3/mos3setup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "smpdefs.h" #include "cktdefs.h" #include "mos3defs.h" #include "util.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3setup.c $Revision: 1.6 $ on $Date: 88/11/16 23:23:16 $") /* assuming silicon - make definition for epsilon of silicon */ #define EPSSIL (11.7 * 8.854214871e-12) int MOS3setup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; register CKTcircuit *ckt; int *states; /* load the MOS3 device structure with those pointers needed later * for fast matrix loading */ { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; int error; CKTnode *tmp; char *nametemp; /* loop through all the MOS3 device models */ for( ; model != NULL; model = model->MOS3nextModel ) { /* perform model defaulting */ if(!model->MOS3typeGiven) { model->MOS3type = NMOS; } if(!model->MOS3latDiffGiven) { model->MOS3latDiff = 0; } if(!model->MOS3jctSatCurDensityGiven) { model->MOS3jctSatCurDensity = 0; } if(!model->MOS3jctSatCurGiven) { model->MOS3jctSatCur = 1e-14; } if(!model->MOS3drainResistanceGiven) { model->MOS3drainResistance = 0; } if(!model->MOS3sourceResistanceGiven) { model->MOS3sourceResistance = 0; } if(!model->MOS3sheetResistanceGiven) { model->MOS3sheetResistance = 0; } if(!model->MOS3transconductanceGiven) { model->MOS3transconductance = 2e-5; } if(!model->MOS3gateSourceOverlapCapFactorGiven) { model->MOS3gateSourceOverlapCapFactor = 0; } if(!model->MOS3gateDrainOverlapCapFactorGiven) { model->MOS3gateDrainOverlapCapFactor = 0; } if(!model->MOS3gateBulkOverlapCapFactorGiven) { model->MOS3gateBulkOverlapCapFactor = 0; } if(!model->MOS3vt0Given) { model->MOS3vt0 = 0; } if(!model->MOS3capBDGiven) { model->MOS3capBD = 0; } if(!model->MOS3capBSGiven) { model->MOS3capBS = 0; } if(!model->MOS3bulkCapFactorGiven) { model->MOS3bulkCapFactor = 0; } if(!model->MOS3sideWallCapFactorGiven) { model->MOS3sideWallCapFactor = 0; } if(!model->MOS3bulkJctPotentialGiven) { model->MOS3bulkJctPotential = .8; } if(!model->MOS3bulkJctBotGradingCoeffGiven) { model->MOS3bulkJctBotGradingCoeff = .5; } if(!model->MOS3bulkJctSideGradingCoeffGiven) { model->MOS3bulkJctSideGradingCoeff = .33; } if(!model->MOS3fwdCapDepCoeffGiven) { model->MOS3fwdCapDepCoeff = .5; } if(!model->MOS3phiGiven) { model->MOS3phi = .6; } if(!model->MOS3gammaGiven) { model->MOS3gamma = 0; } if(!model->MOS3deltaGiven) { model->MOS3delta = 0; } if(!model->MOS3maxDriftVelGiven) { model->MOS3maxDriftVel = 0; } if(!model->MOS3junctionDepthGiven) { model->MOS3junctionDepth = 0; } if(!model->MOS3fastSurfaceStateDensityGiven) { model->MOS3fastSurfaceStateDensity = 0; } if(!model->MOS3etaGiven) { model->MOS3eta = 0; } if(!model->MOS3thetaGiven) { model->MOS3theta = 0; } if(!model->MOS3kappaGiven) { model->MOS3kappa = .2; } if(!model->MOS3oxideThicknessGiven) { model->MOS3oxideThickness = 1e-7; } /* loop through all the instances of the model */ for (here = model->MOS3instances; here != NULL ; here=here->MOS3nextInstance) { /* allocate a chunk of the state vector */ here->MOS3states = *states; *states += MOS3NUMSTATES; if(!here->MOS3drainAreaGiven) { here->MOS3drainArea = ckt->CKTdefaultMosAD; } if(!here->MOS3drainPerimiterGiven) { here->MOS3drainPerimiter = 0; } if(!here->MOS3drainSquaresGiven) { here->MOS3drainSquares = 1; } if(!here->MOS3icVBSGiven) { here->MOS3icVBS = 0; } if(!here->MOS3icVDSGiven) { here->MOS3icVDS = 0; } if(!here->MOS3icVGSGiven) { here->MOS3icVGS = 0; } if(!here->MOS3sourcePerimiterGiven) { here->MOS3sourcePerimiter = 0; } if(!here->MOS3sourceSquaresGiven) { here->MOS3sourceSquares = 1; } if(!here->MOS3vdsatGiven) { here->MOS3vdsat = 0; } if(!here->MOS3vonGiven) { here->MOS3von = 0; } if(!here->MOS3modeGiven) { here->MOS3mode = 1; } if((model->MOS3drainResistance != 0 || (model->MOS3sheetResistance != 0 && here->MOS3drainSquares != 0 ) ) && here->MOS3dNodePrime==0) { nametemp = (char *) MALLOC((strlen(here->MOS3name)+17)*sizeof(char)); if(nametemp==(char *)NULL) return(E_NOMEM); (void)sprintf(nametemp,"%s#internal#drain",here->MOS3name); error = CKTmkVolt(ckt,&tmp,nametemp,(char *)NULL); if(error) return(error); here->MOS3dNodePrime = tmp->number; } else { here->MOS3dNodePrime = here->MOS3dNode; } if((model->MOS3sourceResistance != 0 || (model->MOS3sheetResistance != 0 && here->MOS3sourceSquares != 0 ) ) && here->MOS3sNodePrime==0) { nametemp = (char *) MALLOC((strlen(here->MOS3name)+18)*sizeof(char)); if(nametemp==(char *)NULL) return(E_NOMEM); (void)sprintf(nametemp,"%s#internal#source",here->MOS3name); error = CKTmkVolt(ckt,&tmp,nametemp,(char *)NULL); if(error) return(error); here->MOS3sNodePrime = tmp->number; } else { here->MOS3sNodePrime = here->MOS3sNode; } /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(MOS3DdPtr, MOS3dNode, MOS3dNode) TSTALLOC(MOS3GgPtr, MOS3gNode, MOS3gNode) TSTALLOC(MOS3SsPtr, MOS3sNode, MOS3sNode) TSTALLOC(MOS3BbPtr, MOS3bNode, MOS3bNode) TSTALLOC(MOS3DPdpPtr, MOS3dNodePrime, MOS3dNodePrime) TSTALLOC(MOS3SPspPtr, MOS3sNodePrime, MOS3sNodePrime) TSTALLOC(MOS3DdpPtr, MOS3dNode, MOS3dNodePrime) TSTALLOC(MOS3GbPtr, MOS3gNode, MOS3bNode) TSTALLOC(MOS3GdpPtr, MOS3gNode, MOS3dNodePrime) TSTALLOC(MOS3GspPtr, MOS3gNode, MOS3sNodePrime) TSTALLOC(MOS3SspPtr, MOS3sNode, MOS3sNodePrime) TSTALLOC(MOS3BdpPtr, MOS3bNode, MOS3dNodePrime) TSTALLOC(MOS3BspPtr, MOS3bNode, MOS3sNodePrime) TSTALLOC(MOS3DPspPtr, MOS3dNodePrime, MOS3sNodePrime) TSTALLOC(MOS3DPdPtr, MOS3dNodePrime, MOS3dNode) TSTALLOC(MOS3BgPtr, MOS3bNode, MOS3gNode) TSTALLOC(MOS3DPgPtr, MOS3dNodePrime, MOS3gNode) TSTALLOC(MOS3SPgPtr, MOS3sNodePrime, MOS3gNode) TSTALLOC(MOS3SPsPtr, MOS3sNodePrime, MOS3sNode) TSTALLOC(MOS3DPbPtr, MOS3dNodePrime, MOS3bNode) TSTALLOC(MOS3SPbPtr, MOS3sNodePrime, MOS3bNode) TSTALLOC(MOS3SPdpPtr, MOS3sNodePrime, MOS3dNodePrime) } } return(OK); } 0707070124061041231006440006700000000000011777770500302376600004400000032547spice3c1/spice3/dev/mos3/mos3temp.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "mos3defs.h" #include "util.h" #include "const.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3temp.c $Revision: 1.4 $ on $Date: 88/07/22 05:11:07 $") /* assuming silicon - make definition for epsilon of silicon */ #define EPSSIL (11.7 * 8.854214871e-12) int MOS3temp(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; double wkfngs; double wkfng; double fermig; double fermis; double vfb; double fact1,fact2; double vt,vtnom; double kt,kt1; double ratio,ratio4; double egfet,egfet1; double pbfact,pbfact1,pbo; double phio; double arg1; double capfact; double gmanew,gmaold; /* loop through all the mosfet models */ for( ; model != NULL; model = model->MOS3nextModel) { if(!model->MOS3tnomGiven) { model->MOS3tnom = ckt->CKTnomTemp; } fact1 = model->MOS3tnom/REFTEMP; vtnom = model->MOS3tnom*CONSTKoverQ; kt1 = CONSTboltz * model->MOS3tnom; egfet1 = 1.16-(7.02e-4*model->MOS3tnom*model->MOS3tnom)/ (model->MOS3tnom+1108); arg1 = -egfet1/(kt1+kt1)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact1 = -2*vtnom *(1.5*log(fact1)+CHARGE*arg1); model->MOS3oxideCapFactor = 3.9 * 8.854214871e-12/ model->MOS3oxideThickness; if(!model->MOS3surfaceMobilityGiven) model->MOS3surfaceMobility=600; if(!model->MOS3transconductanceGiven) { model->MOS3transconductance = model->MOS3surfaceMobility * model->MOS3oxideCapFactor * 1e-4; } if(model->MOS3substrateDopingGiven) { if(model->MOS3substrateDoping*1e6 /*(cm**3/m**3)*/ >1.45e16) { if(!model->MOS3phiGiven) { model->MOS3phi = 2*vtnom* log(model->MOS3substrateDoping* 1e6/*(cm**3/m**3)*//1.45e16); model->MOS3phi = MAX(.1,model->MOS3phi); } fermis = model->MOS3type * .5 * model->MOS3phi; wkfng = 3.2; if(!model->MOS3gateTypeGiven) model->MOS3gateType=1; if(model->MOS3gateType != 0) { fermig = model->MOS3type * model->MOS3gateType*.5*egfet1; wkfng = 3.25 + .5 * egfet1 - fermig; } wkfngs = wkfng - (3.25 + .5 * egfet1 +fermis); if(!model->MOS3gammaGiven) { model->MOS3gamma = sqrt(2 * EPSSIL * CHARGE * model->MOS3substrateDoping* 1e6 /*(cm**3/m**3)*/ )/ model->MOS3oxideCapFactor; } if(!model->MOS3vt0Given) { if(!model->MOS3surfaceStateDensityGiven) model->MOS3surfaceStateDensity=0; vfb = wkfngs - model->MOS3surfaceStateDensity * 1e4 * CHARGE/model->MOS3oxideCapFactor; model->MOS3vt0 = vfb + model->MOS3type * (model->MOS3gamma * sqrt(model->MOS3phi)+ model->MOS3phi); } else { vfb = model->MOS3vt0 - model->MOS3type * (model->MOS3gamma* sqrt(model->MOS3phi)+model->MOS3phi); } model->MOS3alpha = (EPSSIL+EPSSIL)/ (CHARGE*model->MOS3substrateDoping*1e6 /*(cm**3/m**3)*/ ); model->MOS3coeffDepLayWidth = sqrt(model->MOS3alpha); } else { model->MOS3substrateDoping = 0; (*(SPfrontEnd->IFerror))(ERR_FATAL, "%s: Nsub < Ni ",&(model->MOS3modName)); return(E_BADPARM); } } /* now model parameter preprocessing */ model->MOS3narrowFactor = model->MOS3delta * .5 * PI * EPSSIL / model->MOS3oxideCapFactor ; /* loop through all instances of the model */ for(here = model->MOS3instances; here!= NULL; here = here->MOS3nextInstance) { double czbd; /* zero voltage bulk-drain capacitance */ double czbdsw; /* zero voltage bulk-drain sidewall capacitance */ double czbs; /* zero voltage bulk-source capacitance */ double czbssw; /* zero voltage bulk-source sidewall capacitance */ double arg; /* 1 - fc */ double sarg; /* (1-fc) ^^ (-mj) */ double sargsw; /* (1-fc) ^^ (-mjsw) */ /* perform the parameter defaulting */ if(!here->MOS3tempGiven) { here->MOS3temp = ckt->CKTtemp; } vt = here->MOS3temp * CONSTKoverQ; ratio = here->MOS3temp/model->MOS3tnom; fact2 = here->MOS3temp/REFTEMP; kt = here->MOS3temp * CONSTboltz; egfet = 1.16-(7.02e-4*here->MOS3temp*here->MOS3temp)/ (here->MOS3temp+1108); arg = -egfet/(kt+kt)+1.1150877/(CONSTboltz*(REFTEMP+REFTEMP)); pbfact = -2*vt *(1.5*log(fact2)+CHARGE*arg); if(!here->MOS3lGiven) { here->MOS3l = ckt->CKTdefaultMosL; } if(!here->MOS3sourceAreaGiven) { here->MOS3sourceArea = ckt->CKTdefaultMosAS; } if(!here->MOS3wGiven) { here->MOS3w = ckt->CKTdefaultMosW; } if(model->MOS3drainResistanceGiven) { if(model->MOS3drainResistance != 0) { here->MOS3drainConductance = 1/model->MOS3drainResistance; } else { here->MOS3drainConductance = 0; } } else if (model->MOS3sheetResistanceGiven) { if(model->MOS3sheetResistance != 0) { here->MOS3drainConductance = 1/(model->MOS3sheetResistance*here->MOS3drainSquares); } else { here->MOS3drainConductance = 0; } } else { here->MOS3drainConductance = 0; } if(model->MOS3sourceResistanceGiven) { if(model->MOS3sourceResistance != 0) { here->MOS3sourceConductance = 1/model->MOS3sourceResistance; } else { here->MOS3sourceConductance = 0; } } else if (model->MOS3sheetResistanceGiven) { if(model->MOS3sheetResistance != 0) { here->MOS3sourceConductance = 1/(model->MOS3sheetResistance*here->MOS3sourceSquares); } else { here->MOS3sourceConductance = 0; } } else { here->MOS3sourceConductance = 0; } if(here->MOS3l - 2 * model->MOS3latDiff <=0) { (*(SPfrontEnd->IFerror))(ERR_FATAL, "%s: effective channel length less than zero", &(here->MOS3name)); return(E_BADPARM); } ratio4 = ratio * sqrt(ratio); here->MOS3tTransconductance = model->MOS3transconductance / ratio4; here->MOS3tSurfMob = model->MOS3surfaceMobility/ratio4; phio= (model->MOS3phi-pbfact1)/fact1; here->MOS3tPhi = fact2 * phio + pbfact; here->MOS3tVbi = model->MOS3vt0 - model->MOS3type * (model->MOS3gamma* sqrt(model->MOS3phi)) +.5*(egfet1-egfet) + model->MOS3type*.5* (here->MOS3tPhi-model->MOS3phi); here->MOS3tVto = here->MOS3tVbi + model->MOS3type * model->MOS3gamma * sqrt(here->MOS3tPhi); here->MOS3tSatCur = model->MOS3jctSatCur* exp(-egfet/vt+egfet1/vtnom); here->MOS3tSatCurDens = model->MOS3jctSatCurDensity * exp(-egfet/vt+egfet1/vtnom); pbo = (model->MOS3bulkJctPotential - pbfact1)/fact1; gmaold = (model->MOS3bulkJctPotential-pbo)/pbo; capfact = 1/(1+model->MOS3bulkJctBotGradingCoeff* (4e-4*(model->MOS3tnom-REFTEMP)-gmaold)); here->MOS3tCbd = model->MOS3capBD * capfact; here->MOS3tCbs = model->MOS3capBS * capfact; here->MOS3tCj = model->MOS3bulkCapFactor * capfact; capfact = 1/(1+model->MOS3bulkJctSideGradingCoeff* (4e-4*(model->MOS3tnom-REFTEMP)-gmaold)); here->MOS3tCjsw = model->MOS3sideWallCapFactor * capfact; here->MOS3tBulkPot = fact2 * pbo+pbfact; gmanew = (here->MOS3tBulkPot-pbo)/pbo; capfact = (1+model->MOS3bulkJctBotGradingCoeff* (4e-4*(here->MOS3temp-REFTEMP)-gmanew)); here->MOS3tCbd *= capfact; here->MOS3tCbs *= capfact; here->MOS3tCj *= capfact; capfact = (1+model->MOS3bulkJctSideGradingCoeff* (4e-4*(here->MOS3temp-REFTEMP)-gmanew)); here->MOS3tCjsw *= capfact; here->MOS3tDepCap = model->MOS3fwdCapDepCoeff * here->MOS3tBulkPot; if( (model->MOS3jctSatCurDensity == 0) || (here->MOS3drainArea == 0) || (here->MOS3sourceArea == 0) ) { here->MOS3sourceVcrit = here->MOS3drainVcrit = vt*log(vt/(CONSTroot2*model->MOS3jctSatCur)); } else { here->MOS3drainVcrit = vt * log( vt / (CONSTroot2 * model->MOS3jctSatCurDensity * here->MOS3drainArea)); here->MOS3sourceVcrit = vt * log( vt / (CONSTroot2 * model->MOS3jctSatCurDensity * here->MOS3sourceArea)); } if(model->MOS3capBDGiven) { czbd = here->MOS3tCbd; } else { if(model->MOS3bulkCapFactorGiven) { czbd=here->MOS3tCj*here->MOS3drainArea; } else { czbd=0; } } if(model->MOS3sideWallCapFactorGiven) { czbdsw= here->MOS3tCjsw * here->MOS3drainPerimiter; } else { czbdsw=0; } arg = 1-model->MOS3fwdCapDepCoeff; sarg = exp( (-model->MOS3bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS3bulkJctSideGradingCoeff) * log(arg) ); here->MOS3Cbd = czbd; here->MOS3Cbdsw = czbdsw; here->MOS3f2d = czbd*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctBotGradingCoeff))* sarg/arg + czbdsw*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctSideGradingCoeff))* sargsw/arg; here->MOS3f3d = czbd * model->MOS3bulkJctBotGradingCoeff * sarg/arg/ model->MOS3bulkJctPotential + czbdsw * model->MOS3bulkJctSideGradingCoeff * sargsw/arg / model->MOS3bulkJctPotential; here->MOS3f4d = czbd*model->MOS3bulkJctPotential*(1-arg*sarg)/ (1-model->MOS3bulkJctBotGradingCoeff) + czbdsw*model->MOS3bulkJctPotential*(1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff) -here->MOS3f3d/2* (here->MOS3tDepCap*here->MOS3tDepCap) -here->MOS3tDepCap * here->MOS3f2d; if(model->MOS3capBSGiven) { czbs=here->MOS3tCbs; } else { if(model->MOS3bulkCapFactorGiven) { czbs=here->MOS3tCj*here->MOS3sourceArea; } else { czbs=0; } } if(model->MOS3sideWallCapFactorGiven) { czbssw = here->MOS3tCjsw * here->MOS3sourcePerimiter; } else { czbssw=0; } arg = 1-model->MOS3fwdCapDepCoeff; sarg = exp( (-model->MOS3bulkJctBotGradingCoeff) * log(arg) ); sargsw = exp( (-model->MOS3bulkJctSideGradingCoeff) * log(arg) ); here->MOS3Cbs = czbs; here->MOS3Cbssw = czbssw; here->MOS3f2s = czbs*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctBotGradingCoeff))* sarg/arg + czbssw*(1-model->MOS3fwdCapDepCoeff* (1+model->MOS3bulkJctSideGradingCoeff))* sargsw/arg; here->MOS3f3s = czbs * model->MOS3bulkJctBotGradingCoeff * sarg/arg/ model->MOS3bulkJctPotential + czbssw * model->MOS3bulkJctSideGradingCoeff * sargsw/arg / model->MOS3bulkJctPotential; here->MOS3f4s = czbs*model->MOS3bulkJctPotential*(1-arg*sarg)/ (1-model->MOS3bulkJctBotGradingCoeff) + czbssw*model->MOS3bulkJctPotential*(1-arg*sargsw)/ (1-model->MOS3bulkJctSideGradingCoeff) -here->MOS3f3s/2* (here->MOS3tBulkPot*here->MOS3tBulkPot) -here->MOS3tBulkPot * here->MOS3f2s; } } return(OK); } 0707070124061041241006440006700000000000011777770500302376600004500000001372spice3c1/spice3/dev/mos3/mos3trunc.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos3defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS3trunc.c $Revision: 1.4 $ on $Date: 88/07/22 05:11:11 $") int MOS3trunc(inModel,ckt,timeStep) GENmodel *inModel; register CKTcircuit *ckt; double *timeStep; { register MOS3model *model = (MOS3model *)inModel; register MOS3instance *here; for( ; model != NULL; model = model->MOS3nextModel) { for(here=model->MOS3instances;here!=NULL;here = here->MOS3nextInstance){ CKTterr(here->MOS3qgs,ckt,timeStep); CKTterr(here->MOS3qgd,ckt,timeStep); CKTterr(here->MOS3qgb,ckt,timeStep); } } return(OK); } 0707070124061041251006440006700000000000011777770500302376700004300000002201spice3c1/spice3/dev/mos3/msc51.batcl /I..\..\include\ /c MOS3.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3acLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3ask.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3convTest.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3delete.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3destroy.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3getic.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3load.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3mAsk.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3mDelete.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3mParam.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3param.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3pzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3sAcLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3sLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3sPrint.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3sSetup.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3sUpdate.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3setup.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3temp.c >> ..\..\errs.out cl /I..\..\include\ /c MOS3trunc.c >> ..\..\errs.out lib ..\..\DEV3.lib @RESPONSE.LIB 0707070124061041261006440006700000000000011777770500302376700004600000000466spice3c1/spice3/dev/mos3/response.lib+MOS3.OBJ& +MOS3ACLO.OBJ& +MOS3ASK.OBJ& +MOS3CONV.OBJ& +MOS3DELE.OBJ& +MOS3DEST.OBJ& +MOS3GETI.OBJ& +MOS3LOAD.OBJ& +MOS3MASK.OBJ& +MOS3MDEL.OBJ& +MOS3MPAR.OBJ& +MOS3PARA.OBJ& +MOS3PZLO.OBJ& +MOS3SACL.OBJ& +MOS3SLOA.OBJ& +MOS3SPRI.OBJ& +MOS3SSET.OBJ& +MOS3SUPD.OBJ& +MOS3SETU.OBJ& +MOS3TEMP.OBJ& +MOS3TRUN.OBJ; 0707070124061041271006440006700000000000011777770500302376700004200000001564spice3c1/spice3/dev/mos3/make.com$ cc /nowarn MOS3 $ cc /nowarn MOS3acLoad $ cc /nowarn MOS3ask $ cc /nowarn MOS3convTest $ cc /nowarn MOS3delete $ cc /nowarn MOS3destroy $ cc /nowarn MOS3getic $ cc /nowarn MOS3load $ cc /nowarn MOS3mAsk $ cc /nowarn MOS3mDelete $ cc /nowarn MOS3mParam $ cc /nowarn MOS3param $ cc /nowarn MOS3pzLoad $ cc /nowarn MOS3sAcLoad $ cc /nowarn MOS3sLoad $ cc /nowarn MOS3sPrint $ cc /nowarn MOS3sSetup $ cc /nowarn MOS3sUpdate $ cc /nowarn MOS3setup $ cc /nowarn MOS3temp $ cc /nowarn MOS3trunc $ library/object [-.-]DEV.olb - MOS3.obj, - MOS3acLoad.obj, - MOS3ask.obj, - MOS3convTest.obj, - MOS3delete.obj, - MOS3destroy.obj, - MOS3getic.obj, - MOS3load.obj, - MOS3mAsk.obj, - MOS3mDelete.obj, - MOS3mParam.obj, - MOS3param.obj, - MOS3pzLoad.obj, - MOS3sAcLoad.obj, - MOS3sLoad.obj, - MOS3sPrint.obj, - MOS3sSetup.obj, - MOS3sUpdate.obj, - MOS3setup.obj, - MOS3temp.obj, - MOS3trunc.obj 0707070124061041301006440006700000000000011777770500302376700004200000040724spice3c1/spice3/dev/mos3/Makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ mos3.c\ mos3acload.c\ mos3ask.c\ mos3convtest.c\ mos3delete.c\ mos3destroy.c\ mos3getic.c\ mos3load.c\ mos3mask.c\ mos3mdelete.c\ mos3mparam.c\ mos3param.c\ mos3pzload.c\ mos3sacload.c\ mos3sload.c\ mos3sprint.c\ mos3ssetup.c\ mos3supdate.c\ mos3setup.c\ mos3temp.c\ mos3trunc.c COBJS = \ mos3.o\ mos3acload.o\ mos3ask.o\ mos3convtest.o\ mos3delete.o\ mos3destroy.o\ mos3getic.o\ mos3load.o\ mos3mask.o\ mos3mdelete.o\ mos3mparam.o\ mos3param.o\ mos3pzload.o\ mos3sacload.o\ mos3sload.o\ mos3sprint.o\ mos3ssetup.o\ mos3supdate.o\ mos3setup.o\ mos3temp.o\ mos3trunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS = -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c -if [ $* = mos3load ] ; \ then ${CC} ${PG} ${OFLAGS} ${INCLUDE} -c $*.c ; \ else ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c ; \ fi library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lmos3.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cmos3 ${LINTFLAGS} ${CFILES} mv llib-lmos3.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE mos3.o: ../../include/acdefs.h mos3.o: ../../include/cktdefs.h mos3.o: ../../include/devdefs.h mos3.o: ../../include/gendefs.h mos3.o: ../../include/ifsim.h mos3.o: ../../include/jobdefs.h mos3.o: ../../include/mos3defs.h mos3.o: ../../include/optdefs.h mos3.o: ../../include/pzdefs.h mos3.o: ../../include/sendefs.h mos3.o: ../../include/smpdefs.h mos3.o: ../../include/trcvdefs.h mos3.o: ../../include/tskdefs.h mos3.o: ../../include/complex.h mos3.o: ../../include/prefix.h mos3.o: ../../include/suffix.h mos3acload.o: ../../include/acdefs.h mos3acload.o: ../../include/cktdefs.h mos3acload.o: ../../include/gendefs.h mos3acload.o: ../../include/iferrmsgs.h mos3acload.o: ../../include/ifsim.h mos3acload.o: ../../include/jobdefs.h mos3acload.o: ../../include/mos3defs.h mos3acload.o: ../../include/optdefs.h mos3acload.o: ../../include/pzdefs.h mos3acload.o: ../../include/sendefs.h mos3acload.o: ../../include/smpdefs.h mos3acload.o: ../../include/sperror.h mos3acload.o: ../../include/trcvdefs.h mos3acload.o: ../../include/tskdefs.h mos3acload.o: ../../include/complex.h mos3acload.o: ../../include/prefix.h mos3acload.o: ../../include/suffix.h mos3ask.o: ../../include/acdefs.h mos3ask.o: ../../include/cktdefs.h mos3ask.o: ../../include/const.h mos3ask.o: ../../include/devdefs.h mos3ask.o: ../../include/gendefs.h mos3ask.o: ../../include/iferrmsgs.h mos3ask.o: ../../include/ifsim.h mos3ask.o: ../../include/jobdefs.h mos3ask.o: ../../include/mos3defs.h mos3ask.o: ../../include/optdefs.h mos3ask.o: ../../include/pzdefs.h mos3ask.o: ../../include/sendefs.h mos3ask.o: ../../include/smpdefs.h mos3ask.o: ../../include/sperror.h mos3ask.o: ../../include/trcvdefs.h mos3ask.o: ../../include/tskdefs.h mos3ask.o: ../../include/complex.h mos3ask.o: ../../include/prefix.h mos3ask.o: ../../include/suffix.h mos3ask.o: ../../include/util.h mos3convtest.o: ../../include/acdefs.h mos3convtest.o: ../../include/cktdefs.h mos3convtest.o: ../../include/gendefs.h mos3convtest.o: ../../include/iferrmsgs.h mos3convtest.o: ../../include/ifsim.h mos3convtest.o: ../../include/jobdefs.h mos3convtest.o: ../../include/mos3defs.h mos3convtest.o: ../../include/optdefs.h mos3convtest.o: ../../include/pzdefs.h mos3convtest.o: ../../include/sendefs.h mos3convtest.o: ../../include/smpdefs.h mos3convtest.o: ../../include/sperror.h mos3convtest.o: ../../include/trcvdefs.h mos3convtest.o: ../../include/tskdefs.h mos3convtest.o: ../../include/complex.h mos3convtest.o: ../../include/prefix.h mos3convtest.o: ../../include/suffix.h mos3convtest.o: ../../include/util.h mos3delete.o: ../../include/acdefs.h mos3delete.o: ../../include/cktdefs.h mos3delete.o: ../../include/gendefs.h mos3delete.o: ../../include/iferrmsgs.h mos3delete.o: ../../include/ifsim.h mos3delete.o: ../../include/jobdefs.h mos3delete.o: ../../include/mos3defs.h mos3delete.o: ../../include/optdefs.h mos3delete.o: ../../include/pzdefs.h mos3delete.o: ../../include/sendefs.h mos3delete.o: ../../include/smpdefs.h mos3delete.o: ../../include/sperror.h mos3delete.o: ../../include/trcvdefs.h mos3delete.o: ../../include/tskdefs.h mos3delete.o: ../../include/complex.h mos3delete.o: ../../include/prefix.h mos3delete.o: ../../include/suffix.h mos3delete.o: ../../include/util.h mos3destroy.o: ../../include/acdefs.h mos3destroy.o: ../../include/cktdefs.h mos3destroy.o: ../../include/gendefs.h mos3destroy.o: ../../include/ifsim.h mos3destroy.o: ../../include/jobdefs.h mos3destroy.o: ../../include/mos3defs.h mos3destroy.o: ../../include/optdefs.h mos3destroy.o: ../../include/pzdefs.h mos3destroy.o: ../../include/sendefs.h mos3destroy.o: ../../include/smpdefs.h mos3destroy.o: ../../include/trcvdefs.h mos3destroy.o: ../../include/tskdefs.h mos3destroy.o: ../../include/complex.h mos3destroy.o: ../../include/prefix.h mos3destroy.o: ../../include/suffix.h mos3destroy.o: ../../include/util.h mos3getic.o: ../../include/acdefs.h mos3getic.o: ../../include/cktdefs.h mos3getic.o: ../../include/gendefs.h mos3getic.o: ../../include/iferrmsgs.h mos3getic.o: ../../include/ifsim.h mos3getic.o: ../../include/jobdefs.h mos3getic.o: ../../include/mos3defs.h mos3getic.o: ../../include/optdefs.h mos3getic.o: ../../include/pzdefs.h mos3getic.o: ../../include/sendefs.h mos3getic.o: ../../include/smpdefs.h mos3getic.o: ../../include/sperror.h mos3getic.o: ../../include/trcvdefs.h mos3getic.o: ../../include/tskdefs.h mos3getic.o: ../../include/complex.h mos3getic.o: ../../include/prefix.h mos3getic.o: ../../include/suffix.h mos3load.o: ../../include/acdefs.h mos3load.o: ../../include/cktdefs.h mos3load.o: ../../include/const.h mos3load.o: ../../include/devdefs.h mos3load.o: ../../include/gendefs.h mos3load.o: ../../include/iferrmsgs.h mos3load.o: ../../include/ifsim.h mos3load.o: ../../include/jobdefs.h mos3load.o: ../../include/mos3defs.h mos3load.o: ../../include/optdefs.h mos3load.o: ../../include/pzdefs.h mos3load.o: ../../include/sendefs.h mos3load.o: ../../include/smpdefs.h mos3load.o: ../../include/sperror.h mos3load.o: ../../include/trandefs.h mos3load.o: ../../include/trcvdefs.h mos3load.o: ../../include/tskdefs.h mos3load.o: ../../include/complex.h mos3load.o: ../../include/prefix.h mos3load.o: ../../include/suffix.h mos3load.o: ../../include/util.h mos3mask.o: ../../include/acdefs.h mos3mask.o: ../../include/cktdefs.h mos3mask.o: ../../include/const.h mos3mask.o: ../../include/devdefs.h mos3mask.o: ../../include/gendefs.h mos3mask.o: ../../include/iferrmsgs.h mos3mask.o: ../../include/ifsim.h mos3mask.o: ../../include/jobdefs.h mos3mask.o: ../../include/mos3defs.h mos3mask.o: ../../include/optdefs.h mos3mask.o: ../../include/pzdefs.h mos3mask.o: ../../include/sendefs.h mos3mask.o: ../../include/smpdefs.h mos3mask.o: ../../include/sperror.h mos3mask.o: ../../include/trcvdefs.h mos3mask.o: ../../include/tskdefs.h mos3mask.o: ../../include/complex.h mos3mask.o: ../../include/prefix.h mos3mask.o: ../../include/suffix.h mos3mdelete.o: ../../include/acdefs.h mos3mdelete.o: ../../include/cktdefs.h mos3mdelete.o: ../../include/gendefs.h mos3mdelete.o: ../../include/iferrmsgs.h mos3mdelete.o: ../../include/ifsim.h mos3mdelete.o: ../../include/jobdefs.h mos3mdelete.o: ../../include/mos3defs.h mos3mdelete.o: ../../include/optdefs.h mos3mdelete.o: ../../include/pzdefs.h mos3mdelete.o: ../../include/sendefs.h mos3mdelete.o: ../../include/smpdefs.h mos3mdelete.o: ../../include/sperror.h mos3mdelete.o: ../../include/trcvdefs.h mos3mdelete.o: ../../include/tskdefs.h mos3mdelete.o: ../../include/complex.h mos3mdelete.o: ../../include/prefix.h mos3mdelete.o: ../../include/suffix.h mos3mdelete.o: ../../include/util.h mos3mparam.o: ../../include/acdefs.h mos3mparam.o: ../../include/cktdefs.h mos3mparam.o: ../../include/const.h mos3mparam.o: ../../include/gendefs.h mos3mparam.o: ../../include/iferrmsgs.h mos3mparam.o: ../../include/ifsim.h mos3mparam.o: ../../include/jobdefs.h mos3mparam.o: ../../include/mos3defs.h mos3mparam.o: ../../include/optdefs.h mos3mparam.o: ../../include/pzdefs.h mos3mparam.o: ../../include/sendefs.h mos3mparam.o: ../../include/smpdefs.h mos3mparam.o: ../../include/sperror.h mos3mparam.o: ../../include/trcvdefs.h mos3mparam.o: ../../include/tskdefs.h mos3mparam.o: ../../include/complex.h mos3mparam.o: ../../include/prefix.h mos3mparam.o: ../../include/suffix.h mos3mparam.o: ../../include/util.h mos3param.o: ../../include/acdefs.h mos3param.o: ../../include/cktdefs.h mos3param.o: ../../include/const.h mos3param.o: ../../include/gendefs.h mos3param.o: ../../include/iferrmsgs.h mos3param.o: ../../include/ifsim.h mos3param.o: ../../include/jobdefs.h mos3param.o: ../../include/mos3defs.h mos3param.o: ../../include/optdefs.h mos3param.o: ../../include/pzdefs.h mos3param.o: ../../include/sendefs.h mos3param.o: ../../include/smpdefs.h mos3param.o: ../../include/sperror.h mos3param.o: ../../include/trcvdefs.h mos3param.o: ../../include/tskdefs.h mos3param.o: ../../include/complex.h mos3param.o: ../../include/prefix.h mos3param.o: ../../include/suffix.h mos3param.o: ../../include/util.h mos3pzload.o: ../../include/acdefs.h mos3pzload.o: ../../include/cktdefs.h mos3pzload.o: ../../include/gendefs.h mos3pzload.o: ../../include/iferrmsgs.h mos3pzload.o: ../../include/ifsim.h mos3pzload.o: ../../include/jobdefs.h mos3pzload.o: ../../include/mos3defs.h mos3pzload.o: ../../include/optdefs.h mos3pzload.o: ../../include/pzdefs.h mos3pzload.o: ../../include/sendefs.h mos3pzload.o: ../../include/smpdefs.h mos3pzload.o: ../../include/sperror.h mos3pzload.o: ../../include/trcvdefs.h mos3pzload.o: ../../include/tskdefs.h mos3pzload.o: ../../include/complex.h mos3pzload.o: ../../include/prefix.h mos3pzload.o: ../../include/suffix.h mos3sacload.o: ../../include/acdefs.h mos3sacload.o: ../../include/cktdefs.h mos3sacload.o: ../../include/const.h mos3sacload.o: ../../include/gendefs.h mos3sacload.o: ../../include/iferrmsgs.h mos3sacload.o: ../../include/ifsim.h mos3sacload.o: ../../include/jobdefs.h mos3sacload.o: ../../include/mos3defs.h mos3sacload.o: ../../include/optdefs.h mos3sacload.o: ../../include/pzdefs.h mos3sacload.o: ../../include/sendefs.h mos3sacload.o: ../../include/smpdefs.h mos3sacload.o: ../../include/sperror.h mos3sacload.o: ../../include/trcvdefs.h mos3sacload.o: ../../include/tskdefs.h mos3sacload.o: ../../include/complex.h mos3sacload.o: ../../include/prefix.h mos3sacload.o: ../../include/suffix.h mos3sacload.o: ../../include/util.h mos3sload.o: ../../include/acdefs.h mos3sload.o: ../../include/cktdefs.h mos3sload.o: ../../include/gendefs.h mos3sload.o: ../../include/iferrmsgs.h mos3sload.o: ../../include/ifsim.h mos3sload.o: ../../include/jobdefs.h mos3sload.o: ../../include/mos3defs.h mos3sload.o: ../../include/optdefs.h mos3sload.o: ../../include/pzdefs.h mos3sload.o: ../../include/sendefs.h mos3sload.o: ../../include/smpdefs.h mos3sload.o: ../../include/sperror.h mos3sload.o: ../../include/trcvdefs.h mos3sload.o: ../../include/tskdefs.h mos3sload.o: ../../include/complex.h mos3sload.o: ../../include/prefix.h mos3sload.o: ../../include/suffix.h mos3sload.o: ../../include/util.h mos3sprint.o: ../../include/acdefs.h mos3sprint.o: ../../include/cktdefs.h mos3sprint.o: ../../include/gendefs.h mos3sprint.o: ../../include/iferrmsgs.h mos3sprint.o: ../../include/ifsim.h mos3sprint.o: ../../include/jobdefs.h mos3sprint.o: ../../include/mos3defs.h mos3sprint.o: ../../include/optdefs.h mos3sprint.o: ../../include/pzdefs.h mos3sprint.o: ../../include/sendefs.h mos3sprint.o: ../../include/smpdefs.h mos3sprint.o: ../../include/sperror.h mos3sprint.o: ../../include/trcvdefs.h mos3sprint.o: ../../include/tskdefs.h mos3sprint.o: ../../include/complex.h mos3sprint.o: ../../include/prefix.h mos3sprint.o: ../../include/suffix.h mos3sprint.o: ../../include/util.h mos3ssetup.o: ../../include/acdefs.h mos3ssetup.o: ../../include/cktdefs.h mos3ssetup.o: ../../include/gendefs.h mos3ssetup.o: ../../include/iferrmsgs.h mos3ssetup.o: ../../include/ifsim.h mos3ssetup.o: ../../include/jobdefs.h mos3ssetup.o: ../../include/mos3defs.h mos3ssetup.o: ../../include/optdefs.h mos3ssetup.o: ../../include/pzdefs.h mos3ssetup.o: ../../include/sendefs.h mos3ssetup.o: ../../include/smpdefs.h mos3ssetup.o: ../../include/sperror.h mos3ssetup.o: ../../include/trcvdefs.h mos3ssetup.o: ../../include/tskdefs.h mos3ssetup.o: ../../include/complex.h mos3ssetup.o: ../../include/prefix.h mos3ssetup.o: ../../include/suffix.h mos3ssetup.o: ../../include/util.h mos3supdate.o: ../../include/acdefs.h mos3supdate.o: ../../include/cktdefs.h mos3supdate.o: ../../include/gendefs.h mos3supdate.o: ../../include/iferrmsgs.h mos3supdate.o: ../../include/ifsim.h mos3supdate.o: ../../include/jobdefs.h mos3supdate.o: ../../include/mos3defs.h mos3supdate.o: ../../include/optdefs.h mos3supdate.o: ../../include/pzdefs.h mos3supdate.o: ../../include/sendefs.h mos3supdate.o: ../../include/smpdefs.h mos3supdate.o: ../../include/sperror.h mos3supdate.o: ../../include/trcvdefs.h mos3supdate.o: ../../include/tskdefs.h mos3supdate.o: ../../include/complex.h mos3supdate.o: ../../include/prefix.h mos3supdate.o: ../../include/suffix.h mos3supdate.o: ../../include/util.h mos3setup.o: ../../include/acdefs.h mos3setup.o: ../../include/cktdefs.h mos3setup.o: ../../include/const.h mos3setup.o: ../../include/gendefs.h mos3setup.o: ../../include/iferrmsgs.h mos3setup.o: ../../include/ifsim.h mos3setup.o: ../../include/jobdefs.h mos3setup.o: ../../include/mos3defs.h mos3setup.o: ../../include/optdefs.h mos3setup.o: ../../include/pzdefs.h mos3setup.o: ../../include/sendefs.h mos3setup.o: ../../include/smpdefs.h mos3setup.o: ../../include/sperror.h mos3setup.o: ../../include/trcvdefs.h mos3setup.o: ../../include/tskdefs.h mos3setup.o: ../../include/complex.h mos3setup.o: ../../include/prefix.h mos3setup.o: ../../include/suffix.h mos3setup.o: ../../include/util.h mos3temp.o: ../../include/acdefs.h mos3temp.o: ../../include/cktdefs.h mos3temp.o: ../../include/const.h mos3temp.o: ../../include/gendefs.h mos3temp.o: ../../include/iferrmsgs.h mos3temp.o: ../../include/ifsim.h mos3temp.o: ../../include/jobdefs.h mos3temp.o: ../../include/mos3defs.h mos3temp.o: ../../include/optdefs.h mos3temp.o: ../../include/pzdefs.h mos3temp.o: ../../include/sendefs.h mos3temp.o: ../../include/smpdefs.h mos3temp.o: ../../include/sperror.h mos3temp.o: ../../include/trcvdefs.h mos3temp.o: ../../include/tskdefs.h mos3temp.o: ../../include/complex.h mos3temp.o: ../../include/prefix.h mos3temp.o: ../../include/suffix.h mos3temp.o: ../../include/util.h mos3trunc.o: ../../include/acdefs.h mos3trunc.o: ../../include/cktdefs.h mos3trunc.o: ../../include/gendefs.h mos3trunc.o: ../../include/iferrmsgs.h mos3trunc.o: ../../include/ifsim.h mos3trunc.o: ../../include/jobdefs.h mos3trunc.o: ../../include/mos3defs.h mos3trunc.o: ../../include/optdefs.h mos3trunc.o: ../../include/pzdefs.h mos3trunc.o: ../../include/sendefs.h mos3trunc.o: ../../include/smpdefs.h mos3trunc.o: ../../include/sperror.h mos3trunc.o: ../../include/trcvdefs.h mos3trunc.o: ../../include/tskdefs.h mos3trunc.o: ../../include/complex.h mos3trunc.o: ../../include/prefix.h mos3trunc.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061040770407550006700000000000021777770500302376700003100000000000spice3c1/spice3/dev/mos30707070124061141431006440006700000000000011777770500302376700003600000005303spice3c1/spice3/dev/res/res.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "resdefs.h" #include "devdefs.h" #include "ifsim.h" #include "suffix.h" RCSID("RES.c $Revision: 1.8 $ on $Date: 89/03/07 11:32:23 $") static IFparm RESpTable[] = { /* parameters */ IOP( "resistance", RES_RESIST, IF_REAL,"Resistance"), IOP( "w", RES_WIDTH, IF_REAL,"Width"), IOP( "l", RES_LENGTH, IF_REAL,"Length"), IOP( "c", RES_CURRENT,IF_REAL,"Current"), IOP( "p", RES_POWER, IF_REAL,"Power"), IP("sens_resist", RES_RESIST_SENS, IF_FLAG, "flag to request sensitivity WRT resistance"), OP("sens_dc", RES_QUEST_SENS_DC, IF_REAL, "dc sensitivity "), OP("sens_real",RES_QUEST_SENS_REAL,IF_REAL, "dc sensitivity and real part of ac sensitivity"), OP("sens_imag",RES_QUEST_SENS_IMAG,IF_REAL, "dc sensitivity and imag part of ac sensitivity"), OP("sens_mag", RES_QUEST_SENS_MAG, IF_REAL, "ac sensitivity of magnitude"), OP("sens_ph", RES_QUEST_SENS_PH, IF_REAL, "ac sensitivity of phase"), OP("sens_cplx",RES_QUEST_SENS_CPLX,IF_COMPLEX, "ac sensitivity"), IOP("temp", RES_TEMP, IF_REAL,"Instance operating temperature"), } ; static IFparm RESmPTable[] = { /* model parameters */ IOP( "tc1", RES_MOD_TC1, IF_REAL,"First order temp. coefficient"), IOP( "tc2", RES_MOD_TC2, IF_REAL,"Second order temp. coefficient"), IOP( "rsh", RES_MOD_RSH, IF_REAL,"Sheet resistance"), IOP( "defw", RES_MOD_DEFWIDTH, IF_REAL,"Default device width"), IP( "r", RES_MOD_R, IF_FLAG,"Device is a resistor model"), IOP( "narrow", RES_MOD_NARROW, IF_REAL,"Narrowing of resistor"), IOP("tnom", RES_MOD_TNOM, IF_REAL,"Parameter measurement temperature"), }; static char *RESnames[] = { "R+", "R-" }; SPICEdev RESinfo = { { "Resistor", "Simple linear resistor", sizeof(RESnames)/sizeof(char *), sizeof(RESnames)/sizeof(char *), RESnames, sizeof(RESpTable)/sizeof(IFparm), RESpTable, sizeof(RESmPTable)/sizeof(IFparm), RESmPTable, }, RESparam, RESmParam, RESload, RESsetup, RESsetup, REStemp, NULL, NULL, RESload, /* ac load and normal load are identical */ NULL, RESdestroy, #ifdef DELETES RESmDelete, RESdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, RESask, NULL, RESpzLoad, NULL, #ifndef NOSENS RESsSetup, RESsLoad, NULL, RESsAcLoad, RESsPrint, NULL, #else /* NOSENS */ NULL, NULL, NULL, NULL, NULL, NULL, #endif /* NOSENS */ sizeof(RESinstance), sizeof(RESmodel), }; 0707070124061141441006440006700000000000011777770500302376700004100000011231spice3c1/spice3/dev/res/resask.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "const.h" #include "resdefs.h" #include "ifsim.h" #include "cktdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("RESask.c $Revision: 1.9 $ on $Date: 89/04/30 12:31:52 $") /*ARGSUSED*/ int RESask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { RESinstance *fast = (RESinstance *)inst; double vr; double vi; double sr; double si; double vm; static char *msg = "Current and power not available for ac analysis"; switch(which) { case RES_TEMP: value->rValue = fast->REStemp-CONSTCtoK; return(OK); case RES_CONDUCT: value->rValue = fast->RESconduct; return(OK); case RES_RESIST: value->rValue = fast->RESresist; return(OK); case RES_LENGTH: value->rValue = fast->RESlength; return(OK); case RES_WIDTH : value->rValue = fast->RESwidth; return(OK); case RES_QUEST_SENS_DC: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ fast->RESsenParmNo); } return(OK); case RES_QUEST_SENS_REAL: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ fast->RESsenParmNo); } return(OK); case RES_QUEST_SENS_IMAG: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ fast->RESsenParmNo); } return(OK); case RES_QUEST_SENS_MAG: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ fast->RESsenParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ fast->RESsenParmNo); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case RES_QUEST_SENS_PH: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ fast->RESsenParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ fast->RESsenParmNo); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case RES_QUEST_SENS_CPLX: if(ckt->CKTsenInfo){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ fast->RESsenParmNo); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ fast->RESsenParmNo); } return(OK); case RES_CURRENT: if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "RESask"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) - *(ckt->CKTrhsOld + fast->RESnegNode)) *fast->RESconduct; } return(OK); case RES_POWER: if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "RESask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = (*(ckt->CKTrhsOld + fast->RESposNode) - *(ckt->CKTrhsOld + fast->RESnegNode)) * fast->RESconduct * (*(ckt->CKTrhsOld + fast->RESposNode) - *(ckt->CKTrhsOld + fast->RESnegNode)); } return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124061141451006440006700000000000011777770500302376700004400000001564spice3c1/spice3/dev/res/resdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESdelete.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:01 $") int RESdelete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { RESmodel *model = (RESmodel *)inModel; RESinstance **fast = (RESinstance **)inst; RESinstance **prev = NULL; RESinstance *here; for( ; model ; model = model->RESnextModel) { prev = &(model->RESinstances); for(here = *prev; here ; here = *prev) { if(here->RESname == name || (fast && here==*fast) ) { *prev= here->RESnextInstance; FREE(here); return(OK); } prev = &(here->RESnextInstance); } } return(E_NODEV); } 0707070124061141461006440006700000000000011777770500302376700004500000001426spice3c1/spice3/dev/res/resdestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "resdefs.h" #include "suffix.h" RCSID("RESdestroy.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:02 $") void RESdestroy(inModel) GENmodel **inModel; { RESmodel **model = (RESmodel **)inModel; RESinstance *here; RESinstance *prev = NULL; RESmodel *mod = *model; RESmodel *oldmod = NULL; for( ; mod ; mod = mod->RESnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (RESinstance *)NULL; for(here = mod->RESinstances ; here ; here = here->RESnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061141471006440006700000000000011777770500302376700004200000002047spice3c1/spice3/dev/res/resload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESload.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:03 $") /*ARGSUSED*/ int RESload(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current resistance value into the * sparse matrix previously provided */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { *(here->RESposPosptr) += here->RESconduct; *(here->RESnegNegptr) += here->RESconduct; *(here->RESposNegptr) -= here->RESconduct; *(here->RESnegPosptr) -= here->RESconduct; } } return(OK); } 0707070124061141501006440006700000000000011777770500302377000004200000002207spice3c1/spice3/dev/res/resmask.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "cktdefs.h" #include "ifsim.h" #include "resdefs.h" #include "sperror.h" #include "devdefs.h" #include "suffix.h" RCSID("RESmAsk.c $Revision: 1.6 $ on $Date: 88/10/01 13:50:29 $") /* ARGSUSED */ int RESmodAsk(ckt,inModel,which,value) CKTcircuit *ckt; GENmodel *inModel; int which; IFvalue *value; { RESmodel *model = (RESmodel *)inModel; switch(which) { case RES_MOD_TNOM: value->rValue = model->REStnom-CONSTCtoK; return(OK); case RES_MOD_TC1: value->rValue = model->REStempCoeff1; return(OK); case RES_MOD_TC2: value->rValue = model->REStempCoeff2; return(OK); case RES_MOD_RSH: value->rValue = model->RESsheetRes; return(OK); case RES_MOD_DEFWIDTH: value->rValue = model->RESdefWidth; return(OK); case RES_MOD_NARROW: value->rValue = model->RESnarrow; return(OK); default: return(E_BADPARM); } } 0707070124061141511006440006700000000000011777770500302377000004500000001776spice3c1/spice3/dev/res/resmdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESmDelete.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:05 $") int RESmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { RESmodel **model = (RESmodel **)inModel; RESmodel *modfast = (RESmodel *)kill; RESinstance *here; RESinstance *prev = NULL; RESmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->RESnextModel)) { if( (*model)->RESmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->RESnextModel; /* cut deleted device out of list */ for(here = (*model)->RESinstances ; here ; here = here->RESnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061141521006440006700000000000011777770500302377000004400000002711spice3c1/spice3/dev/res/resmparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "util.h" #include "ifsim.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESmParam.c $Revision: 1.6 $ on $Date: 88/07/25 12:31:00 $") int RESmParam(param,value,inModel) int param; IFvalue *value; GENmodel *inModel; { register RESmodel *model = (RESmodel *)inModel; switch(param) { case RES_MOD_TNOM: model->REStnom = value->rValue+CONSTCtoK; model->REStnomGiven = TRUE; break; case RES_MOD_TC1: model->REStempCoeff1 = value->rValue; model->REStc1Given = TRUE; break; case RES_MOD_TC2: model->REStempCoeff2 = value->rValue; model->REStc2Given = TRUE; break; case RES_MOD_RSH: model->RESsheetRes = value->rValue; model->RESsheetResGiven = TRUE; break; case RES_MOD_DEFWIDTH: model->RESdefWidth = value->rValue; model->RESdefWidthGiven = TRUE; break; case RES_MOD_NARROW: model->RESnarrow = value->rValue; model->RESnarrowGiven = TRUE; break; case RES_MOD_R: /* just being reassured by user that this is a resistor model */ /* no-op */ break; default: return(E_BADPARM); } return(OK); } 0707070124061141531006440006700000000000011777770500302377000004300000002210spice3c1/spice3/dev/res/resparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "const.h" #include "util.h" #include "ifsim.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESparam.c $Revision: 1.8 $ on $Date: 89/01/19 17:36:35 $") /* ARGSUSED */ int RESparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { RESinstance *here = (RESinstance *)inst; switch(param) { case RES_TEMP: here->REStemp = value->rValue+CONSTCtoK; here->REStempGiven = TRUE; break; case RES_RESIST: here->RESresist = value->rValue; here->RESresGiven = TRUE; break; case RES_WIDTH: here->RESwidth = value->rValue; here->RESwidthGiven = TRUE; break; case RES_LENGTH: here->RESlength = value->rValue; here->RESlengthGiven = TRUE; break; case RES_RESIST_SENS: here->RESsenParmNo = value->iValue; break; default: return(E_BADPARM); } return(OK); } 0707070124061141651006440006700000000000011777770500302377000004400000002124spice3c1/spice3/dev/res/respzload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "complex.h" #include "sperror.h" #include "resdefs.h" #include "suffix.h" RCSID("RESpzLoad.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:09 $") /*ARGSUSED*/ int RESpzLoad(inModel,ckt,s) GENmodel *inModel; CKTcircuit *ckt; SPcomplex *s; /* actually load the current resistance value into the * sparse matrix previously provided */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { *(here->RESposPosptr) += here->RESconduct; *(here->RESnegNegptr) += here->RESconduct; *(here->RESposNegptr) -= here->RESconduct; *(here->RESnegPosptr) -= here->RESconduct; } } return(OK); } 0707070124061141661006440006700000000000011777770500302377000004500000003452spice3c1/spice3/dev/res/ressacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESsAcLoad.c $Revision: 1.2 $ on $Date: 88/07/22 18:38:10 $") int RESsAcLoad(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current ac sensitivity info into the * array previously provided */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; double vres; double ivres; double value; double ivalue; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { if(here->RESsenParmNo){ vres = *(ckt->CKTrhsOld+here->RESposNode) - *(ckt->CKTrhsOld+here->RESnegNode); ivres = *(ckt->CKTirhsOld+here->RESposNode) - *(ckt->CKTirhsOld+here->RESnegNode); value = vres * here->RESconduct * here->RESconduct; ivalue = ivres * here->RESconduct * here->RESconduct; /* load the RHS matrix */ *(ckt->CKTsenInfo->SEN_RHS[here->RESposNode] + here->RESsenParmNo) += value; *(ckt->CKTsenInfo->SEN_iRHS[here->RESposNode] + here->RESsenParmNo) += ivalue; *(ckt->CKTsenInfo->SEN_RHS[here->RESnegNode] + here->RESsenParmNo) -= value; *(ckt->CKTsenInfo->SEN_iRHS[here->RESnegNode] + here->RESsenParmNo) -= ivalue; } } } return(OK); } 0707070124061141671006440006700000000000011777770500302377000004300000002536spice3c1/spice3/dev/res/ressload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESsLoad.c $Revision: 1.5 $ on $Date: 88/11/16 00:58:02 $") int RESsLoad(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current resistance sensitivity value into * the array previously provided */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; double vres; double value; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { if(here->RESsenParmNo){ vres = *(ckt->CKTrhsOld+here->RESposNode) - *(ckt->CKTrhsOld+here->RESnegNode); value = vres * here->RESconduct * here->RESconduct; /* load the RHS matrix */ *(ckt->CKTsenInfo->SEN_RHS[here->RESposNode] + here->RESsenParmNo) += value; *(ckt->CKTsenInfo->SEN_RHS[here->RESnegNode] + here->RESsenParmNo) -= value; } } } return(OK); } 0707070124061141701006440006700000000000011777770500302377100004400000002376spice3c1/spice3/dev/res/ressprint.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* Pretty print the sensitivity info for all * the resistors in the circuit. */ #include "prefix.h" #include #include "cktdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESsPrint.c $Revision: 1.2 $ on $Date: 88/07/22 18:38:11 $") void RESsPrint(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; printf("RESISTORS-----------------\n"); /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { printf("Model name:%s\n",model->RESmodName); /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { printf(" Instance name:%s\n",here->RESname); printf(" Positive, negative nodes: %s, %s\n", CKTnodName(ckt,here->RESposNode),CKTnodName(ckt,here->RESnegNode)); printf(" Resistance: %f ",here->RESresist); printf(here->RESresGiven ? "(specified)\n" : "(default)\n"); printf(" RESsenParmNo:%d\n",here->RESsenParmNo); } } } 0707070124061141711006440006700000000000011777770500302377100004400000001702spice3c1/spice3/dev/res/resssetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" #include "cktdefs.h" RCSID("RESsSetup.c $Revision: 1.2 $ on $Date: 88/07/22 18:38:12 $") int RESsSetup(info,inModel) register SENstruct *info; GENmodel *inModel; /* loop through all the devices and * assign parameter #s to design parameters */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { if(here->RESsenParmNo){ here->RESsenParmNo = ++(info->SENparms); } } } return(OK); } 0707070124061141721006440006700000000000011777770500302377100004300000002534spice3c1/spice3/dev/res/ressetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("RESsetup.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:13 $") /* ARGSUSED */ int RESsetup(matrix,inModel,ckt,state) register SMPmatrix *matrix; GENmodel *inModel; CKTcircuit*ckt; int *state; /* load the resistor structure with those pointers needed later * for fast matrix loading */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(RESposPosptr, RESposNode, RESposNode); TSTALLOC(RESnegNegptr, RESnegNode, RESnegNode); TSTALLOC(RESposNegptr, RESposNode, RESnegNode); TSTALLOC(RESnegPosptr, RESnegNode, RESposNode); } } return(OK); } 0707070124061141731006440006700000000000011777770500302377100004200000005004spice3c1/spice3/dev/res/restemp.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "resdefs.h" #include "sperror.h" #include "suffix.h" RCSID("REStemp.c $Revision: 1.4 $ on $Date: 88/07/22 18:38:14 $") int REStemp(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* perform the temperature update to the resistors * calculate the conductance as a function of the * given nominal and current temperatures - the * resistance given in the struct is the nominal * temperature resistance */ { register RESmodel *model = (RESmodel *)inModel; register RESinstance *here; double factor; double difference; /* loop through all the resistor models */ for( ; model != NULL; model = model->RESnextModel ) { /* Default Value Processing for Resistor Models */ if(!model->REStnomGiven) model->REStnom = ckt->CKTnomTemp; if(!model->RESsheetResGiven) model->RESsheetRes = 0; if(!model->RESdefWidthGiven) model->RESdefWidth = 10.e-6; /*M*/ if(!model->REStc1Given) model->REStempCoeff1 = 0; if(!model->REStc2Given) model->REStempCoeff2 = 0; if(!model->RESnarrowGiven) model->RESnarrow = 0; /* loop through all the instances of the model */ for (here = model->RESinstances; here != NULL ; here=here->RESnextInstance) { /* Default Value Processing for Resistor Instance */ if(!here->REStempGiven) here->REStemp = ckt->CKTtemp; if(!here->RESwidthGiven) here->RESwidth = model->RESdefWidth; if(!here->RESlengthGiven) here->RESlength = 0 ; if(!here->RESresGiven) { if(model->RESsheetResGiven && (model->RESsheetRes != 0) && (here->RESlength != 0)) { here->RESresist = model->RESsheetRes * (here->RESlength - model->RESnarrow) / (here->RESwidth - model->RESnarrow); } else { (*(SPfrontEnd->IFerror))(ERR_WARNING, "%s: resistance=0, set to 1000",&(here->RESname)); here->RESresist=1000; } } difference = here->REStemp - model->REStnom; factor = 1.0 + (model->REStempCoeff1)*difference + (model->REStempCoeff2)*difference*difference; here->RESconduct = 1.0/(here->RESresist * factor); } } return(OK); } 0707070124061141741006440006700000000000011777770500302377200004100000030432spice3c1/spice3/dev/res/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ res.c\ resask.c\ resdelete.c\ resdestroy.c\ resload.c\ resmask.c\ resmdelete.c\ resmparam.c\ resparam.c\ respzload.c\ ressacload.c\ ressload.c\ resssetup.c\ ressprint.c\ ressetup.c\ restemp.c COBJS = \ res.o\ resask.o\ resdelete.o\ resdestroy.o\ resload.o\ resmask.o\ resmdelete.o\ resmparam.o\ resparam.o\ respzload.o\ ressacload.o\ ressload.o\ resssetup.o\ ressprint.o\ ressetup.o\ restemp.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lnm -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lres.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cres ${LINTFLAGS} ${CFILES} mv llib-lres.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE res.o: ../../include/acdefs.h res.o: ../../include/cktdefs.h res.o: ../../include/devdefs.h res.o: ../../include/gendefs.h res.o: ../../include/ifsim.h res.o: ../../include/jobdefs.h res.o: ../../include/optdefs.h res.o: ../../include/pzdefs.h res.o: ../../include/resdefs.h res.o: ../../include/sendefs.h res.o: ../../include/smpdefs.h res.o: ../../include/trcvdefs.h res.o: ../../include/tskdefs.h res.o: ../../include/complex.h res.o: ../../include/prefix.h res.o: ../../include/suffix.h resask.o: ../../include/acdefs.h resask.o: ../../include/cktdefs.h resask.o: ../../include/const.h resask.o: ../../include/gendefs.h resask.o: ../../include/iferrmsgs.h resask.o: ../../include/ifsim.h resask.o: ../../include/jobdefs.h resask.o: ../../include/optdefs.h resask.o: ../../include/pzdefs.h resask.o: ../../include/resdefs.h resask.o: ../../include/sendefs.h resask.o: ../../include/smpdefs.h resask.o: ../../include/sperror.h resask.o: ../../include/trcvdefs.h resask.o: ../../include/tskdefs.h resask.o: ../../include/complex.h resask.o: ../../include/prefix.h resask.o: ../../include/suffix.h resask.o: ../../include/util.h resdelete.o: ../../include/acdefs.h resdelete.o: ../../include/cktdefs.h resdelete.o: ../../include/gendefs.h resdelete.o: ../../include/iferrmsgs.h resdelete.o: ../../include/ifsim.h resdelete.o: ../../include/jobdefs.h resdelete.o: ../../include/optdefs.h resdelete.o: ../../include/pzdefs.h resdelete.o: ../../include/resdefs.h resdelete.o: ../../include/sendefs.h resdelete.o: ../../include/smpdefs.h resdelete.o: ../../include/sperror.h resdelete.o: ../../include/trcvdefs.h resdelete.o: ../../include/tskdefs.h resdelete.o: ../../include/complex.h resdelete.o: ../../include/prefix.h resdelete.o: ../../include/suffix.h resdelete.o: ../../include/util.h resdestroy.o: ../../include/acdefs.h resdestroy.o: ../../include/cktdefs.h resdestroy.o: ../../include/gendefs.h resdestroy.o: ../../include/ifsim.h resdestroy.o: ../../include/jobdefs.h resdestroy.o: ../../include/optdefs.h resdestroy.o: ../../include/pzdefs.h resdestroy.o: ../../include/resdefs.h resdestroy.o: ../../include/sendefs.h resdestroy.o: ../../include/smpdefs.h resdestroy.o: ../../include/trcvdefs.h resdestroy.o: ../../include/tskdefs.h resdestroy.o: ../../include/complex.h resdestroy.o: ../../include/prefix.h resdestroy.o: ../../include/suffix.h resdestroy.o: ../../include/util.h resload.o: ../../include/acdefs.h resload.o: ../../include/cktdefs.h resload.o: ../../include/gendefs.h resload.o: ../../include/iferrmsgs.h resload.o: ../../include/ifsim.h resload.o: ../../include/jobdefs.h resload.o: ../../include/optdefs.h resload.o: ../../include/pzdefs.h resload.o: ../../include/resdefs.h resload.o: ../../include/sendefs.h resload.o: ../../include/smpdefs.h resload.o: ../../include/sperror.h resload.o: ../../include/trcvdefs.h resload.o: ../../include/tskdefs.h resload.o: ../../include/complex.h resload.o: ../../include/prefix.h resload.o: ../../include/suffix.h resmask.o: ../../include/acdefs.h resmask.o: ../../include/cktdefs.h resmask.o: ../../include/const.h resmask.o: ../../include/devdefs.h resmask.o: ../../include/gendefs.h resmask.o: ../../include/iferrmsgs.h resmask.o: ../../include/ifsim.h resmask.o: ../../include/jobdefs.h resmask.o: ../../include/optdefs.h resmask.o: ../../include/pzdefs.h resmask.o: ../../include/resdefs.h resmask.o: ../../include/sendefs.h resmask.o: ../../include/smpdefs.h resmask.o: ../../include/sperror.h resmask.o: ../../include/trcvdefs.h resmask.o: ../../include/tskdefs.h resmask.o: ../../include/complex.h resmask.o: ../../include/prefix.h resmask.o: ../../include/suffix.h resmdelete.o: ../../include/acdefs.h resmdelete.o: ../../include/cktdefs.h resmdelete.o: ../../include/gendefs.h resmdelete.o: ../../include/iferrmsgs.h resmdelete.o: ../../include/ifsim.h resmdelete.o: ../../include/jobdefs.h resmdelete.o: ../../include/optdefs.h resmdelete.o: ../../include/pzdefs.h resmdelete.o: ../../include/resdefs.h resmdelete.o: ../../include/sendefs.h resmdelete.o: ../../include/smpdefs.h resmdelete.o: ../../include/sperror.h resmdelete.o: ../../include/trcvdefs.h resmdelete.o: ../../include/tskdefs.h resmdelete.o: ../../include/complex.h resmdelete.o: ../../include/prefix.h resmdelete.o: ../../include/suffix.h resmdelete.o: ../../include/util.h resmparam.o: ../../include/acdefs.h resmparam.o: ../../include/cktdefs.h resmparam.o: ../../include/const.h resmparam.o: ../../include/gendefs.h resmparam.o: ../../include/iferrmsgs.h resmparam.o: ../../include/ifsim.h resmparam.o: ../../include/jobdefs.h resmparam.o: ../../include/optdefs.h resmparam.o: ../../include/pzdefs.h resmparam.o: ../../include/resdefs.h resmparam.o: ../../include/sendefs.h resmparam.o: ../../include/smpdefs.h resmparam.o: ../../include/sperror.h resmparam.o: ../../include/trcvdefs.h resmparam.o: ../../include/tskdefs.h resmparam.o: ../../include/complex.h resmparam.o: ../../include/prefix.h resmparam.o: ../../include/suffix.h resmparam.o: ../../include/util.h resparam.o: ../../include/acdefs.h resparam.o: ../../include/cktdefs.h resparam.o: ../../include/const.h resparam.o: ../../include/gendefs.h resparam.o: ../../include/iferrmsgs.h resparam.o: ../../include/ifsim.h resparam.o: ../../include/jobdefs.h resparam.o: ../../include/optdefs.h resparam.o: ../../include/pzdefs.h resparam.o: ../../include/resdefs.h resparam.o: ../../include/sendefs.h resparam.o: ../../include/smpdefs.h resparam.o: ../../include/sperror.h resparam.o: ../../include/trcvdefs.h resparam.o: ../../include/tskdefs.h resparam.o: ../../include/complex.h resparam.o: ../../include/prefix.h resparam.o: ../../include/suffix.h resparam.o: ../../include/util.h respzload.o: ../../include/acdefs.h respzload.o: ../../include/cktdefs.h respzload.o: ../../include/gendefs.h respzload.o: ../../include/iferrmsgs.h respzload.o: ../../include/ifsim.h respzload.o: ../../include/jobdefs.h respzload.o: ../../include/optdefs.h respzload.o: ../../include/pzdefs.h respzload.o: ../../include/resdefs.h respzload.o: ../../include/sendefs.h respzload.o: ../../include/smpdefs.h respzload.o: ../../include/sperror.h respzload.o: ../../include/trcvdefs.h respzload.o: ../../include/tskdefs.h respzload.o: ../../include/complex.h respzload.o: ../../include/prefix.h respzload.o: ../../include/suffix.h ressacload.o: ../../include/acdefs.h ressacload.o: ../../include/cktdefs.h ressacload.o: ../../include/gendefs.h ressacload.o: ../../include/iferrmsgs.h ressacload.o: ../../include/ifsim.h ressacload.o: ../../include/jobdefs.h ressacload.o: ../../include/optdefs.h ressacload.o: ../../include/pzdefs.h ressacload.o: ../../include/resdefs.h ressacload.o: ../../include/sendefs.h ressacload.o: ../../include/smpdefs.h ressacload.o: ../../include/sperror.h ressacload.o: ../../include/trcvdefs.h ressacload.o: ../../include/tskdefs.h ressacload.o: ../../include/complex.h ressacload.o: ../../include/prefix.h ressacload.o: ../../include/suffix.h ressload.o: ../../include/acdefs.h ressload.o: ../../include/cktdefs.h ressload.o: ../../include/gendefs.h ressload.o: ../../include/iferrmsgs.h ressload.o: ../../include/ifsim.h ressload.o: ../../include/jobdefs.h ressload.o: ../../include/optdefs.h ressload.o: ../../include/pzdefs.h ressload.o: ../../include/resdefs.h ressload.o: ../../include/sendefs.h ressload.o: ../../include/smpdefs.h ressload.o: ../../include/sperror.h ressload.o: ../../include/trcvdefs.h ressload.o: ../../include/tskdefs.h ressload.o: ../../include/complex.h ressload.o: ../../include/prefix.h ressload.o: ../../include/suffix.h resssetup.o: ../../include/acdefs.h resssetup.o: ../../include/cktdefs.h resssetup.o: ../../include/gendefs.h resssetup.o: ../../include/iferrmsgs.h resssetup.o: ../../include/ifsim.h resssetup.o: ../../include/jobdefs.h resssetup.o: ../../include/optdefs.h resssetup.o: ../../include/pzdefs.h resssetup.o: ../../include/resdefs.h resssetup.o: ../../include/sendefs.h resssetup.o: ../../include/smpdefs.h resssetup.o: ../../include/sperror.h resssetup.o: ../../include/trcvdefs.h resssetup.o: ../../include/tskdefs.h resssetup.o: ../../include/complex.h resssetup.o: ../../include/prefix.h resssetup.o: ../../include/suffix.h resssetup.o: ../../include/util.h ressprint.o: ../../include/acdefs.h ressprint.o: ../../include/cktdefs.h ressprint.o: ../../include/gendefs.h ressprint.o: ../../include/iferrmsgs.h ressprint.o: ../../include/ifsim.h ressprint.o: ../../include/jobdefs.h ressprint.o: ../../include/optdefs.h ressprint.o: ../../include/pzdefs.h ressprint.o: ../../include/resdefs.h ressprint.o: ../../include/sendefs.h ressprint.o: ../../include/smpdefs.h ressprint.o: ../../include/sperror.h ressprint.o: ../../include/trcvdefs.h ressprint.o: ../../include/tskdefs.h ressprint.o: ../../include/complex.h ressprint.o: ../../include/prefix.h ressprint.o: ../../include/suffix.h ressetup.o: ../../include/acdefs.h ressetup.o: ../../include/cktdefs.h ressetup.o: ../../include/gendefs.h ressetup.o: ../../include/iferrmsgs.h ressetup.o: ../../include/ifsim.h ressetup.o: ../../include/jobdefs.h ressetup.o: ../../include/optdefs.h ressetup.o: ../../include/pzdefs.h ressetup.o: ../../include/resdefs.h ressetup.o: ../../include/sendefs.h ressetup.o: ../../include/smpdefs.h ressetup.o: ../../include/sperror.h ressetup.o: ../../include/trcvdefs.h ressetup.o: ../../include/tskdefs.h ressetup.o: ../../include/complex.h ressetup.o: ../../include/prefix.h ressetup.o: ../../include/suffix.h ressetup.o: ../../include/util.h restemp.o: ../../include/acdefs.h restemp.o: ../../include/cktdefs.h restemp.o: ../../include/gendefs.h restemp.o: ../../include/iferrmsgs.h restemp.o: ../../include/ifsim.h restemp.o: ../../include/jobdefs.h restemp.o: ../../include/optdefs.h restemp.o: ../../include/pzdefs.h restemp.o: ../../include/resdefs.h restemp.o: ../../include/sendefs.h restemp.o: ../../include/smpdefs.h restemp.o: ../../include/sperror.h restemp.o: ../../include/trcvdefs.h restemp.o: ../../include/tskdefs.h restemp.o: ../../include/complex.h restemp.o: ../../include/prefix.h restemp.o: ../../include/suffix.h restemp.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061141751006440006700000000000011777770500302377200004200000001542spice3c1/spice3/dev/res/msc51.batcl /I..\..\include\ /c RES.c >> ..\..\errs.out cl /I..\..\include\ /c RESask.c >> ..\..\errs.out cl /I..\..\include\ /c RESdelete.c >> ..\..\errs.out cl /I..\..\include\ /c RESdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c RESload.c >> ..\..\errs.out cl /I..\..\include\ /c RESmAsk.c >> ..\..\errs.out cl /I..\..\include\ /c RESmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c RESmParam.c >> ..\..\errs.out cl /I..\..\include\ /c RESparam.c >> ..\..\errs.out cl /I..\..\include\ /c RESpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c RESsAcLoad.c >> ..\..\errs.out cl /I..\..\include\ /c RESsLoad.c >> ..\..\errs.out cl /I..\..\include\ /c RESsPrint.c >> ..\..\errs.out cl /I..\..\include\ /c RESsSetup.c >> ..\..\errs.out cl /I..\..\include\ /c RESsetup.c >> ..\..\errs.out cl /I..\..\include\ /c REStemp.c >> ..\..\errs.out lib ..\..\DEV3.lib @RESPONSE.LIB 0707070124061141761006440006700000000000011777770500302377200004500000000346spice3c1/spice3/dev/res/response.lib+RES.OBJ& +RESASK.OBJ& +RESDELET.OBJ& +RESDESTR.OBJ& +RESLOAD.OBJ& +RESMASK.OBJ& +RESMDELE.OBJ& +RESMPARA.OBJ& +RESPARAM.OBJ& +RESPZLOA.OBJ& +RESSACLO.OBJ& +RESSLOAD.OBJ& +RESSPRIN.OBJ& +RESSSETU.OBJ& +RESSETUP.OBJ& +RESTEMP.OBJ; 0707070124061141771006440006700000000000011777770500302377200004100000001200spice3c1/spice3/dev/res/make.com$ cc /nowarn RES $ cc /nowarn RESask $ cc /nowarn RESdelete $ cc /nowarn RESdestroy $ cc /nowarn RESload $ cc /nowarn RESmAsk $ cc /nowarn RESmDelete $ cc /nowarn RESmParam $ cc /nowarn RESparam $ cc /nowarn RESpzLoad $ cc /nowarn RESsAcLoad $ cc /nowarn RESsLoad $ cc /nowarn RESsPrint $ cc /nowarn RESsSetup $ cc /nowarn RESsetup $ cc /nowarn REStemp $ library/object [-.-]DEV.olb - RES.obj, - RESask.obj, - RESdelete.obj, - RESdestroy.obj, - RESload.obj, - RESmAsk.obj, - RESmDelete.obj, - RESmParam.obj, - RESparam.obj, - RESpzLoad.obj, - RESsAcLoad.obj, - RESsLoad.obj, - RESsPrint.obj, - RESsSetup.obj, - RESsetup.obj, - REStemp.obj 0707070124061141420407550006700000000000021777770500302377200003000000000000spice3c1/spice3/dev/res0707070124061340761006440006700000000000011777770500302377200003400000004043spice3c1/spice3/dev/sw/sw.c/* * Copyright (c) 1987 */ #include "prefix.h" #include #include "devdefs.h" #include "ifsim.h" #include "swdefs.h" #include "suffix.h" RCSID("SW.c $Revision: 1.7 $ on $Date: 89/03/07 11:32:32 $") static IFparm SWpTable[] = { /* parameters */ IP("on", SW_IC_ON, IF_FLAG,"Switch initially closed"), IP("off", SW_IC_OFF, IF_FLAG,"Switch initially open"), IOP("pos_node", SW_POS_NODE,IF_INTEGER,"Positive node of switch"), IOP("neg_node", SW_NEG_NODE,IF_INTEGER,"Negative node of switch"), OP("cont_p_node",SW_POS_CONT_NODE,IF_INTEGER,"Positive contr. node of switch"), OP("cont_n_node",SW_NEG_CONT_NODE,IF_INTEGER,"Positive contr. node of switch"), OP("c", SW_CURRENT, IF_REAL, "Switch current"), OP("p", SW_POWER, IF_REAL, "Switch power") }; static IFparm SWmPTable[] = { /* model parameters */ IOP( "sw", SW_MOD_SW, IF_FLAG,"Switch model"), IOP( "vt", SW_MOD_VTH, IF_REAL,"Threshold voltage"), IOP( "vh", SW_MOD_VHYS, IF_REAL,"Hysteresis voltage"), IOP( "ron", SW_MOD_RON, IF_REAL,"Resistance when closed"), IOP( "roff", SW_MOD_ROFF, IF_REAL,"Resistance when open"), OP( "gon", SW_MOD_GON, IF_REAL,"Conductance when closed"), OP( "goff", SW_MOD_GOFF, IF_REAL,"Conductance when open") }; static char *SWnames[] = { "S+", "S-", "SC+", "SC-" }; SPICEdev SWinfo = { { "Switch", "Ideal voltage controlled switch", sizeof(SWnames)/sizeof(char *), sizeof(SWnames)/sizeof(char *), SWnames, sizeof(SWpTable)/sizeof(IFparm), SWpTable, sizeof(SWmPTable)/sizeof(IFparm), SWmPTable, }, SWparam, SWmParam, SWload, SWsetup, SWsetup, NULL, NULL, NULL, SWacLoad, NULL, SWdestroy, #ifdef DELETES SWmDelete, SWdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, SWask, SWmAsk, SWpzLoad, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sizeof(SWinstance), sizeof(SWmodel), }; 0707070124061340771006440006700000000000011777770500302377200004200000002344spice3c1/spice3/dev/sw/swacload.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "cktdefs.h" #include "swdefs.h" #include "sperror.h" #include "suffix.h" RCSID("SWacLoad.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:47 $") int SWacLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* load the current values into the * sparse matrix previously provided * during AC analysis. */ { register SWmodel *model = (SWmodel *)inModel; register SWinstance *here; double g_now; int current_state; /* loop through all the switch models */ for( ; model != NULL; model = model->SWnextModel ) { /* loop through all the instances of the model */ for (here = model->SWinstances; here != NULL ; here=here->SWnextInstance) { /* In AC analysis, just propogate the state... */ current_state = (int)*(ckt->CKTstate0 + here->SWstate); g_now = current_state?(model->SWonConduct):(model->SWoffConduct); *(here->SWposPosptr) += g_now; *(here->SWposNegptr) -= g_now; *(here->SWnegPosptr) -= g_now; *(here->SWnegNegptr) += g_now; } } return(OK); } 0707070124061341001006440006700000000000011777770500302377200003700000004261spice3c1/spice3/dev/sw/swask.c/* * Copyright (c) 1987 Thomas L. Quarles */ /* * This routine gives access to the internal device parameters * of voltage controlled SWitch */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "swdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("SWask.c $Revision: 1.6 $ on $Date: 88/10/01 13:50:46 $") /* ARGSUSED */ int SWask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { SWinstance *here = (SWinstance *)inst; static char *msg = "Current and power not available in ac analysis"; switch(which) { case SW_POS_NODE: value->iValue = here->SWposNode; return (OK); case SW_NEG_NODE: value->iValue = here->SWnegNode; return (OK); case SW_POS_CONT_NODE: value->iValue = here->SWposCntrlNode; return (OK); case SW_NEG_CONT_NODE: value->iValue = here->SWnegCntrlNode; return (OK); case SW_CURRENT: if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "SWask"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = (*(ckt->CKTrhsOld + here->SWposNode) - *(ckt->CKTrhsOld + here->SWnegNode)) * here->SWcond; } return(OK); case SW_POWER: if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "SWask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = (*(ckt->CKTrhsOld + here->SWposNode) - *(ckt->CKTrhsOld + here->SWnegNode)) * (*(ckt->CKTrhsOld + here->SWposNode) - *(ckt->CKTrhsOld + here->SWnegNode)) * here->SWcond; } return(OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124061341011006440006700000000000011777770500302377200004200000001542spice3c1/spice3/dev/sw/swdelete.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "util.h" #include "swdefs.h" #include "sperror.h" #include "suffix.h" RCSID("SWdelete.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:50 $") int SWdelete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { SWmodel *model = (SWmodel *)inModel; SWinstance **fast = (SWinstance **)inst; SWinstance **prev = NULL; SWinstance *here; for( ; model ; model = model->SWnextModel) { prev = &(model->SWinstances); for(here = *prev; here ; here = *prev) { if(here->SWname == name || (fast && here==*fast) ) { *prev= here->SWnextInstance; FREE(here); return(OK); } prev = &(here->SWnextInstance); } } return(E_NODEV); } 0707070124061341021006440006700000000000011777770500302377200004300000001404spice3c1/spice3/dev/sw/swdestroy.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "util.h" #include "swdefs.h" #include "suffix.h" RCSID("SWdestroy.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:51 $") void SWdestroy(inModel) GENmodel **inModel; { SWmodel **model = (SWmodel**)inModel; SWinstance *here; SWinstance *prev = NULL; SWmodel *mod = *model; SWmodel *oldmod = NULL; for( ; mod ; mod = mod->SWnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (SWinstance *)NULL; for(here = mod->SWinstances ; here ; here = here->SWnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061341031006440006700000000000011777770500302377300004000000007137spice3c1/spice3/dev/sw/swload.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "cktdefs.h" #include "swdefs.h" #include "util.h" #include "trandefs.h" #include "sperror.h" #include "suffix.h" RCSID("SWload.c $Revision: 1.5 $ on $Date: 88/09/08 14:39:09 $") int SWload(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* actually load the current values into the * sparse matrix previously provided */ { register SWmodel *model = (SWmodel *) inModel; register SWinstance *here; double g_now; double v_ctrl; double previous_state; double current_state; /* loop through all the switch models */ for( ; model != NULL; model = model->SWnextModel ) { /* loop through all the instances of the model */ for (here = model->SWinstances; here != NULL ; here=here->SWnextInstance) { /* decide the state of the switch */ if(ckt->CKTmode & (MODEINITFIX|MODEINITJCT)) { if(here->SWzero_stateGiven) { /* switch specified "on" */ *(ckt->CKTstate0 + here->SWstate) = 1.0; current_state = 1.0; } else { *(ckt->CKTstate0 + here->SWstate) = 0.0; current_state = 0.0; } } else if (ckt->CKTmode & (MODEINITSMSIG)) { previous_state = *(ckt->CKTstate0 + here->SWstate); current_state = previous_state; } else if (ckt->CKTmode & (MODEINITFLOAT)) { /* use state0 since INITTRAN or INITPRED already called */ previous_state = *(ckt->CKTstate0 + here->SWstate); v_ctrl = *(ckt->CKTrhsOld + here->SWposCntrlNode) - *(ckt->CKTrhsOld + here->SWnegCntrlNode); if(v_ctrl > (model->SWvThreshold + model->SWvHysteresis)) { *(ckt->CKTstate0 + here->SWstate) = 1.0; current_state = 1.0; } else if(v_ctrl < (model->SWvThreshold - model->SWvHysteresis)) { *(ckt->CKTstate0 + here->SWstate) = 0.0; current_state = 0.0; } else { current_state = previous_state; } if(current_state != previous_state) { ckt->CKTnoncon++; /* ensure one more iteration */ } } else if(ckt->CKTmode & (MODEINITTRAN|MODEINITPRED) ) { previous_state = *(ckt->CKTstate1 + here->SWstate); v_ctrl = *(ckt->CKTrhsOld + here->SWposCntrlNode) - *(ckt->CKTrhsOld + here->SWnegCntrlNode); if(v_ctrl > (model->SWvThreshold + model->SWvHysteresis)) { current_state = 1.0; } else if(v_ctrl < (model->SWvThreshold - model->SWvHysteresis)) { current_state = 0.0; } else { current_state = previous_state; } if(current_state == 0) { *(ckt->CKTstate0 + here->SWstate) = 0.0; } else { *(ckt->CKTstate0 + here->SWstate) = 1.0; } } g_now = current_state?(model->SWonConduct):(model->SWoffConduct); here->SWcond = g_now; *(here->SWposPosptr) += g_now; *(here->SWposNegptr) -= g_now; *(here->SWnegPosptr) -= g_now; *(here->SWnegNegptr) += g_now; } } return(OK); } 0707070124061341041006440006700000000000011777770500302377300004000000002342spice3c1/spice3/dev/sw/swmask.c/* * Copyright (c) 1987 Thomas L. Quarles */ /* * This routine gives access to the internal model parameter * of voltage controlled SWitch */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "swdefs.h" #include "sperror.h" #include "suffix.h" RCSID("SWmAsk.c $Revision: 1.4 $ on $Date: 88/10/01 13:51:46 $") /* ARGSUSED */ int SWmAsk(ckt,inModel,which,value) CKTcircuit *ckt; GENmodel *inModel; int which; IFvalue *value; { SWmodel *model = (SWmodel *)inModel; switch(which) { case SW_MOD_RON: value->rValue = model->SWonResistance; return (OK); case SW_MOD_ROFF: value->rValue = model->SWoffResistance; return (OK); case SW_MOD_VTH: value->rValue = model->SWvThreshold; return (OK); case SW_MOD_VHYS: value->rValue = model->SWvHysteresis; return (OK); case SW_MOD_GON: value->rValue = model->SWonConduct; return (OK); case SW_MOD_GOFF: value->rValue = model->SWoffConduct; return (OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124061341051006440006700000000000011777770500302377400004300000001753spice3c1/spice3/dev/sw/swmdelete.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "swdefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("SWmDelete.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:54 $") int SWmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { SWmodel **model = (SWmodel **)inModel; SWmodel *modfast = (SWmodel *)kill; SWinstance *here; SWinstance *prev = NULL; SWmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->SWnextModel)) { if( (*model)->SWmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->SWnextModel; /* cut deleted device out of list */ for(here = (*model)->SWinstances ; here ; here = here->SWnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061341061006440006700000000000011777770500302377400004200000002564spice3c1/spice3/dev/sw/swmparam.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "swdefs.h" #include "util.h" #include "ifsim.h" #include "sperror.h" #include "suffix.h" RCSID("SWmParam.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:55 $") int SWmParam(param,value,inModel) int param; IFvalue *value; GENmodel *inModel; { SWmodel *model = (SWmodel *)inModel; switch(param) { case SW_MOD_SW: /* just says that this is a switch */ break; case SW_MOD_RON: model->SWonResistance = value->rValue; model->SWonConduct = 1.0/(value->rValue); model->SWonGiven = TRUE; break; case SW_MOD_ROFF: model->SWoffResistance = value->rValue; model->SWoffConduct = 1.0/(value->rValue); model->SWoffGiven = TRUE; break; case SW_MOD_VTH: /* take absolute value of hysteresis voltage */ model->SWvThreshold = value->rValue; model->SWthreshGiven = TRUE; break; case SW_MOD_VHYS: /* take absolute value of hysteresis voltage */ model->SWvHysteresis = (value->rValue < 0) ? -(value->rValue) : value->rValue; model->SWhystGiven = TRUE; break; default: return(E_BADPARM); } return(OK); } 0707070124061341071006440006700000000000011777770500302377400004100000001426spice3c1/spice3/dev/sw/swparam.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "swdefs.h" #include "ifsim.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("SWparam.c $Revision: 1.5 $ on $Date: 89/01/19 17:45:09 $") /*ARGSUSED*/ int SWparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { SWinstance *here = (SWinstance *)inst; switch(param) { case SW_IC_ON: if(value->iValue) { here->SWzero_stateGiven = TRUE; } break; case SW_IC_OFF: if(value->iValue) { here->SWzero_stateGiven = FALSE; } break; default: return(E_BADPARM); } return(OK); } 0707070124061341101006440006700000000000011777770500302377400004200000002434spice3c1/spice3/dev/sw/swpzload.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "cktdefs.h" #include "swdefs.h" #include "sperror.h" #include "complex.h" #include "suffix.h" RCSID("SWpzLoad.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:57 $") /* ARGSUSED */ int SWpzLoad(inModel,ckt,s) GENmodel *inModel; register CKTcircuit *ckt; SPcomplex *s; /* load the current values into the * sparse matrix previously provided * during AC analysis. */ { register SWmodel *model = (SWmodel *)inModel; register SWinstance *here; double g_now; int current_state; /* loop through all the switch models */ for( ; model != NULL; model = model->SWnextModel ) { /* loop through all the instances of the model */ for (here = model->SWinstances; here != NULL ; here=here->SWnextInstance) { /* In AC analysis, just propogate the state... */ current_state = (int)*(ckt->CKTstate0 + here->SWstate); g_now = current_state?(model->SWonConduct):(model->SWoffConduct); *(here->SWposPosptr) += g_now; *(here->SWposNegptr) -= g_now; *(here->SWnegPosptr) -= g_now; *(here->SWnegNegptr) += g_now; } } return(OK); } 0707070124061341111006440006700000000000011777770500302377400004100000003771spice3c1/spice3/dev/sw/swsetup.c/* * Copyright (c) 1985 Gordon Jacobs */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "swdefs.h" #include "sperror.h" #include "suffix.h" RCSID("SWsetup.c $Revision: 1.4 $ on $Date: 88/07/22 19:00:58 $") int SWsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; CKTcircuit *ckt; int *states; /* load the switch conductance with those pointers needed later * for fast matrix loading */ { register SWmodel *model = (SWmodel *)inModel; register SWinstance *here; /* loop through all the current source models */ for( ; model != NULL; model = model->SWnextModel ) { /* Default Value Processing for Switch Model */ if (!model->SWthreshGiven) { model->SWvThreshold = 0; } if (!model->SWhystGiven) { model->SWvHysteresis = 0; } if (!model->SWonGiven) { model->SWonConduct = SW_ON_CONDUCTANCE; model->SWonResistance = 1.0/model->SWonConduct; } if (!model->SWoffGiven) { model->SWoffConduct = SW_OFF_CONDUCTANCE; model->SWoffResistance = 1.0/model->SWoffConduct; } /* loop through all the instances of the model */ for (here = model->SWinstances; here != NULL ; here=here->SWnextInstance) { /* Default Value Processing for Switch Instance */ /* none */ /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(SWposPosptr, SWposNode, SWposNode) TSTALLOC(SWposNegptr, SWposNode, SWnegNode) TSTALLOC(SWnegPosptr, SWnegNode, SWposNode) TSTALLOC(SWnegNegptr, SWnegNode, SWnegNode) here->SWstate = *states; *states += SW_NUM_STATES; } } return(OK); } 0707070124061341121006440006700000000000011777770500302377400004000000022575spice3c1/spice3/dev/sw/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ sw.c\ swacload.c\ swask.c\ swdelete.c\ swdestroy.c\ swload.c\ swmask.c\ swmdelete.c\ swmparam.c\ swparam.c\ swpzload.c\ swsetup.c COBJS = \ sw.o\ swacload.o\ swask.o\ swdelete.o\ swdestroy.o\ swload.o\ swmask.o\ swmdelete.o\ swmparam.o\ swparam.o\ swpzload.o\ swsetup.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lsw.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Csw ${LINTFLAGS} ${CFILES} mv llib-lsw.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE sw.o: ../../include/acdefs.h sw.o: ../../include/cktdefs.h sw.o: ../../include/devdefs.h sw.o: ../../include/gendefs.h sw.o: ../../include/ifsim.h sw.o: ../../include/jobdefs.h sw.o: ../../include/optdefs.h sw.o: ../../include/pzdefs.h sw.o: ../../include/sendefs.h sw.o: ../../include/smpdefs.h sw.o: ../../include/swdefs.h sw.o: ../../include/trcvdefs.h sw.o: ../../include/tskdefs.h sw.o: ../../include/complex.h sw.o: ../../include/prefix.h sw.o: ../../include/suffix.h swacload.o: ../../include/acdefs.h swacload.o: ../../include/cktdefs.h swacload.o: ../../include/gendefs.h swacload.o: ../../include/iferrmsgs.h swacload.o: ../../include/ifsim.h swacload.o: ../../include/jobdefs.h swacload.o: ../../include/optdefs.h swacload.o: ../../include/pzdefs.h swacload.o: ../../include/sendefs.h swacload.o: ../../include/smpdefs.h swacload.o: ../../include/sperror.h swacload.o: ../../include/swdefs.h swacload.o: ../../include/trcvdefs.h swacload.o: ../../include/tskdefs.h swacload.o: ../../include/complex.h swacload.o: ../../include/prefix.h swacload.o: ../../include/suffix.h swask.o: ../../include/acdefs.h swask.o: ../../include/cktdefs.h swask.o: ../../include/devdefs.h swask.o: ../../include/gendefs.h swask.o: ../../include/iferrmsgs.h swask.o: ../../include/ifsim.h swask.o: ../../include/jobdefs.h swask.o: ../../include/optdefs.h swask.o: ../../include/pzdefs.h swask.o: ../../include/sendefs.h swask.o: ../../include/smpdefs.h swask.o: ../../include/sperror.h swask.o: ../../include/swdefs.h swask.o: ../../include/trcvdefs.h swask.o: ../../include/tskdefs.h swask.o: ../../include/complex.h swask.o: ../../include/prefix.h swask.o: ../../include/suffix.h swask.o: ../../include/util.h swdelete.o: ../../include/acdefs.h swdelete.o: ../../include/cktdefs.h swdelete.o: ../../include/gendefs.h swdelete.o: ../../include/iferrmsgs.h swdelete.o: ../../include/ifsim.h swdelete.o: ../../include/jobdefs.h swdelete.o: ../../include/optdefs.h swdelete.o: ../../include/pzdefs.h swdelete.o: ../../include/sendefs.h swdelete.o: ../../include/smpdefs.h swdelete.o: ../../include/sperror.h swdelete.o: ../../include/swdefs.h swdelete.o: ../../include/trcvdefs.h swdelete.o: ../../include/tskdefs.h swdelete.o: ../../include/complex.h swdelete.o: ../../include/prefix.h swdelete.o: ../../include/suffix.h swdelete.o: ../../include/util.h swdestroy.o: ../../include/acdefs.h swdestroy.o: ../../include/cktdefs.h swdestroy.o: ../../include/gendefs.h swdestroy.o: ../../include/ifsim.h swdestroy.o: ../../include/jobdefs.h swdestroy.o: ../../include/optdefs.h swdestroy.o: ../../include/pzdefs.h swdestroy.o: ../../include/sendefs.h swdestroy.o: ../../include/smpdefs.h swdestroy.o: ../../include/swdefs.h swdestroy.o: ../../include/trcvdefs.h swdestroy.o: ../../include/tskdefs.h swdestroy.o: ../../include/complex.h swdestroy.o: ../../include/prefix.h swdestroy.o: ../../include/suffix.h swdestroy.o: ../../include/util.h swload.o: ../../include/acdefs.h swload.o: ../../include/cktdefs.h swload.o: ../../include/gendefs.h swload.o: ../../include/iferrmsgs.h swload.o: ../../include/ifsim.h swload.o: ../../include/jobdefs.h swload.o: ../../include/optdefs.h swload.o: ../../include/pzdefs.h swload.o: ../../include/sendefs.h swload.o: ../../include/smpdefs.h swload.o: ../../include/sperror.h swload.o: ../../include/swdefs.h swload.o: ../../include/trandefs.h swload.o: ../../include/trcvdefs.h swload.o: ../../include/tskdefs.h swload.o: ../../include/complex.h swload.o: ../../include/prefix.h swload.o: ../../include/suffix.h swload.o: ../../include/util.h swmask.o: ../../include/acdefs.h swmask.o: ../../include/cktdefs.h swmask.o: ../../include/devdefs.h swmask.o: ../../include/gendefs.h swmask.o: ../../include/iferrmsgs.h swmask.o: ../../include/ifsim.h swmask.o: ../../include/jobdefs.h swmask.o: ../../include/optdefs.h swmask.o: ../../include/pzdefs.h swmask.o: ../../include/sendefs.h swmask.o: ../../include/smpdefs.h swmask.o: ../../include/sperror.h swmask.o: ../../include/swdefs.h swmask.o: ../../include/trcvdefs.h swmask.o: ../../include/tskdefs.h swmask.o: ../../include/complex.h swmask.o: ../../include/prefix.h swmask.o: ../../include/suffix.h swmdelete.o: ../../include/acdefs.h swmdelete.o: ../../include/cktdefs.h swmdelete.o: ../../include/gendefs.h swmdelete.o: ../../include/iferrmsgs.h swmdelete.o: ../../include/ifsim.h swmdelete.o: ../../include/jobdefs.h swmdelete.o: ../../include/optdefs.h swmdelete.o: ../../include/pzdefs.h swmdelete.o: ../../include/sendefs.h swmdelete.o: ../../include/smpdefs.h swmdelete.o: ../../include/sperror.h swmdelete.o: ../../include/swdefs.h swmdelete.o: ../../include/trcvdefs.h swmdelete.o: ../../include/tskdefs.h swmdelete.o: ../../include/complex.h swmdelete.o: ../../include/prefix.h swmdelete.o: ../../include/suffix.h swmdelete.o: ../../include/util.h swmparam.o: ../../include/acdefs.h swmparam.o: ../../include/cktdefs.h swmparam.o: ../../include/gendefs.h swmparam.o: ../../include/iferrmsgs.h swmparam.o: ../../include/ifsim.h swmparam.o: ../../include/jobdefs.h swmparam.o: ../../include/optdefs.h swmparam.o: ../../include/pzdefs.h swmparam.o: ../../include/sendefs.h swmparam.o: ../../include/smpdefs.h swmparam.o: ../../include/sperror.h swmparam.o: ../../include/swdefs.h swmparam.o: ../../include/trcvdefs.h swmparam.o: ../../include/tskdefs.h swmparam.o: ../../include/complex.h swmparam.o: ../../include/prefix.h swmparam.o: ../../include/suffix.h swmparam.o: ../../include/util.h swparam.o: ../../include/acdefs.h swparam.o: ../../include/cktdefs.h swparam.o: ../../include/gendefs.h swparam.o: ../../include/iferrmsgs.h swparam.o: ../../include/ifsim.h swparam.o: ../../include/jobdefs.h swparam.o: ../../include/optdefs.h swparam.o: ../../include/pzdefs.h swparam.o: ../../include/sendefs.h swparam.o: ../../include/smpdefs.h swparam.o: ../../include/sperror.h swparam.o: ../../include/swdefs.h swparam.o: ../../include/trcvdefs.h swparam.o: ../../include/tskdefs.h swparam.o: ../../include/complex.h swparam.o: ../../include/prefix.h swparam.o: ../../include/suffix.h swparam.o: ../../include/util.h swpzload.o: ../../include/acdefs.h swpzload.o: ../../include/cktdefs.h swpzload.o: ../../include/gendefs.h swpzload.o: ../../include/iferrmsgs.h swpzload.o: ../../include/ifsim.h swpzload.o: ../../include/jobdefs.h swpzload.o: ../../include/optdefs.h swpzload.o: ../../include/pzdefs.h swpzload.o: ../../include/sendefs.h swpzload.o: ../../include/smpdefs.h swpzload.o: ../../include/sperror.h swpzload.o: ../../include/swdefs.h swpzload.o: ../../include/trcvdefs.h swpzload.o: ../../include/tskdefs.h swpzload.o: ../../include/complex.h swpzload.o: ../../include/prefix.h swpzload.o: ../../include/suffix.h swsetup.o: ../../include/acdefs.h swsetup.o: ../../include/cktdefs.h swsetup.o: ../../include/gendefs.h swsetup.o: ../../include/iferrmsgs.h swsetup.o: ../../include/ifsim.h swsetup.o: ../../include/jobdefs.h swsetup.o: ../../include/optdefs.h swsetup.o: ../../include/pzdefs.h swsetup.o: ../../include/sendefs.h swsetup.o: ../../include/smpdefs.h swsetup.o: ../../include/sperror.h swsetup.o: ../../include/swdefs.h swsetup.o: ../../include/trcvdefs.h swsetup.o: ../../include/tskdefs.h swsetup.o: ../../include/complex.h swsetup.o: ../../include/prefix.h swsetup.o: ../../include/suffix.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061341131006440006700000000000011777770500302377400004100000001204spice3c1/spice3/dev/sw/msc51.batcl /I..\..\include\ /c SW.c >> ..\..\errs.out cl /I..\..\include\ /c SWacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c SWask.c >> ..\..\errs.out cl /I..\..\include\ /c SWdelete.c >> ..\..\errs.out cl /I..\..\include\ /c SWdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c SWload.c >> ..\..\errs.out cl /I..\..\include\ /c SWmAsk.c >> ..\..\errs.out cl /I..\..\include\ /c SWmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c SWmParam.c >> ..\..\errs.out cl /I..\..\include\ /c SWparam.c >> ..\..\errs.out cl /I..\..\include\ /c SWpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c SWsetup.c >> ..\..\errs.out lib ..\..\DEV3.lib @RESPONSE.LIB 0707070124061341141006440006700000000000011777770500302377400004400000000245spice3c1/spice3/dev/sw/response.lib+SW.OBJ& +SWACLOAD.OBJ& +SWASK.OBJ& +SWDELETE.OBJ& +SWDESTRO.OBJ& +SWLOAD.OBJ& +SWMASK.OBJ& +SWMDELET.OBJ& +SWMPARAM.OBJ& +SWPARAM.OBJ& +SWPZLOAD.OBJ& +SWSETUP.OBJ; 0707070124061341151006440006700000000000011777770500302377400004000000000714spice3c1/spice3/dev/sw/make.com$ cc /nowarn SW $ cc /nowarn SWacLoad $ cc /nowarn SWask $ cc /nowarn SWdelete $ cc /nowarn SWdestroy $ cc /nowarn SWload $ cc /nowarn SWmAsk $ cc /nowarn SWmDelete $ cc /nowarn SWmParam $ cc /nowarn SWparam $ cc /nowarn SWpzLoad $ cc /nowarn SWsetup $ library/object [-.-]DEV.olb - SW.obj, - SWacLoad.obj, - SWask.obj, - SWdelete.obj, - SWdestroy.obj, - SWload.obj, - SWmAsk.obj, - SWmDelete.obj, - SWmParam.obj, - SWparam.obj, - SWpzLoad.obj, - SWsetup.obj 0707070124061340750407550006700000000000021777770500302377400002700000000000spice3c1/spice3/dev/sw0707070124061540511006440006700000000000011777770500302377400004100000000742spice3c1/spice3/dev/tra/make.com$ cc /nowarn TRA $ cc /nowarn TRAacLoad $ cc /nowarn TRAaccept $ cc /nowarn TRAask $ cc /nowarn TRAdelete $ cc /nowarn TRAdestroy $ cc /nowarn TRAload $ cc /nowarn TRAmDelete $ cc /nowarn TRAparam $ cc /nowarn TRAsetup $ cc /nowarn TRAtemp $ cc /nowarn TRAtrunc $ library/object [-.-]DEV.olb - TRA.obj, - TRAacLoad.obj, - TRAaccept.obj, - TRAask.obj, - TRAdelete.obj, - TRAdestroy.obj, - TRAload.obj, - TRAmDelete.obj, - TRAparam.obj, - TRAsetup.obj, - TRAtemp.obj, - TRAtrunc.obj 0707070124061540521006440006700000000000011777770500302377400004200000001217spice3c1/spice3/dev/tra/msc51.batcl /I..\..\include\ /c TRA.c >> ..\..\errs.out cl /I..\..\include\ /c TRAacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c TRAaccept.c >> ..\..\errs.out cl /I..\..\include\ /c TRAask.c >> ..\..\errs.out cl /I..\..\include\ /c TRAdelete.c >> ..\..\errs.out cl /I..\..\include\ /c TRAdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c TRAload.c >> ..\..\errs.out cl /I..\..\include\ /c TRAmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c TRAparam.c >> ..\..\errs.out cl /I..\..\include\ /c TRAsetup.c >> ..\..\errs.out cl /I..\..\include\ /c TRAtemp.c >> ..\..\errs.out cl /I..\..\include\ /c TRAtrunc.c >> ..\..\errs.out lib ..\..\DEV3.lib @RESPONSE.LIB 0707070124061540531006440006700000000000011777770500302400000004100000023243spice3c1/spice3/dev/tra/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ tra.c\ traacload.c\ traaccept.c\ traask.c\ tradelete.c\ tradestroy.c\ traload.c\ tramdelete.c\ traparam.c\ trasetup.c\ tratemp.c\ tratrunc.c COBJS = \ tra.o\ traacload.o\ traaccept.o\ traask.o\ tradelete.o\ tradestroy.o\ traload.o\ tramdelete.o\ traparam.o\ trasetup.o\ tratemp.o\ tratrunc.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-ltra.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Ctra ${LINTFLAGS} ${CFILES} mv llib-ltra.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE tra.o: ../../include/acdefs.h tra.o: ../../include/cktdefs.h tra.o: ../../include/devdefs.h tra.o: ../../include/gendefs.h tra.o: ../../include/ifsim.h tra.o: ../../include/jobdefs.h tra.o: ../../include/optdefs.h tra.o: ../../include/pzdefs.h tra.o: ../../include/sendefs.h tra.o: ../../include/smpdefs.h tra.o: ../../include/tradefs.h tra.o: ../../include/trcvdefs.h tra.o: ../../include/tskdefs.h tra.o: ../../include/complex.h tra.o: ../../include/prefix.h tra.o: ../../include/suffix.h traacload.o: ../../include/acdefs.h traacload.o: ../../include/cktdefs.h traacload.o: ../../include/gendefs.h traacload.o: ../../include/iferrmsgs.h traacload.o: ../../include/ifsim.h traacload.o: ../../include/jobdefs.h traacload.o: ../../include/optdefs.h traacload.o: ../../include/pzdefs.h traacload.o: ../../include/sendefs.h traacload.o: ../../include/smpdefs.h traacload.o: ../../include/sperror.h traacload.o: ../../include/tradefs.h traacload.o: ../../include/trcvdefs.h traacload.o: ../../include/tskdefs.h traacload.o: ../../include/complex.h traacload.o: ../../include/prefix.h traacload.o: ../../include/suffix.h traaccept.o: ../../include/acdefs.h traaccept.o: ../../include/cktdefs.h traaccept.o: ../../include/gendefs.h traaccept.o: ../../include/iferrmsgs.h traaccept.o: ../../include/ifsim.h traaccept.o: ../../include/jobdefs.h traaccept.o: ../../include/optdefs.h traaccept.o: ../../include/pzdefs.h traaccept.o: ../../include/sendefs.h traaccept.o: ../../include/smpdefs.h traaccept.o: ../../include/sperror.h traaccept.o: ../../include/tradefs.h traaccept.o: ../../include/trcvdefs.h traaccept.o: ../../include/tskdefs.h traaccept.o: ../../include/complex.h traaccept.o: ../../include/prefix.h traaccept.o: ../../include/suffix.h traaccept.o: ../../include/util.h traask.o: ../../include/acdefs.h traask.o: ../../include/cktdefs.h traask.o: ../../include/devdefs.h traask.o: ../../include/gendefs.h traask.o: ../../include/iferrmsgs.h traask.o: ../../include/ifsim.h traask.o: ../../include/jobdefs.h traask.o: ../../include/optdefs.h traask.o: ../../include/pzdefs.h traask.o: ../../include/sendefs.h traask.o: ../../include/smpdefs.h traask.o: ../../include/sperror.h traask.o: ../../include/tradefs.h traask.o: ../../include/trcvdefs.h traask.o: ../../include/tskdefs.h traask.o: ../../include/complex.h traask.o: ../../include/prefix.h traask.o: ../../include/suffix.h traask.o: ../../include/util.h tradelete.o: ../../include/acdefs.h tradelete.o: ../../include/cktdefs.h tradelete.o: ../../include/gendefs.h tradelete.o: ../../include/iferrmsgs.h tradelete.o: ../../include/ifsim.h tradelete.o: ../../include/jobdefs.h tradelete.o: ../../include/optdefs.h tradelete.o: ../../include/pzdefs.h tradelete.o: ../../include/sendefs.h tradelete.o: ../../include/smpdefs.h tradelete.o: ../../include/sperror.h tradelete.o: ../../include/tradefs.h tradelete.o: ../../include/trcvdefs.h tradelete.o: ../../include/tskdefs.h tradelete.o: ../../include/complex.h tradelete.o: ../../include/prefix.h tradelete.o: ../../include/suffix.h tradelete.o: ../../include/util.h tradestroy.o: ../../include/acdefs.h tradestroy.o: ../../include/cktdefs.h tradestroy.o: ../../include/gendefs.h tradestroy.o: ../../include/ifsim.h tradestroy.o: ../../include/jobdefs.h tradestroy.o: ../../include/optdefs.h tradestroy.o: ../../include/pzdefs.h tradestroy.o: ../../include/sendefs.h tradestroy.o: ../../include/smpdefs.h tradestroy.o: ../../include/tradefs.h tradestroy.o: ../../include/trcvdefs.h tradestroy.o: ../../include/tskdefs.h tradestroy.o: ../../include/complex.h tradestroy.o: ../../include/prefix.h tradestroy.o: ../../include/suffix.h tradestroy.o: ../../include/util.h traload.o: ../../include/acdefs.h traload.o: ../../include/cktdefs.h traload.o: ../../include/gendefs.h traload.o: ../../include/iferrmsgs.h traload.o: ../../include/ifsim.h traload.o: ../../include/jobdefs.h traload.o: ../../include/optdefs.h traload.o: ../../include/pzdefs.h traload.o: ../../include/sendefs.h traload.o: ../../include/smpdefs.h traload.o: ../../include/sperror.h traload.o: ../../include/trandefs.h traload.o: ../../include/tradefs.h traload.o: ../../include/trcvdefs.h traload.o: ../../include/tskdefs.h traload.o: ../../include/complex.h traload.o: ../../include/prefix.h traload.o: ../../include/suffix.h traload.o: ../../include/util.h tramdelete.o: ../../include/acdefs.h tramdelete.o: ../../include/cktdefs.h tramdelete.o: ../../include/gendefs.h tramdelete.o: ../../include/iferrmsgs.h tramdelete.o: ../../include/ifsim.h tramdelete.o: ../../include/jobdefs.h tramdelete.o: ../../include/optdefs.h tramdelete.o: ../../include/pzdefs.h tramdelete.o: ../../include/sendefs.h tramdelete.o: ../../include/smpdefs.h tramdelete.o: ../../include/sperror.h tramdelete.o: ../../include/tradefs.h tramdelete.o: ../../include/trcvdefs.h tramdelete.o: ../../include/tskdefs.h tramdelete.o: ../../include/complex.h tramdelete.o: ../../include/prefix.h tramdelete.o: ../../include/suffix.h tramdelete.o: ../../include/util.h traparam.o: ../../include/acdefs.h traparam.o: ../../include/cktdefs.h traparam.o: ../../include/gendefs.h traparam.o: ../../include/iferrmsgs.h traparam.o: ../../include/ifsim.h traparam.o: ../../include/jobdefs.h traparam.o: ../../include/optdefs.h traparam.o: ../../include/pzdefs.h traparam.o: ../../include/sendefs.h traparam.o: ../../include/smpdefs.h traparam.o: ../../include/sperror.h traparam.o: ../../include/tradefs.h traparam.o: ../../include/trcvdefs.h traparam.o: ../../include/tskdefs.h traparam.o: ../../include/complex.h traparam.o: ../../include/prefix.h traparam.o: ../../include/suffix.h traparam.o: ../../include/util.h trasetup.o: ../../include/acdefs.h trasetup.o: ../../include/cktdefs.h trasetup.o: ../../include/gendefs.h trasetup.o: ../../include/iferrmsgs.h trasetup.o: ../../include/ifsim.h trasetup.o: ../../include/jobdefs.h trasetup.o: ../../include/optdefs.h trasetup.o: ../../include/pzdefs.h trasetup.o: ../../include/sendefs.h trasetup.o: ../../include/smpdefs.h trasetup.o: ../../include/sperror.h trasetup.o: ../../include/tradefs.h trasetup.o: ../../include/trcvdefs.h trasetup.o: ../../include/tskdefs.h trasetup.o: ../../include/complex.h trasetup.o: ../../include/prefix.h trasetup.o: ../../include/suffix.h trasetup.o: ../../include/util.h tratemp.o: ../../include/acdefs.h tratemp.o: ../../include/cktdefs.h tratemp.o: ../../include/gendefs.h tratemp.o: ../../include/iferrmsgs.h tratemp.o: ../../include/ifsim.h tratemp.o: ../../include/jobdefs.h tratemp.o: ../../include/optdefs.h tratemp.o: ../../include/pzdefs.h tratemp.o: ../../include/sendefs.h tratemp.o: ../../include/smpdefs.h tratemp.o: ../../include/sperror.h tratemp.o: ../../include/tradefs.h tratemp.o: ../../include/trcvdefs.h tratemp.o: ../../include/tskdefs.h tratemp.o: ../../include/complex.h tratemp.o: ../../include/prefix.h tratemp.o: ../../include/suffix.h tratemp.o: ../../include/util.h tratrunc.o: ../../include/acdefs.h tratrunc.o: ../../include/cktdefs.h tratrunc.o: ../../include/gendefs.h tratrunc.o: ../../include/iferrmsgs.h tratrunc.o: ../../include/ifsim.h tratrunc.o: ../../include/jobdefs.h tratrunc.o: ../../include/optdefs.h tratrunc.o: ../../include/pzdefs.h tratrunc.o: ../../include/sendefs.h tratrunc.o: ../../include/smpdefs.h tratrunc.o: ../../include/sperror.h tratrunc.o: ../../include/tradefs.h tratrunc.o: ../../include/trcvdefs.h tratrunc.o: ../../include/tskdefs.h tratrunc.o: ../../include/complex.h tratrunc.o: ../../include/prefix.h tratrunc.o: ../../include/suffix.h tratrunc.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061540541006440006700000000000011777770500302400100004500000000253spice3c1/spice3/dev/tra/response.lib+TRA.OBJ& +TRAACLOA.OBJ& +TRAACCEP.OBJ& +TRAASK.OBJ& +TRADELET.OBJ& +TRADESTR.OBJ& +TRALOAD.OBJ& +TRAMDELE.OBJ& +TRAPARAM.OBJ& +TRASETUP.OBJ& +TRATEMP.OBJ& +TRATRUNC.OBJ; 0707070124061540551006440006700000000000011777770500302400100003600000004477spice3c1/spice3/dev/tra/tra.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "devdefs.h" #include "ifsim.h" #include "tradefs.h" #include "suffix.h" RCSID("TRA.c $Revision: 1.8 $ on $Date: 89/03/07 11:32:40 $") static IFparm TRApTable[] = { /* parameters */ IOP( "z0", TRA_Z0, IF_REAL , "Characteristic impedance"), IOP( "zo", TRA_Z0, IF_REAL , "Characteristic impedance"), IOP( "f", TRA_FREQ, IF_REAL , "Frequency"), IOP( "td", TRA_TD, IF_REAL , "Transmission delay"), IOP( "nl", TRA_NL, IF_REAL , "Normalized length at frequency given"), IOP( "v1", TRA_V1, IF_REAL , "Initial voltage at end 1"), IOP( "v2", TRA_V2, IF_REAL , "Initial voltage at end 2"), IOP( "i1", TRA_I1, IF_REAL , "Initial current at end 1"), IOP( "i2", TRA_I2, IF_REAL , "Initial current at end 2"), IP("ic", TRA_IC, IF_REALVEC,"Initial condition vector:v1,i1,v2,i2"), OP( "rel", TRA_RELTOL, IF_REAL , "Rel. rate of change of deriv. for bkpt"), OP( "abs", TRA_ABSTOL, IF_REAL , "Abs. rate of change of deriv. for bkpt"), OP( "pos_node1", TRA_POS_NODE1,IF_INTEGER,"Positive node of end 1 of t. line"), OP( "neg_node1", TRA_NEG_NODE1,IF_INTEGER,"Negative node of end 1 of t. line"), OP( "pos_node2", TRA_POS_NODE2,IF_INTEGER,"Positive node of end 2 of t. line"), OP( "neg_node2", TRA_NEG_NODE2,IF_INTEGER,"Negative node of end 2 of t. line"), OP( "delays",TRA_DELAY, IF_REALVEC, "Delayed values of excitation") }; /*static IFparm TRAmPTable[] = { /* model parameters */ /*};/**/ static char *TRAnames[] = { "P1+", "P1-", "P2+", "P2-" }; SPICEdev TRAinfo = { { "Tranline", "Lossless transmission line", sizeof(TRAnames)/sizeof(char *), sizeof(TRAnames)/sizeof(char *), TRAnames, sizeof(TRApTable)/sizeof(IFparm), TRApTable, 0/*sizeof(TRAmPTable)/sizeof(IFparm)/**/, NULL/*TRAmPTable/**/, }, TRAparam, NULL, TRAload, TRAsetup, TRAsetup, TRAtemp, TRAtrunc, NULL, TRAacLoad, TRAaccept, TRAdestroy, #ifdef DELETES TRAmDelete, TRAdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, TRAask, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sizeof(TRAinstance), sizeof(TRAmodel), }; 0707070124061540561006440006700000000000011777770500302400100004400000004556spice3c1/spice3/dev/tra/traacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAacLoad.c $Revision: 1.4 $ on $Date: 88/07/22 19:36:51 $") int TRAacLoad(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current values into the * sparse matrix previously provided */ { register TRAmodel *model = (TRAmodel *)inModel; register TRAinstance *here; double real; double imag; /* loop through all the transmission line models */ for( ; model != NULL; model = model->TRAnextModel ) { /* loop through all the instances of the model */ for (here = model->TRAinstances; here != NULL ; here=here->TRAnextInstance) { real = cos(-ckt->CKTomega*here->TRAtd); imag = sin(-ckt->CKTomega*here->TRAtd); *(here->TRApos1Pos1Ptr) += here->TRAconduct; *(here->TRApos1Int1Ptr) -= here->TRAconduct; *(here->TRAneg1Ibr1Ptr) -= 1; *(here->TRApos2Pos2Ptr) += here->TRAconduct; *(here->TRAneg2Ibr2Ptr) -= 1; *(here->TRAint1Pos1Ptr) -= here->TRAconduct; *(here->TRAint1Int1Ptr) += here->TRAconduct; *(here->TRAint1Ibr1Ptr) += 1; *(here->TRAint2Int2Ptr) += here->TRAconduct; *(here->TRAint2Ibr2Ptr) += 1; *(here->TRAibr1Neg1Ptr) -= 1; *(here->TRAibr1Pos2Ptr+0) -= real; *(here->TRAibr1Pos2Ptr+1) -= imag; *(here->TRAibr1Neg2Ptr+0) += real; *(here->TRAibr1Neg2Ptr+1) += imag; *(here->TRAibr1Int1Ptr) += 1; *(here->TRAibr1Ibr2Ptr+0) -= real * here->TRAimped; *(here->TRAibr1Ibr2Ptr+1) -= imag * here->TRAimped; *(here->TRAibr2Pos1Ptr+0) -= real; *(here->TRAibr2Pos1Ptr+1) -= imag; *(here->TRAibr2Neg1Ptr+0) += real; *(here->TRAibr2Neg1Ptr+1) += imag; *(here->TRAibr2Neg2Ptr) -= 1; *(here->TRAibr2Int2Ptr) += 1; *(here->TRAibr2Ibr1Ptr+0) -= real * here->TRAimped; *(here->TRAibr2Ibr1Ptr+1) -= imag * here->TRAimped; *(here->TRApos2Int2Ptr) -= here->TRAconduct; *(here->TRAint2Pos2Ptr) -= here->TRAconduct; } } return(OK); } 0707070124061540571006440006700000000000011777770500302400100004100000005202spice3c1/spice3/dev/tra/traask.c/* * Copyright (c) 1987 Thomas L. Quarles */ /* * This routine gives access to the internal device parameter * of TRAnsmission lines */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "tradefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("TRAask.c $Revision: 1.4 $ on $Date: 88/10/01 13:52:04 $") /* ARGSUSED */ int TRAask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { TRAinstance *here = (TRAinstance *)inst; int temp; switch(which) { case TRA_POS_NODE1: value->iValue = here->TRAposNode1; return (OK); case TRA_NEG_NODE1: value->iValue = here->TRAnegNode1; return (OK); case TRA_POS_NODE2: value->iValue = here->TRAposNode2; return (OK); case TRA_NEG_NODE2: value->iValue = here->TRAnegNode2; return (OK); case TRA_INT_NODE1: value->iValue = here->TRAintNode1; return (OK); case TRA_INT_NODE2: value->iValue = here->TRAintNode2; return (OK); case TRA_Z0: value->rValue = here->TRAimped; return (OK); case TRA_TD: value->rValue = here->TRAtd; return (OK); case TRA_NL: value->rValue = here->TRAnl; return (OK); case TRA_FREQ: value->rValue = here->TRAf; return (OK); case TRA_V1: value->rValue = here->TRAinitVolt1; return (OK); case TRA_I1: value->rValue = here->TRAinitCur1; return (OK); case TRA_V2: value->rValue = here->TRAinitVolt2; return (OK); case TRA_I2: value->rValue = here->TRAinitCur2; return (OK); case TRA_RELTOL: value->rValue = here->TRAreltol; return (OK); case TRA_ABSTOL: value->rValue = here->TRAabstol; return (OK); case TRA_BR_EQ1: value->rValue = here->TRAbrEq1; return (OK); case TRA_BR_EQ2: value->rValue = here->TRAbrEq2; return (OK); case TRA_DELAY: value->v.vec.rVec = (double *) MALLOC(here->TRAsizeDelay); value->v.numValue = temp = here->TRAsizeDelay; while (temp--) { *value->v.vec.rVec++ = *here->TRAdelays++; } return (OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124061540601006440006700000000000011777770500302400100004400000001564spice3c1/spice3/dev/tra/tradelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAdelete.c $Revision: 1.4 $ on $Date: 88/07/22 19:37:00 $") int TRAdelete(inModel,name,kill) GENmodel *inModel; IFuid name; GENinstance **kill; { TRAinstance **fast = (TRAinstance **)kill; TRAmodel *model = (TRAmodel *)inModel; TRAinstance **prev = NULL; TRAinstance *here; for( ; model ; model = model->TRAnextModel) { prev = &(model->TRAinstances); for(here = *prev; here ; here = *prev) { if(here->TRAname == name || (fast && here==*fast) ) { *prev= here->TRAnextInstance; FREE(here); return(OK); } prev = &(here->TRAnextInstance); } } return(E_NODEV); } 0707070124061540611006440006700000000000011777770500302400100004500000001426spice3c1/spice3/dev/tra/tradestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "tradefs.h" #include "suffix.h" RCSID("TRAdestroy.c $Revision: 1.4 $ on $Date: 88/07/22 19:37:01 $") void TRAdestroy(inModel) GENmodel **inModel; { TRAmodel **model = (TRAmodel **)inModel; TRAinstance *here; TRAinstance *prev = NULL; TRAmodel *mod = *model; TRAmodel *oldmod = NULL; for( ; mod ; mod = mod->TRAnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (TRAinstance *)NULL; for(here = mod->TRAinstances ; here ; here = here->TRAnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061540621006440006700000000000011777770500302400100004200000015360spice3c1/spice3/dev/tra/traload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "tradefs.h" #include "trandefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAload.c $Revision: 1.6 $ on $Date: 88/08/23 18:17:45 $") /*ARGSUSED*/ int TRAload(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* actually load the current values into the * sparse matrix previously provided */ { register TRAmodel *model = (TRAmodel *)inModel; register TRAinstance *here; double t1,t2,t3; double f1,f2,f3; register int i; /* loop through all the transmission line models */ for( ; model != NULL; model = model->TRAnextModel ) { /* loop through all the instances of the model */ for (here = model->TRAinstances; here != NULL ; here=here->TRAnextInstance) { *(here->TRApos1Pos1Ptr) += here->TRAconduct; *(here->TRApos1Int1Ptr) -= here->TRAconduct; *(here->TRAneg1Ibr1Ptr) -= 1; *(here->TRApos2Pos2Ptr) += here->TRAconduct; *(here->TRAneg2Ibr2Ptr) -= 1; *(here->TRAint1Pos1Ptr) -= here->TRAconduct; *(here->TRAint1Int1Ptr) += here->TRAconduct; *(here->TRAint1Ibr1Ptr) += 1; *(here->TRAint2Int2Ptr) += here->TRAconduct; *(here->TRAint2Ibr2Ptr) += 1; *(here->TRAibr1Neg1Ptr) -= 1; *(here->TRAibr1Int1Ptr) += 1; *(here->TRAibr2Neg2Ptr) -= 1; *(here->TRAibr2Int2Ptr) += 1; *(here->TRApos2Int2Ptr) -= here->TRAconduct; *(here->TRAint2Pos2Ptr) -= here->TRAconduct; if(ckt->CKTmode & MODEDC) { *(here->TRAibr1Pos2Ptr) -= 1; *(here->TRAibr1Neg2Ptr) += 1; *(here->TRAibr1Ibr2Ptr) -= (1-ckt->CKTgmin)*here->TRAimped; *(here->TRAibr2Pos1Ptr) -= 1; *(here->TRAibr2Neg1Ptr) += 1; *(here->TRAibr2Ibr1Ptr) -= (1-ckt->CKTgmin)*here->TRAimped; } else { if (ckt->CKTmode & MODEINITTRAN) { if(ckt->CKTmode & MODEUIC) { here->TRAinput1 = here->TRAinitVolt2 + here->TRAinitCur2 * here->TRAimped; here->TRAinput2 = here->TRAinitVolt1 + here->TRAinitCur1 * here->TRAimped; } else { here->TRAinput1 = ( *(ckt->CKTrhsOld+here->TRAposNode2) - *(ckt->CKTrhsOld+here->TRAnegNode2) ) + ( *(ckt->CKTrhsOld+here->TRAbrEq2) *here->TRAimped); here->TRAinput2 = ( *(ckt->CKTrhsOld+here->TRAposNode1) - *(ckt->CKTrhsOld+here->TRAnegNode1) ) + ( *(ckt->CKTrhsOld+here->TRAbrEq1) *here->TRAimped); } *(here->TRAdelays ) = -2*here->TRAtd; *(here->TRAdelays +3) = -here->TRAtd; *(here->TRAdelays+6) = 0; *(here->TRAdelays+1) = *(here->TRAdelays +4) = *(here->TRAdelays+7) = here->TRAinput1; *(here->TRAdelays+2) = *(here->TRAdelays +5) = *(here->TRAdelays+8) = here->TRAinput2; here->TRAsizeDelay = 2; } else { if(ckt->CKTmode & MODEINITPRED) { for(i=2;(iTRAsizeDelay) && (*(here->TRAdelays +3*i) <= (ckt->CKTtime-here->TRAtd));i++) {;/*loop does it*/} t1 = *(here->TRAdelays + (3*(i-2))); t2 = *(here->TRAdelays + (3*(i-1))); t3 = *(here->TRAdelays + (3*(i ))); if( (t2-t1)==0 || (t3-t2) == 0) continue; f1 = (ckt->CKTtime - here->TRAtd - t2) * (ckt->CKTtime - here->TRAtd - t3) ; f2 = (ckt->CKTtime - here->TRAtd - t1) * (ckt->CKTtime - here->TRAtd - t3) ; f3 = (ckt->CKTtime - here->TRAtd - t1) * (ckt->CKTtime - here->TRAtd - t2) ; if((t2-t1)==0) { /* should never happen, but don't want * to divide by zero, EVER... */ f1=0; f2=0; } else { f1 /= (t1-t2); f2 /= (t2-t1); } if((t3-t2)==0) { /* should never happen, but don't want * to divide by zero, EVER... */ f2=0; f3=0; } else { f2 /= (t2-t3); f3 /= (t2-t3); } if((t3-t1)==0) { /* should never happen, but don't want * to divide by zero, EVER... */ f1=0; f2=0; } else { f1 /= (t1-t3); f3 /= (t1-t3); } /*printf("at time %g, using %g, %g, %g\n",ckt->CKTtime, t1,t2,t3); printf("values %g, %g, %g \n", *(here->TRAdelays + (3*(i-2))+1), *(here->TRAdelays + (3*(i-1))+1), *(here->TRAdelays + (3*(i ))+1) ); printf("and %g, %g, %g \n", *(here->TRAdelays + (3*(i-2))+2), *(here->TRAdelays + (3*(i-1))+2), *(here->TRAdelays + (3*(i ))+2) );*/ here->TRAinput1 = f1 * *(here->TRAdelays + (3*(i-2))+1) + f2 * *(here->TRAdelays + (3*(i-1))+1) + f3 * *(here->TRAdelays + (3*(i ))+1); here->TRAinput2 = f1 * *(here->TRAdelays + (3*(i-2))+2) + f2 * *(here->TRAdelays + (3*(i-1))+2) + f3 * *(here->TRAdelays + (3*(i ))+2); } } *(ckt->CKTrhs + here->TRAbrEq1) += here->TRAinput1; *(ckt->CKTrhs + here->TRAbrEq2) += here->TRAinput2; } } } return(OK); } 0707070124061540631006440006700000000000011777770500302400100004500000001776spice3c1/spice3/dev/tra/tramdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAmDelete.c $Revision: 1.4 $ on $Date: 88/07/22 19:37:04 $") int TRAmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { TRAmodel **model = (TRAmodel **)inModel; TRAmodel *modfast = (TRAmodel *)kill; TRAinstance *here; TRAinstance *prev = NULL; TRAmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->TRAnextModel)) { if( (*model)->TRAmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->TRAnextModel; /* cut deleted device out of list */ for(here = (*model)->TRAinstances ; here ; here = here->TRAnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061540641006440006700000000000011777770500302400100004300000004401spice3c1/spice3/dev/tra/traparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "tradefs.h" #include "ifsim.h" #include "sperror.h" #include "suffix.h" RCSID("TRAparam.c $Revision: 1.5 $ on $Date: 88/07/22 19:38:56 $") /* ARGSUSED */ int TRAparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { TRAinstance *here = (TRAinstance *)inst; switch(param) { case TRA_RELTOL: here->TRAreltol = value->rValue; here->TRAreltolGiven = TRUE; break; case TRA_ABSTOL: here->TRAabstol = value->rValue; here->TRAabstolGiven = TRUE; break; case TRA_Z0: here->TRAimped = value->rValue; here->TRAimpedGiven = TRUE; break; case TRA_TD: here->TRAtd = value->rValue; here->TRAtdGiven = TRUE; break; case TRA_NL: here->TRAnl= value->rValue; here->TRAnlGiven = TRUE; break; case TRA_FREQ: here->TRAf= value->rValue; here->TRAfGiven = TRUE; break; case TRA_V1: here->TRAinitVolt1 = value->rValue; here->TRAicV1Given = TRUE; break; case TRA_I1: here->TRAinitCur1 = value->rValue; here->TRAicC1Given = TRUE; break; case TRA_V2: here->TRAinitVolt2 = value->rValue; here->TRAicV2Given = TRUE; break; case TRA_I2: here->TRAinitCur2 = value->rValue; here->TRAicC2Given = TRUE; break; case TRA_IC: switch(value->v.numValue){ case 4: here->TRAinitCur2 = *(value->v.vec.rVec+3); case 3: here->TRAinitVolt2 = *(value->v.vec.rVec+2); case 2: here->TRAinitCur1 = *(value->v.vec.rVec+1); case 1: here->TRAinitVolt1 = *(value->v.vec.rVec); break; default: return(E_BADPARM); } break; default: return(E_BADPARM); } return(OK); } 0707070124061540651006440006700000000000011777770500302400100004300000010033spice3c1/spice3/dev/tra/trasetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAsetup.c $Revision: 1.5 $ on $Date: 88/07/22 19:37:06 $") /* ARGSUSED */ int TRAsetup(matrix,inModel,ckt,state) register SMPmatrix *matrix; GENmodel *inModel; register CKTcircuit *ckt; int *state; /* load the transmission line structure with those pointers needed later * for fast matrix loading */ { register TRAmodel *model = (TRAmodel *)inModel; register TRAinstance *here; int error; CKTnode *tmp; /* loop through all the transmission line models */ for( ; model != NULL; model = model->TRAnextModel ) { /* loop through all the instances of the model */ for (here = model->TRAinstances; here != NULL ; here=here->TRAnextInstance) { if(here->TRAbrEq1==0) { error = CKTmkVolt(ckt,&tmp,here->TRAname,"i1"); if(error) return(error); here->TRAbrEq1 = tmp->number; } if(here->TRAbrEq2==0) { error = CKTmkVolt(ckt,&tmp,here->TRAname,"i2"); if(error) return(error); here->TRAbrEq2 = tmp->number; } if(here->TRAintNode1==0) { error = CKTmkVolt(ckt,&tmp,here->TRAname,"int1"); if(error) return(error); here->TRAintNode1 = tmp->number; } if(here->TRAintNode2==0) { error = CKTmkVolt(ckt,&tmp,here->TRAname,"int2"); if(error) return(error); here->TRAintNode2 = tmp->number; } /* allocate the delay table */ here->TRAdelays = (double *)MALLOC(15*sizeof(double)); here->TRAallocDelay = 4; /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(TRAibr1Ibr2Ptr, TRAbrEq1, TRAbrEq2) TSTALLOC(TRAibr1Int1Ptr, TRAbrEq1, TRAintNode1) TSTALLOC(TRAibr1Neg1Ptr, TRAbrEq1, TRAnegNode1) TSTALLOC(TRAibr1Neg2Ptr, TRAbrEq1, TRAnegNode2) TSTALLOC(TRAibr1Pos2Ptr, TRAbrEq1, TRAposNode2) TSTALLOC(TRAibr2Ibr1Ptr, TRAbrEq2, TRAbrEq1) TSTALLOC(TRAibr2Int2Ptr, TRAbrEq2, TRAintNode2) TSTALLOC(TRAibr2Neg1Ptr, TRAbrEq2, TRAnegNode1) TSTALLOC(TRAibr2Neg2Ptr, TRAbrEq2, TRAnegNode2) TSTALLOC(TRAibr2Pos1Ptr, TRAbrEq2, TRAposNode1) TSTALLOC(TRAint1Ibr1Ptr, TRAintNode1, TRAbrEq1) TSTALLOC(TRAint1Int1Ptr, TRAintNode1, TRAintNode1) TSTALLOC(TRAint1Pos1Ptr, TRAintNode1, TRAposNode1) TSTALLOC(TRAint2Ibr2Ptr, TRAintNode2, TRAbrEq2) TSTALLOC(TRAint2Int2Ptr, TRAintNode2, TRAintNode2) TSTALLOC(TRAint2Pos2Ptr, TRAintNode2, TRAposNode2) TSTALLOC(TRAneg1Ibr1Ptr, TRAnegNode1, TRAbrEq1) TSTALLOC(TRAneg2Ibr2Ptr, TRAnegNode2, TRAbrEq2) TSTALLOC(TRApos1Int1Ptr, TRAposNode1, TRAintNode1) TSTALLOC(TRApos1Pos1Ptr, TRAposNode1, TRAposNode1) TSTALLOC(TRApos2Int2Ptr, TRAposNode2, TRAintNode2) TSTALLOC(TRApos2Pos2Ptr, TRAposNode2, TRAposNode2) if(!here->TRAnlGiven) { here->TRAnl = .25; } if(!here->TRAfGiven) { here->TRAf = 1e9; } if(!here->TRAreltolGiven) { here->TRAreltol = 1; } if(!here->TRAabstolGiven) { here->TRAabstol = 1; } if(!here->TRAimpedGiven) { (*(SPfrontEnd->IFerror))(ERR_FATAL, "%s: transmission line z0 must be given", &(here->TRAname)); return(E_BADPARM); } } } return(OK); } 0707070124061540661006440006700000000000011777770500302400100004200000001743spice3c1/spice3/dev/tra/tratemp.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAtemp.c $Revision: 1.2 $ on $Date: 88/07/22 19:37:08 $") /* ARGSUSED */ int TRAtemp(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; /* * pre-process parameters for later use */ { register TRAmodel *model = (TRAmodel *)inModel; register TRAinstance *here; /* loop through all the transmission line models */ for( ; model != NULL; model = model->TRAnextModel ) { /* loop through all the instances of the model */ for (here = model->TRAinstances; here != NULL ; here=here->TRAnextInstance) { if(!here->TRAtdGiven) { here->TRAtd = here->TRAnl/here->TRAf; } here->TRAconduct = 1/here->TRAimped; } } return(OK); } 0707070124061540671006440006700000000000011777770500302400100004300000005754spice3c1/spice3/dev/tra/tratrunc.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAtrunc.c $Revision: 1.3 $ on $Date: 88/07/22 19:37:09 $") int TRAtrunc(inModel,ckt,timeStep) GENmodel *inModel; register CKTcircuit *ckt; double *timeStep; { register TRAmodel *model = (TRAmodel *)inModel; register TRAinstance *here; double v1,v2,v3,v4; double v5,v6,d1,d2,d3,d4; double tmp; /* loop through all the transmission line models */ for( ; model != NULL; model = model->TRAnextModel ) { /* loop through all the instances of the model */ for (here = model->TRAinstances; here != NULL ; here=here->TRAnextInstance) { v1 = ( *(ckt->CKTrhsOld + here->TRAposNode2) - *(ckt->CKTrhsOld + here->TRAnegNode2)) + *(ckt->CKTrhsOld + here->TRAbrEq2) * here->TRAimped; v2 = *(here->TRAdelays+1+3*(here->TRAsizeDelay)); v3 = *(here->TRAdelays+1+3*(here->TRAsizeDelay-1)); v4 = ( *(ckt->CKTrhsOld + here->TRAposNode1) - *(ckt->CKTrhsOld + here->TRAnegNode1)) + *(ckt->CKTrhsOld + here->TRAbrEq1) * here->TRAimped; v5 = *(here->TRAdelays+2+3*(here->TRAsizeDelay)); v6 = *(here->TRAdelays+2+3*(here->TRAsizeDelay-1)); d1 = (v1-v2)/ckt->CKTdeltaOld[1]; d2 = (v2-v3)/ckt->CKTdeltaOld[2]; d3 = (v4-v5)/ckt->CKTdeltaOld[1]; d4 = (v5-v6)/ckt->CKTdeltaOld[2]; /*printf("%s: at %g derivs are %g, %g and %g, %g\n", here->TRAname,ckt->CKTtime,d1,d2,d3,d4);*/ if( (FABS(d1-d2) >= here->TRAreltol*MAX(FABS(d1),FABS(d2))+ here->TRAabstol) || (FABS(d3-d4) >= here->TRAreltol*MAX(FABS(d3),FABS(d4))+ here->TRAabstol) ) { /* derivitive changing - need to schedule after delay */ /*printf("%s: at %g set for %g\n",here->TRAname, ckt->CKTtime, *(here->TRAdelays+3*here->TRAsizeDelay-3)+here->TRAtd );*/ /*printf("%g, %g, %g -> %g, %g \n",v1,v2,v3,d1,d2);*/ /*printf("%g, %g, %g -> %g, %g \n",v4,v5,v6,d3,d4);*/ /* also set for break after PREVIOUS point */ /*printf("setting break\n");*/ /* will need to set a breakpoint at *(here->TRAdelays+3*(here->TRAsizeDelay)) + here->TRAtd so we need to make sure we don't step past it */ /* the previous timepoint plus the delay */ tmp = *(here->TRAdelays+3*here->TRAsizeDelay) + here->TRAtd; /* minus current time */ tmp -= ckt->CKTtime; *timeStep = MIN(*timeStep,tmp); } } } return(OK); } 0707070124061540701006440006700000000000011777770500302400100004400000013207spice3c1/spice3/dev/tra/traaccept.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "tradefs.h" #include "sperror.h" #include "suffix.h" RCSID("TRAaccept.c $Revision: 1.4 $ on $Date: 88/07/22 19:36:57 $") int TRAaccept(ckt,inModel) register CKTcircuit *ckt; GENmodel *inModel; { register TRAmodel *model = (TRAmodel *)inModel; register TRAinstance *here; register int i=0,j; double v1,v2,v3,v4; double v5,v6,d1,d2,d3,d4; double *from,*to; int error; /* loop through all the transmission line models */ for( ; model != NULL; model = model->TRAnextModel ) { /* loop through all the instances of the model */ for (here = model->TRAinstances; here != NULL ; here=here->TRAnextInstance) { if( (ckt->CKTtime - here->TRAtd) > *(here->TRAdelays+6)) { /* shift! */ for(i=2;iTRAsizeDelay && (ckt->CKTtime - here->TRAtd > *(here->TRAdelays+3*i));i++) { /* loop does it all */ ; } i -= 2; for(j=i;j<=here->TRAsizeDelay;j++) { from = here->TRAdelays + 3*j; to = here->TRAdelays + 3*(j-i); *(to) = *(from); *(to+1) = *(from+1); *(to+2) = *(from+2); } here->TRAsizeDelay -= i; } if(ckt->CKTtime - *(here->TRAdelays+3*here->TRAsizeDelay) > ckt->CKTminBreak) { if(here->TRAallocDelay <= here->TRAsizeDelay) { /* need to grab some more space */ here->TRAallocDelay += 5; here->TRAdelays = (double *)REALLOC((char *)here->TRAdelays, (here->TRAallocDelay+1)*3*sizeof(double)); } here->TRAsizeDelay ++; to = (here->TRAdelays +3*here->TRAsizeDelay); *to = ckt->CKTtime; to = (here->TRAdelays+1+3*here->TRAsizeDelay); *to = ( *(ckt->CKTrhsOld + here->TRAposNode2) -*(ckt->CKTrhsOld + here->TRAnegNode2)) + *(ckt->CKTrhsOld + here->TRAbrEq2)* here->TRAimped; *(here->TRAdelays+2+3*here->TRAsizeDelay) = ( *(ckt->CKTrhsOld + here->TRAposNode1) -*(ckt->CKTrhsOld + here->TRAnegNode1)) + *(ckt->CKTrhsOld + here->TRAbrEq1)* here->TRAimped; #ifdef NOTDEF v1 = *(here->TRAdelays+1+3*here->TRAsizeDelay); v2 = *(here->TRAdelays+1+3*(here->TRAsizeDelay-1)); v3 = *(here->TRAdelays+2+3*here->TRAsizeDelay); v4 = *(here->TRAdelays+2+3*(here->TRAsizeDelay-1)); if( (FABS(v1-v2) >= 50*ckt->CKTreltol* MAX(FABS(v1),FABS(v2))+50*ckt->CKTvoltTol) || (FABS(v3-v4) >= 50*ckt->CKTreltol* MAX(FABS(v3),FABS(v4))+50*ckt->CKTvoltTol) ) { /* changing - need to schedule after delay */ /*printf("%s: at %g set for %g and %g\n",here->TRAname, ckt->CKTtime, ckt->CKTtime+here->TRAtd, *(here->TRAdelays+3*here->TRAsizeDelay-3)+ here->TRAtd);*/ error = CKTsetBreak(ckt,ckt->CKTtime+here->TRAtd); if(error) return(error); /* also set for break after PREVIOUS point */ error = CKTsetBreak(ckt, *(here->TRAdelays+3*here->TRAsizeDelay -3) + here->TRAtd); CKTbreakDump(ckt); if(error) return(error); } #else v1 = *(here->TRAdelays+1+3*here->TRAsizeDelay); v2 = *(here->TRAdelays+1+3*(here->TRAsizeDelay-1)); v3 = *(here->TRAdelays+1+3*(here->TRAsizeDelay-2)); v4 = *(here->TRAdelays+2+3*here->TRAsizeDelay); v5 = *(here->TRAdelays+2+3*(here->TRAsizeDelay-1)); v6 = *(here->TRAdelays+2+3*(here->TRAsizeDelay-2)); d1 = (v1-v2)/ckt->CKTdeltaOld[0]; d2 = (v2-v3)/ckt->CKTdeltaOld[1]; d3 = (v4-v5)/ckt->CKTdeltaOld[0]; d4 = (v5-v6)/ckt->CKTdeltaOld[1]; /*printf("%s: at %g derivs are %g, %g and %g, %g\n", here->TRAname,ckt->CKTtime,d1,d2,d3,d4);*/ if( (FABS(d1-d2) >= here->TRAreltol*MAX(FABS(d1),FABS(d2))+ here->TRAabstol) || (FABS(d3-d4) >= here->TRAreltol*MAX(FABS(d3),FABS(d4))+ here->TRAabstol) ) { /* derivitive changing - need to schedule after delay */ /*printf("%s: at %g set for %g\n",here->TRAname, ckt->CKTtime, *(here->TRAdelays+3*here->TRAsizeDelay-3)+here->TRAtd );*/ /*printf("%g, %g, %g -> %g, %g \n",v1,v2,v3,d1,d2);*/ /*printf("%g, %g, %g -> %g, %g \n",v4,v5,v6,d3,d4);*/ /* also set for break after PREVIOUS point */ /*printf("setting break\n");*/ error = CKTsetBreak(ckt, *(here->TRAdelays+3*here->TRAsizeDelay -3) + here->TRAtd); if(error) return(error); } #endif /*NOTDEF*/ } } } return(OK); } 0707070124061540500407550006700000000000021777770500302400100003000000000000spice3c1/spice3/dev/tra0707070124061600301006440006700000000000011777770500302400100003600000010114spice3c1/spice3/dev/ind/ind.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include "devdefs.h" #include "ifsim.h" #include #include "inddefs.h" #include "suffix.h" RCSID("IND.c $Revision: 1.9 $ on $Date: 89/03/08 14:00:40 $") static IFparm INDpTable[] = { /* parameters */ IOP("inductance",IND_IND, IF_REAL,"Inductance of inductor"), IOP("ic", IND_IC, IF_REAL,"Initial current through inductor"), IP( "sens_ind", IND_IND_SENS,IF_FLAG, "flag to request sensitivity WRT inductance"), OP( "flux", IND_FLUX, IF_REAL,"Flux through inductor"), OP( "volt", IND_VOLT, IF_REAL,"Terminal voltage of inductor"), OP( "current", IND_CURRENT,IF_REAL,"Current through the inductor"), OP( "p", IND_POWER, IF_REAL, "instantaneous power dissipated by the inductor"), OP( "sens_dc", IND_QUEST_SENS_DC, IF_REAL, "dc sensitivity sensitivity"), OP( "sens_real", IND_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"), OP( "sens_imag", IND_QUEST_SENS_IMAG, IF_REAL, "dc sensitivity and imag part of ac sensitivty"), OP( "sens_mag", IND_QUEST_SENS_MAG, IF_REAL, "sensitivity of AC magnitude"), OP( "sens_ph", IND_QUEST_SENS_PH, IF_REAL, "sensitivity of AC phase"), OP( "sens_cplx", IND_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity") }; /*static IFparm INDmPTable[] = { /* model parameters */ /*}; /**/ static char *INDnames[] = { "L+", "L-" }; #ifdef MUTUAL static IFparm MUTpTable[] = { /* parameters */ IOP( "coefficient", MUT_COEFF, IF_REAL , "Mutual inductance"), IOP( "inductor1", MUT_IND1, IF_INSTANCE, "First coupled inductor"), IOP( "inductor2", MUT_IND2, IF_INSTANCE, "Second coupled inductor"), IP( "sens_coeff", MUT_COEFF_SENS, IF_FLAG, "flag to request sensitivity WRT coupling factor"), OP( "sens_dc", MUT_QUEST_SENS_DC, IF_REAL, "dc sensitivity "), OP( "sens_real", MUT_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"), OP( "sens_imag", MUT_QUEST_SENS_IMAG, IF_REAL, "dc sensitivity and imag part of ac sensitivty"), OP( "sens_mag", MUT_QUEST_SENS_MAG, IF_REAL, "sensitivity of AC magnitude"), OP( "sens_ph", MUT_QUEST_SENS_PH, IF_REAL, "sensitivity of AC phase"), OP( "sens_cplx", MUT_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity") }; /*static IFparm MUTmPTable[] = { /* model parameters */ /*}; /**/ #endif /*MUTUAL*/ SPICEdev INDinfo = { { "Inductor", "Inductors", sizeof(INDnames)/sizeof(char *), sizeof(INDnames)/sizeof(char *), INDnames, sizeof(INDpTable)/sizeof(IFparm), INDpTable, 0/*sizeof(INDmPTable)/sizeof(IFparm) /**/, NULL/*INDmPTable/**/, }, INDparam, NULL, INDload, INDsetup, INDsetup, NULL, INDtrunc, NULL, INDacLoad, NULL, INDdestroy, #ifdef DELETES INDmDelete, INDdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, INDask, NULL, INDpzLoad, NULL, #ifndef NOSENS INDsSetup, INDsLoad, INDsUpdate, INDsAcLoad, INDsPrint, NULL, #else /* NOSENS */ NULL, NULL, NULL, NULL, NULL, NULL, #endif /* NOSENS */ sizeof(INDinstance), sizeof(INDmodel), }; #ifdef MUTUAL SPICEdev MUTinfo = { { "mutual", "Mutual inductors", 0, /* term count */ 0, /* term count */ NULL, sizeof(MUTpTable)/sizeof(IFparm), MUTpTable, 0/*sizeof(MUTmPTable)/sizeof(IFparm)/**/, NULL/*MUTmPTable/**/, }, MUTparam, NULL, NULL,/* load handled by INDload */ MUTsetup, MUTsetup, NULL, NULL, NULL, MUTacLoad, NULL, MUTdestroy, #ifdef DELETES MUTmDelete, MUTdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, MUTask, NULL, MUTpzLoad, NULL, #ifndef NOSENS MUTsSetup, NULL, NULL, NULL, MUTsPrint, NULL, #else /* NOSENS */ NULL, NULL, NULL, NULL, NULL, NULL, #endif /* NOSENS */ sizeof(MUTinstance), sizeof(MUTmodel), }; #endif /*MUTUAL*/ 0707070124061600311006440006700000000000011777770500302400100004400000001556spice3c1/spice3/dev/ind/indacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDacLoad.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:36 $") int INDacLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register INDmodel *model = (INDmodel*)inModel; double val; register INDinstance *here; for( ; model != NULL; model = model->INDnextModel) { for( here = model->INDinstances;here != NULL; here = here->INDnextInstance) { val = ckt->CKTomega * here->INDinduct; *(here->INDposIbrptr) += 1; *(here->INDnegIbrptr) -= 1; *(here->INDibrPosptr) += 1; *(here->INDibrNegptr) -= 1; *(here->INDibrIbrptr +1) -= val; } } return(OK); } 0707070124061600321006440006700000000000011777770500302400100004100000010412spice3c1/spice3/dev/ind/indask.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "inddefs.h" #include "ifsim.h" #include "cktdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("INDask.c $Revision: 1.5 $ on $Date: 89/04/30 12:14:12 $") /*ARGSUSED*/ int INDask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { INDinstance *here = (INDinstance*)inst; double vr; double vi; double sr; double si; double vm; static char *msg = "Current and power not available for ac analysis"; switch(which) { case IND_FLUX: value->rValue = *(ckt->CKTstate0+here->INDflux); return(OK); case IND_VOLT: value->rValue = *(ckt->CKTstate0+here->INDvolt); return(OK); case IND_IND: value->rValue = here->INDinduct; return(OK); case IND_IC: value->rValue = here->INDinitCond; return(OK); case IND_CURRENT : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "INDask"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = *(ckt->CKTrhsOld + here->INDbrEq); } return(OK); case IND_POWER : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "INDask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = *(ckt->CKTrhsOld + here->INDbrEq) * *(ckt->CKTstate0+here->INDvolt); } return(OK); case IND_QUEST_SENS_DC: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->INDsenParmNo); } return(OK); case IND_QUEST_SENS_REAL: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->INDsenParmNo); } return(OK); case IND_QUEST_SENS_IMAG: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->INDsenParmNo); } return(OK); case IND_QUEST_SENS_MAG: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->INDsenParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->INDsenParmNo); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case IND_QUEST_SENS_PH: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->INDsenParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->INDsenParmNo); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case IND_QUEST_SENS_CPLX: if(ckt->CKTsenInfo){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->INDsenParmNo); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->INDsenParmNo); } return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } 0707070124061600331006440006700000000000011777770500302400100004400000001562spice3c1/spice3/dev/ind/inddelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDdelete.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:39 $") int INDdelete(inModel,name,kill) GENmodel *inModel; IFuid name; GENinstance **kill; { INDmodel *model = (INDmodel*)inModel; INDinstance **fast = (INDinstance**)kill; INDinstance **prev = NULL; INDinstance *here; for( ; model ; model = model->INDnextModel) { prev = &(model->INDinstances); for(here = *prev; here ; here = *prev) { if(here->INDname == name || (fast && here==*fast) ) { *prev= here->INDnextInstance; FREE(here); return(OK); } prev = &(here->INDnextInstance); } } return(E_NODEV); } 0707070124061600341006440006700000000000011777770500302400200004500000001425spice3c1/spice3/dev/ind/inddestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "inddefs.h" #include "suffix.h" RCSID("INDdestroy.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:40 $") void INDdestroy(inModel) GENmodel **inModel; { INDmodel **model = (INDmodel**)inModel; INDinstance *here; INDinstance *prev = NULL; INDmodel *mod = *model; INDmodel *oldmod = NULL; for( ; mod ; mod = mod->INDnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (INDinstance *)NULL; for(here = mod->INDinstances ; here ; here = here->INDnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061600351006440006700000000000011777770500302400200004200000007632spice3c1/spice3/dev/ind/indload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* actually load the current inductance value into the * sparse matrix previously provided */ #include "prefix.h" #include #include #include "util.h" #include "cktdefs.h" #include "inddefs.h" #include "trandefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDload.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:41 $") int INDload(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; double veq; double req; int error; #ifdef MUTUAL register MUTinstance *muthere; register MUTmodel *mutmodel; int ktype; int itype; #endif /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { if(!(ckt->CKTmode & (MODEDC|MODEINITPRED))) { if(ckt->CKTmode & MODEUIC && ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate0 + here->INDflux) = here->INDinduct * here->INDinitCond; } else { *(ckt->CKTstate0 + here->INDflux) = here->INDinduct * *(ckt->CKTrhsOld + here->INDbrEq); } } #ifdef MUTUAL } } ktype = CKTtypelook("mutual"); mutmodel = (MUTmodel *)(ckt->CKThead[ktype]); /* loop through all the mutual inductor models */ for( ; mutmodel != NULL; mutmodel = mutmodel->MUTnextModel ) { /* loop through all the instances of the model */ for (muthere = mutmodel->MUTinstances; muthere != NULL ; muthere=muthere->MUTnextInstance) { if(!(ckt->CKTmode& (MODEDC|MODEINITPRED))) { *(ckt->CKTstate0 + muthere->MUTind1->INDflux) += muthere->MUTfactor * *(ckt->CKTrhsOld+ muthere->MUTind2->INDbrEq); *(ckt->CKTstate0 + muthere->MUTind2->INDflux) += muthere->MUTfactor * *(ckt->CKTrhsOld+ muthere->MUTind1->INDbrEq); } *(muthere->MUTbr1br2) -= muthere->MUTfactor*ckt->CKTag[0]; *(muthere->MUTbr2br1) -= muthere->MUTfactor*ckt->CKTag[0]; } } itype = CKTtypelook("Inductor"); model = (INDmodel *)(ckt->CKThead[itype]); /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { #endif /*MUTUAL*/ if(ckt->CKTmode & MODEDC) { req = 0; veq = 0; } else { #ifndef PREDICTOR if(ckt->CKTmode & MODEINITPRED) { *(ckt->CKTstate0 + here->INDflux) = *(ckt->CKTstate1 + here->INDflux); } else { #endif /*PREDICTOR*/ if (ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->INDflux) = *(ckt->CKTstate0 + here->INDflux); } #ifndef PREDICTOR } #endif /*PREDICTOR*/ error=NIintegrate(ckt,&req,&veq,here->INDinduct,here->INDflux); if(error) return(error); } *(ckt->CKTrhs+here->INDbrEq) += veq; if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1+here->INDvolt) = *(ckt->CKTstate0+here->INDvolt); } *(here->INDposIbrptr) += 1; *(here->INDnegIbrptr) -= 1; *(here->INDibrPosptr) += 1; *(here->INDibrNegptr) -= 1; *(here->INDibrIbrptr) -= req; } } return(OK); } 0707070124061600361006440006700000000000011777770500302400200004500000001774spice3c1/spice3/dev/ind/indmdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDmDelete.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:42 $") int INDmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { INDmodel **model = (INDmodel**)inModel; INDmodel *modfast = (INDmodel*)kill; INDinstance *here; INDinstance *prev = NULL; INDmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->INDnextModel)) { if( (*model)->INDmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->INDnextModel; /* cut deleted device out of list */ for(here = (*model)->INDinstances ; here ; here = here->INDnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061600371006440006700000000000011777770500302400200004300000001543spice3c1/spice3/dev/ind/indparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #include "util.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDparam.c $Revision: 1.6 $ on $Date: 89/01/19 16:28:05 $") /* ARGSUSED */ int INDparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { INDinstance *here = (INDinstance*)inst; switch(param) { case IND_IND: here->INDinduct = value->rValue; here->INDindGiven = TRUE; break; case IND_IC: here->INDinitCond = value->rValue; here->INDicGiven = TRUE; break; case IND_IND_SENS: here->INDsenParmNo = value->iValue; break; default: return(E_BADPARM); } return(OK); } 0707070124061600401006440006700000000000011777770500302400200004400000001714spice3c1/spice3/dev/ind/indpzload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "complex.h" #include "sperror.h" #include "inddefs.h" #include "suffix.h" RCSID("INDpzLoad.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:44 $") /* ARGSUSED */ int INDpzLoad(inModel,ckt,s) GENmodel *inModel; CKTcircuit *ckt; SPcomplex *s; { register INDmodel *model = (INDmodel*)inModel; double val; register INDinstance *here; for( ; model != NULL; model = model->INDnextModel) { for( here = model->INDinstances;here != NULL; here = here->INDnextInstance) { val = here->INDinduct; *(here->INDposIbrptr) += 1; *(here->INDnegIbrptr) -= 1; *(here->INDibrPosptr) += 1; *(here->INDibrNegptr) -= 1; *(here->INDibrIbrptr ) -= val * s->real; *(here->INDibrIbrptr +1) -= val * s->imag; } } return(OK); } 0707070124061600411006440006700000000000011777770500302400200004500000014246spice3c1/spice3/dev/ind/indsacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* actually load the current ac sensitivity * information into the array previously provided */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsAcLoad.c $Revision: 1.3 $ on $Date: 88/10/22 23:53:37 $") int INDsAcLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; double cind,icind,val,ival; #ifdef MUTUAL register MUTinstance *muthere; register MUTmodel *mutmodel; double cind1; double icind1; double cind2; double icind2; double val11; double ival11; double val12; double ival12; double val13; double ival13; double val21; double ival21; double val22; double ival22; double val23; double ival23; double rootl1; double rootl2; double w; double k1; double k2; int ktype; int itype; #endif SENstruct *info; info = ckt->CKTsenInfo; /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { #ifdef MUTUAL } } ktype = CKTtypelook("mutual"); mutmodel = (MUTmodel *)(ckt->CKThead[ktype]); /* loop through all the mutual inductor models */ for( ; mutmodel != NULL; mutmodel = mutmodel->MUTnextModel ) { /* loop through all the instances of the model */ for (muthere = mutmodel->MUTinstances; muthere != NULL ; muthere=muthere->MUTnextInstance) { if(muthere->MUTsenParmNo || muthere->MUTind1->INDsenParmNo || muthere->MUTind2->INDsenParmNo){ cind1 = *(ckt->CKTrhsOld + muthere->MUTind1->INDbrEq); icind1 = *(ckt->CKTirhsOld + muthere->MUTind1->INDbrEq); cind2 = *(ckt->CKTrhsOld + muthere->MUTind2->INDbrEq); icind2 = *(ckt->CKTirhsOld + muthere->MUTind2->INDbrEq); rootl1 = sqrt(muthere->MUTind1->INDinduct) ; rootl2 = sqrt(muthere->MUTind2->INDinduct) ; k1 = 0.5 * muthere->MUTcoupling * rootl2 / rootl1 ; k2 = 0.5 * muthere->MUTcoupling * rootl1 / rootl2 ; w = ckt->CKTomega ; /* load the RHS matrix */ if(muthere->MUTind1->INDsenParmNo){ val11 = - (w * (k1 * icind2)); ival11 = w * (k1 * cind2); val21 = - ( w * k1 * icind1) ; ival21 = w * k1 * cind1 ; *(info->SEN_RHS[muthere->MUTind1->INDbrEq] + muthere->MUTind1->INDsenParmNo) += val11; *(info->SEN_iRHS[muthere->MUTind1->INDbrEq] + muthere->MUTind1->INDsenParmNo) += ival11; *(info->SEN_RHS[muthere->MUTind2->INDbrEq] + muthere->MUTind1->INDsenParmNo) += val21; *(info->SEN_iRHS[muthere->MUTind2->INDbrEq] + muthere->MUTind1->INDsenParmNo) += ival21; } if(muthere->MUTind2->INDsenParmNo){ val12 = -( w * k2 * icind2) ; ival12 = w * k2 * cind2 ; val22 = - (w * ( k2 * icind1)); ival22 = w * ( k2 * cind1); *(info->SEN_RHS[muthere->MUTind1->INDbrEq] + muthere->MUTind2->INDsenParmNo) += val12; *(info->SEN_iRHS[muthere->MUTind1->INDbrEq] + muthere->MUTind2->INDsenParmNo) += ival12; *(info->SEN_RHS[muthere->MUTind2->INDbrEq] + muthere->MUTind2->INDsenParmNo) += val22; *(info->SEN_iRHS[muthere->MUTind2->INDbrEq] + muthere->MUTind2->INDsenParmNo) += ival22; } if(muthere->MUTsenParmNo){ val13 = - w * rootl1 * rootl2 * icind2; ival13 = w * rootl1 * rootl2 * cind2; val23 = - (w * rootl1 * rootl2 * icind1); ival23 = w * rootl1 * rootl2 * cind1; *(info->SEN_RHS[muthere->MUTind1->INDbrEq] + muthere->MUTsenParmNo) += val13; *(info->SEN_iRHS[muthere->MUTind1->INDbrEq] + muthere->MUTsenParmNo) += ival13; *(info->SEN_RHS[muthere->MUTind2->INDbrEq] + muthere->MUTsenParmNo) += val23; *(info->SEN_iRHS[muthere->MUTind2->INDbrEq] + muthere->MUTsenParmNo) += ival23; } } } } itype = CKTtypelook("Inductor"); model = (INDmodel *)(ckt->CKThead[itype]); /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { #endif /* MUTUAL */ if(here->INDsenParmNo){ cind = *(ckt->CKTrhsOld + here->INDbrEq); icind = *(ckt->CKTirhsOld + here->INDbrEq); val = icind * ckt->CKTomega ; ival = cind * ckt->CKTomega ; #ifdef SENSDEBUG fprintf(file,"cind = %.5e,icind = %.5e\n",cind,icind); fprintf(file,"val = %.5e,ival = %.5e\n",val,ival); fprintf(file,"brEq = %.5e,senparmno = %.5e\n", here->INDbrEq,here->INDsenParmNo); #endif /* SENSDEBUG */ /* load the RHS matrix */ *(info->SEN_RHS[here->INDbrEq] + here->INDsenParmNo) -= val; *(info->SEN_iRHS[here->INDbrEq] + here->INDsenParmNo) += ival; } } } return(OK); } 0707070124061600421006440006700000000000011777770500302400200004300000011436spice3c1/spice3/dev/ind/indsload.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* actually load the current ac sensitivity * information into the array previously provided */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsSetup.c $Revision: 1.3 $ on $Date: 88/10/22 23:54:44 $") int INDsLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; int iparmno; double cind; double Osxp; double tag0; double tag1; SENstruct *info; #ifdef MUTUAL register MUTinstance *muthere; register MUTmodel *mutmodel; double cind1; double cind2; double rootl1; double rootl2; int ktype; int itype; int IND1_brEq; int IND2_brEq; #endif info = ckt->CKTsenInfo; if((info->SENmode == DCSEN)||(ckt->CKTmode&MODETRANOP)) return( OK ); if((info->SENmode == TRANSEN) && (ckt->CKTmode & MODEINITTRAN)) return(OK); #ifdef SENSDEBUG fprintf(file,"INDsenLoad\n"); fprintf(file,"time = %.5e\n",ckt->CKTtime); #endif /* SENSDEBUG */ tag0 = ckt->CKTag[0]; tag1 = ckt->CKTag[1]; if(ckt->CKTorder == 1){ tag1 = 0; } /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { #ifdef MUTUAL } } ktype = CKTtypelook("mutual"); mutmodel = (MUTmodel *)(ckt->CKThead[ktype]); /* loop through all the mutual inductor models */ for( ; mutmodel != NULL; mutmodel = mutmodel->MUTnextModel ) { /* loop through all the instances of the model */ for (muthere = mutmodel->MUTinstances; muthere != NULL ; muthere=muthere->MUTnextInstance) { if(muthere->MUTsenParmNo || muthere->MUTind1->INDsenParmNo || muthere->MUTind2->INDsenParmNo){ IND1_brEq = muthere->MUTind1->INDbrEq; IND2_brEq = muthere->MUTind2->INDbrEq; cind1 = *(ckt->CKTrhsOld + IND1_brEq); cind2 = *(ckt->CKTrhsOld + IND2_brEq); rootl1 = sqrt( muthere->MUTind1->INDinduct ); rootl2 = sqrt( muthere->MUTind2->INDinduct ); if(muthere->MUTsenParmNo){ *(info->SEN_RHS[IND1_brEq] + muthere->MUTsenParmNo) += tag0*cind2*rootl2*rootl1; *(info->SEN_RHS[IND2_brEq] + muthere->MUTsenParmNo) += tag0*cind1*rootl2*rootl1; } if(muthere->MUTind1->INDsenParmNo){ *(info->SEN_RHS[IND1_brEq] + muthere->MUTind1->INDsenParmNo) += tag0*cind2*muthere->MUTcoupling*rootl2 / (2*rootl1); *(info->SEN_RHS[IND2_brEq] + muthere->MUTind1->INDsenParmNo) += tag0*cind1*muthere->MUTcoupling*rootl2 / (2*rootl1); } if(muthere->MUTind2->INDsenParmNo){ *(info->SEN_RHS[IND1_brEq] + muthere->MUTind2->INDsenParmNo) += tag0*cind2*muthere->MUTcoupling*rootl1 / (2*rootl2); *(info->SEN_RHS[IND2_brEq] + muthere->MUTind2->INDsenParmNo) += tag0*cind1*muthere->MUTcoupling*rootl1 / (2*rootl2); } } #ifdef SENSDEBUG fprintf(file,"cind1 = %.5e,cind2 = %.5e\n",cind1,cind2); #endif /* SENSDEBUG */ } } itype = CKTtypelook("Inductor"); model = (INDmodel *)(ckt->CKThead[itype]); /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { #endif /* MUTUAL */ cind = *(ckt->CKTrhsOld + here->INDbrEq); #ifdef SENSDEBUG fprintf(file,"\n cind=%.5e\n",cind); fprintf(file,"\n tag0=%.5e,tag1=%.5e\n",tag0,tag1); #endif /* SENSDEBUG */ for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ Osxp = tag0 * *(ckt->CKTstate1 + here->INDsensxp + 2*(iparmno - 1)) + tag1 * *(ckt->CKTstate1 + here->INDsensxp + 2*(iparmno - 1) + 1); if(iparmno == here->INDsenParmNo) Osxp = Osxp - tag0 * cind; #ifdef SENSDEBUG fprintf(file,"\n Osxp=%.5e\n",Osxp); #endif /* SENSDEBUG */ *(info->SEN_RHS[here->INDbrEq] + iparmno) -= Osxp; } } } return(OK); } 0707070124061600431006440006700000000000011777770500302400200004400000002567spice3c1/spice3/dev/ind/indsprint.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* Pretty print the sensitivity info for all * the inductors in the circuit. */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsSetup.c $Revision: 1.2 $ on $Date: 88/07/20 04:26:48 $") void INDsPrint(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; printf("INDUCTORS----------\n"); /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { printf("Model name:%s\n",model->INDmodName); /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { printf(" Instance name:%s\n",here->INDname); printf(" Positive, negative nodes: %s, %s\n", CKTnodName(ckt,here->INDposNode),CKTnodName(ckt,here->INDnegNode)); printf(" Branch Equation: %s\n",CKTnodName(ckt,here->INDbrEq)); printf(" Inductance: %g ",here->INDinduct); printf(here->INDindGiven ? "(specified)\n" : "(default)\n"); printf(" INDsenParmNo:%d\n",here->INDsenParmNo); } } } 0707070124061600441006440006700000000000011777770500302400200004400000001721spice3c1/spice3/dev/ind/indssetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* loop through all the devices and * allocate parameter #s to design parameters */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsSetup.c $Revision: 1.2 $ on $Date: 88/07/20 04:26:50 $") int INDsSetup(info,inModel) register SENstruct *info; GENmodel *inModel; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { if(here->INDsenParmNo){ here->INDsenParmNo = ++(info->SENparms); } } } return(OK); } 0707070124061600451006440006700000000000011777770500302400200004500000011654spice3c1/spice3/dev/ind/indsupdate.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* update the charge sensitivities and their derivatives */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsUpdate.c $Revision: 1.3 $ on $Date: 88/10/22 23:55:15 $") int INDsUpdate(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; double cind; double sxp; double s1; double s2; double s; int iparmno; double dummy1; double dummy2; SENstruct *info; #ifdef MUTUAL register MUTinstance *muthere; register MUTmodel *mutmodel; double sxp1; double sxp2; double cind1,cind2; double rootl1,rootl2; int ktype; int itype; #endif info = ckt->CKTsenInfo; if(ckt->CKTmode & MODEINITTRAN) return(OK); /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ cind = *(ckt->CKTrhsOld + here->INDbrEq); s = *(info->SEN_Sap[here->INDbrEq] + iparmno); sxp = here->INDinduct * s; #ifdef SENSDEBUG printf("iparmno = %d,s=%.5e,cind = %.5e\n",iparmno,s,cind); printf("sxp(before mut) = %.5e\n",sxp); #endif /* SENSDEBUG */ if(iparmno == here->INDsenParmNo) sxp += cind; *(ckt->CKTstate0 + here->INDsensxp + 2 * (iparmno - 1)) = sxp; } #ifdef MUTUAL } } ktype = CKTtypelook("mutual"); mutmodel = (MUTmodel *)(ckt->CKThead[ktype]); /* loop through all the mutual inductor models */ for( ; mutmodel != NULL; mutmodel = mutmodel->MUTnextModel ) { /* loop through all the instances of the model */ for (muthere = mutmodel->MUTinstances; muthere != NULL ; muthere=muthere->MUTnextInstance) { cind1 = *(ckt->CKTrhsOld + muthere->MUTind1->INDbrEq); cind2 = *(ckt->CKTrhsOld + muthere->MUTind2->INDbrEq); rootl1 = sqrt( muthere->MUTind1->INDinduct ); rootl2 = sqrt( muthere->MUTind2->INDinduct ); for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ s1 = *(info->SEN_Sap[muthere->MUTind1->INDbrEq] + iparmno); s2 = *(info->SEN_Sap[muthere->MUTind2->INDbrEq] + iparmno); sxp2 = muthere->MUTcoupling*rootl1*rootl2 * s1; sxp1 = muthere->MUTcoupling*rootl1*rootl2 * s2; if(iparmno == muthere->MUTsenParmNo){ sxp1 += cind2 * rootl1 * rootl2; sxp2 += cind1 * rootl1 * rootl2; } if(iparmno == muthere->MUTind1->INDsenParmNo){ sxp1 += cind2 * muthere->MUTcoupling * rootl2 /(2 * rootl1); sxp2 += cind1 * muthere->MUTcoupling * rootl2 /(2 * rootl1); } if(iparmno == muthere->MUTind2->INDsenParmNo){ sxp1 += cind2 * muthere->MUTcoupling * rootl1 /(2 * rootl2); sxp2 += cind1 * muthere->MUTcoupling * rootl1 /(2 * rootl2); } *(ckt->CKTstate0 + muthere->MUTind1->INDsensxp + 2 * (iparmno - 1)) += sxp1; *(ckt->CKTstate0 + muthere->MUTind2->INDsensxp + 2 * (iparmno - 1)) += sxp2; #ifdef SENSDEBUG printf("iparmno = %d\n",iparmno); printf("sxp1 = %.5e,sxp2 = %.5e\n",sxp1,sxp2); #endif /* SENSDEBUG */ } } } itype = CKTtypelook("Inductor"); model = (INDmodel *)(ckt->CKThead[itype]); /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { #endif /* MUTUAL */ for(iparmno = 1;iparmno<=info->SENparms;iparmno++){ if(ckt->CKTmode&MODETRANOP){ *(ckt->CKTstate0 + here->INDsensxp + 2 * (iparmno - 1) + 1) = 0; } else{ NIintegrate(ckt,&dummy1,&dummy2,here->INDinduct, (here->INDsensxp + 2*(iparmno - 1))); } #ifdef SENSDEBUG printf("sxp = %.5e,sdotxp = %.5e\n", *(ckt->CKTstate0 + here->INDsensxp + 2 * (iparmno - 1)), *(ckt->CKTstate0 + here->INDsensxp + 2 * (iparmno - 1) + 1)); #endif /* SENSDEBUG */ } } } return(OK); } 0707070124061600461006440006700000000000011777770500302400200004300000003526spice3c1/spice3/dev/ind/indsetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsetup.c $Revision: 1.6 $ on $Date: 88/11/24 03:22:17 $") int INDsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; CKTcircuit *ckt; int *states; /* load the inductor structure with those pointers needed later * for fast matrix loading */ { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; int error; CKTnode *tmp; /* loop through all the inductor models */ for( ; model != NULL; model = model->INDnextModel ) { /* loop through all the instances of the model */ for (here = model->INDinstances; here != NULL ; here=here->INDnextInstance) { if(here->INDbrEq == 0) { error = CKTmkCur(ckt,&tmp,here->INDname,"internal"); if(error) return(error); here->INDbrEq = tmp->number; } /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(INDposIbrptr,INDposNode,INDbrEq) TSTALLOC(INDnegIbrptr,INDnegNode,INDbrEq) TSTALLOC(INDibrNegptr,INDbrEq,INDnegNode) TSTALLOC(INDibrPosptr,INDbrEq,INDposNode) TSTALLOC(INDibrIbrptr,INDbrEq,INDbrEq) here->INDflux = *states; *states += 2 ; if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN) ){ *states += 2 * (ckt->CKTsenInfo->SENparms); } } } return(OK); } 0707070124061600471006440006700000000000011777770500302400200004300000001256spice3c1/spice3/dev/ind/indtrunc.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDtrunc.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:54 $") int INDtrunc(inModel,ckt,timeStep) GENmodel *inModel; register CKTcircuit *ckt; register double *timeStep; { register INDmodel *model = (INDmodel*)inModel; register INDinstance *here; for( ; model!= NULL; model = model->INDnextModel) { for(here = model->INDinstances ; here != NULL ; here = here->INDnextInstance) { CKTterr(here->INDflux,ckt,timeStep); } } return(OK); } 0707070124061600501006440006700000000000011777770500302400400004400000001451spice3c1/spice3/dev/ind/mutacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTacLoad.c $Revision: 1.5 $ on $Date: 88/10/22 23:55:48 $") #ifdef MUTUAL int MUTacLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MUTmodel *model = (MUTmodel*)inModel; double val; register MUTinstance *here; for( ; model != NULL; model = model->MUTnextModel) { for( here = model->MUTinstances;here != NULL; here = here->MUTnextInstance) { val = ckt->CKTomega * here->MUTfactor; *(here->MUTbr1br2 +1) -= val; *(here->MUTbr2br1 +1) -= val; } } return(OK); } #endif /* MUTUAL */ 0707070124061600511006440006700000000000011777770500302400400004100000006515spice3c1/spice3/dev/ind/mutask.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "inddefs.h" #include "ifsim.h" #include "cktdefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTask.c $Revision: 1.5 $ on $Date: 89/04/30 12:14:17 $") #ifdef MUTUAL /*ARGSUSED*/ int MUTask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { MUTinstance *here = (MUTinstance*)inst; double vr; double vi; double sr; double si; double vm; switch(which) { case MUT_COEFF: value->rValue = here->MUTfactor; return(OK); case MUT_IND1: value->uValue = here->MUTindName1; return(OK); case MUT_IND2: value->uValue = here->MUTindName2; return(OK); case MUT_QUEST_SENS_DC: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->MUTsenParmNo); } return(OK); case MUT_QUEST_SENS_REAL: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MUTsenParmNo); } return(OK); case MUT_QUEST_SENS_IMAG: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MUTsenParmNo); } return(OK); case MUT_QUEST_SENS_MAG: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = sqrt(vr*vr + vi*vi); if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MUTsenParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MUTsenParmNo); value->rValue = (vr * sr + vi * si)/vm; } return(OK); case MUT_QUEST_SENS_PH: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld + select->iValue + 1); vi = *(ckt->CKTirhsOld + select->iValue + 1); vm = vr*vr + vi*vi; if(vm == 0){ value->rValue = 0; return(OK); } sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MUTsenParmNo); si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MUTsenParmNo); value->rValue = (vr * si - vi * sr)/vm; } return(OK); case MUT_QUEST_SENS_CPLX: if(ckt->CKTsenInfo){ value->cValue.real= *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MUTsenParmNo); value->cValue.imag= *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MUTsenParmNo); } return(OK); default: return(E_BADPARM); } /* NOTREACHED */ } #endif /* MUTUAL */ 0707070124061600521006440006700000000000011777770500302400400004400000001622spice3c1/spice3/dev/ind/mutdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTdelete.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:57 $") #ifdef MUTUAL int MUTdelete(inModel,name,kill) GENmodel *inModel; IFuid name; GENinstance **kill; { MUTmodel *model = (MUTmodel*)inModel; MUTinstance **fast = (MUTinstance**)kill; MUTinstance **prev = NULL; MUTinstance *here; for( ; model ; model = model->MUTnextModel) { prev = &(model->MUTinstances); for(here = *prev; here ; here = *prev) { if(here->MUTname == name || (fast && here==*fast) ) { *prev= here->MUTnextInstance; FREE(here); return(OK); } prev = &(here->MUTnextInstance); } } return(E_NODEV); } #endif /*MUTUAL*/ 0707070124061600531006440006700000000000011777770500302400400004500000001467spice3c1/spice3/dev/ind/mutdestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "inddefs.h" #include "suffix.h" RCSID("MUTdestroy.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:58 $") #ifdef MUTUAL void MUTdestroy(inModel) GENmodel **inModel; { MUTmodel **model = (MUTmodel**)inModel; MUTinstance *here; MUTinstance *prev = NULL; MUTmodel *mod = *model; MUTmodel *oldmod = NULL; for( ; mod ; mod = mod->MUTnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (MUTinstance *)NULL; for(here = mod->MUTinstances ; here ; here = here->MUTnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } #endif /* MUTUAL */ 0707070124061600541006440006700000000000011777770500302400400004500000002036spice3c1/spice3/dev/ind/mutmdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTmDelete.c $Revision: 1.4 $ on $Date: 88/07/20 04:26:59 $") #ifdef MUTUAL int MUTmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { MUTmodel **model = (MUTmodel**)inModel; MUTmodel *modfast = (MUTmodel*)kill; MUTinstance *here; MUTinstance *prev = NULL; MUTmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->MUTnextModel)) { if( (*model)->MUTmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->MUTnextModel; /* cut deleted device out of list */ for(here = (*model)->MUTinstances ; here ; here = here->MUTnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } #endif /* MUTUAL */ 0707070124061600551006440006700000000000011777770500302400400004300000001671spice3c1/spice3/dev/ind/mutparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "ifsim.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTparam.c $Revision: 1.7 $ on $Date: 89/01/19 16:28:15 $") #ifdef MUTUAL /* ARGSUSED */ int MUTparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { MUTinstance *here = (MUTinstance*)inst; switch(param) { case MUT_COEFF: here->MUTcoupling = value->rValue; here->MUTindGiven = TRUE; break; case MUT_IND1: here->MUTindName1 = value->uValue; break; case MUT_IND2: here->MUTindName2 = value->uValue; break; case MUT_COEFF_SENS: here->MUTsenParmNo = value->iValue; break; default: return(E_BADPARM); } return(OK); } #endif /* MUTUAL */ 0707070124061600561006440006700000000000011777770500302400400004400000001666spice3c1/spice3/dev/ind/mutpzload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "complex.h" #include "sperror.h" #include "inddefs.h" #include "suffix.h" RCSID("MUTpzLoad.c $Revision: 1.4 $ on $Date: 88/07/20 04:27:01 $") #ifdef MUTUAL /* ARGSUSED */ int MUTpzLoad(inModel,ckt,s) GENmodel *inModel; CKTcircuit *ckt; register SPcomplex *s; { register MUTmodel *model = (MUTmodel*)inModel; double val; register MUTinstance *here; for( ; model != NULL; model = model->MUTnextModel) { for( here = model->MUTinstances;here != NULL; here = here->MUTnextInstance) { val = here->MUTfactor; *(here->MUTbr1br2 ) -= val * s->real; *(here->MUTbr1br2 +1) -= val * s->imag; *(here->MUTbr2br1 ) -= val * s->real; *(here->MUTbr2br1 +1) -= val * s->imag; } } return(OK); } #endif /*MUTUAL*/ 0707070124061600571006440006700000000000011777770500302400400004400000002666spice3c1/spice3/dev/ind/mutsprint.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* Pretty print the sensitivity info for all * the mutual inductors in the circuit. */ #include "prefix.h" #include #include #include "util.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("INDsSetup.c $Revision: 1.2 $ on $Date: 88/07/20 04:27:02 $") #ifdef MUTUAL /* ARGSUSED */ void MUTsPrint(inModel,ckt) GENmodel *inModel; CKTcircuit* ckt; { register MUTmodel *model = (MUTmodel*)inModel; register MUTinstance *here; printf("MUTUAL INDUCTORS-----------------\n"); /* loop through all the inductor models */ for( ; model != NULL; model = model->MUTnextModel ) { printf("Model name:%s\n",model->MUTmodName); /* loop through all the instances of the model */ for (here = model->MUTinstances; here != NULL ; here=here->MUTnextInstance) { printf(" Instance name:%s\n",here->MUTname); printf(" Mutual Inductance: %g ",here->MUTcoupling); printf(here->MUTindGiven ? "(specified)\n" : "(default)\n"); printf(" coupling factor: %g \n",here->MUTfactor); printf(" inductor 1 name: %s \n",here->MUTindName1); printf(" inductor 2 name: %s \n",here->MUTindName2); printf(" MUTsenParmNo:%d\n",here->MUTsenParmNo); } } } #endif /* MUTUAL */ 0707070124061600601006440006700000000000011777770500302400400004400000002007spice3c1/spice3/dev/ind/mutssetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* loop through all the devices and * allocate parameter #s to design parameters */ #include "prefix.h" #include #include #include "util.h" #include "ifsim.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTsSetup.c $Revision: 1.2 $ on $Date: 88/07/20 04:27:03 $") #ifdef MUTUAL /*ARGSUSED*/ int MUTsSetup(info,inModel) register SENstruct *info; GENmodel *inModel; { register MUTmodel *model = (MUTmodel*)inModel; register MUTinstance *here; /* loop through all the inductor models */ for( ; model != NULL; model = model->MUTnextModel ) { /* loop through all the instances of the model */ for (here = model->MUTinstances; here != NULL ; here=here->MUTnextInstance) { if(here->MUTsenParmNo){ here->MUTsenParmNo = ++(info->SENparms); } } } return(OK); } #endif /* MUTUAL */ 0707070124061600611006440006700000000000011777770500302400400004300000005503spice3c1/spice3/dev/ind/mutsetup.c/* * Copyright (c) 1985 Thomas L. Quarles */ /* load the inductor structure with those pointers needed later * for fast matrix loading */ #include "prefix.h" #include #include #include "util.h" #include "ifsim.h" #include "smpdefs.h" #include "cktdefs.h" #include "inddefs.h" #include "sperror.h" #include "suffix.h" RCSID("MUTsetup.c $Revision: 1.5 $ on $Date: 88/07/20 04:38:47 $") #ifdef MUTUAL /*ARGSUSED*/ int MUTsetup(matrix,inModel,ckt,states) register SMPmatrix *matrix; GENmodel *inModel; CKTcircuit *ckt; int *states; { register MUTmodel *model = (MUTmodel*)inModel; register MUTinstance *here; int ktype; int error; /* loop through all the inductor models */ for( ; model != NULL; model = model->MUTnextModel ) { /* loop through all the instances of the model */ for (here = model->MUTinstances; here != NULL ; here=here->MUTnextInstance) { ktype = CKTtypelook("Inductor"); if(ktype <= 0) { (*(SPfrontEnd->IFerror))(ERR_PANIC, "mutual inductor, but inductors not available!", (IFuid *)NULL); return(E_INTERN); } error = CKTfndDev((GENERIC*)ckt,&ktype,(GENERIC**)&(here->MUTind1), here->MUTindName1, (GENERIC *)NULL,(char *)NULL); if(error && error!= E_NODEV && error != E_NOMOD) return(error); if(error) { IFuid namarray[2]; namarray[0]=here->MUTname; namarray[1]=here->MUTindName1; (*(SPfrontEnd->IFerror))(ERR_WARNING, "%s: coupling to non-existant inductor %s.", namarray); } error = CKTfndDev((GENERIC*)ckt,&ktype,(GENERIC**)&(here->MUTind2), here->MUTindName2,(GENERIC *)NULL,(char *)NULL); if(error && error!= E_NODEV && error != E_NOMOD) return(error); if(error) { IFuid namarray[2]; namarray[0]=here->MUTname; namarray[1]=here->MUTindName2; (*(SPfrontEnd->IFerror))(ERR_WARNING, "%s: coupling to non-existant inductor %s.", namarray); } here->MUTfactor = here->MUTcoupling *sqrt(here->MUTind1->INDinduct * here->MUTind2->INDinduct); /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ return(E_NOMEM);\ } TSTALLOC(MUTbr1br2,MUTind1->INDbrEq,MUTind2->INDbrEq) TSTALLOC(MUTbr2br1,MUTind2->INDbrEq,MUTind1->INDbrEq) } } return(OK); } #endif /* MUTUAL */ 0707070124061600621006440006700000000000011777770500302400400004100000045560spice3c1/spice3/dev/ind/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ ind.c\ indacload.c\ indask.c\ inddelete.c\ inddestroy.c\ indload.c\ indmdelete.c\ indparam.c\ indpzload.c\ indsacload.c\ indsload.c\ indsprint.c\ indssetup.c\ indsupdate.c\ indsetup.c\ indtrunc.c\ mutacload.c\ mutask.c\ mutdelete.c\ mutdestroy.c\ mutmdelete.c\ mutparam.c\ mutpzload.c\ mutsprint.c\ mutssetup.c\ mutsetup.c COBJS = \ ind.o\ indacload.o\ indask.o\ inddelete.o\ inddestroy.o\ indload.o\ indmdelete.o\ indparam.o\ indpzload.o\ indsacload.o\ indsload.o\ indsprint.o\ indssetup.o\ indsupdate.o\ indsetup.o\ indtrunc.o\ mutacload.o\ mutask.o\ mutdelete.o\ mutdestroy.o\ mutmdelete.o\ mutparam.o\ mutpzload.o\ mutsprint.o\ mutssetup.o\ mutsetup.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lnm -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lind.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cind ${LINTFLAGS} ${CFILES} mv llib-lind.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE ind.o: ../../include/acdefs.h ind.o: ../../include/cktdefs.h ind.o: ../../include/devdefs.h ind.o: ../../include/gendefs.h ind.o: ../../include/ifsim.h ind.o: ../../include/inddefs.h ind.o: ../../include/jobdefs.h ind.o: ../../include/optdefs.h ind.o: ../../include/pzdefs.h ind.o: ../../include/sendefs.h ind.o: ../../include/smpdefs.h ind.o: ../../include/trcvdefs.h ind.o: ../../include/tskdefs.h ind.o: ../../include/complex.h ind.o: ../../include/prefix.h ind.o: ../../include/suffix.h indacload.o: ../../include/acdefs.h indacload.o: ../../include/cktdefs.h indacload.o: ../../include/gendefs.h indacload.o: ../../include/iferrmsgs.h indacload.o: ../../include/ifsim.h indacload.o: ../../include/inddefs.h indacload.o: ../../include/jobdefs.h indacload.o: ../../include/optdefs.h indacload.o: ../../include/pzdefs.h indacload.o: ../../include/sendefs.h indacload.o: ../../include/smpdefs.h indacload.o: ../../include/sperror.h indacload.o: ../../include/trcvdefs.h indacload.o: ../../include/tskdefs.h indacload.o: ../../include/complex.h indacload.o: ../../include/prefix.h indacload.o: ../../include/suffix.h indask.o: ../../include/acdefs.h indask.o: ../../include/cktdefs.h indask.o: ../../include/gendefs.h indask.o: ../../include/iferrmsgs.h indask.o: ../../include/ifsim.h indask.o: ../../include/inddefs.h indask.o: ../../include/jobdefs.h indask.o: ../../include/optdefs.h indask.o: ../../include/pzdefs.h indask.o: ../../include/sendefs.h indask.o: ../../include/smpdefs.h indask.o: ../../include/sperror.h indask.o: ../../include/trcvdefs.h indask.o: ../../include/tskdefs.h indask.o: ../../include/complex.h indask.o: ../../include/prefix.h indask.o: ../../include/suffix.h indask.o: ../../include/util.h inddelete.o: ../../include/acdefs.h inddelete.o: ../../include/cktdefs.h inddelete.o: ../../include/gendefs.h inddelete.o: ../../include/iferrmsgs.h inddelete.o: ../../include/ifsim.h inddelete.o: ../../include/inddefs.h inddelete.o: ../../include/jobdefs.h inddelete.o: ../../include/optdefs.h inddelete.o: ../../include/pzdefs.h inddelete.o: ../../include/sendefs.h inddelete.o: ../../include/smpdefs.h inddelete.o: ../../include/sperror.h inddelete.o: ../../include/trcvdefs.h inddelete.o: ../../include/tskdefs.h inddelete.o: ../../include/complex.h inddelete.o: ../../include/prefix.h inddelete.o: ../../include/suffix.h inddelete.o: ../../include/util.h inddestroy.o: ../../include/acdefs.h inddestroy.o: ../../include/cktdefs.h inddestroy.o: ../../include/gendefs.h inddestroy.o: ../../include/ifsim.h inddestroy.o: ../../include/inddefs.h inddestroy.o: ../../include/jobdefs.h inddestroy.o: ../../include/optdefs.h inddestroy.o: ../../include/pzdefs.h inddestroy.o: ../../include/sendefs.h inddestroy.o: ../../include/smpdefs.h inddestroy.o: ../../include/trcvdefs.h inddestroy.o: ../../include/tskdefs.h inddestroy.o: ../../include/complex.h inddestroy.o: ../../include/prefix.h inddestroy.o: ../../include/suffix.h inddestroy.o: ../../include/util.h indload.o: ../../include/acdefs.h indload.o: ../../include/cktdefs.h indload.o: ../../include/gendefs.h indload.o: ../../include/iferrmsgs.h indload.o: ../../include/ifsim.h indload.o: ../../include/inddefs.h indload.o: ../../include/jobdefs.h indload.o: ../../include/optdefs.h indload.o: ../../include/pzdefs.h indload.o: ../../include/sendefs.h indload.o: ../../include/smpdefs.h indload.o: ../../include/sperror.h indload.o: ../../include/trandefs.h indload.o: ../../include/trcvdefs.h indload.o: ../../include/tskdefs.h indload.o: ../../include/complex.h indload.o: ../../include/prefix.h indload.o: ../../include/suffix.h indload.o: ../../include/util.h indmdelete.o: ../../include/acdefs.h indmdelete.o: ../../include/cktdefs.h indmdelete.o: ../../include/gendefs.h indmdelete.o: ../../include/iferrmsgs.h indmdelete.o: ../../include/ifsim.h indmdelete.o: ../../include/inddefs.h indmdelete.o: ../../include/jobdefs.h indmdelete.o: ../../include/optdefs.h indmdelete.o: ../../include/pzdefs.h indmdelete.o: ../../include/sendefs.h indmdelete.o: ../../include/smpdefs.h indmdelete.o: ../../include/sperror.h indmdelete.o: ../../include/trcvdefs.h indmdelete.o: ../../include/tskdefs.h indmdelete.o: ../../include/complex.h indmdelete.o: ../../include/prefix.h indmdelete.o: ../../include/suffix.h indmdelete.o: ../../include/util.h indparam.o: ../../include/acdefs.h indparam.o: ../../include/cktdefs.h indparam.o: ../../include/gendefs.h indparam.o: ../../include/iferrmsgs.h indparam.o: ../../include/ifsim.h indparam.o: ../../include/inddefs.h indparam.o: ../../include/jobdefs.h indparam.o: ../../include/optdefs.h indparam.o: ../../include/pzdefs.h indparam.o: ../../include/sendefs.h indparam.o: ../../include/smpdefs.h indparam.o: ../../include/sperror.h indparam.o: ../../include/trcvdefs.h indparam.o: ../../include/tskdefs.h indparam.o: ../../include/complex.h indparam.o: ../../include/prefix.h indparam.o: ../../include/suffix.h indparam.o: ../../include/util.h indpzload.o: ../../include/acdefs.h indpzload.o: ../../include/cktdefs.h indpzload.o: ../../include/gendefs.h indpzload.o: ../../include/iferrmsgs.h indpzload.o: ../../include/ifsim.h indpzload.o: ../../include/inddefs.h indpzload.o: ../../include/jobdefs.h indpzload.o: ../../include/optdefs.h indpzload.o: ../../include/pzdefs.h indpzload.o: ../../include/sendefs.h indpzload.o: ../../include/smpdefs.h indpzload.o: ../../include/sperror.h indpzload.o: ../../include/trcvdefs.h indpzload.o: ../../include/tskdefs.h indpzload.o: ../../include/complex.h indpzload.o: ../../include/prefix.h indpzload.o: ../../include/suffix.h indsacload.o: ../../include/acdefs.h indsacload.o: ../../include/cktdefs.h indsacload.o: ../../include/gendefs.h indsacload.o: ../../include/iferrmsgs.h indsacload.o: ../../include/ifsim.h indsacload.o: ../../include/inddefs.h indsacload.o: ../../include/jobdefs.h indsacload.o: ../../include/optdefs.h indsacload.o: ../../include/pzdefs.h indsacload.o: ../../include/sendefs.h indsacload.o: ../../include/smpdefs.h indsacload.o: ../../include/sperror.h indsacload.o: ../../include/trcvdefs.h indsacload.o: ../../include/tskdefs.h indsacload.o: ../../include/complex.h indsacload.o: ../../include/prefix.h indsacload.o: ../../include/suffix.h indsacload.o: ../../include/util.h indsload.o: ../../include/acdefs.h indsload.o: ../../include/cktdefs.h indsload.o: ../../include/gendefs.h indsload.o: ../../include/iferrmsgs.h indsload.o: ../../include/ifsim.h indsload.o: ../../include/inddefs.h indsload.o: ../../include/jobdefs.h indsload.o: ../../include/optdefs.h indsload.o: ../../include/pzdefs.h indsload.o: ../../include/sendefs.h indsload.o: ../../include/smpdefs.h indsload.o: ../../include/sperror.h indsload.o: ../../include/trcvdefs.h indsload.o: ../../include/tskdefs.h indsload.o: ../../include/complex.h indsload.o: ../../include/prefix.h indsload.o: ../../include/suffix.h indsload.o: ../../include/util.h indsprint.o: ../../include/acdefs.h indsprint.o: ../../include/cktdefs.h indsprint.o: ../../include/gendefs.h indsprint.o: ../../include/iferrmsgs.h indsprint.o: ../../include/ifsim.h indsprint.o: ../../include/inddefs.h indsprint.o: ../../include/jobdefs.h indsprint.o: ../../include/optdefs.h indsprint.o: ../../include/pzdefs.h indsprint.o: ../../include/sendefs.h indsprint.o: ../../include/smpdefs.h indsprint.o: ../../include/sperror.h indsprint.o: ../../include/trcvdefs.h indsprint.o: ../../include/tskdefs.h indsprint.o: ../../include/complex.h indsprint.o: ../../include/prefix.h indsprint.o: ../../include/suffix.h indsprint.o: ../../include/util.h indssetup.o: ../../include/acdefs.h indssetup.o: ../../include/cktdefs.h indssetup.o: ../../include/gendefs.h indssetup.o: ../../include/iferrmsgs.h indssetup.o: ../../include/ifsim.h indssetup.o: ../../include/inddefs.h indssetup.o: ../../include/jobdefs.h indssetup.o: ../../include/optdefs.h indssetup.o: ../../include/pzdefs.h indssetup.o: ../../include/sendefs.h indssetup.o: ../../include/smpdefs.h indssetup.o: ../../include/sperror.h indssetup.o: ../../include/trcvdefs.h indssetup.o: ../../include/tskdefs.h indssetup.o: ../../include/complex.h indssetup.o: ../../include/prefix.h indssetup.o: ../../include/suffix.h indssetup.o: ../../include/util.h indsupdate.o: ../../include/acdefs.h indsupdate.o: ../../include/cktdefs.h indsupdate.o: ../../include/gendefs.h indsupdate.o: ../../include/iferrmsgs.h indsupdate.o: ../../include/ifsim.h indsupdate.o: ../../include/inddefs.h indsupdate.o: ../../include/jobdefs.h indsupdate.o: ../../include/optdefs.h indsupdate.o: ../../include/pzdefs.h indsupdate.o: ../../include/sendefs.h indsupdate.o: ../../include/smpdefs.h indsupdate.o: ../../include/sperror.h indsupdate.o: ../../include/trcvdefs.h indsupdate.o: ../../include/tskdefs.h indsupdate.o: ../../include/complex.h indsupdate.o: ../../include/prefix.h indsupdate.o: ../../include/suffix.h indsupdate.o: ../../include/util.h indsetup.o: ../../include/acdefs.h indsetup.o: ../../include/cktdefs.h indsetup.o: ../../include/gendefs.h indsetup.o: ../../include/iferrmsgs.h indsetup.o: ../../include/ifsim.h indsetup.o: ../../include/inddefs.h indsetup.o: ../../include/jobdefs.h indsetup.o: ../../include/optdefs.h indsetup.o: ../../include/pzdefs.h indsetup.o: ../../include/sendefs.h indsetup.o: ../../include/smpdefs.h indsetup.o: ../../include/sperror.h indsetup.o: ../../include/trcvdefs.h indsetup.o: ../../include/tskdefs.h indsetup.o: ../../include/complex.h indsetup.o: ../../include/prefix.h indsetup.o: ../../include/suffix.h indsetup.o: ../../include/util.h indtrunc.o: ../../include/acdefs.h indtrunc.o: ../../include/cktdefs.h indtrunc.o: ../../include/gendefs.h indtrunc.o: ../../include/iferrmsgs.h indtrunc.o: ../../include/ifsim.h indtrunc.o: ../../include/inddefs.h indtrunc.o: ../../include/jobdefs.h indtrunc.o: ../../include/optdefs.h indtrunc.o: ../../include/pzdefs.h indtrunc.o: ../../include/sendefs.h indtrunc.o: ../../include/smpdefs.h indtrunc.o: ../../include/sperror.h indtrunc.o: ../../include/trcvdefs.h indtrunc.o: ../../include/tskdefs.h indtrunc.o: ../../include/complex.h indtrunc.o: ../../include/prefix.h indtrunc.o: ../../include/suffix.h mutacload.o: ../../include/acdefs.h mutacload.o: ../../include/cktdefs.h mutacload.o: ../../include/gendefs.h mutacload.o: ../../include/iferrmsgs.h mutacload.o: ../../include/ifsim.h mutacload.o: ../../include/inddefs.h mutacload.o: ../../include/jobdefs.h mutacload.o: ../../include/optdefs.h mutacload.o: ../../include/pzdefs.h mutacload.o: ../../include/sendefs.h mutacload.o: ../../include/smpdefs.h mutacload.o: ../../include/sperror.h mutacload.o: ../../include/trcvdefs.h mutacload.o: ../../include/tskdefs.h mutacload.o: ../../include/complex.h mutacload.o: ../../include/prefix.h mutacload.o: ../../include/suffix.h mutacload.o: ../../include/util.h mutask.o: ../../include/acdefs.h mutask.o: ../../include/cktdefs.h mutask.o: ../../include/gendefs.h mutask.o: ../../include/iferrmsgs.h mutask.o: ../../include/ifsim.h mutask.o: ../../include/inddefs.h mutask.o: ../../include/jobdefs.h mutask.o: ../../include/optdefs.h mutask.o: ../../include/pzdefs.h mutask.o: ../../include/sendefs.h mutask.o: ../../include/smpdefs.h mutask.o: ../../include/sperror.h mutask.o: ../../include/trcvdefs.h mutask.o: ../../include/tskdefs.h mutask.o: ../../include/complex.h mutask.o: ../../include/prefix.h mutask.o: ../../include/suffix.h mutdelete.o: ../../include/acdefs.h mutdelete.o: ../../include/cktdefs.h mutdelete.o: ../../include/gendefs.h mutdelete.o: ../../include/iferrmsgs.h mutdelete.o: ../../include/ifsim.h mutdelete.o: ../../include/inddefs.h mutdelete.o: ../../include/jobdefs.h mutdelete.o: ../../include/optdefs.h mutdelete.o: ../../include/pzdefs.h mutdelete.o: ../../include/sendefs.h mutdelete.o: ../../include/smpdefs.h mutdelete.o: ../../include/sperror.h mutdelete.o: ../../include/trcvdefs.h mutdelete.o: ../../include/tskdefs.h mutdelete.o: ../../include/complex.h mutdelete.o: ../../include/prefix.h mutdelete.o: ../../include/suffix.h mutdelete.o: ../../include/util.h mutdestroy.o: ../../include/acdefs.h mutdestroy.o: ../../include/cktdefs.h mutdestroy.o: ../../include/gendefs.h mutdestroy.o: ../../include/ifsim.h mutdestroy.o: ../../include/inddefs.h mutdestroy.o: ../../include/jobdefs.h mutdestroy.o: ../../include/optdefs.h mutdestroy.o: ../../include/pzdefs.h mutdestroy.o: ../../include/sendefs.h mutdestroy.o: ../../include/smpdefs.h mutdestroy.o: ../../include/trcvdefs.h mutdestroy.o: ../../include/tskdefs.h mutdestroy.o: ../../include/complex.h mutdestroy.o: ../../include/prefix.h mutdestroy.o: ../../include/suffix.h mutdestroy.o: ../../include/util.h mutmdelete.o: ../../include/acdefs.h mutmdelete.o: ../../include/cktdefs.h mutmdelete.o: ../../include/gendefs.h mutmdelete.o: ../../include/iferrmsgs.h mutmdelete.o: ../../include/ifsim.h mutmdelete.o: ../../include/inddefs.h mutmdelete.o: ../../include/jobdefs.h mutmdelete.o: ../../include/optdefs.h mutmdelete.o: ../../include/pzdefs.h mutmdelete.o: ../../include/sendefs.h mutmdelete.o: ../../include/smpdefs.h mutmdelete.o: ../../include/sperror.h mutmdelete.o: ../../include/trcvdefs.h mutmdelete.o: ../../include/tskdefs.h mutmdelete.o: ../../include/complex.h mutmdelete.o: ../../include/prefix.h mutmdelete.o: ../../include/suffix.h mutmdelete.o: ../../include/util.h mutparam.o: ../../include/acdefs.h mutparam.o: ../../include/cktdefs.h mutparam.o: ../../include/gendefs.h mutparam.o: ../../include/iferrmsgs.h mutparam.o: ../../include/ifsim.h mutparam.o: ../../include/inddefs.h mutparam.o: ../../include/jobdefs.h mutparam.o: ../../include/optdefs.h mutparam.o: ../../include/pzdefs.h mutparam.o: ../../include/sendefs.h mutparam.o: ../../include/smpdefs.h mutparam.o: ../../include/sperror.h mutparam.o: ../../include/trcvdefs.h mutparam.o: ../../include/tskdefs.h mutparam.o: ../../include/complex.h mutparam.o: ../../include/prefix.h mutparam.o: ../../include/suffix.h mutparam.o: ../../include/util.h mutpzload.o: ../../include/acdefs.h mutpzload.o: ../../include/cktdefs.h mutpzload.o: ../../include/gendefs.h mutpzload.o: ../../include/iferrmsgs.h mutpzload.o: ../../include/ifsim.h mutpzload.o: ../../include/inddefs.h mutpzload.o: ../../include/jobdefs.h mutpzload.o: ../../include/optdefs.h mutpzload.o: ../../include/pzdefs.h mutpzload.o: ../../include/sendefs.h mutpzload.o: ../../include/smpdefs.h mutpzload.o: ../../include/sperror.h mutpzload.o: ../../include/trcvdefs.h mutpzload.o: ../../include/tskdefs.h mutpzload.o: ../../include/complex.h mutpzload.o: ../../include/prefix.h mutpzload.o: ../../include/suffix.h mutsprint.o: ../../include/acdefs.h mutsprint.o: ../../include/cktdefs.h mutsprint.o: ../../include/gendefs.h mutsprint.o: ../../include/iferrmsgs.h mutsprint.o: ../../include/ifsim.h mutsprint.o: ../../include/inddefs.h mutsprint.o: ../../include/jobdefs.h mutsprint.o: ../../include/optdefs.h mutsprint.o: ../../include/pzdefs.h mutsprint.o: ../../include/sendefs.h mutsprint.o: ../../include/smpdefs.h mutsprint.o: ../../include/sperror.h mutsprint.o: ../../include/trcvdefs.h mutsprint.o: ../../include/tskdefs.h mutsprint.o: ../../include/complex.h mutsprint.o: ../../include/prefix.h mutsprint.o: ../../include/suffix.h mutsprint.o: ../../include/util.h mutssetup.o: ../../include/acdefs.h mutssetup.o: ../../include/cktdefs.h mutssetup.o: ../../include/gendefs.h mutssetup.o: ../../include/iferrmsgs.h mutssetup.o: ../../include/ifsim.h mutssetup.o: ../../include/inddefs.h mutssetup.o: ../../include/jobdefs.h mutssetup.o: ../../include/optdefs.h mutssetup.o: ../../include/pzdefs.h mutssetup.o: ../../include/sendefs.h mutssetup.o: ../../include/smpdefs.h mutssetup.o: ../../include/sperror.h mutssetup.o: ../../include/trcvdefs.h mutssetup.o: ../../include/tskdefs.h mutssetup.o: ../../include/complex.h mutssetup.o: ../../include/prefix.h mutssetup.o: ../../include/suffix.h mutssetup.o: ../../include/util.h mutsetup.o: ../../include/acdefs.h mutsetup.o: ../../include/cktdefs.h mutsetup.o: ../../include/gendefs.h mutsetup.o: ../../include/iferrmsgs.h mutsetup.o: ../../include/ifsim.h mutsetup.o: ../../include/inddefs.h mutsetup.o: ../../include/jobdefs.h mutsetup.o: ../../include/optdefs.h mutsetup.o: ../../include/pzdefs.h mutsetup.o: ../../include/sendefs.h mutsetup.o: ../../include/smpdefs.h mutsetup.o: ../../include/sperror.h mutsetup.o: ../../include/trcvdefs.h mutsetup.o: ../../include/tskdefs.h mutsetup.o: ../../include/complex.h mutsetup.o: ../../include/prefix.h mutsetup.o: ../../include/suffix.h mutsetup.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061600631006440006700000000000011777770500302400500004200000002565spice3c1/spice3/dev/ind/msc51.batcl /I..\..\include\ /c IND.c >> ..\..\errs.out cl /I..\..\include\ /c INDacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c INDask.c >> ..\..\errs.out cl /I..\..\include\ /c INDdelete.c >> ..\..\errs.out cl /I..\..\include\ /c INDdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c INDload.c >> ..\..\errs.out cl /I..\..\include\ /c INDmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c INDparam.c >> ..\..\errs.out cl /I..\..\include\ /c INDpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c INDsAcLoad.c >> ..\..\errs.out cl /I..\..\include\ /c INDsLoad.c >> ..\..\errs.out cl /I..\..\include\ /c INDsPrint.c >> ..\..\errs.out cl /I..\..\include\ /c INDsSetup.c >> ..\..\errs.out cl /I..\..\include\ /c INDsUpdate.c >> ..\..\errs.out cl /I..\..\include\ /c INDsetup.c >> ..\..\errs.out cl /I..\..\include\ /c INDtrunc.c >> ..\..\errs.out cl /I..\..\include\ /c MUTacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MUTask.c >> ..\..\errs.out cl /I..\..\include\ /c MUTdelete.c >> ..\..\errs.out cl /I..\..\include\ /c MUTdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c MUTmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c MUTparam.c >> ..\..\errs.out cl /I..\..\include\ /c MUTpzLoad.c >> ..\..\errs.out cl /I..\..\include\ /c MUTsPrint.c >> ..\..\errs.out cl /I..\..\include\ /c MUTsSetup.c >> ..\..\errs.out cl /I..\..\include\ /c MUTsetup.c >> ..\..\errs.out lib ..\..\DEV1.lib @RESPONSE.LIB 0707070124061600641006440006700000000000011777770500302400500004500000000574spice3c1/spice3/dev/ind/response.lib+IND.OBJ& +INDACLOA.OBJ& +INDASK.OBJ& +INDDELET.OBJ& +INDDESTR.OBJ& +INDLOAD.OBJ& +INDMDELE.OBJ& +INDPARAM.OBJ& +INDPZLOA.OBJ& +INDSACLO.OBJ& +INDSLOAD.OBJ& +INDSPRIN.OBJ& +INDSSETU.OBJ& +INDSUPDA.OBJ& +INDSETUP.OBJ& +INDTRUNC.OBJ& +MUTACLOA.OBJ& +MUTASK.OBJ& +MUTDELET.OBJ& +MUTDESTR.OBJ& +MUTMDELE.OBJ& +MUTPARAM.OBJ& +MUTPZLOA.OBJ& +MUTSPRIN.OBJ& +MUTSSETU.OBJ& +MUTSETUP.OBJ; 0707070124061600651006440006700000000000011777770500302400500004100000002022spice3c1/spice3/dev/ind/make.com$ cc /nowarn IND $ cc /nowarn INDacLoad $ cc /nowarn INDask $ cc /nowarn INDdelete $ cc /nowarn INDdestroy $ cc /nowarn INDload $ cc /nowarn INDmDelete $ cc /nowarn INDparam $ cc /nowarn INDpzLoad $ cc /nowarn INDsAcLoad $ cc /nowarn INDsLoad $ cc /nowarn INDsPrint $ cc /nowarn INDsSetup $ cc /nowarn INDsUpdate $ cc /nowarn INDsetup $ cc /nowarn INDtrunc $ cc /nowarn MUTacLoad $ cc /nowarn MUTask $ cc /nowarn MUTdelete $ cc /nowarn MUTdestroy $ cc /nowarn MUTmDelete $ cc /nowarn MUTparam $ cc /nowarn MUTpzLoad $ cc /nowarn MUTsPrint $ cc /nowarn MUTsSetup $ cc /nowarn MUTsetup $ library/object [-.-]DEV.olb - IND.obj, - INDacLoad.obj, - INDask.obj, - INDdelete.obj, - INDdestroy.obj, - INDload.obj, - INDmDelete.obj, - INDparam.obj, - INDpzLoad.obj, - INDsAcLoad.obj, - INDsLoad.obj, - INDsPrint.obj, - INDsSetup.obj, - INDsUpdate.obj, - INDsetup.obj, - INDtrunc.obj, - MUTacLoad.obj, - MUTask.obj, - MUTdelete.obj, - MUTdestroy.obj, - MUTmDelete.obj, - MUTparam.obj, - MUTpzLoad.obj, - MUTsPrint.obj, - MUTsSetup.obj, - MUTsetup.obj 0707070124061600270407550006700000000000021777770500302400500003000000000000spice3c1/spice3/dev/ind0707070124061103331006440006700000000000011777770500302400500004000000004746spice3c1/spice3/dev/isrc/isrc.c/* * Copyright (c) 1987 Thomas L. Quarles */ #include "prefix.h" #include #include "ifsim.h" #include "devdefs.h" #include "isrcdefs.h" #include "suffix.h" RCSID("ISRC.c $Revision: 1.7 $ on $Date: 89/03/07 11:31:21 $") static IFparm ISRCpTable[] = { /* parameters */ IOP( "dc", ISRC_DC, IF_REAL ,"DC value of source"), IOP( "acmag", ISRC_AC_MAG, IF_REAL ,"AC magnitude"), IOP( "acphase", ISRC_AC_PHASE, IF_REAL ,"AC phase"), IP ( "pulse", ISRC_PULSE, IF_REALVEC,"Pulse description"), IP ( "sine", ISRC_SINE, IF_REALVEC,"Sinusoidal source description"), IP ( "sin", ISRC_SINE, IF_REALVEC,"Sinusoidal source description"), IP ( "exp", ISRC_EXP, IF_REALVEC,"Exponential source description"), IP ( "pwl", ISRC_PWL, IF_REALVEC,"Piecewise linear description"), IP ( "sffm", ISRC_SFFM, IF_REALVEC,"single freq. FM description"), OP ( "neg_node",ISRC_NEG_NODE, IF_INTEGER,"Negative node of source"), OP ( "pos_node",ISRC_POS_NODE, IF_INTEGER,"Positive node of source"), OP ( "acreal", ISRC_AC_REAL, IF_REAL ,"AC real part"), OP ( "acimag", ISRC_AC_IMAG, IF_REAL ,"AC imaginary part"), OP ( "function",ISRC_FCN_TYPE, IF_INTEGER,"Function of the source"), OP ( "order", ISRC_FCN_ORDER, IF_INTEGER,"Order of the source function"), OP ( "coeffs", ISRC_FCN_COEFFS,IF_REALVEC,"Coefficients of the source"), IP ( "ac", ISRC_AC, IF_REALVEC,"AC magnitude,phase vector"), IP ( "p", ISRC_POWER, IF_REAL, "Power supplied by the source"), IP ( "c", ISRC_DC, IF_REAL, "Current through current source") }; /*static IFparm ISRCmPTable[] = { /* model parameters */ /*}; /**/ static char *ISRCnames[] = { "I+", "I-" }; SPICEdev ISRCinfo = { { "Isource", "Independent current source", sizeof(ISRCnames)/sizeof(char *), sizeof(ISRCnames)/sizeof(char *), ISRCnames, sizeof(ISRCpTable)/sizeof(IFparm), ISRCpTable, 0/*sizeof(ISRCmPTable)/sizeof(IFparm)/**/, NULL/*ISRCmPTable/**/, }, ISRCparam, NULL, ISRCload, NULL, NULL, ISRCtemp, NULL, NULL, ISRCacLoad, ISRCaccept, ISRCdestroy, #ifdef DELETES ISRCmDelete, ISRCdelete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ NULL, ISRCask, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sizeof(ISRCinstance), sizeof(ISRCmodel), }; 0707070124061103341006440006700000000000011777770500302400600004600000001774spice3c1/spice3/dev/isrc/isrcacload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "isrcdefs.h" #include "sperror.h" #include "suffix.h" RCSID("ISRCacLoad.c $Revision: 1.4 $ on $Date: 88/07/21 02:48:03 $") int ISRCacLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register ISRCmodel *model = (ISRCmodel*)inModel; register ISRCinstance *here; for( ; model != NULL; model = model->ISRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ISRCinstances; here != NULL ; here=here->ISRCnextInstance) { *(ckt->CKTrhs + (here->ISRCposNode)) += here->ISRCacReal; *(ckt->CKTrhs + (here->ISRCnegNode)) -= here->ISRCacReal; *(ckt->CKTirhs + (here->ISRCposNode)) += here->ISRCacImag; *(ckt->CKTirhs + (here->ISRCnegNode)) -= here->ISRCacImag; } } return(OK); } 0707070124061103351006440006700000000000011777770500302400600004600000014473spice3c1/spice3/dev/isrc/isrcaccept.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include #include "cktdefs.h" #include "isrcdefs.h" #include "trandefs.h" #include "util.h" #include "sperror.h" #include "suffix.h" RCSID("ISRCaccept.c $Revision: 1.3 $ on $Date: 88/07/21 02:48:05 $") int ISRCaccept(ckt,inModel) register CKTcircuit *ckt; GENmodel *inModel; /* set up the breakpoint table. */ { register ISRCmodel *model = (ISRCmodel*)inModel; register ISRCinstance *here; int error; /* loop through all the voltage source models */ for( ; model != NULL; model = model->ISRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ISRCinstances; here != NULL ; here=here->ISRCnextInstance) { if(!ckt->CKTmode & (MODETRAN | MODETRANOP)) { /* not transient, so shouldn't be here */ return(OK); } else { /* use the transient functions */ switch(here->ISRCfunctionType) { default: { /* no function specified:DC no breakpoints */ break; } case PULSE: { #define TD ((here->ISRCfunctionOrder >=3)?(*(here->ISRCcoeffs+2)):\ (0.0)) #define TR ((here->ISRCfunctionOrder >=4)?(*(here->ISRCcoeffs+3)):\ (ckt->CKTstep)) #define TF ((here->ISRCfunctionOrder >=5)?(*(here->ISRCcoeffs+4)):\ (ckt->CKTstep)) #define PW ((here->ISRCfunctionOrder >=6)?(*(here->ISRCcoeffs+5)):\ (ckt->CKTfinalTime)) #define PER ((here->ISRCfunctionOrder>=7)?(*(here->ISRCcoeffs+6)):\ (ckt->CKTfinalTime)) #define SAMETIME(a,b) (FABS((a)-(b))<= TIMETOL * PW) #define TIMETOL 1e-7 double time; double basetime = 0; time = ckt->CKTtime - TD; if(ckt->CKTtime >= PER) { /* repeating signal - figure out where we are */ /* in period */ basetime = PER * floor(time/PER); time -= basetime; } if( time <= 0 || time >= TR + PW + TF) { if(ckt->CKTbreak && SAMETIME(time,0)) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TR +TD); if(error) return(error); } else if(ckt->CKTbreak && SAMETIME(TR+PW+TF,time) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + PER + TD); if(error) return(error); } else if (ckt->CKTbreak && (time == -TD) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD); if(error) return(error); } else if (ckt->CKTbreak && SAMETIME(PER,time) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD + TR + PER); if(error) return(error); } } else if ( time >= TR && time <= TR + PW) { if(ckt->CKTbreak && SAMETIME(time,TR) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD+TR + PW); if(error) return(error); } else if(ckt->CKTbreak && SAMETIME(TR+PW,time) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD+TR + PW + TF); if(error) return(error); } } else if (time > 0 && time < TR) { if(ckt->CKTbreak && SAMETIME(time,0) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD+TR); if(error) return(error); } else if(ckt->CKTbreak && SAMETIME(time,TR)) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD+TR + PW); if(error) return(error); } } else { /* time > TR + PW && < TR + PW + TF */ if(ckt->CKTbreak && SAMETIME(time,TR+PW) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD+TR + PW +TF); if(error) return(error); } else if(ckt->CKTbreak && SAMETIME(time,TR+PW+TF) ) { /* set next breakpoint */ error = CKTsetBreak(ckt,basetime + TD+PER); if(error) return(error); } } #undef TD #undef TR #undef TF #undef PW #undef PER } break; case SINE: { /* no breakpoints (yet) */ } break; case EXP: { /* no breakpoints (yet) */ } break; case SFFM:{ /* no breakpoints (yet) */ } break; case PWL: { register int i; if(ckt->CKTtime < *(here->ISRCcoeffs)) { if(ckt->CKTbreak) { error = CKTsetBreak(ckt,*(here->ISRCcoeffs)); break; } } for(i=0;i<(here->ISRCfunctionOrder/2)-1;i++) { if((*(here->ISRCcoeffs+2*i)==ckt->CKTtime)) { if(ckt->CKTbreak) { error = CKTsetBreak(ckt, *(here->ISRCcoeffs+2*i+2)); if(error) return(error); } goto bkptset; } } break; } } } bkptset: ; } } return(OK); } 0707070124061103361006440006700000000000011777770500302400600004300000005044spice3c1/spice3/dev/isrc/isrcask.c/* * Copyright (c) 1988 Thomas L. Quarles */ /* * This routine gives access to the internal device parameters * of independent current SouRCe */ #include "prefix.h" #include #include "cktdefs.h" #include "devdefs.h" #include "ifsim.h" #include "isrcdefs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("ISRCask.c $Revision: 1.5 $ on $Date: 88/10/01 13:47:04 $") /* ARGSUSED */ int ISRCask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { ISRCinstance *here = (ISRCinstance*)inst; static char *msg = "Current and power not available in ac analysis"; int temp; switch(which) { case ISRC_DC: value->rValue = here->ISRCdcValue; return (OK); case ISRC_AC_MAG: value->rValue = here->ISRCacMag; return (OK); case ISRC_AC_PHASE: value->rValue = here->ISRCacPhase; return (OK); case ISRC_PULSE: case ISRC_SINE: case ISRC_EXP: case ISRC_PWL: case ISRC_SFFM: case ISRC_FCN_COEFFS: temp = value->v.numValue = here->ISRCfunctionOrder; value->v.vec.rVec = (double *) MALLOC(here->ISRCfunctionOrder * sizeof(double)); while (temp--) { *value->v.vec.rVec++ = *here->ISRCcoeffs++; } return (OK); case ISRC_NEG_NODE: value->iValue = here->ISRCnegNode; return (OK); case ISRC_POS_NODE: value->iValue = here->ISRCposNode; return (OK); case ISRC_FCN_TYPE: value->iValue = here->ISRCfunctionType; case ISRC_AC_REAL: value->rValue = here->ISRCacReal; return (OK); case ISRC_AC_IMAG: value->rValue = here->ISRCacImag; return (OK); case ISRC_FCN_ORDER: value->rValue = here->ISRCfunctionOrder; return (OK); case ISRC_POWER: if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "ISRCask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = -here->ISRCdcValue * (*(ckt->CKTrhsOld + here->ISRCposNode) - *(ckt->CKTrhsOld + here->ISRCnegNode)); } return(OK); default: return (E_BADPARM); } /* NOTREACHED */ } 0707070124061103371006440006700000000000011777770500302400600004600000001600spice3c1/spice3/dev/isrc/isrcdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "isrcdefs.h" #include "sperror.h" #include "suffix.h" RCSID("ISRCdelete.c $Revision: 1.4 $ on $Date: 88/07/21 02:48:08 $") int ISRCdelete(inModel,name,inst) GENmodel *inModel; IFuid name; GENinstance **inst; { ISRCmodel *model = (ISRCmodel*)inModel; ISRCinstance **fast = (ISRCinstance**)inst; ISRCinstance **prev = NULL; ISRCinstance *here; for( ; model ; model = model->ISRCnextModel) { prev = &(model->ISRCinstances); for(here = *prev; here ; here = *prev) { if(here->ISRCname == name || (fast && here==*fast) ) { *prev= here->ISRCnextInstance; FREE(here); return(OK); } prev = &(here->ISRCnextInstance); } } return(E_NODEV); } 0707070124061103401006440006700000000000011777770500302400600004700000001442spice3c1/spice3/dev/isrc/isrcdestroy.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "isrcdefs.h" #include "suffix.h" RCSID("ISRCdestroy.c $Revision: 1.4 $ on $Date: 88/07/21 02:48:09 $") void ISRCdestroy(inModel) GENmodel **inModel; { ISRCmodel **model = (ISRCmodel**)inModel; ISRCinstance *here; ISRCinstance *prev = NULL; ISRCmodel *mod = *model; ISRCmodel *oldmod = NULL; for( ; mod ; mod = mod->ISRCnextModel) { if(oldmod) FREE(oldmod); oldmod = mod; prev = (ISRCinstance *)NULL; for(here = mod->ISRCinstances ; here ; here = here->ISRCnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); } if(oldmod) FREE(oldmod); *model = NULL; } 0707070124061103411006440006700000000000011777770500302400600004400000015646spice3c1/spice3/dev/isrc/isrcload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "isrcdefs.h" #include "util.h" #include "trandefs.h" #include #include "sperror.h" #include "suffix.h" RCSID("ISRCload.c $Revision: 1.12 $ on $Date: 89/01/07 22:50:23 $") int ISRCload(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; /* actually load the current current value into the * sparse matrix previously provided */ { register ISRCmodel *model = (ISRCmodel*)inModel; register ISRCinstance *here; double value; double time; /* loop through all the current source models */ for( ; model != NULL; model = model->ISRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ISRCinstances; here != NULL ; here=here->ISRCnextInstance) { if( (ckt->CKTmode & (MODEDCOP | MODEDCTRANCURVE)) && here->ISRCdcGiven ) { /* load using DC value */ value = here->ISRCdcValue * ckt->CKTsrcFact; } else { if(ckt->CKTmode & (MODEDC)) { time = 0; } else { time = ckt->CKTtime; } /* use transient function */ switch(here->ISRCfunctionType) { case PULSE: { #define V1 (*(here->ISRCcoeffs)) #define V2 (*(here->ISRCcoeffs+1)) #define TD ((here->ISRCfunctionOrder >=3)?(*(here->ISRCcoeffs+2)):\ (0.0)) #define TR (((here->ISRCfunctionOrder >=4) && (*(here->ISRCcoeffs+3)))? \ (*(here->ISRCcoeffs+3)):(ckt->CKTstep)) #define TF (((here->ISRCfunctionOrder >=5) && (*(here->ISRCcoeffs+4)))? \ (*(here->ISRCcoeffs+4)):(ckt->CKTstep)) #define PW (((here->ISRCfunctionOrder >=6) && (*(here->ISRCcoeffs+5)))? \ (*(here->ISRCcoeffs+5)):(ckt->CKTfinalTime)) #define PER (((here->ISRCfunctionOrder>=7) && (*(here->ISRCcoeffs+6)))? \ (*(here->ISRCcoeffs+6)):(ckt->CKTfinalTime)) double basetime=0; time -= TD; if(time > PER) { /* repeating signal - figure out where we are */ /* in period */ basetime = PER * floor(time/PER); time -= basetime; } if( time <= 0 || time >= TR + PW + TF) { value = V1; } else if ( time >= TR && time <= TR + PW) { value = V2; } else if (time > 0 && time < TR) { value = V1 + (V2 - V1) * (time) / TR; } else { /* time > TR + PW && < TR + PW + TF */ value = V2 + (V1 - V2) * (time - (TR + PW)) / TF; } #undef V1 #undef V2 #undef TD #undef TR #undef TF #undef PW #undef PER } break; case SINE: { #define VO (*(here->ISRCcoeffs)) #define VA (*(here->ISRCcoeffs+1)) #define FREQ (((here->ISRCfunctionOrder >=3) && (*(here->ISRCcoeffs+2)))? \ (*(here->ISRCcoeffs+2)):(1/ckt->CKTfinalTime)) #define TD ((here->ISRCfunctionOrder >=4)?(*(here->ISRCcoeffs+3)):(0.0)) #define THETA ((here->ISRCfunctionOrder >=5)?(*(here->ISRCcoeffs+4)):(0.0)) time -= TD; if (time <= 0) { value = VO; } else { value = VO + VA * sin(FREQ*time * 2 * PI) * exp(-time*THETA); } #undef VO #undef VA #undef FREQ #undef TD #undef THETA } break; case EXP: { double td1; double td2; #define V1 (*(here->ISRCcoeffs)) #define V2 (*(here->ISRCcoeffs+1)) #define TD1 ((here->ISRCfunctionOrder >=3)?(*(here->ISRCcoeffs+2)):\ ckt->CKTstep) #define TAU1 (((here->ISRCfunctionOrder >=4) && (*(here->ISRCcoeffs+3)))? \ (*(here->ISRCcoeffs+3)):ckt->CKTstep) #define TD2 (((here->ISRCfunctionOrder >=5) && (*(here->ISRCcoeffs+4)))? \ (*(here->ISRCcoeffs+4)):TD1+ckt->CKTstep) #define TAU2 (((here->ISRCfunctionOrder >=6) && (*(here->ISRCcoeffs+5)))? \ (*(here->ISRCcoeffs+5)):ckt->CKTstep) td1 = TD1; td2 = TD2; if(time <= td1) { value = V1; } else if (time <= td2) { value = V1 + (V2-V1)*(1-exp(-(time-td1)/TAU1)); } else { value = V1 + (V2-V1)*(1-exp(-(time-td1)/TAU1)) + (V1-V2)*(1-exp(-(time-td2)/TAU2)) ; } #undef V1 #undef V2 #undef TD1 #undef TAU1 #undef TD2 #undef TAU2 } break; case SFFM:{ #define VO (*(here->ISRCcoeffs)) #define VA (*(here->ISRCcoeffs+1)) #define FC (((here->ISRCfunctionOrder >=3) && (*(here->ISRCcoeffs+2)))? \ (*(here->ISRCcoeffs+2)):(1/ckt->CKTfinalTime)) #define MDI ((here->ISRCfunctionOrder>=4)?(*(here->ISRCcoeffs+3)):0.0) #define FS (((here->ISRCfunctionOrder >=5) && (*(here->ISRCcoeffs+4)))? \ (*(here->ISRCcoeffs+4)):(1/ckt->CKTfinalTime)) value = VO + VA * sin((2 * PI * FC * time) + MDI * sin(2 * PI * FS * time)); #undef VO #undef VA #undef FC #undef MDI #undef FS } break; default: value = here->ISRCdcValue * ckt->CKTsrcFact; break; case PWL: { register int i; if(time< *(here->ISRCcoeffs)) { value = *(here->ISRCcoeffs + 1) ; break; } for(i=0;i<=(here->ISRCfunctionOrder/2)-1;i++) { if((*(here->ISRCcoeffs+2*i)==time)) { value = *(here->ISRCcoeffs+2*i+1); goto loadDone; } if((*(here->ISRCcoeffs+2*i)ISRCcoeffs+2*(i+1)) >time)) { value = *(here->ISRCcoeffs+2*i+1) + (((time-*(here->ISRCcoeffs+2*i))/ (*(here->ISRCcoeffs+2*(i+1)) - *(here->ISRCcoeffs+2*i))) * (*(here->ISRCcoeffs+2*i+3) - *(here->ISRCcoeffs+2*i+1))); goto loadDone; } } value = *(here->ISRCcoeffs+ here->ISRCfunctionOrder-1) ; break; } } } loadDone: *(ckt->CKTrhs + (here->ISRCposNode)) += value; *(ckt->CKTrhs + (here->ISRCnegNode)) -= value; } } return(OK); } 0707070124061103421006440006700000000000011777770500302400600004700000002013spice3c1/spice3/dev/isrc/isrcmdelete.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "isrcdefs.h" #include "sperror.h" #include "suffix.h" RCSID("ISRCmDelete.c $Revision: 1.4 $ on $Date: 88/07/21 02:48:12 $") int ISRCmDelete(inModel,modname,kill) GENmodel **inModel; IFuid modname; GENmodel *kill; { ISRCmodel **model = (ISRCmodel**)inModel; ISRCmodel *modfast = (ISRCmodel*)kill; ISRCinstance *here; ISRCinstance *prev = NULL; ISRCmodel **oldmod; oldmod = model; for( ; *model ; model = &((*model)->ISRCnextModel)) { if( (*model)->ISRCmodName == modname || (modfast && *model == modfast) ) goto delgot; oldmod = model; } return(E_NOMOD); delgot: *oldmod = (*model)->ISRCnextModel; /* cut deleted device out of list */ for(here = (*model)->ISRCinstances ; here ; here = here->ISRCnextInstance) { if(prev) FREE(prev); prev = here; } if(prev) FREE(prev); FREE(*model); return(OK); } 0707070124061103431006440006700000000000011777770500302400700004500000006146spice3c1/spice3/dev/isrc/isrcparam.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "util.h" #include "ifsim.h" #include "isrcdefs.h" #include "sperror.h" #include "suffix.h" RCSID("ISRCparam.c $Revision: 1.5 $ on $Date: 88/07/21 03:16:53 $") /* ARGSUSED */ int ISRCparam(param,value,inst,select) int param; IFvalue *value; GENinstance *inst; IFvalue *select; { ISRCinstance *here = (ISRCinstance*)inst; switch(param) { case ISRC_DC: here->ISRCdcValue = value->rValue; here->ISRCdcGiven = TRUE; break; case ISRC_AC_MAG: here->ISRCacMag = value->rValue; here->ISRCacMGiven = TRUE; here->ISRCacGiven = TRUE; break; case ISRC_AC_PHASE: here->ISRCacPhase = value->rValue; here->ISRCacPGiven = TRUE; here->ISRCacGiven = TRUE; break; case ISRC_AC: switch(value->v.numValue) { case 2: here->ISRCacPhase = *(value->v.vec.rVec+1); here->ISRCacPGiven = TRUE; case 1: here->ISRCacMag = *(value->v.vec.rVec); here->ISRCacMGiven = TRUE; case 0: here->ISRCacGiven = TRUE; break; default: return(E_BADPARM); } break; case ISRC_PULSE: if(value->v.numValue <2) return(E_BADPARM); here->ISRCfunctionType = PULSE; here->ISRCfuncTGiven = TRUE; here->ISRCcoeffs = value->v.vec.rVec; here->ISRCfunctionOrder = value->v.numValue; here->ISRCcoeffsGiven = TRUE; break; case ISRC_SINE: if(value->v.numValue <2) return(E_BADPARM); here->ISRCfunctionType = SINE; here->ISRCfuncTGiven = TRUE; here->ISRCcoeffs = value->v.vec.rVec; here->ISRCfunctionOrder = value->v.numValue; here->ISRCcoeffsGiven = TRUE; break; case ISRC_EXP: if(value->v.numValue <2) return(E_BADPARM); here->ISRCfunctionType = EXP; here->ISRCfuncTGiven = TRUE; here->ISRCcoeffs = value->v.vec.rVec; here->ISRCfunctionOrder = value->v.numValue; here->ISRCcoeffsGiven = TRUE; break; case ISRC_PWL: if(value->v.numValue <2) return(E_BADPARM); here->ISRCfunctionType = PWL; here->ISRCfuncTGiven = TRUE; here->ISRCcoeffs = value->v.vec.rVec; here->ISRCfunctionOrder = value->v.numValue; here->ISRCcoeffsGiven = TRUE; break; case ISRC_SFFM: if(value->v.numValue <2) return(E_BADPARM); here->ISRCfunctionType = SFFM; here->ISRCfuncTGiven = TRUE; here->ISRCcoeffs = value->v.vec.rVec; here->ISRCfunctionOrder = value->v.numValue; here->ISRCcoeffsGiven = TRUE; break; default: return(E_BADPARM); } return(OK); } 0707070124061103441006440006700000000000011777770500302400700004400000003253spice3c1/spice3/dev/isrc/isrctemp.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "smpdefs.h" #include "cktdefs.h" #include "isrcdefs.h" #include "util.h" #include #include "sperror.h" #include "suffix.h" RCSID("ISRCtemp.c $Revision: 1.3 $ on $Date: 88/07/21 03:16:56 $") /*ARGSUSED*/ int ISRCtemp(inModel,ckt) GENmodel *inModel; CKTcircuit *ckt; { register ISRCmodel *model = (ISRCmodel*)inModel; register ISRCinstance *here; double radians; for( ; model != NULL; model = model->ISRCnextModel ) { /* loop through all the instances of the model */ for (here = model->ISRCinstances; here != NULL ; here=here->ISRCnextInstance) { if(here->ISRCacGiven && !here->ISRCacMGiven) { here->ISRCacMag=1; } if(here->ISRCacGiven && !here->ISRCacPGiven) { here->ISRCacPhase=0; } if(!here->ISRCdcGiven) { /* no DC value - either have a transient value, or none */ if(here->ISRCfuncTGiven) { (*(SPfrontEnd->IFerror))(ERR_WARNING, "Source %s has no DC value, transient time 0 value used", &(here->ISRCname)); } else { (*(SPfrontEnd->IFerror))(ERR_WARNING, "Source %s has no value, DC 0 assumed\n", &(here->ISRCname)); } } radians = here->ISRCacPhase * PI / 180; here->ISRCacReal = here->ISRCacMag * cos(radians); here->ISRCacImag = here->ISRCacMag * sin(radians); } } return(OK); } 0707070124061103451006440006700000000000011777770500302400700004200000021141spice3c1/spice3/dev/isrc/makefile# Make file for C version of spice 3 # for System-V make that uses the wrong shell otherwise SHELL=/bin/sh CFILES = \ isrc.c\ isrcask.c\ isrcaccept.c\ isrcacload.c\ isrcdelete.c\ isrcdestroy.c\ isrcload.c\ isrcmdelete.c\ isrcparam.c\ isrctemp.c COBJS = \ isrc.o\ isrcask.o\ isrcaccept.o\ isrcacload.o\ isrcdelete.o\ isrcdestroy.o\ isrcload.o\ isrcmdelete.o\ isrcparam.o\ isrctemp.o TARGET = ../../dev DEFS = VERSION = #---------------------------------------------------------------------------- SOURCE= ${CFILES} ALLFILES= ${SOURCE} makefile INCLUDE=-I../../include PG = CFLAGS = -O LINTFLAGS= -u -x -a -DLINT ${INCLUDE} LINTLIBS= -lc -lm LDFLAGS = -z -lm DESTDIR = MACHINE = SRCDIR = . .c.o: $*.c ${CC} ${PG} ${CFLAGS} ${INCLUDE} -c $*.c library: ${TARGET}.a tags ${TARGET}.a: ${COBJS} # @ echo Making archive file ${TARGET}.a # @ echo Use \"make test\" to generate test program. # @ echo Use \"make opt\" to generate optimized version ar r ${TARGET}.a $? # ranlib ${TARGET}.a lint: ${SOURCE} -rm -f ../../lint/llib-lisrc.ln lint ${LINTFLAGS} ${LINTLIBS} ../../lint/llib-l*.ln ${CFILES} lint -Cisrc ${LINTFLAGS} ${CFILES} mv llib-lisrc.ln ../../lint qgrind: ${SOURCE} qgrind -lc ${CFILES} vgrind: ${SOURCE} vgrind -lc ${CFILES} opt: clean make library CFLAGS="-O" PG=" " reopt: make library CFLAGS="-O" PG=" " source: ${SOURCE} names: echo ${SOURCE} makefile tags: ${SOURCE} # ctags *.c > /dev/null 2>&1 clean: -rm -f ${COBJS} install: ${TARGET} cp ${TARGET} ${DESTDIR}/${TARGET} strip ${DESTDIR}/${TARGET} ${CFILES}: co ${VERSION} $@ depend: ${SOURCE} ../../dodepend ${CFLAGS} ${INCLUDE} ${CFILES} >makedep echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep echo '$$r makedep' >>eddep echo 'w' >>eddep cp makefile makefile.bak ed - makefile < eddep rm eddep makedep echo '# DEPENDENCIES MUST END AT END OF FILE' >> makefile echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> makefile echo '# see make depend above' >> makefile #----------------------------------------------------------------- # DO NOT DELETE THIS LINE -- make depend uses it # DEPENDENCIES MUST END AT END OF FILE isrc.o: ../../include/acdefs.h isrc.o: ../../include/cktdefs.h isrc.o: ../../include/devdefs.h isrc.o: ../../include/gendefs.h isrc.o: ../../include/ifsim.h isrc.o: ../../include/isrcdefs.h isrc.o: ../../include/jobdefs.h isrc.o: ../../include/optdefs.h isrc.o: ../../include/pzdefs.h isrc.o: ../../include/sendefs.h isrc.o: ../../include/smpdefs.h isrc.o: ../../include/trcvdefs.h isrc.o: ../../include/tskdefs.h isrc.o: ../../include/complex.h isrc.o: ../../include/prefix.h isrc.o: ../../include/suffix.h isrcask.o: ../../include/acdefs.h isrcask.o: ../../include/cktdefs.h isrcask.o: ../../include/devdefs.h isrcask.o: ../../include/gendefs.h isrcask.o: ../../include/iferrmsgs.h isrcask.o: ../../include/ifsim.h isrcask.o: ../../include/isrcdefs.h isrcask.o: ../../include/jobdefs.h isrcask.o: ../../include/optdefs.h isrcask.o: ../../include/pzdefs.h isrcask.o: ../../include/sendefs.h isrcask.o: ../../include/smpdefs.h isrcask.o: ../../include/sperror.h isrcask.o: ../../include/trcvdefs.h isrcask.o: ../../include/tskdefs.h isrcask.o: ../../include/complex.h isrcask.o: ../../include/prefix.h isrcask.o: ../../include/suffix.h isrcask.o: ../../include/util.h isrcaccept.o: ../../include/acdefs.h isrcaccept.o: ../../include/cktdefs.h isrcaccept.o: ../../include/gendefs.h isrcaccept.o: ../../include/iferrmsgs.h isrcaccept.o: ../../include/ifsim.h isrcaccept.o: ../../include/isrcdefs.h isrcaccept.o: ../../include/jobdefs.h isrcaccept.o: ../../include/optdefs.h isrcaccept.o: ../../include/pzdefs.h isrcaccept.o: ../../include/sendefs.h isrcaccept.o: ../../include/smpdefs.h isrcaccept.o: ../../include/sperror.h isrcaccept.o: ../../include/trandefs.h isrcaccept.o: ../../include/trcvdefs.h isrcaccept.o: ../../include/tskdefs.h isrcaccept.o: ../../include/complex.h isrcaccept.o: ../../include/prefix.h isrcaccept.o: ../../include/suffix.h isrcaccept.o: ../../include/util.h isrcacload.o: ../../include/acdefs.h isrcacload.o: ../../include/cktdefs.h isrcacload.o: ../../include/gendefs.h isrcacload.o: ../../include/iferrmsgs.h isrcacload.o: ../../include/ifsim.h isrcacload.o: ../../include/isrcdefs.h isrcacload.o: ../../include/jobdefs.h isrcacload.o: ../../include/optdefs.h isrcacload.o: ../../include/pzdefs.h isrcacload.o: ../../include/sendefs.h isrcacload.o: ../../include/smpdefs.h isrcacload.o: ../../include/sperror.h isrcacload.o: ../../include/trcvdefs.h isrcacload.o: ../../include/tskdefs.h isrcacload.o: ../../include/complex.h isrcacload.o: ../../include/prefix.h isrcacload.o: ../../include/suffix.h isrcdelete.o: ../../include/acdefs.h isrcdelete.o: ../../include/cktdefs.h isrcdelete.o: ../../include/gendefs.h isrcdelete.o: ../../include/iferrmsgs.h isrcdelete.o: ../../include/ifsim.h isrcdelete.o: ../../include/isrcdefs.h isrcdelete.o: ../../include/jobdefs.h isrcdelete.o: ../../include/optdefs.h isrcdelete.o: ../../include/pzdefs.h isrcdelete.o: ../../include/sendefs.h isrcdelete.o: ../../include/smpdefs.h isrcdelete.o: ../../include/sperror.h isrcdelete.o: ../../include/trcvdefs.h isrcdelete.o: ../../include/tskdefs.h isrcdelete.o: ../../include/complex.h isrcdelete.o: ../../include/prefix.h isrcdelete.o: ../../include/suffix.h isrcdelete.o: ../../include/util.h isrcdestroy.o: ../../include/acdefs.h isrcdestroy.o: ../../include/cktdefs.h isrcdestroy.o: ../../include/gendefs.h isrcdestroy.o: ../../include/ifsim.h isrcdestroy.o: ../../include/isrcdefs.h isrcdestroy.o: ../../include/jobdefs.h isrcdestroy.o: ../../include/optdefs.h isrcdestroy.o: ../../include/pzdefs.h isrcdestroy.o: ../../include/sendefs.h isrcdestroy.o: ../../include/smpdefs.h isrcdestroy.o: ../../include/trcvdefs.h isrcdestroy.o: ../../include/tskdefs.h isrcdestroy.o: ../../include/complex.h isrcdestroy.o: ../../include/prefix.h isrcdestroy.o: ../../include/suffix.h isrcdestroy.o: ../../include/util.h isrcload.o: ../../include/acdefs.h isrcload.o: ../../include/cktdefs.h isrcload.o: ../../include/gendefs.h isrcload.o: ../../include/iferrmsgs.h isrcload.o: ../../include/ifsim.h isrcload.o: ../../include/isrcdefs.h isrcload.o: ../../include/jobdefs.h isrcload.o: ../../include/optdefs.h isrcload.o: ../../include/pzdefs.h isrcload.o: ../../include/sendefs.h isrcload.o: ../../include/smpdefs.h isrcload.o: ../../include/sperror.h isrcload.o: ../../include/trandefs.h isrcload.o: ../../include/trcvdefs.h isrcload.o: ../../include/tskdefs.h isrcload.o: ../../include/complex.h isrcload.o: ../../include/prefix.h isrcload.o: ../../include/suffix.h isrcload.o: ../../include/util.h isrcmdelete.o: ../../include/acdefs.h isrcmdelete.o: ../../include/cktdefs.h isrcmdelete.o: ../../include/gendefs.h isrcmdelete.o: ../../include/iferrmsgs.h isrcmdelete.o: ../../include/ifsim.h isrcmdelete.o: ../../include/isrcdefs.h isrcmdelete.o: ../../include/jobdefs.h isrcmdelete.o: ../../include/optdefs.h isrcmdelete.o: ../../include/pzdefs.h isrcmdelete.o: ../../include/sendefs.h isrcmdelete.o: ../../include/smpdefs.h isrcmdelete.o: ../../include/sperror.h isrcmdelete.o: ../../include/trcvdefs.h isrcmdelete.o: ../../include/tskdefs.h isrcmdelete.o: ../../include/complex.h isrcmdelete.o: ../../include/prefix.h isrcmdelete.o: ../../include/suffix.h isrcmdelete.o: ../../include/util.h isrcparam.o: ../../include/acdefs.h isrcparam.o: ../../include/cktdefs.h isrcparam.o: ../../include/gendefs.h isrcparam.o: ../../include/iferrmsgs.h isrcparam.o: ../../include/ifsim.h isrcparam.o: ../../include/isrcdefs.h isrcparam.o: ../../include/jobdefs.h isrcparam.o: ../../include/optdefs.h isrcparam.o: ../../include/pzdefs.h isrcparam.o: ../../include/sendefs.h isrcparam.o: ../../include/smpdefs.h isrcparam.o: ../../include/sperror.h isrcparam.o: ../../include/trcvdefs.h isrcparam.o: ../../include/tskdefs.h isrcparam.o: ../../include/complex.h isrcparam.o: ../../include/prefix.h isrcparam.o: ../../include/suffix.h isrcparam.o: ../../include/util.h isrctemp.o: ../../include/acdefs.h isrctemp.o: ../../include/cktdefs.h isrctemp.o: ../../include/gendefs.h isrctemp.o: ../../include/iferrmsgs.h isrctemp.o: ../../include/ifsim.h isrctemp.o: ../../include/isrcdefs.h isrctemp.o: ../../include/jobdefs.h isrctemp.o: ../../include/optdefs.h isrctemp.o: ../../include/pzdefs.h isrctemp.o: ../../include/sendefs.h isrctemp.o: ../../include/smpdefs.h isrctemp.o: ../../include/sperror.h isrctemp.o: ../../include/trcvdefs.h isrctemp.o: ../../include/tskdefs.h isrctemp.o: ../../include/complex.h isrctemp.o: ../../include/prefix.h isrctemp.o: ../../include/suffix.h isrctemp.o: ../../include/util.h # DEPENDENCIES MUST END AT END OF FILE # IF YOU PUT STUFF HERE IT WILL GO AWAY # see make depend above 0707070124061103461006440006700000000000011777770500302400700004300000001061spice3c1/spice3/dev/isrc/msc51.batcl /I..\..\include\ /c ISRC.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCacLoad.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCaccept.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCask.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCdelete.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCdestroy.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCload.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCmDelete.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCparam.c >> ..\..\errs.out cl /I..\..\include\ /c ISRCtemp.c >> ..\..\errs.out lib ..\..\DEV2.lib @RESPONSE.LIB 0707070124061103471006440006700000000000011777770500302400700004600000000221spice3c1/spice3/dev/isrc/response.lib+ISRC.OBJ& +ISRCACLO.OBJ& +ISRCACCE.OBJ& +ISRCASK.OBJ& +ISRCDELE.OBJ& +ISRCDEST.OBJ& +ISRCLOAD.OBJ& +ISRCMDEL.OBJ& +ISRCPARA.OBJ& +ISRCTEMP.OBJ; 0707070124061103501006440006700000000000011777770500302400700004200000000652spice3c1/spice3/dev/isrc/make.com$ cc /nowarn ISRC $ cc /nowarn ISRCacLoad $ cc /nowarn ISRCaccept $ cc /nowarn ISRCask $ cc /nowarn ISRCdelete $ cc /nowarn ISRCdestroy $ cc /nowarn ISRCload $ cc /nowarn ISRCmDelete $ cc /nowarn ISRCparam $ cc /nowarn ISRCtemp $ library/object [-.-]DEV.olb - ISRC.obj, - ISRCacLoad.obj, - ISRCaccept.obj, - ISRCask.obj, - ISRCdelete.obj, - ISRCdestroy.obj, - ISRCload.obj, - ISRCmDelete.obj, - ISRCparam.obj, - ISRCtemp.obj 0707070124061103320407550006700000000000021777770500302400700003100000000000spice3c1/spice3/dev/isrc0707070124061642401006440006700000000000011777770500302400700004200000001516spice3c1/spice3/dev/mos2/make.com$ cc /nowarn MOS2 $ cc /nowarn MOS2acLoad $ cc /nowarn MOS2ask $ cc /nowarn MOS2convTest $ cc /nowarn MOS2delete $ cc /nowarn MOS2destroy $ cc /nowarn MOS2getic $ cc /nowarn MOS2load $ cc /nowarn MOS2mDelete $ cc /nowarn MOS2mParam $ cc /nowarn MOS2param $ cc /nowarn MOS2pzLoad $ cc /nowarn MOS2sAcLoad $ cc /nowarn MOS2sLoad $ cc /nowarn MOS2sPrint $ cc /nowarn MOS2sSetup $ cc /nowarn MOS2sUpdate $ cc /nowarn MOS2setup $ cc /nowarn MOS2temp $ cc /nowarn MOS2trunc $ library/object [-.-]DEV.olb - MOS2.obj, - MOS2acLoad.obj, - MOS2ask.obj, - MOS2convTest.obj, - MOS2delete.obj, - MOS2destroy.obj, - MOS2getic.obj, - MOS2load.obj, - MOS2mDelete.obj, - MOS2mParam.obj, - MOS2param.obj, - MOS2pzLoad.obj, - MOS2sAcLoad.obj, - MOS2sLoad.obj, - MOS2sPrint.obj, - MOS2sSetup.obj, - MOS2sUpdate.obj, - MOS2setup.obj, - MOS2temp.obj, - MOS2trunc.obj 0707070124061642411006440006700000000000011777770500302400700004000000023140spice3c1/spice3/dev/mos2/mos2.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "devdefs.h" #include "ifsim.h" #include "mos2defs.h" #include "suffix.h" RCSID("MOS2.c $Revision: 1.19 $ on $Date: 89/03/07 11:32:02 $") static IFparm MOS2pTable[] = { /* parameters */ IOP("l", MOS2_L, IF_REAL , "Length"), IOP("w", MOS2_W, IF_REAL , "Width"), IOP("ad", MOS2_AD, IF_REAL , "Drain area"), IOP("as", MOS2_AS, IF_REAL , "Source area"), IOP("pd", MOS2_PD, IF_REAL , "Drain perimeter"), IOP("ps", MOS2_PS, IF_REAL , "Source perimeter"), IOP("nrd", MOS2_NRD, IF_REAL , "Drain squares"), IOP("nrs", MOS2_NRS, IF_REAL , "Source squares"), IP("off", MOS2_OFF, IF_FLAG , "Device initially off"), IOP("icvds", MOS2_IC_VDS,IF_REAL , "Initial D-S voltage"), IOP("icvgs", MOS2_IC_VGS,IF_REAL , "Initial G-S voltage"), IOP("icvbs", MOS2_IC_VBS,IF_REAL , "Initial B-S voltage"), IOP("temp", MOS2_TEMP, IF_REAL , "Instance operating temperature"), IP( "ic", MOS2_IC, IF_REALVEC, "Vector of D-S, G-S, B-S voltages"), IP( "sens_l", MOS2_L_SENS,IF_FLAG, "flag to request sensitivity WRT length"), IP( "sens_w", MOS2_W_SENS,IF_FLAG, "flag to request sensitivity WRT width"), OP( "cgs", MOS2_CGS, IF_REAL , "Gate-Source capacitance"), OP( "cgd", MOS2_CGD, IF_REAL , "Gate-Drain capacitance"), OP( "dnode", MOS2_DNODE, IF_INTEGER, "Number of drain node"), OP( "gnode", MOS2_GNODE, IF_INTEGER, "Number of gate node"), OP( "snode", MOS2_SNODE, IF_INTEGER, "Number of source node"), OP( "bnode", MOS2_BNODE, IF_INTEGER, "Number of bulk node"), OP( "dnodeprime", MOS2_DNODEPRIME, IF_INTEGER, "Number of internal drain node"), OP( "snodeprime", MOS2_SNODEPRIME, IF_INTEGER, "Number of internal source node"), OP( "sourceconductance", MOS2_SOURCECONDUCT, IF_REAL, "Source conductance"), OP( "drainconductance", MOS2_DRAINCONDUCT, IF_REAL, "Drain conductance"), OP( "von", MOS2_VON, IF_REAL, " "), OP( "vdsat", MOS2_VDSAT, IF_REAL,"Saturation drain voltage"), OP( "sourcevcrit", MOS2_SOURCEVCRIT, IF_REAL,"Critical source voltage"), OP( "drainvcrit", MOS2_DRAINVCRIT, IF_REAL,"Critical drain voltage"), OP( "cd", MOS2_CD, IF_REAL,"Drain current"), OP( "cbs", MOS2_CBS, IF_REAL, "B-S junction capacitance"), OP( "cbd", MOS2_CBD, IF_REAL, "B-D junction capacitance"), OP( "gmbs", MOS2_GMBS, IF_REAL, "Bulk-Source transconductance"), OP( "gm", MOS2_GM, IF_REAL, "Transconductance"), OP( "gds", MOS2_GDS, IF_REAL, "Drain-Source conductance"), OP( "gbd", MOS2_GBD, IF_REAL, "Bulk-Drain conductance"), OP( "gbs", MOS2_GBS, IF_REAL, "Bulk-Source conductance"), OP( "capbd", MOS2_CAPBD, IF_REAL, "Bulk-Drain capacitance"), OP( "capbs", MOS2_CAPBS, IF_REAL, "Bulk-Source capacitance"), OP( "cbd0", MOS2_CAPZEROBIASBD, IF_REAL,"Zero-Bias B-D junction capacitance"), OP( "cbdsw0",MOS2_CAPZEROBIASBDSW,IF_REAL, " "), OP( "cbs0", MOS2_CAPZEROBIASBS, IF_REAL,"Zero-Bias B-S junction capacitance"), OP( "cbssw0", MOS2_CAPZEROBIASBSSW,IF_REAL," "), OP( "vbd", MOS2_VBD, IF_REAL, "Bulk-Drain voltage"), OP( "vbs", MOS2_VBS, IF_REAL, "Bulk-Source voltage"), OP( "vgs", MOS2_VGS, IF_REAL, "Gate-Source voltage"), OP( "vds", MOS2_VDS, IF_REAL, "Drain-Source voltage"), OP( "capgs", MOS2_CAPGS, IF_REAL, "Gate-Source capacitance"), OP( "qgs", MOS2_QGS, IF_REAL, "Gate-Source charge storage"), OP( "cqgs",MOS2_CQGS, IF_REAL,"Capacitance due to gate-source charge storage"), OP( "capgd", MOS2_CAPGD, IF_REAL, "Gate-Drain capacitance"), OP( "qgd", MOS2_QGD, IF_REAL, "Gate-Drain charge storage"), OP( "cqgd",MOS2_CQGD,IF_REAL,"Capacitance due to gate-drain charge storage"), OP( "capgb", MOS2_CAPGB, IF_REAL, "Gate-Bulk capacitance"), OP( "qgb", MOS2_QGB, IF_REAL, "Gate-Bulk charge storage"), OP( "cqgb",MOS2_CQGB,IF_REAL,"Capacitance due to gate-bulk charge storage"), OP( "qbd", MOS2_QBD, IF_REAL, "Bulk-Drain charge storage"), OP( "cqbd",MOS2_CQBD,IF_REAL,"Capacitance due to bulk-drain charge storage"), OP( "qbs", MOS2_QBS, IF_REAL, "Bulk-Source charge storage"), OP( "cqbs",MOS2_CQBS,IF_REAL,"Capacitance due to bulk-source charge storage"), OP( "cs", MOS2_CS, IF_REAL, "Source current "), OP( "cg", MOS2_CG, IF_REAL, "Gate current "), OP( "cb", MOS2_CB, IF_REAL, "Bulk current "), OP( "p", MOS2_POWER, IF_REAL, "Instantaneous power "), OP( "sens_l_dc", MOS2_L_SENS_DC, IF_REAL, "dc sensitivity wrt length"), OP( "sens_l_real", MOS2_L_SENS_REAL, IF_REAL, "real part of ac sensitivity wrt length"), OP( "sens_l_imag", MOS2_L_SENS_IMAG, IF_REAL, "imag part of ac sensitivity wrt length"), OP( "sens_l_cplx", MOS2_L_SENS_CPLX, IF_COMPLEX, "ac sensitivity wrt length"), OP( "sens_l_mag", MOS2_L_SENS_MAG, IF_REAL, "sensitivity wrt l of ac magnitude"), OP( "sens_l_ph", MOS2_L_SENS_PH, IF_REAL, "sensitivity wrt l of ac phase"), OP( "sens_w_dc", MOS2_W_SENS_DC, IF_REAL, "dc sensitivity wrt width"), OP( "sens_w_real", MOS2_W_SENS_REAL, IF_REAL, "dc sensitivity and real part of ac sensitivity wrt width"), OP( "sens_w_imag", MOS2_W_SENS_IMAG, IF_REAL, "imag part of ac sensitivity wrt width"), OP( "sens_w_mag", MOS2_W_SENS_MAG, IF_REAL, "sensitivity wrt w of ac magnitude"), OP( "sens_w_ph", MOS2_W_SENS_PH, IF_REAL, "sensitivity wrt w of ac phase"), OP( "sens_w_cplx", MOS2_W_SENS_CPLX, IF_COMPLEX, "ac sensitivity wrt width") }; static IFparm MOS2mPTable[] = { /* model parameters */ IOP("vto", MOS2_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("vt0", MOS2_MOD_VTO, IF_REAL ,"Threshold voltage"), IOP("kp", MOS2_MOD_KP, IF_REAL ,"Transconductance parameter"), IOP("gamma", MOS2_MOD_GAMMA, IF_REAL ,"Bulk threshold parameter"), IOP("phi", MOS2_MOD_PHI, IF_REAL ,"Surface potential"), IOP("lambda",MOS2_MOD_LAMBDA,IF_REAL ,"Channel length modulation"), IOP("rd", MOS2_MOD_RD, IF_REAL ,"Drain ohmic resistance"), IOP("rs", MOS2_MOD_RS, IF_REAL ,"Source ohmic resistance"), IOP("cbd", MOS2_MOD_CBD, IF_REAL ,"B-D junction capacitance"), IOP("cbs", MOS2_MOD_CBS, IF_REAL ,"B-S junction capacitance"), IOP("is", MOS2_MOD_IS, IF_REAL ,"Bulk junction sat. current"), IOP("pb", MOS2_MOD_PB, IF_REAL ,"Bulk junction potential"), IOP("cgso", MOS2_MOD_CGSO, IF_REAL ,"Gate-source overlap cap."), IOP("cgdo", MOS2_MOD_CGDO, IF_REAL ,"Gate-drain overlap cap."), IOP("cgbo", MOS2_MOD_CGBO, IF_REAL ,"Gate-bulk overlap cap."), IOP("rsh", MOS2_MOD_RSH, IF_REAL ,"Sheet resistance"), IOP("cj", MOS2_MOD_CJ, IF_REAL ,"Bottom junction cap per area"), IOP("mj", MOS2_MOD_MJ, IF_REAL ,"Bottom grading coefficient"), IOP("cjsw", MOS2_MOD_CJSW, IF_REAL ,"Side junction cap per area"), IOP("mjsw", MOS2_MOD_MJSW, IF_REAL ,"Side grading coefficient"), IOP("js", MOS2_MOD_JS, IF_REAL ,"Bulk jct. sat. current density"), IOP("tox", MOS2_MOD_TOX, IF_REAL ,"Oxide thickness"), IOP("ld", MOS2_MOD_LD, IF_REAL ,"Lateral diffusion"), IOP("u0", MOS2_MOD_U0, IF_REAL ,"Surface mobility"), IOP("uo", MOS2_MOD_U0, IF_REAL ,"Surface mobility"), IOP("fc", MOS2_MOD_FC, IF_REAL ,"Forward bias jct. fit parm."), IP("nmos", MOS2_MOD_NMOS, IF_FLAG ,"N type MOSfet model"), IP("pmos", MOS2_MOD_PMOS, IF_FLAG ,"P type MOSfet model"), IOP("nsub", MOS2_MOD_NSUB, IF_REAL ,"Substrate doping"), IOP("tpg", MOS2_MOD_TPG, IF_INTEGER,"Gate type"), IOP("nss", MOS2_MOD_NSS, IF_REAL ,"Surface state density"), IOP("delta", MOS2_MOD_DELTA, IF_REAL ,"Width effect on threshold"), IOP("uexp", MOS2_MOD_UEXP, IF_REAL ,"Crit. field exp for mob. deg."), IOP("ucrit", MOS2_MOD_UCRIT, IF_REAL ,"Crit. field for mob. degradation"), IOP("vmax", MOS2_MOD_VMAX, IF_REAL ,"Maximum carrier drift velocity"), IOP("xj", MOS2_MOD_XJ, IF_REAL ,"Junction depth"), IOP("neff", MOS2_MOD_NEFF, IF_REAL ,"Total channel charge coeff."), IOP("nfs", MOS2_MOD_NFS, IF_REAL ,"Fast surface state density"), IOP("tnom", MOS2_MOD_TNOM, IF_REAL ,"parameter measurement temperature") }; static char *MOS2names[] = { "Drain", "Gate", "Source", "Bulk" }; SPICEdev MOS2info = { { "Mos2", "Level 2 MOSfet model with Meyer capacitance model", sizeof(MOS2names)/sizeof(char *), sizeof(MOS2names)/sizeof(char *), MOS2names, sizeof(MOS2pTable)/sizeof(IFparm), MOS2pTable, sizeof(MOS2mPTable)/sizeof(IFparm), MOS2mPTable, }, MOS2param, MOS2mParam, MOS2load, MOS2setup, MOS2setup, MOS2temp, MOS2trunc, NULL, MOS2acLoad, NULL, MOS2destroy, #ifdef DELETES MOS2mDelete, MOS2delete, #else /* DELETES */ NULL, NULL, #endif /* DELETES */ MOS2getic, MOS2ask, NULL, MOS2pzLoad, #ifdef NEWCONV MOS2convTest, #else /* NEWCONV */ NULL, #endif /* NEWCONV */ #ifndef NOSENS MOS2sSetup, MOS2sLoad, MOS2sUpdate, MOS2sAcLoad, MOS2sPrint, NULL, #else /* NOSENS */ NULL, NULL, NULL, NULL, NULL, NULL, #endif /* NOSENS */ sizeof(MOS2instance), sizeof(MOS2model), }; 0707070124061642421006440006700000000000011777770500302400700004600000010321spice3c1/spice3/dev/mos2/mos2acload.c/* * Copyright (c) 1985 Thomas L. Quarles */ #include "prefix.h" #include #include "cktdefs.h" #include "mos2defs.h" #include "sperror.h" #include "suffix.h" RCSID("MOS2acLoad.c $Revision: 1.4 $ on $Date: 88/07/22 03:48:26 $") int MOS2acLoad(inModel,ckt) GENmodel *inModel; register CKTcircuit *ckt; { register MOS2model *model = (MOS2model *)inModel; register MOS2instance *here; int xnrm; int xrev; double xgs; double xgd; double xgb; double xbd; double xbs; double capgs; double capgd; double capgb; double GateBulkOverlapCap; double GateDrainOverlapCap; double GateSourceOverlapCap; double EffectiveLength; for( ; model != NULL; model = model->MOS2nextModel) { for(here = model->MOS2instances; here!= NULL; here = here->MOS2nextInstance) { if (here->MOS2mode < 0) { xnrm=0; xrev=1; } else { xnrm=1; xrev=0; } /* * meyer's model parameters */ EffectiveLength=here->MOS2l - 2*model->MOS2latDiff; GateSourceOverlapCap = model->MOS2gateSourceOverlapCapFactor * here->MOS2w; GateDrainOverlapCap = model->MOS2gateDrainOverlapCapFactor * here->MOS2w; GateBulkOverlapCap = model->MOS2gateBulkOverlapCapFactor * EffectiveLength; capgs = ( *(ckt->CKTstate0+here->MOS2capgs)+ *(ckt->CKTstate0+here->MOS2capgs) + GateSourceOverlapCap ); capgd = ( *(ckt->CKTstate0+here->MOS2capgd)+ *(ckt->CKTstate0+here->MOS2capgd) + GateDrainOverlapCap ); capgb = ( *(ckt->CKTstate0+here->MOS2capgb)+ *(ckt->CKTstate0+here->MOS2capgb) + GateBulkOverlapCap ); xgs = capgs * ckt->CKTomega; xgd = capgd * ckt->CKTomega; xgb = capgb * ckt->CKTomega; xbd = here->MOS2capbd * ckt->CKTomega; xbs = here->MOS2capbs * ckt->CKTomega; /* * load matrix */ *(here->MOS2GgPtr +1) += xgd+xgs+xgb; *(here->MOS2BbPtr +1) += xgb+xbd+xbs; *(here->MOS2DPdpPtr +1) += xgd+xbd; *(here->MOS2SPspPtr +1) += xgs+xbs; *(here->MOS2GbPtr +1) -= xgb; *(here->MOS2GdpPtr +1) -= xgd; *(here->MOS2GspPtr +1) -= xgs; *(here->MOS2BgPtr +1) -= xgb; *(here->MOS2BdpPtr +1) -= xbd; *(here->MOS2BspPtr +1) -= xbs; *(here->MOS2DPgPtr +1) -= xgd; *(here->MOS2DPbPtr +1) -= xbd; *(here->MOS2SPgPtr +1) -= xgs; *(here->MOS2SPbPtr +1) -= xbs; *(here->MOS2DdPtr) += here->MOS2drainConductance; *(here->MOS2SsPtr) += here->MOS2sourceConductance; *(here->MOS2BbPtr) += here->MOS2gbd+here->MOS2gbs; *(here->MOS2DPdpPtr) += here->MOS2drainConductance+ here->MOS2gds+here->MOS2gbd+ xrev*(here->MOS2gm+here->MOS2gmbs); *(here->MOS2SPspPtr) += here->MOS2sourceConductance+ here->MOS2gds+here->MOS2gbs+ xnrm*(here->MOS2gm+here->MOS2gmbs); *(here->MOS2DdpPtr) -= here->MOS2drainConductance; *(here->MOS2SspPtr) -= here->MOS2sourceConductance; *(here->MOS2BdpPtr) -= here->MOS2gbd; *(here->MOS2BspPtr) -= here->MOS2gbs; *(here->MOS2DPdPtr) -= here->MOS2drainConductance; *(here->MOS2DPgPtr) += (xnrm-xrev)*here->MOS2gm; *(here->MOS2DPbPtr) += -here->MOS2gbd+(xnrm-xrev)*here->MOS2gmbs; *(here->MOS2DPspPtr) -= here->MOS2gds+ xnrm*(here->MOS2gm+here->MOS2gmbs); *(here->MOS2SPgPtr) -= (xnrm-xrev)*here->MOS2gm; *(here->MOS2SPsPtr) -= here->MOS2sourceConductance; *(here->MOS2SPbPtr) -= here->MOS2gbs+(xnrm-xrev)*here->MOS2gmbs; *(here->MOS2SPdpPtr) -= here->MOS2gds+ xrev*(here->MOS2gm+here->MOS2gmbs); } } return(OK); } 0707070124061642431006440006700000000000011777770500302401000004300000035636spice3c1/spice3/dev/mos2/mos2ask.c/* * Copyright (c) 1987 Mathew Lew and Thomas L. Quarles */ #include "prefix.h" #include #include #include "const.h" #include "ifsim.h" #include "cktdefs.h" #include "devdefs.h" #include "mos2defs.h" #include "sperror.h" #include "util.h" #include "suffix.h" RCSID("MOS2ask.c $Revision: 1.10 $ on $Date: 89/04/30 12:23:35 $") /*ARGSUSED*/ int MOS2ask(ckt,inst,which,value,select) CKTcircuit *ckt; GENinstance *inst; int which; IFvalue *value; IFvalue *select; { MOS2instance *here = (MOS2instance *)inst; double vr; double vi; double sr; double si; double vm; static char *msg = "Current and power not available for ac analysis"; switch(which) { case MOS2_TEMP: value->rValue = here->MOS2temp-CONSTCtoK; return(OK); case MOS2_CGS: value->rValue = *(ckt->CKTstate0 + here->MOS2capgs); return(OK); case MOS2_CGD: value->rValue = *(ckt->CKTstate0 + here->MOS2capgd); return(OK); case MOS2_L: value->rValue = here->MOS2l; return(OK); case MOS2_W: value->rValue = here->MOS2w; return(OK); case MOS2_AS: value->rValue = here->MOS2sourceArea; return(OK); case MOS2_AD: value->rValue = here->MOS2drainArea; return(OK); case MOS2_PS: value->rValue = here->MOS2sourcePerimiter; return(OK); case MOS2_PD: value->rValue = here->MOS2drainPerimiter; return(OK); case MOS2_NRS: value->rValue = here->MOS2sourceSquares; return(OK); case MOS2_NRD: value->rValue = here->MOS2drainSquares; return(OK); case MOS2_OFF: value->rValue = here->MOS2off; return(OK); case MOS2_IC_VBS: value->rValue = here->MOS2icVBS; return(OK); case MOS2_IC_VDS: value->rValue = here->MOS2icVDS; return(OK); case MOS2_IC_VGS: value->rValue = here->MOS2icVGS; return(OK); case MOS2_DNODE: value->iValue = here->MOS2dNode; return(OK); case MOS2_GNODE: value->iValue = here->MOS2gNode; return(OK); case MOS2_SNODE: value->iValue = here->MOS2sNode; return(OK); case MOS2_BNODE: value->iValue = here->MOS2bNode; return(OK); case MOS2_DNODEPRIME: value->iValue = here->MOS2dNodePrime; return(OK); case MOS2_SNODEPRIME: value->iValue = here->MOS2sNodePrime; return(OK); case MOS2_SOURCECONDUCT: value->rValue = here->MOS2sourceConductance; return(OK); case MOS2_DRAINCONDUCT: value->rValue = here->MOS2drainConductance; return(OK); case MOS2_VON: value->rValue = here->MOS2von; return(OK); case MOS2_VDSAT: value->rValue = here->MOS2vdsat; return(OK); case MOS2_SOURCEVCRIT: value->rValue = here->MOS2sourceVcrit; return(OK); case MOS2_DRAINVCRIT: value->rValue = here->MOS2drainVcrit; return(OK); case MOS2_CD: value->rValue = here->MOS2cd; return(OK); case MOS2_CBS: value->rValue = here->MOS2cbs; return(OK); case MOS2_CBD: value->rValue = here->MOS2cbd; return(OK); case MOS2_GMBS: value->rValue = here->MOS2gmbs; return(OK); case MOS2_GM: value->rValue = here->MOS2gm; return(OK); case MOS2_GDS: value->rValue = here->MOS2gds; return(OK); case MOS2_GBD: value->rValue = here->MOS2gbd; return(OK); case MOS2_GBS: value->rValue = here->MOS2gbs; return(OK); case MOS2_CAPBD: value->rValue = here->MOS2capbd; return(OK); case MOS2_CAPBS: value->rValue = here->MOS2capbs; return(OK); case MOS2_CAPZEROBIASBD: value->rValue = here->MOS2Cbd; return(OK); case MOS2_CAPZEROBIASBDSW: value->rValue = here->MOS2Cbdsw; return(OK); case MOS2_CAPZEROBIASBS: value->rValue = here->MOS2Cbs; return(OK); case MOS2_CAPZEROBIASBSSW: value->rValue = here->MOS2Cbssw; return(OK); case MOS2_VBD: value->rValue = *(ckt->CKTstate0 + here->MOS2vbd); return(OK); case MOS2_VBS: value->rValue = *(ckt->CKTstate0 + here->MOS2vbs); return(OK); case MOS2_VGS: value->rValue = *(ckt->CKTstate0 + here->MOS2vgs); return(OK); case MOS2_VDS: value->rValue = *(ckt->CKTstate0 + here->MOS2vds); return(OK); case MOS2_CAPGS: value->rValue = *(ckt->CKTstate0 + here->MOS2capgs); return(OK); case MOS2_QGS: value->rValue = *(ckt->CKTstate0 + here->MOS2qgs); return(OK); case MOS2_CQGS: value->rValue = *(ckt->CKTstate0 + here->MOS2cqgs); return(OK); case MOS2_CAPGD: value->rValue = *(ckt->CKTstate0 + here->MOS2capgd); return(OK); case MOS2_QGD: value->rValue = *(ckt->CKTstate0 + here->MOS2qgd); return(OK); case MOS2_CQGD: value->rValue = *(ckt->CKTstate0 + here->MOS2cqgd); return(OK); case MOS2_CAPGB: value->rValue = *(ckt->CKTstate0 + here->MOS2capgb); return(OK); case MOS2_QGB: value->rValue = *(ckt->CKTstate0 + here->MOS2qgb); return(OK); case MOS2_CQGB: value->rValue = *(ckt->CKTstate0 + here->MOS2cqgb); return(OK); case MOS2_QBD: value->rValue = *(ckt->CKTstate0 + here->MOS2qbd); return(OK); case MOS2_CQBD: value->rValue = *(ckt->CKTstate0 + here->MOS2cqbd); return(OK); case MOS2_QBS: value->rValue = *(ckt->CKTstate0 + here->MOS2qbs); return(OK); case MOS2_CQBS: value->rValue = *(ckt->CKTstate0 + here->MOS2cqbs); return(OK); case MOS2_L_SENS_DC: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+ here->MOS2senParmNo); } return(OK); case MOS2_L_SENS_REAL: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+ here->MOS2senParmNo); } return(OK); case MOS2_L_SENS_IMAG: if(ckt->CKTsenInfo){ value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+ here->MOS2senParmNo); } return(OK); case MOS2_L_SENS_MAG: if(ckt->CKTsenInfo){ vr = *(ckt->CKTrhsOld