Releases: Nubis-Communications/SignalIntegrity
Copy-Editing Book Synchronization
Book Copy-editing Release
This release is intended only to synchronize my soon to be published book "S-parameters for Signal Integrity" by Cambridge University Press. It really contains only format changes with no new features added.
PRBS, spectral content, risetime, TDR and VNA calibration
This release is a bit overdue, but mostly I'm trying to finish my book - many of the changes in this release surround my book, but a few features and bug fixes were added:
Features
PRBS Waveform improvements
PRBS examples were added along with some bug fixes
Clock waveform
now you can use a clock waveform, which goes well with the PRBS waveforms
Reciprocity enforcement
added this capability to the DUT calculation and s-parameter manipulations.
Preferences - SinX interpolation
whether to use SinX interpolation is now an option in the preferences. (otherwise linear interpolation is used).
Waveform display in frequency domain
now, if you want, you can view simulation results in the frequency domain as either spectral content or spectral density.
About box Python version
I was having so much trouble figuring out whether I was running Python 2 or 3 that I added the Python version to the about box.
Labels on plots
Previously, I was quite presumptuous about what was being displayed in the plot windows. Now, the simulation and s-parameter plots are labeled so people know what they are.
Dialog Entry Improvements
Now, when editing properties on the dialog, pressing enter enters the number but doesn't close the dialog. But the focus is set to the dialog box and pressing enter again then closes it and updates the information. Pressing escape allows you to undo the changes. This is helpful on the s-parameter properties dialog where you want to set a bunch of changes and then invoke the changes when the dialog is closed.
Bug fixes:
wavelet denoised s-parameters
a bug where S21 replaced S12 has been fixed.
SinX interpolation bug
way too much waveform was being trimmed off to account for SinX interpolation. The code now trims the correct amount (which is fairly small).
My Book
My book is now frozen and will go to the publisher for copy-edit. This release is now the release that goes with the book forever.
See Installation for installation instructions.
PRBS, SOLR, S-Parameter Viewer
release 1.1.3
In this release three major features were added:
PRBS Waveform Generation
- Many pseudo-random polynomials.
- a SerialDataWaveform class that generates a waveform given a bit pattern
- a PseudoRandomWaveform class that generates pseudo-random bit patterns
SOLR calibration
In the VNA calibrations, it can now accept thru measurements and perform the calibration using the 'unknown-thru' method.
In addition, many improvements were made to VNA calibrations including:
- controlling port numbering on DUT calculations. Now, a four-port calibration can be used to calculate a two port DUT on specified ports.
- a DUT uncalculation was added. This let's you see what the VNA actually measured raw based on a given DUT and the error terms.
- calibrations can now be written and read from files.
S-parameter Viewer
Extensive changes were made to this dialog, most importantly:
- The ability to limit impulse responses and resample s-parameter data by simply editing the properties.
- Locking of zooms to improve navigation.
- Panning is now turned on automatically when s-parameters are viewed.
Some Other Feature Improvements
SystemDescriptionParser
Now accepts lists of already generated s-parameters that can be supplied in scripting applications. Previously, when the parser classes are used, the s-parameters must either come from known elements or files. Now s-parameters already calculated can be associated with netlist elements ahead of time, obviating the need to read them from files.
Bug fixes
- Previously, when SIgnalIntegrityApp was started without a project being read, the screen shrunk annoyingly. This has been fixed and now a blank canvas is shown.
- When errors occur opening projects, it now shows you (instead of doing nothing).
- On new projects, the calculation properties were not properly initialized.
- Dialog behavior is improved in that they are withdrawn while drawing them so things behave snappier.
- Spaces are now allowed in filenames in netlists, but they must be surrounded by single quotes (the GUI application automatically supplies these in this instance).
- and of course, many more unittests have been added.
See Installation for installation instructions.
First Public Release
After many years of work, this is the first public release of this software.
This release does not differ significantly from the last. Only some cleanup and very minor bug fixes were made:
-
fix to the undocumented integral and derivative probe display (if you precede a the reference designator of a probe with 'i/', it will integrate the result and if you precede it with 'd/', it will take the derivative of the result.
-
fixed some annoying visual artifacts of the tkinter GUI. Mostly these involve the fact that as the windows are drawn or destroyed, you can see the window drawn or deleted slowly. The changes involve withdrawing the windows during these events so things appear nicer.
-
setup files and information files were modified to indicate that this software is released to the public and is a stable, production version.
XML Removal and Projects as Parts
As mentioned in the last release notes, the internals of the project file were completely restructured in that release. That release had the temporary capability of reading the old file format, but when projects were saved, they were saved in the new format. In this release, all capability of reading the old file structure has been removed.
If you have old project files with the extension .xml, before installing this release, you should install version 1.1.0, read in all of your old project files and save them. Only when all of your project files that you want have the .si extension, should you install this release
The major feature add in this release is that of using projects as parts and waveforms. As you know, there are four major applications currently of the software. Two of them, system s-parameter calculations and de-embedding applications produce s-parameters as results. De-embedding and s-parameter project files can now be placed in your schematics as parts. The other two applications, virtual probing and simulation produce waveforms. These waveforms can now be placed in your schematic as voltage or current sources.
To place an s-parameter producing project in your schematic, select a file device, and browse or name the project file (instead of an .sXp file) and during the calculation, it will calculate the s-parameters and use them in your schematic.
To place a waveform producing project in your schematic, place a current source, voltage source, or virtual probe measurement probe in your schematic. browse to or enter the name of a project file (instead of a waveform .txt file). You will see a new entry appear that allows you to enter the waveform name from the project - this must be the name of one of the output probes in that project.
-
A few bugs were fixed in this release, including some labels disappearing and overall stability improvements.
-
In the schematic editor, you can now use the arrow keys to move parts, wires and groups of parts around. You will see the focus set on the schematic canvas when parts are selected, indicating the keyboard is now bound to the canvas. You can also use the arrow keys to pan.
-
During the work on this release, I found some issues with part placement, rotation, and pin numbering. These were quite disconcerting and led me to create proper part pictures, along with alternates with different pin locations, for all of the amplifiers. If you hadn't been using transconductance, transresistance, or current amplifiers, you will not notice any difference. If you were, your projects won't work properly (they didn't before, either, in the case of the transconductance amplifier).
-
If you use TikZ output - which I use for the book I'm writing, you will now find that the text is perfectly placed now - previously, some readjustment was necessary. Now TikZ output pictures can be placed directly into LaTeX documents. And if you use reference designators with $ surrounding the text, they will even be printed in math mode.
-
Now, in the calculation properties, you will see the base sample period and the user sample period.
Project File Restructuring
In this release, the project file has been internally restructured. This is due to the fact that the previous project file suffered from the following problems:
- It was a direct image of the internal configuration of the devices which was loaded verbatim into the device properties. This meant
- It had a lot of redundant information that is taken care of internally by the software (and was therefore larger than necessary).
- It did not adapt well to changes in the software that would have automatically changed certain behavior. An example of this is the pictures of the parts, which in some cases was incorrect in the old project files as corrections were made to the software).
- It was xml all on one line and could not be viewed at all by other than an xml viewer.
The new format is more compact, can be viewed in a text editor, and the default extension is now .si (as opposed to the old .xml). This means that you can now associate .si files with SignalIntegrity and the application will now open these files, assuming your operating system has been properly configured.
Also, now a file (for example named project.si), can now be opened by typing, on the command line:
SignalIntegtrity project
In the future, s-parameter files will also open this way.
Currently, when a project file is opened, the dialog shows only files with the extension .si, but for now, you can switch this to .xml and open your old xml files, if you have them. All project files are now saved only in the new format with the .si extension.
Since this restructuring made such a mess of the underlying code, support for the xml format will be fleeting. It will probably be removed in the next release. As the SignalIntegrity repository is not currently publicly available, the impact of this change is thought to be relatively small, but the bottom line is that you will need to at least open all of your xml files and save them again, thus converting them using this software release.
This very impacting internal change has been tested with the full suite of unit tests. This provided good coverage that projects in the old format behaved identically in the new format insofar as they produced the same netlists, calculation results, etc., but the UI was also impacted by these changes and this could not be tested exhaustively. I made the decision that it was time to make the jump to the new format. Enter any bugs you find, but do use this version.
Install, Help System and Numerics
This minor release includes three major new features:
- It is now possible to install the software in the regular manner (i.e. 'pip install .' or 'python setup.py install'. This capability eluded the developer up to now.
- The help system keys are now in a file on the internet, along with the help system (instead of on the disk with the installation). These keys are late binding, meaning they are read only when you access the help system, and since the are along with the help system, this means that the help system can be updated completely independently from software version updates and still retain the proper indexing.
- Numerical capabilities have been added that allow the solution for diabolical problems. These include:
- Simulations with current and differential probes, but no absolute ground reference.
- Situations where some components have no absolute ground reference at certain frequencies.
- S-parameter solutions with loops of wire and such were some internal waves, voltage, or currents cannot be calculated, but the port conditions can still be solved for.
The best example of this is the calculation of s-parameters with two parallel wires.
This numerical capability is controlled through a new preference called TrySVD and is still considered experimental, as it can produce incorrect answers in cases like voltage sources connected directly to ground.
Python 3 Support
This is the fourth minor release of SignalIntegrity, but it has some really major changes in that it will now run on both Python 2.7.x distributions and Python 3.6.x distributions (and assumedly higher).
For now and probably for a long time, support will be maintained for working on both Python 2 and 3.
The intensive 1000 unittests pass on both Python 2 and 3, although Python 3 spews future deprecation warnings. All of the manageable ones have been fixed, but one warning remains (although repeats over and over during coverage testing) about the matrix class. This warning is flat out wrong, and I can't seem to figure out how to suppress this. The tests all pass, however.
The preferences file is now streamlined and some new preferences added, namely the ability to utilize the plot cursors in matplotlib, which turn out to be somewhat problematic sometimes. This release will clear your old preferences - sorry about that - they will be set to the default. This will not happen in future releases.
In converting to Python 3, a few bugs were found and fixed. Of interest is schematic part rotation. They now always rotate about the center. This fix might break some existing schematics containing rotated amplifiers - although all of the examples have been fixed.
More test coverage was added. All part pictures are covered along with the spline class (which also involved some bug fixing).
See Installation for installation instructions.
fixed setup file for Windows machines
This is the same as the last minor release, but the last minor release did not work properly on Windows machines - the app worked, but not scripted solutions including the tests.
See Installation for installation instructions.
Minor Release - with name change
changed the name to its final name SignalIntegrity.
The old name was too cute and was taken anyway. When this is finally released to the world, it can be submitted on PyPI with the new name.
See Installation for installation instructions.