Skip to content

Releases: Nubis-Communications/SignalIntegrity

Improvements in DC processing, more devices, and added network analysis capability

17 Dec 01:09
Compare
Choose a tag to compare

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

28 Nov 20:19
Compare
Choose a tag to compare

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

15 Nov 20:43
Compare
Choose a tag to compare

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

12 Sep 22:16
Compare
Choose a tag to compare

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

12 Jul 13:21
Compare
Choose a tag to compare

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

11 Jun 17:14
Compare
Choose a tag to compare

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 f_0 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

19 Mar 15:15
Compare
Choose a tag to compare

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!

06 Mar 01:40
Compare
Choose a tag to compare

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

18 Nov 22:10
Compare
Choose a tag to compare

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

05 Nov 00:28
Compare
Choose a tag to compare

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.