Fix bug that prevented 'set nomoremode' having the desired effect, i.e. disabling the console pager.
Update BSIM4 model to version 4.6.0.
Enhance commands and functions so they handle (IEEE754) values like 'inf' (infinity, e.g. 12/0.0) and 'nan' (not a number, e.g. 0.0/0.0) appropriately.
Complex frontend interpreter functions have been overhauled in order to fix bugs, and improve accuracy and consistency:
| sqrt(): | change the principle branches; |
| ln()/log(): | ln/log(0) now returns -inf, not -38; |
| ln()/log(): | accuracy with complex arguments improved; |
| tan(): | repaired - it was giving wrong values for complex arguments; |
| atan(): | repaired - it now works for complex arguments; |
| comma: | repaired - (a,b) = a + j*b for complex arguments; |
| multiplication: | accuracy improved for complex arguments; |
| division: | accuracy improved for complex arguments; |
| acos(): | added the inverse cosine; |
| asin(): | added the inverse sine. |
Improve formatting and behaviour of error and warning messages. Messages now try to indicate where in the netlist files they occur.
Changes to vectors that are owned by interrupted simulations are now prevented if the changes would cause a crash.
The behaviour of plot prefix matching has been tweaked so that 'setplot' and 'let' behave more intuitively in unusual cases.
Breakpoints created by 'iplots' with invalid arguments are now deleted.
Improve algorithms used for subcircuit expansion.
Prevent some types of syntax errors provoking attempts to over-free pnodes.
Fix some minor memory leaks associated with extracting parameters from the 'plot' command.
Improve accuracy of graphs when non-default values of xdelta and ydelta are used.
Correct handling of .include statements when ~: is used to refer to home directories with space characters in the path. Add helpful warning if unquoted spaces are found a .include statement's filename.
Messages now try to indicate where in the hierarchy of '.include' statements the line being referred to is located.
Improve console performance when displaying long lines of text.
Cure intermittent display of stale error/information messages.
Remove 'continuation lines' size limit, and replace O(N2) algorithms for assembling continuation lines with O(N) versions.
Enforce validity of time parameters for PWL sources at start of analysis. Improve performance of complicated PWL sources during tran analysis.
Files referred to in .include statements may now have spaces in their names protected by backslash quoting. For example,
.include foo bar
.include argle\ bargle
would include the files 'foo' and 'argle bargle', but not 'bar' or 'foo bar'.
Font encoding has been added to the hardcopy PostScript driver. The only noticeable effect is that the degrees symbol is now displayed correctly.
The way the console handles full-buffer conditions has been improved; this cures some rare console lock-up/crash modes.
Reword the warnings given when a source has no DC value specified to make their meaning clearer.
Re-scale the hardcopy PostScript co-ordinates to cure quantisation problems.
Correct bug in multi-variable dc sweeps introduced by the V2.9.23 code clean-up.
Replace the letter "o" with proper a "°" (degrees) symbol in labels on polar plots.
Tackle endian problem that prevented 'edit' launching the helper application on MacIntel machines. Add some text error messages for common problems preventing applications from launching. With OS X 10.2 and later, 'edit' now only jerks forward the frontmost editor window.
Extra error checking in DC analysis to stop attempts to sweep resistors or (absolute) temperatures through zero.
Command-. can now interrupt empty label/goto infinite loops.
Minor tweaks to the PostScript driver.
Fix a hypothetical problem in spGetElement().
Correct an obscure divide by zero error in the MOS2 and MOS3 devices.
Install checks for 'command-.' interrupts during gmin- and source-stepping.
Improved error reporting when a node or branch current has an invalid value such as 'Inf' or 'NaN'. These may signal a bug in the code for a particular model, but unrealistic models used in a non-convergent circuit are the usual cause.
Vectors starting with '@' (e.g. @x1[gm]) now default to 'unknown' type instead of 'voltage'.
Code clean-up for DC sweep analysis.
Bug fix for another problem introduced at patchlevel 17. This interfered with evaluation of expressions like '@c1[i]'.
Bug fix for spice2 compatibility mode which cures a crash when printing .op analysis summaries for non-converged analysis.
Bug fix in the MOS2 model curing negative gm values in the cut-off region.
Error messages generated by noise analysis are now more informative.
Bug fix for problem introduced at patchlevel 17. This prevented noise analyses finding source references.
The 'dump' command has been implemented. This prints a diagnostic list of node voltages, and flags any which have not converged.
Improved Gmin- and source-stepping methods for better convergence performance in extreme cases.
Improved performance of text plotting to fix an issue with 'plot pointplot ...' when there are a large number points.
Behaviour of 'listing' command corrected so that 'listing deck expand' handles multi-line devices properly.
Improved output pager behaviour. E.g., it no longer pauses after a 'q' (quit) character has been given.
Overhauled 'show -v' command: memory leaks fixed and more informative messages.
Memory leak in BSIM4.5 code repaired.
Reorganised 'DEVask.c' files to improve resilience.
Improve the way the starting value for adaptive gmin-stepping is calculated.
Convert release notes to html.
Fix the 'help' command so that it uses case-insensitive searches for words. Commands like 'help echo' and 'help ac' now work as expected.
Fix the 'help' command code to deal with endian issues. The .idx file is now always interpreted as having big-endian fields.
Fix build problem with p17.
Speed up the way 'source' builds large circuits. The Chip2 benchmark (ca 10,000 equations) now loads in 7s instead of 90s.
Cure a minor leak in the subcircuit expansion code.
Modify the way gmin is added to negative matrix diagonals.
If the variable 'pensize' is unset (or 0), the base pen-thickness used to draw is selected automatically and depends on the fontsize used for the graphs. 'set pensize = N' where 0<N≤10 is measured in points, overrides this behaviour.
Redevelop the 'compose' code so its faster and more features work. Fix an intermittent fence post error.
Improve the way the number of significant figures displayed by the mouse cursor is calculated when dragging very small distances.
MacSpice now adds a 'Default Folder' field to its preferences plist (CDHW.MacSpice.plist). Like the 'cd' command, it uses HFS names and expands an initial '~'.
Cursor measurements. The values corresponding to the cursor position in a graph are now displayed in a cursor window. Dragging allows measurements of changes. Double-clicking transfers the displayed value to the console command.
Implement a Font menu for graph windows, and modify various aspects of their behaviour to accommodate the range of font sizes.
Make the position and font of the console window persist between runs.
Minor adjustments to the layout of the 'key' which gets added to graphs.
Correct treatment of collapsed (minimised) windows in the dock so that they are ignored properly.
Repair the 16×16 pixel document icons.
The Postscript driver now creates files with application type 'prvw' so they display in Preview when double-clicked.
Universal binary trial.
Correct reporting of 'gatetype' by 'showmod' for mos2 model.
Correct calculation of the diode model critical voltage when the area is not unity.
Add to the 'mouse position' code so it returns values with text suffixes, i.e. '40n' and '23Meg' instead of '4.0e-8' and '2.3e6' respectively.
Minor changes to headers and include files to fix problems building for i386.
Stop structures like empty repeat loops locking up the command line interface.
Install experimental code to report positions of mouse clicks and drags in plot windows.
Correct mathematical expressions used to produce Smith plots.
Fix crash provoked by 'plot ((1,2);(3,4);(5;6))'.
Prevent 'pointplot' from missing first point in a vector.
Improve automatic calculation of limits for polar plots.
Cure memory leaks associated with 'samep' mechanism.
Add support for scroll-wheel and smooth scrolling. I can't find a 'mighty mouse' to test the smooth-scrolling, so let me know if it doesn't work okay.
Interrogating device instance parameters before running an analysis now returns 'NaN' instead of crashing.
Correct displayed values for mos1, mos2, mos3, mos6 device capacitances.
Fix crash caused by '.print dc I(V1) V(1, 0)'
Install BSIMSOI v4.0 as level 11. Fix problems, affecting repeated runs, caused by uninitialised variables and creation of internal nodes.
Fix problems in BSIMSOI v3, affecting repeated runs, caused by uninitialised variables and creation of internal nodes.
Cure buffer overflow which could occur if a multi-line statement had an error.
Fix several devices so that they identify themselves when they cause non-convergence.
Set 'possibly' uninitialised variables to zero passim.
Upgrade to BSIM3.3.0 and BSIM4.5.0 device models.
User breaks are now handled during long dc sweeps.
L-U decomposition time is now shown in rusage report.
Restore compatibility with system 10.1 and 10.2.
Fix a strange problem affecting a repeat run of a netlist containing a .ic line.
Improve handling of filepaths and make it compatible with FileVault home directories.
Improve filename completion code.
New feature: Menu and preferences plist to handle font used by console window.
Improve calculation of text size and initial window size.
Fix memory leak in glob code.
Repair broken Finder info for files in the examples folder.
Various enhancements to the console; it now has a proportional scroller and performs live scrolling and resizing. Improve console performance so that the test script
let j = 0
repeat 10000
let j = j + 1
echo "$&j"
end
runs roughly ten times as fast as previous patchlevels.
Various enhancements to the graphical windows. Plots now update live in response to resizing and update roughly four times as fast as in previous patchlevels.
Postscript driver now adds a y-axis title and produces small output files.
Change the output of 'rusage' to make it clear that it reports CPU times.
The correct directory is now used, instead of its parent, when '#' is used to choose an output file.
Make sourcepath default entries use trailing colons consistently.
Improve the behaviour when ';' is used to combine commands that contain parentheses in strange combinations. Modify the self-precedence of ';' so expressions like '1;2;3;...;N' require 3 stack elements instead of 2N.
Generate warnings when 'foo = bar' defaults to 'let foo = bar' in the command interpreter. Defaulting to let is bad practice (it is very slow and relies on the non-existence of a file 'foo') but it is common in scripts so the warning is only displayed the 1st, 10th, 100th, etc. time the condition occurs.
Cure minor memory leak when parsing malformed lists of vectors.
Fix a fence-post error in the quote-encoding code which caused problems decoding '\_'.
Refactor code to use XCode development system. This means that MacOS versions prior to OS X are no longer supported, but MacSpice should be able to run natively on MacIntel machines.
Adopt OS X file system conventions, as follows:
The traditional 'lib', 'man', and 'examples' folders live in Library/MacSpice/ MacSpice uses the Carbon FindFolder function to search for these in the following order at startup:
| 1 | User Domain | ~:Library:MacSpice: |
| 2 | Local Domain | Library:MacSpice: |
| 3 | Network Domain | Network:Library:MacSpice: |
and sets the appropriate nutmeg variables.
At startup, the current directory ':' is set to ~:Documents:MacSpice: which is created if it doesn't exist. If this can't be created, or used, for some reason ':' defaults to ~:Documents:
If folders/files aren't found they are created in the current user domain. Admin users may wish to move them to the Local or Network domain in order to define institutional defaults.
Make some subtle refinements to the MacSpice icon and design a new set of icons for documents. Rationalise mapping of file extensions to types.
Create a basic Applehelp book - content is simply links to the MacSpice website at the moment.
Add ',' to the 'bad character' list so that files with names like "1,2,3" can be opened by double-clicking.