#Changelog
Version 0.18 represents the culmination of almost two months of efforts, yet another step in the current time-based release scheme.
This release features support for the Fourier (.FOUR) and Fast Fourier Transform directives (.FFT). Piece-wise linear functions are also now supported in Python, with extra features like a repeat directory to enable periodicity.
Moreover, as in the previous releases, several commits were devoted to improving the documentation: you can find the new, improved documentation online at http://ahkab.readthedocs.org/en/latest/
-
FEATURES
-
Add .FOUR and .FFT support
-
Add PWL waveforms (available from python only)
- AC analyses are from now defined in Hz (compliant with SPICE). This also means that there is no omega (accessed through 'w') in the results set, it is now replaced by a frequency vector, expressed in Hz and accessed as 'f'.
User code can be usually easily fixed substituting 2*pi*r[w]
with r[f]
or the like. Sorry for any trouble this creates.
None.
BUGFIX: Fix opening of files in system that do not default to utf-8 BUGFIX: Suppress error message on Windows BUGFIX: Use all assumptions, fix #32 BUGFIX: fix reading the netlist from stdin BUGFIX: Use different options for SH and BFPSS BUGFIX: no DC value -> return t=0 BUGFIX: convert to uppercase before comparison
Version 0.17 represents the culmination of 15 days of efforts, yet another step in the current time-based release scheme.
This release features a new memoization system, AM and FM time functions,
improved docs and error message. We also got rid of the last instances of
np.mat
in the code.
Moreover, as in the previous releases, several commits were devoted to improving the documentation: you can find the new, improved documentation online at http://ahkab.readthedocs.org/en/latest/
-
FEATURES
-
Implement a memoization system.
-
Replace
mytime_function.value()
withmytime_function(time)
. -
Add AM to the time functions.
-
Add the SFFM time function.
-
find_vde_index()
now allows forelem
andpart_id
args. -
remove_elem()
now allowselem
andpart_id
args.
- the time functions have been moved to their own module, named
time_functions.py
. This means code referring to thesin
,pulse
andexp
functions needs to change fromdevices.sin
totime_functions.sin
. - You now need to call
set_results()
to setpss_solution
data.
None.
BUGFIX: plotting: remember to set the active figure.
BUGFIX: fix a bug in circuit.remove_elem()
, add tests.
BUGFIX: fix a bug in circuit.find_vde()
, add tests.
BUGFIX: fix error message in circuit.py.
BUGFIX: Do not ask for prediction if we don't have enough points.
Version 0.16 represents the culmination of 1 month of efforts, yet another step in the current time-based release scheme.
This release brings the test coverage of the codebase over the 80% milestone for
the first time. It also features a faster substitution algorithm for symbolic
simulations, we empoly the tabulate
module more extensively, producing a
prettier output (for example print_short()
now prints a pretty table.)
Internally, We removed occurrences of np.matrix
, in favor of np.array
,
according to the overall planned switch in the library. This should be
completely transparent to the user.
A few changes that have been introduced are incompatible with the previous releases:
- The axis iterators
utilities.log_axis_iterator
andutilities.lin_axis_iterator
now follow the syntax(min, max, points)
. - The solution method
solution.asmatrix()
has been renamed tosolution.asarray()
. - We droppped the (undocumented) support for accessing singularities in
pz_solution
as'Re(p0)'
and'Im(p0)'
. Hopefully, being undocumented it had little use. Please usenumpy.real(r['p0'])
ornumpy.imag(r['p0'])
to achieve the same result. - Remove
printing.table_print()
forprint(printing.table())
.
We apologize about the above, we believe the technical debt we paid with the changes above makes up for the discomfort to our userbase.
Moreover, as in the previous releases, several commits were devoted to improving the documentation: you can find the new, improved documentation online at http://ahkab.readthedocs.org/en/latest/
- #29 -
ahkab
should now work well in IPython running under Python2 again.
None.
- BUGFIX: Always plot in tests even if the test fails (especially then!)
- BUGFIX: catch
ValueError
inresults.cid
- BUGFIX: fix
pss_solution.asmatrix()
- BUGFIX: import
codecs
even if on Ipython - BUGFIX: fix iterator off-by-one in
symbolic_solution
- BUGFIX: key misses in
symbolic_solution
raiseKeyErrors
- BUGFIX: fix slicing in the solution (use it too)
- BUGFIX:
dc_solution.values()
now slices along the correct axis - BUGFIX:
load_csv()
raisesValueError
- BUGFIX: key misses raise
KeyErrors
- BUGFIX: prevent breaking readline on ipython, fixes #29
- BUGFIX: ensure w is always returned as real data, not cplx
- BUGFIX: Improve the iterators syntax, always include endpoints.
- BUGFIX: raise
KeyError
for key misses in ac_solution - BUGFIX:
items()
returns no arrays. - BUGFIX:
values()
returns a list, not an array. - BUGFIX: fix iterator increment-by-one bug
Version 0.15 is just a bugfix release addressing the fact that the minimum version of the sympy
release that is needed is 0.7.6.
Version 0.14 represents the culmination of three months of efforts, yet another step in the current time-based release scheme.
This release features much improved tabular print-outs, thanks to tabulate
, faster circuit checking and reverse node look-ups.
Moreover, as in the previous releases, many commits were devoted to improving the documentation: you can find the new, improved documentation online at http://ahkab.readthedocs.org/en/latest/
- Use
tabulate
to print out pretty tables. They are pretty, oh so pretty tables. - Add and use
circuit.get_nodes_number()
. - Change
nodes_dict
to speed up reverse lookups. - Faster duplicate IDs check.
None.
- BUGFIX: row/col reference,
- BUGFIX: Suppress printing of the netlist file if there is None.
- BUGFIX: Add a wrapper around stdout to fix encoding errors on *UNIX, when no locale is set (PY2 only).
- BUGFIX: Print warning if the locale is not set.
Version 0.13 represents the culmination of efforts dating back to January and contains 135 commits.
This release features current-controlled current sources and voltage sources and new options to select the format of numbers printed for user display and how the MNA matrix is built in Symbolic Analysis.
Moreover, as in the previous releases, many commits were devoted to improving the documentation: you can find the new, improved documentation at http://ahkab.readthedocs.org/en/latest/
- Implement CCCS, fixes #22
- Implement CCVS, fixes #21
- Add option to formulate the MNA and N matrices with resistors for symbolic analysis.
- Add options to suppress zeros and select printing precision.
None.
- BUGFIX: fix printing of missing elements.
- BUGFIX: fix missing import
- BUGFIX: reset look-up table when the temperature changes
- BUGFIX: catch missing matplotlib
- BUGFIX: remove early test It masks more detailed tests below.
- BUGFIX: fix get_netlist_elem_line()Pass the element nodes through nodes_dict
- BUGFIX: correct the netlist label for tran start time (tstart)
- BUGFIX: fix parsing of capacitors wrt comments.
- BUGFIX: fix all Symbols to be uppercase
- BUGFIX power by VCCS
- BUGFIX: Fix total power computation for GIsources.
Version 0.12 represents the culmination of efforts dating back to May and contains 142 commits.
This release has no new features, but it has several bug fixes and it introduces Python3 support (!).
Moreover, many commits were devoted to improving the documentation: you can find the new, improved documentation at http://ahkab.readthedocs.org/en/latest/
None.
None.
- BUGFIX: Respect the user config when saving to file.
- BUGFIX: Respect CLI-specified transient DFs.
- BUGFIX: use the warning interface.
- BUGFIX: always set the simulation options before running tests.
- BUGFIX: fix detection of wd
- BUGFIX: .include now recovers the path relative to the netlist
- BUGFIX: fix printing of .DC statements.
- BUGFIX: fix comparison of int and NoneType (new Python behaviour)
Version 0.11 represent the culmination of four months of efforts.
- Add Pole-Zero (.pz) analysis.
- Add sparse matrix support and LU factorization with SuperLU.
- AC solutions data is returned as complex floats.
- The brute-force PSS algo is now known as 'brute-force'.
Ahkab also got considerably faster in DC/OP/TRAN/PSS analyses.
A PY3 version passing the whole test suite is available in the repository.
None.
- BUGFIX: AC sweeps consistently default to LOG.
- BUGFIX: Convert print_netlist_elem_line to get_...
- BUGFIX: parse_analysis() is not a generator anymore`.
- BUGFIX: Remove print_circuit(), use print(circuit).
- BUGFIX: EKV devices now match the usual constructor.
- BUGFIX: do not attempt to print conv. details if sing. MNA
- BUGFIX: Use ndarrays (almost) everywhere, drop mats.
- BUGFIX: Don't crash if a plot label is not found.
- BUGFIX: CMIN-related crash.
- BUGFIX: Remove hack for now closed bug in sympy.
- BUGFIX: Reset sim options before skipping a test.
- BUGFIX: allow printing of PSS results.
- BUGFIX: inductor coupling and time function parsing.
- BUGFIX: fix checking of symbolic results.
- BUGFIX: InductorCoupling: init syntax and
add print_netlist_elem_line()
. - BUGFIX: fix regression in TF calculation (wrong sympy assumptions).
- BUGFIX: function parsing
- BUGFIX: fix 'autonomous' dest value.
- BUGFIX:
modify_x0_for_ic()
should NOT modify op results. - BUGFIX: op table size
- BUGFIX: MOSQ init param order
- BUGFIX: Symbolic analysis bugfix.
- BUGFIX: Fix DC sweeps.
- BUGFIX: Fix dict access of OP results. OP info now goes to info file.
- BUGFIX: Deep copy
an_list
so that we can pop out items as we please transparently to the user. - BUGFIX: take the file.op into account. Also abs paths.
- BUGFIX: load_csv crash, add late check for headers consistency.
- BUGFIX: Fix the sine function. Notice the meaning of theta changed with this commit.
- BUGFIX: Correct assumptions in subs.
- BUGFIX: fix
element.part_id
in subckts - BUGFIX: testing, do not compare time exec results from different machines.
- Incorporate most changes from @weilawei.
- Merge pull request #18 from endolith/patch-1
- Merge branch 'patch-1' of https://github.com/mightyiam/ahkab
- Use
__version__.py
for versioning - Diode: Enable caching. Simplify interfaces.
- Allow running lists of analyses, or 1 analysis alone too.
- Add gnd as
mycirc.gnd
. - Add command line entry point to
setup.py
. - Testing: Add APITest to automate testing of the
ahkab
Python interface. - Testing: Test suite running on Travis, with coverage.
- Testing: Selective test skipping on Travis-CI
- Massive refactoring of the code base: enforce PEP8 everywhere.
- Symbolic: transfer functions are results instances too.
- Plotting: remove useless functions, keep some as internal-only.
get_headers_index(..., load_headers=[])
returns all header indices.- Testing: No reference runs with nose.
- Ticker: simplify the ticker API.
- Speed up the matrix assembly precomputing conductances
- Allow printing out to stdout also
if filename == '-' or sys.stdout
- Matplotlib auto backend selection for machines without
$DISPLAY
- Rewrite csvlib to use numpy's R&W methods
- Elements now print out their own netlist entries.
- Move
convergence_check()
to utilities. - Use relative imports and move to single versioning of files.
- Remove def. values from time functions
Thanks to @weilawei**, @endolith, @mightyiam for their contributions.
** Big thanks man, excellent job.
- Added support for voltage-controlled switches
- Improved diode model with temperature support (but no capacitances).
- Dropped psycho support.
- Re-added the quadratic law MOS transistor model.
- Updated wiki pages and examples.
- Many small fixes.
- Ahkab can now be run in a Python program.
- Dropped gnuplot support, ahkab now requires matplotlib.