Releases: Nubis-Communications/SignalIntegrity
Improvements in DC processing, more devices, and added network analysis capability
New Devices
DC Voltage and Current Sources
These are much needed devices that enhance the capability of setting DC points. Previously, this was a cumbersome exercise involving creating a step source that starts at some distant time in the past, requiring the simulation to start only after these DC waveforms stabilized. Now, DC voltage and current sources are not waveforms, but just numbers representing their values. During processing, the DC (number) waveforms are processed by taking the DC frequency response of the filter they are passing through, as opposed to convolution with the impulse response. In addition to these simplifications, DC sources do not require time length, sample rate, etc. They are just always there.
Laplace Device
This is a device that allows the user to directly enter an equation for the S21 in s, w, or f. The remainder of the device performs like an amplifier with infinite input impedance, zero output impedance, and perfect reverse isolation. This device is useful for generating flexible DSP building blocks when the desired function is not available.
Xtalk Calibration Measurement
Previously, for VNA calibrations, two types of calibration measurements were supported: Thru and Reflect. Now, the less often used cross-talk measurement has been added. This had been usable through scripted applications, but it has now been added to the GUI.
Bug Fixes
Honoring 12458 sequence preference in s-parameter property changes
In a previous release, this was added as a preference for the calculation properties, but was missed for s-parameter properties. This is now fixed.
All documentation is up to date with this release. See Installation for installation instructions.
New Devices Added
A number of new, useful devices have been added
Filters
A few filters have been added. These filters all have high input impedance, low output impedance, perfect reverse isolation, and a filter in between. Of course, they have s-parameters.
Bessel low pass filter
A Bessel filter can be instantiated in the GUI and in netlists. The filter takes an order and a cutoff frequency.
Butterworth low pass filter
A Butterworth filter can be instantiated in the GUI and in netlists. The filter takes an order and a cutoff frequency.
Equalizers
Two equalizers have been added that are pertinent to the COM specifications for many channels.
CTLE
The continuous time linear equalizer (CTLE) has been added whose parameters are defined according to COM.
FFE
A feed-forward linear tapped delay line equalizer has been added. It takes a tap delay, a list of tap weights, and the number of precursor taps.
Transmission Lines
W element
The W element, useful for dealing with distributed, coupled transmission lines has been added. For more information on this element, see: http://www2.ece.rochester.edu/courses/ECE222/hspice/hspice_devmod.pdf
Waveform Generators
Multi-level Waveform
This is a true PAM-N waveform generator that can output PAM waveforms with any number of (power of two) levels.
Miscellaneous
Ideal Relay
The ideal relay is really useful in scripted applications using projects. Any SPXT relay can be instantiated with a position specifying which port is connected to the common. This way, schematics can be drawn with alternate circuit configurations based on relay position and the relay position can be controlled from within a script (instead of having to use a different project with a different schematic).
See Installation for installation instructions.
Transmission Lines and W Elements
Summary
Fixed a major bug in the analytical transmission line models and introduced the HSpice W element.
Bug Fixes
Transmission Line Model
While looking at W elements, I found a mistake I had made in the definition of how skin-effect resistance is treated (and unfortunately it's wrong in my book). The error is that I had used Z=Rsesqrt(f) for the skin effect impedance. In fact, it is Z=Rse(1+j)*sqrt(f). Changing this was quite invasive, as it affected transmission line model fitting and numerous test results. I also, after careful looking, found that the treatment of the DC point was also incorrect. When computing the analytical transmission line, now, when we compute Zc=sqrt(Z/Y) and Y is zero, we simply return a model of a line with only a series impedance Z. This is the correct treatment.
Features
Simulation of projects from scripts
Previously, scripts utilizing simulation projects had to write the waveforms to a file, that the project that would then read in. Now, hooks have been added for the script to insert the waveform into the simulation, which speeds things up a lot.
S-parameter viewer
Now, when s-parameters are viewed with more than nine ports, the buttons are formatted better to see the selections.
PRBS generation
Previously, when you select a PRBS polynomial, the bits for the entire polynomial are generated, and then the bits are chosen from the waveform. This is actually impossible for large PRBS polynomial values as the application runs out of memory (and it takes a ridiculous amount of time). Now, only the number of bits needed are created. This has a side effect that the end of the pattern is actually the bits computed wrapped around, which is not good, but the behavior is highly preferable to what was there before.
W element
The W element has been added to scripted solutions only. The W element is very useful for simulating large sets of distributed transmission lines that are interacting with each other. In the future, this will be modified to be more amenable to the UI and a UI implementation will be added.
See Installation for installation instructions.
Bug Fixes
Bug Fixes
Fixed a very annoying bug that is worthy of a release regarding different disk letters on Windows machines
On windows machines (unlike on Linux), the path contains a drive letter. SignalIntegrity tries to maintain everything with a relative path so that the projects are portable. All of this failed when using a drive other than c: and when referencing files across drives. I believe this is all fixed. In the fix, the preferences file will always be read from a path in the c drive, which I believe must always be present.
Minor bug fix in unit tests
A warning is now fixed in the fitting tests.
See Installation for installation instructions.
Grids
There's not a lot new in this release. It's just been awhile, so I figured I'd release the changes.
Grids
You can now specify whether grids are shown in the s-parameter viewer and simulator dialogs. Thanks to some work by @eldarkg .
Bug Fixes
Network Analyzer
This didn't work properly when projects were nested hierarchically and they were in different directories. This is now fixed.
Documentation Error
Fixed a minor documentation error in the software documentation. Thanks to @barnetto for pointing this out.
See Installation for installation instructions.
Network Analyzers
See Installation for installation instructions.
Network Analyzers
The main theme of this release is network analyzer calibration and measurements. Previously, this was the last unexposed element in the library SignalIntegrity.Lib that was not usable through the GUI. This release makes network analysis not only completely scriptable, but solvable through projects created in SignalIntegrity.App.
Using the SignalIntegrity GUI, users can define calibrations of their network analyzer by supplying raw measurements of standards to generate calibration files (network analyzer error terms). Then, in another project, users can import these error terms and convert uncalibrated s-parameter measurements into calibrated s-parameter measurements. This is all documented in the help system.
And, as with the other capabilities, like s-parameter generation, de-embedding, simulation, etc, that have a GUI based method, the calibration and generation of calibrated measurements can all be performed easily using scripting and straightforward netlists.
To facilitate all of this, several new devices were created and made available in the GUI:
- Short, Open, Load, Thru standards
- Reflect and Thru measurements -- for providing the calibration measurements
- Network Analyzer -- for producing calibrated s-parameter measurements
The calibrations are quite capable and offer:
- Standard SOLT calibration
- SOLR calibration (or unknown thru calibration)
- Overconstrained solutions (like sliding load)
- Thru calibrations with reduced number of thru connections
- Any number of ports supported
F0 added to calibration standards
In the process, the loss frequency was added to the standard definitions.
Error-terms Viewing in S-Parameter Viewer
The s-parameter viewer now supports the viewing of network analyzer calibration files, with the error terms annotated in the button selections. The ability to select between multiple s-parameters was added.
Improvements
Software Documentation Available in Help
Not only was the online software documentation completely updated, it is now available in the SignalIntegrity GUI so it can be accessed more easily.
Netlist Improvements
The netlists have been improved to employ engineering notation with exponents where appropriate. Previously, these were just large numbers without exponents.
Ask Open File Extensions
With the ability to support multiple extensions, when you open a file, some improvements were made so it starts with a better suggestion at the extension.
Matrix Class Removal
With Python 3.x, the buffoons that meet and discuss what is the right and wrong way to write Python code have determined that it is wrong to use the matrix class in numpy. So, in order to get everyone to write less readable code not using the matrix class, they introduced a deprecation warning that fires continuously, especially when running the tests. These had the desired effect and I got so tired of seeing this that I submitted, making all of the code less readable, but no longer using the matrix class.
Significant Digits in S-parameter Files
One user complained that the resolution of the s-parameter files is not fine enough (it's six digits meaning -120 dB). I personally think this enough and am not in favor of further bloating my disk with insignificant digits, but now offer a preference that lets you change the number of digits. Changing this number to 10, would take this to -200 dB, surely enough. In the future, maybe exponents will be used, but not for now.
12458 Sequence in Calculation Properties
The calculation properties have always locked the user to a 12458 sequence. This means that if entered 65.2345 GHz as an end frequency, it would change this to 80 GHz (the next higher value in the 12458 sequence). Sometimes, one really needs to enter the numbers exactly, so in the preferences, the user can disable this locking.
Tool Tips
Hovering over the toolbar elements now reveals, through a tooltip, what the button actually does. It's very nice.
Simulation Waveforms
In simulation results, there is now the ability to turn on and off waveforms being displayed.
Double Click for Selecting Parts
Now, in the part picker, one can simply double click on the desired part. Previously, one had to press an okay button.
Device Edits in Headless Projects
Some helper functions were added to improve the ability to edit device properties when project files are opened in scripts.
Bug Fixes
The bug fixes are not very note-worthy and probably not noticeable, but are listed anyway.
Devices with Spaces in Name or Path
if a device references an s-parameter file or project with spaces in the name or path, these are now correctly utilized. Previously, they produced the right results, but could not be previewed from the properties dialog.
Documentation Updates
The documentation system, both the software documentation and help was completely updated. While it has been kept mostly up to date, a large effort was placed in this release. While it can't be promised that everything is perfect, the effort made was really to completely update and document all of the necessary code and features.
Caching Fixes
SignalIntegrity allows virtually unlimited depth of nesting projects hierarchically. This stressed the results caching system that tries to avoid recalculation of things. This has been completely overhauled and the belief is that this now works perfectly. It now uses recursion to check whether recalculation is necessary.
Upgraded Doxygen software documentation and improved rendering.
S-Parameter Viewer
Displaying s-parameters or transfer matrices turns on and off various features in the viewer. These features are held in the preferences, and strange side effects were found with respect to the preferences when switching back and forth between these types of displays. This is now resolved.
PyPlot
A failure do to missing PyPlot import has been fixed.
Add Net Names Activation
The command to add net names is now properly activated/deactivated depending on schematic state.
Physicality Enforcements and a few Bug Fixes
Features
Physicality Enforcements
Added reciprocity enforcement to s-parameter dialog, along with enforcing both causality and passivity simultaneously, and enforcing causality, passivity, and reciprocity simultaneously.
Bug Fixes
Issue #42 Touchstone 1.1 and Option String
When s-parameters are written to a file, the Touchstone specification specifies that the option string be in the following format:
# <frequency unit> <parameter> <format> R <Z0>
The software was writing this with the parameter toke and format token in swapped order.
This does not cause a problem to most (and this tool, as the read function did not need to be modified), but it was found to cause a problem in some tools, and in any case, is a violation of the specification.
This is now fixed.
Matplotlib2tikz
These stopped working, unbeknownst to me because the owner of this package changed the name to tikzplotlib. Now we try both. The new one really works much better than the old one. Now, plots exported in tikz (pgfplots) format import and render very well in LaTeX.
Minor Bug Fixes
Current Probe Reference Designator
Previously, the default reference designator defaulted to "VO?", as if it were a voltage probe. It now defaults to "IO?".
Causality Violations
They were really not showing -- so a change was made to make them more properly visible.
Also, causality violations are now shown in the step view, as well.
See Installation for installation instructions.
Book Published!
The book that goes with this software, entitled "S-parameters for Signal Integrity" has finally been published!
Features
Net Names (#38)
A user asked for the net names feature. Now you can add a net name part (or from the Add menu). You fill in the net name and attach it in the circuit like any other device (under the hood, it is a net name device). Then, anywhere else in the circuit with a net name with the same name connected will be considered to be connected, just as if a wire were connecting them.
Note that there are not the normal restrictions (currently) in that you could name a net multiple names. SignalIntegrity doesn't care about these aliases.
New Preferences
Plot Sizes in S-Parameter Viewer
To facilitate display of the s-parameter viewer on smaller screens, the user can now control the minimum (and starting):
- height of the plot (in inches?) defaults to 2
- width of the plot (in inches?) defaults to 5
- dots per inch (DPI) for the plot, defaults to 100 dpi.
The height was the really important one.
These are found in the preferences in the S-Parameter Viewer Window. The preferences that were originally in the normal preferences pertaining to the S-Parameter Viewer have alsow been moved here such as:
- plot color.
- whether to show the pan/zoom cursor values in the plots.
S-Parameter Viewer Zooms and Displays
Now, the selections of views for the s-parameter viewer along with the zoom joining rules are held in the preferences. This means that when they are changed, they become the default settings for the next viewing of s-parameters.
Ask File Save
A long time ago, the feature that asks whether you want to save a project file got so broken that when the preference to check this was selected, the code simply asked the question every time you tried to exit, whether the file was changed or not. This was not really a bug, but a conscious decision, after the code got too complicated. This is now fixed in a different manner. Now, when the preference is selected and the project file exited, a complete snapshot of the project file that would be written is compared to the previous one to determine whether to ask. Unfortunately, for old project files, it will ask whether you want to save whether or not you changed it until you have saved one with this version. This is because the ordering of the file is now enforced.
Undo
Panning of the schematic display can now be undone/redone.
HDMI Cable Measurement Examples
This year at the DesignCon conference, I stepped through an example of measuring an HDMI cable using a fixture and various de-embedding techniques. This example is now provided.
Start and Stop Time on Sine Sources
They now have a start and stop time. This was needed for examples of VNA dwell time.
Bug Fixes
Excess Inductance and Capacitance
I have proven that the previous code was overstating this by a factor of 2. This has been fixed.
Number of Network Parameters on Each Line of the Touchstone File (Issue #36)
Previously, each frequency points' data was provided on a single line. A user of the software notified me that this violates the touchstone specification and this was confirmed. This now conforms to the specification.
Post-Processing (Issue #35)
The post-processing feature was added in the last release, but it was found that it was being ignored in de-embedding projects that were included as parts. This has been fixed.
Spectral Content and Spectral Density Views
When these were shown for upsampled waveforms, the values were incorrect. This has been fixed.
See Installation for installation instructions.
Lots of New Features
New Features
Peeling
Previously, impedance peeling was part of the SignalIntegrity.Lib library and could be performed with scripts. Now, you can now use impedance peeling to peel off a portion of a connector launch. This is performed by entering a delay value in the port - when this is done, the amount of time entered is peeled off that port after the s-parameters are calculated.
Unfortunately, getting the s-parameters of the peeled port requires another de-embedding operation where the s-parameteters of the structure form the system, the peeled structure is the known, and the s-parameters peeled off are the unknown - a bit more work, but doable.
RLGC fitting
Again, previously this was doable in the SignalIntegrity.Lib library and could be performed with scripts. Now there is a two port element (in the transmission lines category) that takes a file name (which could be a project) and fits an RLGC transmission line (with skin-effect resistance and loss tangent) and provides these s-parameters.
Also, if you have a two-port s-parameter system (at least one device and exactly two ports), the model can be fitted to an RLGC transmission line model. When you select the RLGC fit, the s-parameters of the system are solved, the model is fitted, and the RLGC two-port transmission line model appears in the clipboard. Pressing the left mouse button in the schematic drops the model down on the canvas with all of the transmission line model parameters filled in.
Excess Inductance and Capacitance
Now, in addition to being able to view the impedance profile, it can be viewed as a plot of excess inductance or capacitance, based on the reference impedance specified.
Post-Processing
The feature in SignalIntegrity of being able to add devices as projects led to a particular requirement in that often, after a calculation, causality or passivity is enforced, or the impulse response limited. This meant that in order to use a project as a device, some means were required for performing these enforcements post calculation in an automatic manner.
To facilitate this, the netlist is augmented with a new keyword 'post' that encapsulates the post-processing to be performed and an s-parameter parser has been created that recognizes these netlist lines. In the application, a dialog has been created to allow the addition of post-processing steps. This is all documented in the help system.
Help System
The help system, which was a bit out-of-date has been completely updated to contain all of the latest features in the software.
Device Help
Along with the revamp of the help system, device help has been added. When placing a part in the schematic and when viewing the part properties, a help button now takes the user to the location in the manual where the part is described.
See Installation for installation instructions.
Book Release
This is the final code version that is referenced in my upcoming book "S-Parameters for Signal Integrity" to be published in Feb-Mar 2020.
This release does not include a lot of new features and is only meant to synchronize the code and code listings with what is mentioned in the book.
See the link to the book.