Bug Fixes
Numerous bugs were fixed -- too numerous to mention.
All of the tests were fixed, as well.
Features
Port Reordering
File devices now have an attribute called port_reorder which allows specifying the ports in the input file that correspond, in order, to the ports of the device as drawn. For example port_reorder 3,4,1,2 says that ports 1,2,3,4 of the device as drawn correspond to ports 3,4,1,2 in the file being read. This is also useful for reducing large files and can be used to extract a smaller subset of s-parameters from a file with a large number of ports.
Element States
This feature is very useful for reconfiguring schematics from arguments passed to the schematic.
File devices now have an element state. The default is '' or an empty string, which means that the device is enabled. Other options are:
- 'disabled' - the device turns red and you should consider it non-existent in the schematic. You will have to handle missing port connections for disabled devices.
- 'thru' - the device turns red and one sees wires connecting the ports from left to right. The file device is replaced with a device that has the thru connections shown.
- 'thru_wires' - the device turns red, it is removed from the internal schematic, and wire connections are made between the left and right ports. This is more efficient calculation-wise than the thru device.
'thru' and 'thru_wires' state requires a device with an even number of ports, and must be drawn in a manner where the left and right ports are identifiable.
Archiving
Archiving now only archives files that are below the schematic being archived. Furthermore, it allows devices to be specified on paths that have no relative path with the schematic (e.g. devices on a Google share drive). These devices are, of course, not archived.
AC coupled probes
Probes can now be AC coupled, which means that the mean value of the waveform is subtracted after simulation.
Impulse Waveforms
A new impulse waveform is now available.
Effective Return Loss
There is a new utility that calculates ERL mostly according to the standard. Mostly means that the randomization of the symbols is created using a PRBS waveform, not the method according to the standard, the differences in results are negligible.
SSPRQ and PRBS13Q
An SSPRQ and PRBS13Q waveforms have been added to the waveform library.
Changes to multi-level waveforms
Previously, integer bits-per-symbol was used to control the number of levels in waveforms. To facilitate waveforms like PAM3 or PAM8, now, the number of levels are specified.
Result format
Previously, results from SignalIntegrityAppHeadless were returned in the form of a tuple, which did not make it very flexible to add to. Now, they are returned as a dictionary. If you still want to use the old way, just add .Legacy() to your results returned.
Gaussian and Raised Cosine Risetime Filters
These filters set the risetime (either 10-90, or 20-80) on the output due to an infinitely fast signal at the input. This was provided because there is such a variation of specifications for risetime that it is easier to add different risetime filters rather than complicate the internal workings of the waveforms.
Ideal Balun
An ideal balun device is provided.
Added a three-port Reference device
This device is used to expose the reference ground port of an s-parameter calculated as a difference between signal metal and a local ground reference. It is also used in reverse to convert a device exposing a local ground signal in a differential signal. This device is used to deal with cascading compatibility, mostly when connecting s-parameters simulated in tools like HFSS with circuit simulators.
Caching
Now, more than one cache file per project can be specified. This allows highly parameterized files to have multiple cache files, cutting down hugely on computation time.
Improved Simulation
Now, the simulator will not provide non-unique solutions, unless specified in the preferences.
Setup Changes
Although the author believes this code runs with Numpy version 2.0 and above, for now, it is restricted to the last release of 1.26.4.
See Installation for installation instructions.