All notable changes to OpenVAF relevant to OSDI will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- fix misscompliation of string parameters
- fix crash when using
target_cpu
flag
- Support for
analog initial
blocks - Allow ignoring errors when a port is declared without direction
- User friendly Crash Handler
- Warning when adding trivially open branches
- Allow
aliasparam
to refer to system functions (like$mfactor
)
- Allow parameter declaration without explicit types
- Crash when using engineering real format specifier
%r
- Crash on windows when calling $display (missing osdi_log symbol)
idt
operator not working (reactive dimension was undefined)- incorrect
param_given
results after setting instance parameters on the model struct. - Panic when accessing current probe that always returns 0
- Update to LLVM 15+ (opaque pointers)
- Removed LLD integration which made packaging exceptionally difficult and caused crashes on Windows.
That mean that OpenVAF now requires that the system linker (and
ucrt.lib
when targeting windows) are available.
- Correctly detect file encoding.
- Invocations of
$limit
that use user defined functions. - Correctly parse net declarations without attached discipline (usually
ground
). - Panic that occurs when a model contains no branch contributes.
- Panic for voltage sources when the associated current is unused.
- Panic for parameters with
exclude
expressions. - Panic for instance parameters.
- Swapped signatures for
slew
andtransition
aliasparam
declarations being ignored
- Added support for
absdelay
- Added support for the
analysis
function (always returned true previously). - Automatically remove unused nodes (includes noise network until noise support is added).
- Added errors for branches with incompatible disciplines.
- Statically integrate the
lld
linker and C runtime shims to remove any external dependencies. - Added
--print-expansion
CLI option to print the preprocessed file. - Enable LLVM Scalar Vectorization to automatically use SIMD instructions where possible.
- Do not generate unknowns for noise phase shifts with ddt.
- Provide errors instead of crashing for unsupported Verilog-A builtins.
- Provide errors instead of crashing for illegal nature access.
- Rare miss-compilations/crashes caused by treating a branch instruction as a jump instruction during CFG simplification.
- Discontinuity in the derivative of
pow(x,y)
forx=0
. - Unhelpful syntax errors for item declarations
- Crash when encountering potential/flow probe with no arguments
- Added support for
$limit
- Added support for
$abstime
(now returns a non-zero value for large signal simulations). - Added support for
$bound_step
(now the simulator can read the minimum value passed to$bound_step
). - Add general description to the start of the help text.
- Validate format arguments and properly handle all argument types instead of just passing the format specifier to C
- Refactor the algorithm that determines whether
ddt
needs an unknown, so that OpenVAF doesn't create one when not required. - Automatically add whitespace between auto generated format characters for
$strope etc.
- Check that fmt literals used in $display are correct and match the format arguments to avoid crashes/undefined behavior.
ddx
always returned 0- Remove infinite loop during global value numbering optimization.
- Linking error if cache directory was missing during batch compilation.
- Fixed crash for nodes without any contributions besides collapsing
- Fixed select expressions producing incorrect values
- Fixed that the cache-dir argument was called cache-dir (typo)
Initial prototype release