What's new in MacSpice 3.3.0
Feb 14, 2024
- Enhancements:
- The front-end error/warning reporting code has been refactored. As a result, most commands in source files now include error/warning messages that identify the line responsible.
- New location command for debugging scripts.
- Improvements to the drawing and labelling of grids for graphs.
- Performance of the fft() and ifft() functions.
- Improvements to SVG and PostScript graphics drivers.
- Improvements to the way the graph-plotting commands handle the 'all' wildcard. For example, plot all excludes the abscissa from the list of vectors displayed and plot all vs all triggers an error.
- Improved behaviour when executable is invoked directly as a command line tool.
- Improved hash() function quality for vectors with complex arguments. (Hashes of complex vectors will differ pre- and post-v3.3.0.)
- Added support for parameters with string values, e.g.:
- set foo = @modname[param]
- set foo = @devname[param]
- now work as expected. Also,
- let bar = @modname[param]
- let bar = @devname[param]
- assign the hash value of the param string to bar.
- Vectors:
- faster look-up by name;
- faster expression evaluation;
- internal storage of complex vectors changed from 'interleaved' to 'split' format.
- Incremental plotting (iplot) now uses:
- the type of the scale for the x-grid;
- the multiplot linestyle.
- Bugs Fixed:
- Syntax error in the output generated by the SVG hardcopy driver.
- Missing final point on graphs when the number of points equalled polydegree+1.
- Device and model parameters with names containing special characters "-+*/%~" were inaccessible using the @name[param] syntax.
- Character '?' was not allowed in node, variable, etc. names.
- Freezing during incremental plotting (iplot).
- Memory issue when the set command was used after destroy all.
- Fixed length buffers in mkfnode() and mksnode().
- A number of minor memory leaks.
- Regression: Data copy error in vec_mkfamily(). [Build 362]
New in MacSpice 3.2.8 (Jan 4, 2024)
- Enhancements:
- Improvements to the drawing and labelling of grids for graphs.
- Improvements to the svg and postscript hardcopy drivers.
- Bugs Fixed:
- Syntax error in the output generated by the 'hcopydevtype = svg' driver.
- Potential memory issue when 'set' is used to display variablesafter 'destroy all'.
New in MacSpice 3.2.7 (Dec 17, 2023)
- Enhancements:
- Improved behaviour when used with BBEdit as the helper-editor. Thanks to Rich Siegel (www.barebones.com) for assistance.
- Improved scheme for auto-naming temporary files.
- Updated 'const' plot date to match publication day of the CODATA values.
- Bugs Fixed:
- Regression: Missing messages when a single analysis reports multiple errors.
- Unnecessary creation of 'default.profraw' logfile in release builds.
New in MacSpice 3.2.6 (Dec 2, 2023)
- Enhancements:
- Standard rules for names (§5.6.1) now apply to aliases.
- New 'Move to Back' action added to Window menu.
- Cursor-label code for graph windows refactored. Difference measurements now display the base point and extension lines.
- All calls to sprintf() replaced.
- Bugs Fixed:
- Incorrect processing of tabs in strings pasted into the console.
- Encoding of source files containing utf-8 characters not recognised.
- Freezing of cursor-label for graph when the mouse was moved rapidly over label.
- Cursor-labels missing when from printed graphs.
- Regression: 'let' command would not modify vectors with 'invalid' names created by analyses, e.g. v(123).
New in MacSpice 3.2.5 (Oct 20, 2023)
- Enhancements:
- Naming rules for front-end variables, vectors, user-defined functions and labels. have been harmonised; valid names can contain alphanumeric '_.:' 7-bit ASCII character and any non-ASCII unicode character.
- BSIM4 device model updated to version 4.8.2
- Processor type added to output of 'version' command.
- 'About...' window layout improved.
- Accuracy of DIOtemp() for edge-cases improved by using expm1() and ln1p().
- Accuracy of total noise calculation improved in extreme-cases.
- The 'noise' and 'pz' analyses now trap non-existent nodes in their arguments.
- Front-end variables:
- support for nesting, i.e. lists as elements of lists;
- support for multidimensional ranges, e.g. $foo[range1][range2].
- improved error detection and messages.
- Bugs Fixed:
- FFT crash in Accelerate framework on ARM64 processors fixed by Apple so workaround removed.
- Crash in 'noise' analysis when circuit matrix is singular.
- Crash when 'stop' command used with invalid syntax.
- Formatting issue when error messages contain a '%' character.
- Display of encoded characters in the reports generated when 'echo' and/or 'debug' are set.
- Potential buffer overrun in history substitution code.
- Potential memset(3) issue in u8_toArrayOfu8().
- False postive 'Syntax error:' when parsing commands with more than one vector argument, e.g.
- plot (4;3;2;1;0) (0;1;2;3;4)^2 vs (0;1;2;3;4)
New in MacSpice 3.2.4 (Nov 26, 2022)
- Bugs fixed:
- Parameter parsing for the 'optimize' command.
- Missing newline at the end of some messages when finding operating point.
- Install workaround for crash in Accelerate FFT library for Apple silicon.
New in MacSpice 3.2.3 (Jun 23, 2022)
- Enhancements:
- Crash reporting system recognises '.ips' format crash logs generated by macOS Monterey.
New in MacSpice 3.2.2 (Mar 22, 2022)
- Enhancements:
- Improve continuity of diode equations in default (level 1) JFET model.
- Add expm1(x) and ln1p(x) functions to command line interpreter to improve accuracy of expressions involving 'exp(x)−1' and 'ln(1+x)' respectively.
- Add expm1(x) and ln1p(x) functions to repertoire of arbitrary source device.
- Refactor operating-point code and make minor improvements to behaviour. Clarify the wording of some notes and warnings.
- Minor changes to MOSFET level 2 device to improve convergence when nfs = 0.
- Add warning when 'if' statement has an undefined boolean argument.
- Bugs fixed:
- Discontinuity associated with calculation of BJT model base charge.
New in MacSpice 3.2.1 (Jan 3, 2022)
- Enhancements:
- Universal binary runs natively on both Apple silicon and Intel-based Mac computers.
- Customised layering behaviour of console window changed to conform with Apple's user interface guidelines.
- Update copy/paste and drag-and-drop behaviour of graph windows.
- 'File > Print...' prints just selected console text.
- Improve behaviour of the 'aspice' command.
- Minor improvements to formatting of some error messages.
- Code refactored to eliminate use of deprecated APIs.
- Self-update system updated.
- Crash reporting system updated.
- Enable use of EdDSA (ed25519) signatures for updates.
- Bugs fixed:
- Spurious 'internal error' when 'destroy' is applied to a non-existent plot.
- Crash when evaluating 'print @{qmod}[type]'.
- Expressions such as '@R1[temp]' are now insensitive to case.
- Messages from 'optimize' command now obey 'nomoremode' setting.
- Source specifications in the interactive versions of 'dc', 'noise', 'tf' now insensitive to case.
- Text insertion point now uses foreground colour consistently.
- Crash reporter dates are now human-readable.
- Crash when AppleScript has a nil turn value.
- Missing CPU and OS version information when checking for updates.
- Inconsistencies in use of 'nomoremode' setting by messages and us of stderr vs stdout by warnings and notes.
- Make graph cursor text visible in 'dark mode'.
- Behaviour of AC and NOISE analyses in cases such as 'ac lin 10 1 1'.
- Noise analysis fails to create integrated noise plot if fmin = fma.
New in MacSpice 3.1.25 (Dec 7, 2021)
- Enhancements:
- Minor improvements to formatting of some error messages.
- Bugs fixed:
- Spurious 'internal error' when 'destroy' is applied to a non-existent plot.
- Crash when evaluating 'print @{qmod}[type]'
- Crash on OS X versions earlier than 10.9
New in MacSpice 3.1.24 (Apr 12, 2020)
- Enhancements:
- Refinements to choice of linear grid tickmark positions by plot command.
- Handles invalid values of 'xdelta' and 'ydelta' argument for plot command.
- Add ':' to the list of characters that may appear in variable names so that expressions such as '$&v(vss:10:2)' work as expected.
- Bugs fixed:
- B-source identifies token responsible in syntax-error message.
- Parsing of B-source expressions involving constants 'e' and 'pi'.
- Re-enable 'nodesets' command.
New in MacSpice 3.1.23 (Mar 29, 2020)
- Enhancements:
- Improvements to tickmark choices for graphs with linear scales.
- Bugs fixed:
- Printing word lists now uses 'moremode'.
New in MacSpice 3.1.22 (Mar 3, 2020)
- Enhancements:
- New conj(x) command line interpreter function to calculate the complex conjugate of its argument.
- The optimise command detects and reports more error conditions.
- Refactor modulo '%' operator to use fmod().
- Quartz_SetLinestyle() now traps errors.
- Change text window scrolling code to work better on MacOS 10.14+
- Bugs fixed:
- Formatting of 'tabbed' rawfiles when vectors have mismatched lengths.
- Crash in gather command when 'map' has more elements than 'dst'.
- Crash in scatter command when 'src' is complex.
- Helpbook behaviour in MacOS 10.14+.
- Some invalid arguments cause rnd() to freeze.
- Crash using plot with Quartz viewport when executable is invoked directly from a shell.
New in MacSpice 3.1.21 (Dec 10, 2018)
- Enhancements:
- Add 'multiplot' option to 'plot' command to allow pointplots and lineplots on the same graph.
- Modify FFT-based routines to use vDSP where possible.
- Improve error-reporting for some types of syntax error and the specificity of certain error messages.
- Enable use of '/dev/null' as output file.
- Fix dependence of dp in rusage values on numdgt.
- Bugs fixed:
- Plot style 'combplot' draws vertical lines to the x-axis instead.
- Implement Spice 2 compatibility described in §4.4.2 of User Guide.
- Paging of lines output from 'echo'.
- Intermittent console redraw-lag.
- Console window should be either behind all or infront of graph windows.
- Stop allowing ']' to close '(' without when evaluating command line expressions.
- Prevent 'compose' clobbering an existing vector.
- Error trapping in fopenResolvingAliases()
- Memory leak in FFT functions invoking vDSP.
- displayWriteBuffer() now traps nil values for str.
- Changes:
- 32-bit binary removed from application bundle.
New in MacSpice 3.1.20 (Jul 31, 2018)
- Enhancements:
- Upgrade random number generator used throughout to SFMT19937 (SIMD oriented Fast Mersenne Twister).
- Increase range of valid arguments for rnd() function to [0,253].
- Double speed and halve peak memory used for FFTs (and IFFTs) of real vectors.
- Bugs fixed:
- Masked multiplier suffix in graph cursor label for some negative values.
- Memory leak due to redundant console -init invocation.
- Behaviour of 'repeat' loops nested inside blocks exited with 'continue 2'.
- Startup crash on macOS versions prior to 10.10.
New in MacSpice 3.1.19 (Jul 22, 2018)
- Enhancements:
- New 'compose' command options to realise a random vector with elements drawn from user-specified cumulative distristribution function (CDF).
- New cumsum() function. Calculates cummulative sums with extended precision.
- New fftconv() function to convert between packed and complex format for fft() of a real vector.
- Modify the 'scatter' and 'gather' commands so that values are added, instead of copied, to the result vector elements.
- The '.include' directive now allows quoted filenames.
- Update 'const' plot physical constants to their CODATA 2017 recommended values.
- MacOS file aliases are now resolved when opened by commands and directives.
- Improvements to speed and accuracy of the 'spec' command.
- Improve the way inconsistent scales are detected and reported by interpolate() and other functions that share the interpolation code.
- Allow variables 'ipolydegree' and 'dpolygree' to be set to '1'.
- Remove redundant 'dims=[]' information from 'display' command output for one-dimensional vectors.
- Update HelpBook to include link to tutorials.
- Improve precision of the 'xlimit' and 'ylimit' modifiers to 'plot' command.
- Bugs fixed:
- Formatting of 'diff' command output.
- Various minor issues associated with the 'compose' command.
- Off-by-one error in rnd() function maximum warning message.
- Vector v_link2 issue in 'scatter' and 'gather' commands.
- Code clean-up addressing obscure data-races and potential thread-safety issues.
- Memory Leak associated with using xcompress plot format.
- Error message when assignments have no RHS, e.g. 'let x ='.
- Sign of imag() part of real fft() and ifft() functions - consistency with conventions used in documentation.
- Invoking 'Bring All to Front' whenever MacSpice is activated.
- Issues with 'xindices' modifier to 'plot' command.
- Crash when update unarchiving failed.
- Lock-up when launching Help Viewer from the Help menu.(High Sierra issue.)
New in MacSpice 3.1.18 (Jan 27, 2018)
- Enhancements:
- Update to BSIM4.4.0.
- Bugs fixed:
- Crash in -updatePenSizeMenu reported with OS X 10.13.1
- Crash when executing 'cd #' reported with OS X 10.13.2
New in MacSpice 3.1.17 (Jul 28, 2017)
- Enhancements:
- The 'File > New' template is now in the Application Folder and can be customised.
- Improved handling of, and warnings for, closely separated breakpoints.
- Improved performance when constructing symbol tables for large netlists.
- Improved reporting of errors and their location.
- Bugs fixed:
- Uninitialised values in 'show c...'.
- Disable dash-substitution and spelling-correction by the the console CLI.
New in MacSpice 3.1.16 (Jun 19, 2017)
- Enhancements:
- New command 'srandom' to control seed used for random number generation.
- New average(array) function.
- Improvements to code that associates error messages with line numbers and filenames.
- Window activation behaviour when there are multiple graphs open.
- Bugs fixed:
- TRA model sometimes set breakpoints earlier than the current time.
- Make cmd-. work like ctl-C under Sierra.
- Calculation of output impedance tf analysis.
- Sign conventions: for 'p' for Vsource instances and 'v' for Isource instances.
- Memory leak when a graph window is closed.
New in MacSpice 3.1.15 (May 25, 2017)
- Bugs fixed:
- Sweep iteration limit (itl2) default value.
- Crash when fft()/ifft() operates on a real vector.
- Crash when 'plot v(1,2,3)' is used as a command.
- Crash when 'unset numdgt' is used as a command.
New in MacSpice 3.1.14 (Apr 3, 2017)
- Bugs fixed:
- Correct sign of power dissipated by PNP transistors.
- User-defined function definitions can sometimes be deleted inappropriately when a new fucntion is defined.
- Workaround for Sierra bug that caused a crash when invalid scale values are entered into a print dialog panel.
New in MacSpice 3.1.13 (Oct 27, 2016)
- Enhancements:
- Support UTF8 characters in the title bar of graph windows.
- The 'unset simvar' command now restores the simulator variable for the current task simvar to the default value specified in the User's Guide, instead of zero.
- Bugs fixed:
- Premature deletion of circuit state affecting information available with 'show' command. (Introduced in v3.1.11)
New in MacSpice 3.1.12 (Sep 1, 2016)
- Enhancements:
- Improve behavior when executable is used as command line tool.
- Modify parsing of .options, etc. to be more tolerant of numerical values with trailing garbage, e.g. 'CJ=.2MF/M^2'.
- Modify back-quote evaluation to use posix_spawn(2) instead of vfork(2).
- Improve error reporting for 'alter', 'altermod' and various other commands.
- Include error messages for continuation and .include lines in 'listing' display.
- Add HiSIM2 mosfet device (version 2.8.0) as level 61.
- Update BSIM4 device to version 4.8.0 of model.
- Update BSIM4 SOI device to version 4.3.1 of model.
- Update HiSIM-HV device model to version 2.2.0 of model.
- Improve parsing of expressions involving the comma operator, e.g. 'let z = 1,2'.
- Improve naming of temporary files to ensure uniqueness.
- Add warning when 'tran' analysis does not specify a TMAX value larger than (TSTOP - TSTART)
- Bugs fixed:
- Crash when subcircuit definition is empty.
- Crash when 'alter' is invoked with complex arguments.
- Crash when 'tran' analysis TMAX value is smaller than (TSTOP - TSTART)
- Crash when 'rspice' command is invoked.
- Convert line-breaks in the 'news' file from CR to LF.
- Back-quote evaluation can be interrupted with Command-., etc.
- Unreliable detection of duplicate subcircuit instances.
- Some small memory leaks.
- Behavior of 'aspice' command.
New in MacSpice 3.1.11 (Apr 18, 2016)
- Enhancements:
- Improve the way interpolation handles NaN values.
- Bugs fixed:
- Crash when redirection has more than one argument.
- Behavior of 'noprintscale' setting.
New in MacSpice 3.1.10 (Feb 26, 2016)
- Enhancements:
- Warning when subcircuit has empty definition.
- Bugs fixed:
- Crash when subcircuit has empty definition.
- Self-update mechanism secured against MITM vulnerability.
New in MacSpice 3.1.9 (Jan 4, 2016)
- Bug Fixes:
- Compatibility with Bug-reporter-v04.
- Crash when using 'compose' command create linear vectors.
New in MacSpice 3.1.8 (Dec 7, 2015)
- Enhancements:
- Improves appearance of plots of saw-tooth waveforms by limiting the mitre extent at joins.
- Bug Fixes:
- Text layout for 'About..' window.'.
- Behaviour of 'xcompress' modifier for the 'plot' command.
- Command 'gather' command copies all mapped values when the map vector is shorter than the source.
- Command 'applescript' stores the return value(s) in the '-r' argument.
New in MacSpice 3.1.6 (Oct 6, 2015)
- Bug Fixes:
- Smoothing for graphs of vectors with many points.
- Distortion analysis scales are correctly assigned log/lin scale types.
- Distortion analysis evaluation of some partial derivatives.
- Parsing of paths containing multibyte characters.
New in MacSpice 3.1.5 (Jul 16, 2015)
- Enhancements:
- Update const values to CODATA (2014) values.
- Issue error message when '.ends' argument does not match open sub circuit definition.
- Improved diagnostic messages when creating/populating application support directory fails.
- Add www.macspice.com to NSExceptionDomains to overide ATS defaults for OS X 10.11.
- Minor improvements to the crash reporter facility.
- Bug Fixes:
- Symbol positioning on pointplots improved.
- Colour PostScript hardcopy pointplots now have coloured points.
New in MacSpice 3.1.4 (Jun 1, 2015)
- Cured crash when invalid i/o redirection is appended to commands.
New in MacSpice 3.1.3 (May 18, 2015)
- Enhancements:
- Error message for invalid 'reshape' dimensions.
- Crash reports include last front-end command.
- Bug Fixes:
- Process receives 'do script' AppleEvents without waiting for extra carriage returns.
- An expression involving semicolons and multiple syntax errors no longer causes crashes.
- Comparison for inequality with complex values is made correctly.
New in MacSpice 3f5 3.1.2 (Jan 27, 2015)
- Enhancements: Improved behaviour when errors are detected during subcircuit expansion. [Build 303]
- Bug Fixes: Corrected text positions for default hardcopy device (plot5).•Cured crash when a solitary '#' as a command.
New in MacSpice 3f5 3.1.1 (Dec 30, 2014)
- Enhancements:
- The 'hardcopy' command now has an option to emit SVG.
- Bug Fixes:
- Quartz driver now uses linestyle2 correctly when a single curve is being plotted.
- Icon for help book updated.
- Fixed leak in 'hardcopy' demand, which also now displays the final curve.
- Traditional 'scalar' pole-zero analysis now creates scalars, not single-element vectors.
New in MacSpice 3f5 3.1.0 (Dec 15, 2014)
- Enhancements:
- Universal binary gives choice of 64- or 32-bit mode execution.
- Refactored using Cocoa framework with separate threads for GUI and Spice engine.
- Updated interface, including:
- 'New' and 'Open Recent..' File menu items.
- 'Format' menu for setting font and linewidth properties.
- Preferences panel with settings that include:
- default directory;
- 'Repeat' or 'Accent Menu' behaviour when keys are held down;
- console text and background colours;
- graph background and anti-background colours;
- external editor helper-application;
- default folder;
- enabling/controlling opening of HFS+ filepaths to assist with backwards compatability with MacSpice 2 scripts;
- automatic checks for updates;
- Improved graphs:
- rendered with Quartz instead of QuickDraw;
- simplified cursor modifiers;
- new legend layout algorithm;
- units displayed with axis labels;
- line thickness factors and dash patterns used for various parts of graphs can be modified by setting the 'linestyleN' variables.
- unicode symols (even those represented by composed character sequences) for the $pointchars variable used by 'pointplot' plots;
- high-precision placement of symbols on pointplot graphs.
- GUI:
- Cocoa-style command-completion. (Type the ESC or F5 keys to use this.)
- Console text and graphs now act as sources for drag-and-drop actions.
- Added Reverse Graphs item to Window menu. This reverses the order of non-miniaturized graph windows, this is useful when the default most-recent0n-top order is inappropriate, e.g. when reviewing the results of scripts that produce several graphs.
- Confirmation dialog to prevent accidental loss of work if MacSpice is asked to quit while a script is running or when there is unsaved data.
- Add a "Don't sleep while processing" checkbox to the Preference Panel also define 'nosleep' variable. These allow control of whether OS X 'idle sleep' is deferred while scripts are running.
- Improved AppleScript support.
- Dragging files and folders to the console pastes their path.
- Improved text systems, including
- Unix-style filepaths instead of HFS+ paths.
- Compatibility with the Unicode character-set and utf-8 encoding.
- Improved simulation engine and command line interpreter, e.g.:
- Improve handling of low- and no-memory error conditions.
- Improve accuracy of rusage memory report.
New in MacSpice 3f5 2.10.37 (Sep 29, 2014)
- Enhancements:
- Vector types behave more consistently and their units, if any, are now shown by the 'let' and 'display' commands.
- Vectors with angular types remember whether their units are degrees or radians.
- Evaluation of tanh() function derivative for small arguments in B-source device.
- Improved warning/error messages issued when conditional statement arguments have invalid values.
- Bugs fixed:
- The scale created by 'linearize' has valid dimensions.
- Unsetting 'maxord' returns the default order to 2.
New in MacSpice 3f5 2.10.36 (Aug 26, 2014)
- Enhancements:
- New 'hybrid' vector type. Vectors of this type are created when when operators are applied to pairs of vectors with incompatible units, e.g. the result of adding a voltage to a current.
- New 'scatter' and 'gather' commands for vector-processing.
- Binary operators have improved performance and handle 'array' operands consistently.
- Improved 'sortorder()' performance.
- Improvements to the 'compose' command.
- New 'pzmaxfreq' variable can be set to limit the range of frequencies searched by pole-zero analysis.
- The pz analysis now has an argument 'vector' that puts the poles and zeros found into vector lists, instead of giving each its own scalar value.
- Generalise the variable evaluation syntax so that '$?&foo' can be used to test whether the vector foo is available.
- Minor improvement to appearance of 'print col' tables.
- The output of the 'set', 'define' and 'display' commands has improved layout and formatting.
- User defined functions evaluate their arguments in a more efficient manner.
- Units are evaluated in more cases.
- Improved memory management.
- Some warning messages clarified.
- Bugs fixed:
- Correct selection of result type by semi-colon operator.
- Assigning into a subrange does not change the type of the owner-vector.
- The expression '3.14e-2p' should be evaluate to 3.14e-2 not 3.14e-15.
- Assignment doesn't reshape LHS ...' warning prints the dimensions instead of the length.
- Empty the hash-table for deleted symbols in a timely manner.
- Memory leak when history substitution fails with an error.
- Vectors created by analyses now have non-null dimensions.
- Issues with 'print all' and 'let ALL = ...' when there were zero or one vectors in the active plot.
- The integral() and deriv() functions return vectors with appropriate types.
- Crash when user defined function evaluates complicated functions of vectors with scale-subrange modifiers.
New in MacSpice 3f5 2.10.35 (Jul 29, 2014)
- Enhancements:
- New frontend variable '$processor'.
- Graph layout:
- handling of cases whent there are more than four labels in the legend;
- improved formatting of units and labels for axes.
- Better detection of syntax errors in variable expressions.
- Bugs fixed:
- Evaluation of variable expressions of the form ${$foo}.
- Mixed case vector names are not lower-cased for printing, etc.
- Functions of vectors have a linear grid-type.
- Stop Smith plots modifying the vectors being plotted.
- Crash when '*' is the first character returned from a back-qupte evaluation'
- The 'deftype' command overwriting the default 'temperature' definition.
New in MacSpice 3f5 2.10.33 (May 21, 2013)
- Enhancements:
- New 'assert condition' command to abort script execution unless the condition is true.
- New qualifiers for 'end' statements have been implemented: 'end if', 'end while', etc.. These reduce the likelihood of programming errors by checking that blocks in scripts are well-formed.
- Expression evaluation errors in scripts now include line location information.
- The console window now moves behind all open graph windows when any one of these is selected. Graphs can now be reviewed and closed using command-W without needing mouse-clicks.
- New warnings/errors, including for:
- attempts to transpose a scalar or one-dimensional vector;
- 'let x = y' when the dimensions of x and y differ;
- calling maximum(), minimum() or sortorder() with complex arguments.
- Bugs fixed:
- Scripts with redirected input/output can now be interrupted with command-. or ctl-C.
- Functions maximum(), minimum() and sortorder() fixed to reject complex arguments.
- Stride error fixed in hash() on PPC architectures.
- Fixed hash() command for vectors on PPC processors.
- Eliminated initial (pointless) evaluation of 'dowhile' condition.
- The 'interpolate()' function now handles array arguments and creates vectors that don't trigger 'inconsistent dimensions' warnings.
New in MacSpice 3f5 2.10.32 (May 9, 2013)
- Enhancements:
- Improve performance and consistency of 'and', 'or' and 'not' operators for expressions involving complex and/or NaN values.
- New warnings for conditional statements (if/while/dowhile) with ambiguous values.
- Modifiy relative precedence of the 'not' and ',' operators so that 'not 1 , not 2' is parsed as '(not 1),(not 2)' instead of 'not(1,not(2))'.
- Bugs fixed:
- Fixed crash affecting 2.10.31 when parsing certain types of invalid expressions.
- Fixed incorrect evaluation of boolean expressions involving complex variables.
- Complex values with both NaN and Inf parts are now interpreted as 'true' in logical expressions. [Build 264]
New in MacSpice 3f5 2.10.31 (Apr 29, 2013)
- Enhancements:
- New 'wrap()' function for phase to complement existing 'unwrap()' function.
- New 'hash()' function.
- New 'transpose()' function and improve performance of the existing 'transpose' command.
- The parser is now better at deciding whether, for example, 'ne' is referring to the 'not equals' operator or a vector (unwisely) named 'ne'.
- '.IC' and '.NODESET' statements inside subcircuit definitions are now expanded so they are interpreted as referring to the local nodes.
- Enhance the 'maximum()', 'minimum()', mean() and sortorder() functions so they work correctly and consistently with matrix arguments.
- The distinction between a scalar and a single-element vector is maintained in a more consistent fashion. e.g. 'vector(20)[12,12]' is a single element vector, whereas 'vector(20)[12]' is a scalar. (This makes some types of script simpler to write.)
- The temporary memory required by the sortorder() function has been reduced.
- Treat an attempt to 'unlet' a vector element as an error.' [Build 260]
- Bugs fixed:
- Improved behaviour of '.IC' statements when 'uic' is not specified for the tran analysis.
- Fixed crash triggered the second time an analysis is run when the netlist contains an '.IC' statement referring to a non-existent node.
- Fixed the 'rusage' command for cases when memory usage exceeds ~2GB.
- Fixed crash caused when invalid syntax is used to specify a user-defined function.
- Improve behaviour when warnings are issued during expression evaluation. [Build 260]
- Fix backwards-compatibility issue by reverting to previous definitions for max() and min() macros. [Build 261]
New in MacSpice 3f5 2.10.30 (Feb 25, 2013)
- Enhancements:
- URC model modified so that K = 1.0 is an acceptable value for the proportionality constant.
- Functions vector(1) and unitvec(1) now return a 1-element vector, not a scalar.
- Transition to building with Xcode 4.6.
- The 'define' command now works in a more intuitive way and has additional error detection and messages.
- Modify values in the const plot to match CODATA 2010 recommendations.
- Bugs fixed:
- Crash when 'load' is used to load an invalid rawfile.
- Crash when 'disto' analysis has invalid parameters.
- Crash when 'numdgt' is unset after being assigned an invalid (string) type.
- Crash when scriptspath is invalid in spinit.
- Missing end-line for optimiser warning message.
- Overhaul alias evaluation in attempt to fix obscure crash.
New in MacSpice 3f5 2.10.29 (Nov 28, 2011)
- Enhancements:
- Errors and warning messages generated by scripts now attempt to identify the location of the line that caused them.
- Blocks with missing end statements now generate warning messages.
- Vectors with one element are no longer automatically converted to scalars.
- Command line interpreter now evaluates variables of the form ${foo}
- Improve 'load' command so that invalid rawfiles are less likely to cause hangs/crashes.
- Bugs fixed:
- Modify behaviour of 'set' command so it creates a string variable in cases like 'set foo = "123 abc"'
- Fixed a potential crash when expressions like {$foo} are evaluated if more than 1GB of memory is reserved.
- Fix crash when 'plot' is followed by no arguments and two carriage returns.
- Fix crash when an 'else' block is empty.
- Fix crash in gr_pmsg() during iplot runs.
New in MacSpice 3f5 2.10.28 (Apr 26, 2011)
- Enhancements:
- Improved error messages if OP/DC-sweep fail to converge.
- The polyfit function has been made more robust.
- Detect and warn about ambiguous expressions like '-x^2'.
- Improve accuracy of frequency points used for AC and noise analyses.
- Changes to the 'history' variable now take place immediately.
- Improve behaviour of 'plot' command when vectors have extreme or infinite values.
- Bugs fixed:
- Behaviour of the 'appendwrite' setting.
- Crash when 'alter' is used to set real types to complex values.
- Detect non-monatonic PWL at an earlier stage.
- Fix potential crash in variable evaluation.
- Modify code for CLI lexer so it uses the dynamicbuffs library.
- Crash when accessing vector elements via an invalid range.
New in MacSpice 3f5 2.10.27 (Jan 2, 2011)
- Enhancements:
- Improvements to reporting of errors and warnings.
- Using a vector as the condition for a while/dowhile/if statement will trigger a warning if some elements are zero and others are not.
- Additional checks (number of function parameters) for independent voltage/current sources.
- Detection of duplicate instances of subcircuits.
- Improved parsing of resistor devices with missing values/models.
- Improved autoscaling for graphs for various (commonly encountered) special cases.
- Bugs fixed:
- Cured crashes when:
- backquoted commands return an error;
- obscure syntax error in 'B' device function specification;
- first hardcopy is 'hardcopy foo.ps sameplot';
- 'tf' is the first analysis applied to a circuit containing '.nodeset' instructions;
- independent source function has fewer than two parameters;
- 'spec' command called with invalid frequency step.
- Improved choice of axis limits near edge-cases for log graphs.
- Improved automatic scale select for the y-axis of a graph so that only values within the xlimit range (if specified) are considered.
- Fixed 'print' command display when argument contained a '%' symbol.
- Fixed some small memory leaks.
New in MacSpice 3f5 2.10.26 (Sep 2, 2010)
- Enhancements:
- New frontend discrete Fourier transform functions fft() and ifft().
- Most word-length and line-length restrictions are now removed.
- Improved parameter range-check warnings for front-end functions.
- Improved cost-function leak-detection in 'optimize' command.
- Crash-reporter updated to work with OS X 10.6
- Bugs fixed:
- Build 222 refused to launch on OS X 10.4.11.
- Reporting of errors when installing an update.
- Restored values for optimize 'step' parameters to their 2.10.23 defaults.
- Unitialized variables in several semiconductor models.
- Memory leaks:
- when an AC analysis was performed on a circuit constaining 'B' sources;
- when blank lines were typed at the console.
- A potential crash when blank lines were typed at the console.
- Handling of '}' by frontend parser.
New in MacSpice 3f5 2.10.25 (May 10, 2010)
- Bugs fixed:
- Issue with 'sens' analyses affecting version 2.10.24 fixed.
- Include statements in netlists now handle quoted spaces in filenames correctly.
New in MacSpice 3f5 2.10.24 (Apr 10, 2010)
- Enhancements:
- Dialogs to save windows as PICT files are now window-modal and accept long filenames.
- Improvements to speed and accuracy of the spec command.
- Additional helpful error detection and messages.
- Improvements to handling of 'vs' when parsing 'plot' commands.
- Improvements to the way sources set breakpoints and validate parameters.
- Minor improvements to the op solution code.
- Minor improvement fourier command.
- Improvements to memory management performance.
- Extra internal checks for memory integrity.
- Bugs fixed:
- Reporting of 'ib' by mos[236] devices.
- The reset and fourier commands no longer leak memory.
- fourier and linearize no longer give errors after a 'tran' has been interrupted.
- Specification of PW = 0 in current/voltage sources of type 'pulse' is permitted.
- Evaluation of '$foo[4-xxx]' now (correctly) returns an error.
- Evaluation of 'foreach foo "$&K"' now strips the '"' characters.
- Comb-plots with points outside grid area now display correctly.
- MESFET model no longer ignores 'off' flag.
- Calculation of not(z) corrected for case when z is complex.
- Fixed null-dereferences in coupled transmission line (CPL) model.
- Cured crash when a single ';' is typed at command line.
- Cured rare crash when user defined function is re/undefined.
- Cured rare start-up crash on multiprocessor machines.
New in MacSpice 3f5 2.10.23 (Feb 1, 2010)
- Enhancements:
- Upgrade BSIMSOI4 to versiom 4.3 (level=11).
- Bugs fixed:
- Vectors created by interpolate() now have units set to match those of the argument.
- Fixed special case when log-grid failed to draw.
- Install HiSIM_HV 1.2.0 Bugfix 05-Dec-2009.
New in MacSpice 3f5 2.10.22 (Nov 29, 2009)
- Enhancements:
- HiSIM_HV model updated to version 1.2.0 (level=62).
- Improved convergence for some types of 'B' source devices.
- Improved tick label format for linear graph axes when 'xdelta' and/or 'ydelta' are specified.
- Spice-2 'poly' sources accept node names containing symbols like '+' and '-'.
- New warning for netlist lines that are ignored because they have leading whitespace.
- Bugs fixed:
- Explicit 'save all' is not deleted by subsequent 'save' statements.
- Evaluating '@v1[coeffs]' no longer crashes if 'coeffs' is an empty list.
- Typing a single '$' at the command line no longer causes a freeze.
New in MacSpice 3f5 2.10.20 (Jul 14, 2009)
- Enhancements:
- Improvements to behaviour and layout of graphs with log axes.
- An 'unwrap()' function for phase vectors.
- Sophisticated consistency checks and warnings for groups of mutual inductors.
- The 'unlet' command now accepts the 'all' wildcard unless the current plot is the 'const' plot.
- Bugs fixed:
- The 'xlog' and 'ylog' arguments for the 'plot' command are no longer mutually exclusive.
- Syntax errors in '.noise' cards no longer cause a crash.
- Functions such as length() no longer return a vector with invalid dimensions when given a multi-dimensional argument.
- The 'compose' command now generates a uniform distribution on [0,1) instead of [0,2).
- Cured crash when an RTF file with '.include' statements is accidentally used as source.
New in MacSpice 3f5 2.10.19 (May 22, 2009)
- Enhancements:
- Install model BSIMSOI version 4.1;
- Improvements to the behaviour of the plot command ant its documentation documentation.
- Bugs fixed:
- Using 'alter' to change the value of a vector parameter more than once no longer causes a crash.
- Corrected behaviour of polar plots.
New in MacSpice 3f5 2.10.18 (Apr 9, 2009)
- The 'reshape' command now parses dimensions more tolerantly.
- Rationalised handling of expressions like 'v(1a)' by the command-line interpreter.
New in MacSpice 3f5 2.10.17 (Mar 31, 2009)
- Enhancements:
- BSIM4 version is now 4.6.3.
- Improved error/warning reporting for bad subcircuit definitions.
- Self-update system displays the build number if necessary.
- Bugs fixed:
- Crash after .include failed to expand tilde expressions.
- Crash due to font problems at launch.
- Crash when plotting a complex vector with length shorter than other vectors being plotted.
- Memory leak in subcircuit expansion code eliminated.
New in MacSpice 3f5 2.10.16 (Mar 2, 2009)
- Improved detection of errors and warnings for:
- Duplicate subcircuit definitions.
- Subcircuit definitions with invalid (non-unique) external node names.
- Duplicate model definitions.
- Non-ascii characters in node, model and subcircuit names.
- Cosmetic improvements to error message display and console paging mechanism.
- Bugs fixed:
- Model names can now include the characters '+' and '-'.
- Unmatched brackets in netlists should no longer cause a crash.
- Crash reporting mechanism modified to work with OS X 10.5.
New in MacSpice 3f5 2.10.15 (Feb 4, 2009)
- Enhancements:
- O(N2) algorithm used to set-up structures for saving analysis results replaced with O(N) method.
- Pre-defined vectors in constant plot updated to CODATA (2006) recommended values.
- Secure self-update mechanism by checking that the downloaded image has a valid DSA signature before proceeding with installation.
- The way files are assigned creators and types has been improved.
- Bugs fixed:
- Cured leak when plot command prompts for missing arguments.
- Cured crash when asciiplot is used to display a nearly constant value.
- Corrected the value of the pre-defined value of 'e' in the constant plot. It is now correct to 16 significant figures, instead of 12.
- Eliminated an undefined NSDocumentController/CFBundleTypeRole warning (OS X 10.5 only).
New in MacSpice 3f5 2.10.14 (Oct 7, 2008)
- Graph cursors behave better.
- AC Sensitivity analysis now positions grid points accurately and can resume after interruption.
- Improved pole/zero analysis - negligible complex components are rounded to zero.
- Vectors use memory more efficiently.
- Better frontend performance when large numbers of vectors are in existence.
- The big_endian/little_endian flag is now implemented for rawfiles written in batch mode.
- Case-insensitive string comparisons are performed faster.
- A warning is now issued when breakpoints are being ignored, e.g. because pulse rise-times are shorter than the value of MINBREAK.
- var_free() and ctl_free() procedures re-coded to avoid potential stack overflow in extreme cases.
- Improved display of mutual inductance parameters by 'show'.
- Improved numerical stability of interpolate() frontend function.
- Improved 'rusage' statistics for interrupted transient simulations.
- Improved default behaviour of 'xd' and 'alpha' parameters for MOS3 devices.
- 'shift' no longer causes a crash when it is given invalid arguments.
- 'goto $foo' when $foo has no value no longer crashes.
- Cured potential history list corruption when 'set history = 0' is used.
- Cured some minor memory leaks occurring during:
- conversion of circuit parameters to vectors;
- destruction of parse nodes referring to user-defined functions;
- tokenization of models with zero-length parameters.
- AC sensitivity analysis now works with non-linear devices.
- Correct evaluation of lists containing empty lists.
- Variables 'numdgt' and 'rawprec' now unset at the first attempt.
New in MacSpice 3f5 2.10.13 (Aug 12, 2008)
- Frontend 'hardcopy' command now generates working plot(5) code.
- Various issues with the 'write' and 'load' commands.
- Vector basename extraction now works as originally intended.
- Print commands of the form 'print v(tran2.x)' now work correctly.
New in MacSpice 3f5 2.10.12 (Aug 4, 2008)
- Enhancements: Frontend 'let' command is faster and manages memory more economically.
- Bugs fixed: Frontend 'hardcopy' command now generates working plot(5) code.
New in MacSpice 3f5 2.10.11 (Jul 28, 2008)
- Control structures now glob expressions during evaluation.
- AC analyses no longer create frequency scales comprising complex values.
- Improved statistical properties of random number generators used by rnd() and 'compose'.
- Repairs to the interpolate() frontend function.
- Reduce number of cases where 'Not enough space to perform Paste' errors may occur.
- The distribution of numbers produced by rnd(n) is now uniform for values of n that are not powers of 2.
New in MacSpice 3f5 2.10.10 (Jul 22, 2008)
- Cured crash in frontend function interpolate() which occurred when the old and new scales were of differing lengths.
- Cured intermittent crash due to memory error when an attempt was made to 'alter' a non-existent entity.
New in MacSpice 3f5 2.10.09 (May 26, 2008)
- Eliminated a potential cause of intermittent stalls and unexpected exits.
- Removed buffer-overflow vulnerabilities in the console code.
- No longer crashes when non-editable text is selected in console and certain non-ascii characters are typed.
- Frontend function abs(-0) now returns 0 not -0.
New in MacSpice 3f5 2.10.08 (May 14, 2008)
- Enhancements:
- Improved accuracy of noise analysis in extreme circumstances.
- Diagnostic messages made more informative, e.g. for missing models.
- Filenames specified for i/o redirection are now quote-stripped.
- Handling of invalid sourcefiles containing junk binary has been made more robust.
- The plot keyword 'vs' inhibits flyback-line removal in graphs.
- Minor improvements to implementation of TXL/CPL devices.
- Bugs fixed:
- Crash reporter dialog now transmits data more reliably.
- Number of repeat-loop iterations is now evaluated immediately before loop is run, not when the script is parsed.
- Several potential crashes when large random binary files are used as source have been fixed.
- HParamBlockRec structures used in __close() are now explicitly zeroed.
- Nodesets used with a non-default filename now works as expected.
- Potential crash when adding filename to new circuit struture fixed.
- When frontend evaluates conditional statements it no longer causes intermittent memory corruption.
- Command completion now works with plots produced by the 'spec' analysis.
- Destroying plots but leaving graphs open no longer crashes.
- The command 'compose x values (1,2) 3' no longer crashes.
New in MacSpice 3f5 2.10.06 (Mar 14, 2008)
- CPL/TXL transmission line models with errors now behave better.
- Improvements to self-update facility.
- Improvements to crash reporting facility.
- Minor improvements to website documentation.
- 'Altermod' no longer sometimes tries to change wrong parameter.
New in MacSpice 3f5 2.10.05 (Mar 3, 2008)
- Improved scaling and behaviour of linear graph axes.
- Matching of device names and model names is now insensitive to case.
- Most devices now use the instance temperature when calculating noise.
- Minor improvements to website documentation.
- Variable 'numdgt' can now be set on the .options line.
- Behaviour of TNOM in mos6 devices is now correct.
- Informative error messages are now given (instead of crashing) when mos3 read-only parameters are written.
- Reading certain obscure mos1 parameter values before running an analysis no longer causes a crash.
New in MacSpice 3f5 2.10.04 (Feb 11, 2008)
- Enhancements:
- TXL lossy transmission line device (from KSpice).
- Detection of, and one-click reporting for, recent crash logs.
- Improved manner in which gmin is applied to mos{1,2,3,6} devices when Vbd = 0 and/or Vbs = 0.
- Linear graphs behave better in extreme circumstances and/or when xdelta/ydelta are specified.
- AC analyses now work with very narrow frequency ranges, and can be interupted/resumed.
- Bugs fixed:
- Crash when netlist line starts with letter 'p'.
- Missing value for 'ifail' in optimizer failure report.
- Incorrect 'minimum system version' value in package plist.
- Type of vectors sufixed with #i1 or #i2 should be 'current'.
- Problem using 'load; to create vectors introduced in version 2.10.01.
- Graphs sometimes need resizing before colours are correct.
- Ticks on linear graphs created with xdelta/ydelta keywords are labelled wrongly.