diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index f002eb13b..0a5e7a6b0 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -32,8 +32,8 @@ jobs: - name: Configure sccache if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' run: | - echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV - echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV + echo "SCCACHE_GHA_ENABLED=true" >> "$GITHUB_ENV" + echo "RUSTC_WRAPPER=sccache" >> "$GITHUB_ENV" - uses: actions/checkout@v4 @@ -46,11 +46,69 @@ jobs: - name: Run cargo machete run: cargo machete + # Detect available LLVM versions from GitHub releases + detect-llvm-versions: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: Query LLVM releases and generate matrix + id: set-matrix + run: | + # Query LLVM GitHub releases for available major versions + # We support LLVM 18, 19, 20, 21 + SUPPORTED_VERSIONS="18 19 20 21" + + # Check which versions are available via apt.llvm.org + AVAILABLE_VERSIONS="" + for ver in $SUPPORTED_VERSIONS; do + # Check if the version is available (apt.llvm.org hosts versions 11+) + if curl -s --head "https://apt.llvm.org/llvm.sh" | head -1 | grep -q "200"; then + AVAILABLE_VERSIONS="$AVAILABLE_VERSIONS $ver" + fi + done + + # For now, use a static list of versions we know work + # apt.llvm.org supports versions 11-21 + # Generate JSON matrix + MATRIX='{"include":[' + + # LLVM 18.1 - Ubuntu Noble system package + MATRIX="${MATRIX}{\"llvm_version\":\"18\",\"llvm_env_var\":\"LLVM_SYS_181_PREFIX\",\"cargo_features\":\"--no-default-features --features llvm18\"}" + + # LLVM 19.1 + MATRIX="${MATRIX},{\"llvm_version\":\"19\",\"llvm_env_var\":\"LLVM_SYS_191_PREFIX\",\"cargo_features\":\"--no-default-features --features llvm19\"}" + + # LLVM 20.1 + MATRIX="${MATRIX},{\"llvm_version\":\"20\",\"llvm_env_var\":\"LLVM_SYS_201_PREFIX\",\"cargo_features\":\"--no-default-features --features llvm20\"}" + + # LLVM 21.1 + MATRIX="${MATRIX},{\"llvm_version\":\"21\",\"llvm_env_var\":\"LLVM_SYS_211_PREFIX\",\"cargo_features\":\"--no-default-features --features llvm21\"}" + + MATRIX="${MATRIX}]}" + + echo "Generated matrix: $MATRIX" + echo "matrix=$MATRIX" >> "$GITHUB_OUTPUT" + ubuntu-build-test: + strategy: + fail-fast: false + matrix: + include: + # LLVM 18 - Ubuntu Noble system package + - llvm_version: "18" + llvm_env_var: "LLVM_SYS_181_PREFIX" + cargo_features: "--no-default-features --features llvm18" + # LLVM 21 - Latest from apt.llvm.org + - llvm_version: "21" + llvm_env_var: "LLVM_SYS_211_PREFIX" + cargo_features: "--no-default-features --features llvm21" runs-on: ubuntu-latest needs: [format, machete] steps: - uses: actions/checkout@v4 + with: + submodules: recursive - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable @@ -65,32 +123,58 @@ jobs: - name: Configure sccache if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' run: | - echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV - echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV + echo "SCCACHE_GHA_ENABLED=true" >> "$GITHUB_ENV" + echo "RUSTC_WRAPPER=sccache" >> "$GITHUB_ENV" - - name: Install LLVM 18 and Windows cross-compilation tools + - name: "Cache cargo" + id: cache-cargo + uses: "actions/cache@v4" + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + save-always: true + key: ${{ runner.os }}-${{runner.arch}}-llvm${{ matrix.llvm_version }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-${{runner.arch}}-llvm${{ matrix.llvm_version }}-cargo- + + - name: Install LLVM ${{ matrix.llvm_version }} and Windows cross-compilation tools run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 - sudo apt-get install -y llvm-18 llvm-18-dev libclang-18-dev - + sudo ./llvm.sh ${{ matrix.llvm_version }} + sudo apt-get install -y llvm-${{ matrix.llvm_version }} llvm-${{ matrix.llvm_version }}-dev libclang-${{ matrix.llvm_version }}-dev + # Install llvm-lib for Windows cross-compilation sudo apt-get install -y mingw-w64 - + # Create symlink for llvm-lib - sudo ln -s /usr/bin/llvm-ar-18 /usr/local/bin/llvm-lib - + sudo ln -sf /usr/bin/llvm-ar-${{ matrix.llvm_version }} /usr/local/bin/llvm-lib + # Verify installation which llvm-lib llvm-lib --version - name: Set LLVM environment variables run: | - echo "LLVM_SYS_181_PREFIX=/usr/lib/llvm-18" >> $GITHUB_ENV - echo "CLANG_PATH=/usr/lib/llvm-18/bin/clang" >> $GITHUB_ENV - echo "PATH=/usr/lib/llvm-18/bin:$PATH" >> $GITHUB_ENV - echo "RUST_BACKTRACE=1" >> $GITHUB_ENV + # See https://gitlab.com/taricorp/llvm-sys.rs/#llvm-compatibility for details + # Set LLVM prefix for llvm-sys crate + echo "${{ matrix.llvm_env_var }}=/usr/lib/llvm-${{ matrix.llvm_version }}" >> "$GITHUB_ENV" + + # llvm-sys needs llvm-config to be findable - create symlink in the LLVM bin dir if not already present + sudo mkdir -p /usr/lib/llvm-${{ matrix.llvm_version }}/bin + sudo ln -sf /usr/bin/llvm-config-${{ matrix.llvm_version }} /usr/lib/llvm-${{ matrix.llvm_version }}/bin/llvm-config || true + + { + echo "CLANG_PATH=/usr/lib/llvm-${{ matrix.llvm_version }}/bin/clang" + echo "PATH=/usr/lib/llvm-${{ matrix.llvm_version }}/bin:$PATH" + echo "RUST_BACKTRACE=1" + } >> "$GITHUB_ENV" + + # Verify llvm-config is accessible + /usr/lib/llvm-${{ matrix.llvm_version }}/bin/llvm-config --version - name: Install build dependencies run: | @@ -98,7 +182,13 @@ jobs: sudo apt-get install -y build-essential - name: Build - run: cargo build --release + run: | + # Build specific packages to avoid workspace feature unification issues + # that cause multiple llvm-sys versions to be compiled + cargo build --release --package openvaf-driver ${{ matrix.cargo_features }} + cargo build --release --package openvaf ${{ matrix.cargo_features }} + cargo build --release --package osdi ${{ matrix.cargo_features }} + cargo build --release --package mir_llvm ${{ matrix.cargo_features }} - name: Show sccache stats if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' @@ -109,7 +199,15 @@ jobs: # run: cargo clippy -- -D warnings - name: Run tests - run: cargo test --release + run: | + # Run tests for specific packages to avoid workspace feature unification issues + cargo test --release --package openvaf-driver ${{ matrix.cargo_features }} + cargo test --release --package openvaf ${{ matrix.cargo_features }} + cargo test --release --package osdi ${{ matrix.cargo_features }} + cargo test --release --package mir_llvm ${{ matrix.cargo_features }} + + - name: Run integration tests + run: cargo test --release --package openvaf --test integration ${{ matrix.cargo_features }} msys2-build-test: strategy: @@ -120,6 +218,8 @@ jobs: needs: [format, machete] steps: - uses: actions/checkout@v4 + with: + submodules: recursive - name: Setup MSYS2 uses: msys2/setup-msys2@v2 with: @@ -149,20 +249,34 @@ jobs: uses: actions/cache@v4 with: path: ~/.cache/sccache - key: ${{ runner.os }}-sccache-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-${{ runner.arch }}}-sccache-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-sccache- + ${{ runner.os }}-${{ runner.arch }}-sccache- - name: Locate and configure sccache shell: msys2 {0} run: | # export SCCACHE_PATH=$(which sccache) - # echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV - echo "RUSTC_WRAPPER=${SCCACHE_PATH}" >> $GITHUB_ENV + # echo "SCCACHE_GHA_ENABLED=true" >> "$GITHUB_ENV" + echo "RUSTC_WRAPPER=${SCCACHE_PATH}" >> "$GITHUB_ENV" + + - name: "Cache cargo" + id: cache-cargo + uses: "actions/cache@v4" + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + save-always: true + key: ${{ runner.os }}-${{ runner.arch }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-${{ runner.arch }}-cargo- - name: Run cargo shell: msys2 {0} - run: cargo build --release + run: cargo build --release --features llvm21 #- name: Show sccache stats # if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' # shell: msys2 {0} @@ -170,46 +284,65 @@ jobs: - name: Run tests shell: msys2 {0} - run: cargo test --release + run: cargo test --release --features llvm21 macos-build-test: strategy: fail-fast: false matrix: - include: - # Intel - - image: macos-15-intel - # ARM64 - - image: macos-15 - - image: macos-14 + # Use default Homebrew LLVM (latest) on all macOS runners + image: [macos-15-intel, macos-15, macos-14] runs-on: ${{ matrix.image }} needs: [format, machete] steps: - name: Checkout uses: actions/checkout@v4 + with: + submodules: recursive - name: Install dependencies with Homebrew uses: tecolicom/actions-use-homebrew-tools@v1 with: - tools: pkg-config sccache llvm@18 + tools: pkg-config sccache llvm cache: yes - name: Set LLVM environment variables run: | - echo "$(brew --prefix llvm@18)/bin" >> $GITHUB_PATH - echo "LLVM_SYS_181_PREFIX=$(brew --prefix llvm@18)" >> $GITHUB_ENV - echo "RUST_BACKTRACE=1" >> $GITHUB_ENV - echo "RUN_DEV_TESTS=1" >> $GITHUB_ENV + echo "$(brew --prefix llvm)/bin" >> "$GITHUB_PATH" + { + echo "LLVM_SYS_211_PREFIX=$(brew --prefix llvm)" + echo "RUST_BACKTRACE=1" + echo "RUN_DEV_TESTS=1" + } >> "$GITHUB_ENV" - name: sccache setup run: | - # echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV - echo "RUSTC_WRAPPER=$(which sccache)" >> $GITHUB_ENV - + # echo "SCCACHE_GHA_ENABLED=true" >> "$GITHUB_ENV" + echo "RUSTC_WRAPPER=$(which sccache)" >> "$GITHUB_ENV" + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: "Cache cargo" + id: cache-cargo + uses: "actions/cache@v4" + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + save-always: true + key: ${{ runner.os }}-${{runner.arch}}-llvm-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-${{runner.arch}}-llvm-cargo- + - name: Build - run: cargo build --release + run: cargo build --release --features llvm21 - name: Run tests - run: cargo test --release + run: cargo test --release --features llvm21 + - name: Run integration tests + run: cargo test --release --features llvm21 --test integration diff --git a/.gitignore b/.gitignore index 5c7bb1cdd..d4e7b3a78 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ markus_notes .env **.swp **.swo +.llvm-version diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..04fcbe635 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "external/vacask"] + path = external/vacask + url = https://codeberg.org/arpadbuermen/VACASK.git diff --git a/.vscode/launch.json b/.vscode/launch.json index 8a5036f83..4588122e1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,17 +12,20 @@ "args": [ "build", "--bin=openvaf-r", - "--package=openvaf-driver" + "--package=openvaf-driver", + "--features", "llvm18" ], "filter": { "name": "openvaf-r", "kind": "bin" } }, - // "args": [ "--dump-mir", "--dump-unopt-mir", /* "--dump-ir", */ "simp1.va" ], - "args": [ "--dump-mir", "--dump-unopt-mir", /* "--dump-ir", */ "${workspaceFolder}/integration_tests/HiSIMHV/hisimhv.va" ], + // "args": [ "--dump-mir", /*"--dump-unopt-mir", "--dump-ir", */ "simp1.va" ], + // "args": [ "--dump-mir", "--dump-unopt-mir", /* "--dump-ir", */ "${workspaceFolder}/integration_tests/HiSIMHV/hisimhv.va" ], // "args": [ "--dump-mir", "--dump-unopt-mir", /* "--dump-ir", */ "/home/arpadb/rram/hisim/hisimhv.va" ], // "args": [ "--dump-mir", "--dump-unopt-mir", /* "--dump-ir", */ "resistor.va" ], + // "args": [ "--dump-mir", /*"--dump-unopt-mir", "--dump-ir", */ "/home/arpadb/sim/VACASK/devices/opamp.va" ], + "args": [ "--dump-unopt-mir", /*"--dump-unopt-mir", "--dump-ir", */ "/home/arpadb/OpenVAF/jfet2.va" ], "cwd": "${workspaceFolder}/..", "env": { "RAYON_NUM_THREADS": "1" diff --git a/Cargo.lock b/Cargo.lock index 9dd4b7ae0..32acf2b0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -166,6 +166,7 @@ dependencies = [ "indexmap 2.10.0", "mini_harness", "parking_lot", + "rustc-hash 2.1.1", "salsa", "stdx", "syntax", @@ -543,6 +544,7 @@ dependencies = [ "once_cell", "ordered-float", "parking_lot", + "rustc-hash 2.1.1", "salsa", "stdx", "syntax", @@ -564,6 +566,7 @@ dependencies = [ "mir", "mir_build", "parking_lot", + "rustc-hash 2.1.1", "salsa", "stdx", "syntax", @@ -722,9 +725,51 @@ dependencies = [ [[package]] name = "llvm-sys" -version = "181.2.0" +version = "181.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320f9d2723c97d4b78f9190a61ed25cc7cfbe456668c08e6e7dd8e50ceb8500" +checksum = "e24aad69cbdb0c6ebe777262e9e6314dceba0d6e6a2a63e47563ccd293a2eda8" +dependencies = [ + "anyhow", + "cc", + "lazy_static", + "libc", + "regex-lite", + "semver", +] + +[[package]] +name = "llvm-sys" +version = "191.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0ad1fffbdac72a40b55aa58b31aa0efe925e277941b6705f128692b27f1d506" +dependencies = [ + "anyhow", + "cc", + "lazy_static", + "libc", + "regex-lite", + "semver", +] + +[[package]] +name = "llvm-sys" +version = "201.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb947e8b79254ca10d496d0798a9ba1287dcf68e50a92b016fec1cc45bef447" +dependencies = [ + "anyhow", + "cc", + "lazy_static", + "libc", + "regex-lite", + "semver", +] + +[[package]] +name = "llvm-sys" +version = "211.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "108b3ad2b2eaf2a561fc74196273b20e3436e4a688b8b44e250d83974dc1b2e2" dependencies = [ "anyhow", "cc", @@ -823,6 +868,7 @@ dependencies = [ "indexmap 2.10.0", "lasso", "list_pool", + "rustc-hash 2.1.1", "smallvec", "stdx", "typed-index-collections", @@ -842,6 +888,7 @@ dependencies = [ "mir", "mir_interpret", "mir_reader", + "rustc-hash 2.1.1", "stdx", "typed-index-collections", "typed_indexmap", @@ -881,7 +928,10 @@ dependencies = [ "base_n", "lasso", "libc", - "llvm-sys", + "llvm-sys 181.3.0", + "llvm-sys 191.1.0", + "llvm-sys 201.0.1", + "llvm-sys 211.0.0", "log", "mir", "target", @@ -892,12 +942,12 @@ dependencies = [ name = "mir_opt" version = "0.0.0" dependencies = [ - "ahash 0.8.12", "bitset", "expect-test", "hashbrown 0.14.5", "mir", "mir_reader", + "rustc-hash 2.1.1", "stdx", "typed-index-collections", "workqueue", @@ -978,7 +1028,10 @@ dependencies = [ "libc", "libloading", "linker", - "llvm-sys", + "llvm-sys 181.3.0", + "llvm-sys 191.1.0", + "llvm-sys 201.0.1", + "llvm-sys 211.0.0", "md5", "mini_harness", "mir_llvm", @@ -1025,7 +1078,6 @@ dependencies = [ name = "osdi" version = "0.0.0" dependencies = [ - "ahash 0.8.12", "base_n", "camino", "expect-test", @@ -1035,7 +1087,10 @@ dependencies = [ "hir_lower", "indexmap 2.10.0", "lasso", - "llvm-sys", + "llvm-sys 181.3.0", + "llvm-sys 191.1.0", + "llvm-sys 201.0.1", + "llvm-sys 211.0.0", "log", "mini_harness", "mir", @@ -1043,6 +1098,7 @@ dependencies = [ "mir_llvm", "paths", "rayon-core", + "rustc-hash 2.1.1", "salsa", "sim_back", "smol_str", @@ -1229,7 +1285,7 @@ checksum = "0a542b0253fa46e632d27a1dc5cf7b930de4df8659dc6e720b647fc72147ae3d" dependencies = [ "countme", "hashbrown 0.14.5", - "rustc-hash", + "rustc-hash 1.1.0", "text-size", ] @@ -1245,6 +1301,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "ryu_floating_decimal" version = "0.1.0" @@ -1265,7 +1327,7 @@ dependencies = [ "log", "oorandom", "parking_lot", - "rustc-hash", + "rustc-hash 1.1.0", "salsa-macros", "smallvec", ] @@ -1338,6 +1400,7 @@ dependencies = [ "mir_build", "mir_interpret", "mir_opt", + "rustc-hash 2.1.1", "smol_str", "stdx", "syntax", @@ -1489,8 +1552,8 @@ dependencies = [ name = "typed_indexmap" version = "0.0.0" dependencies = [ - "ahash 0.8.12", "indexmap 2.10.0", + "rustc-hash 2.1.1", ] [[package]] @@ -1546,7 +1609,10 @@ dependencies = [ "lasso", "libloading", "linker", - "llvm-sys", + "llvm-sys 181.3.0", + "llvm-sys 191.1.0", + "llvm-sys 201.0.1", + "llvm-sys 211.0.0", "md5", "mir", "mir_autodiff", @@ -1591,11 +1657,11 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" name = "vfs" version = "0.0.0" dependencies = [ - "ahash 0.8.12", "chardetng", "encoding_rs", "indexmap 2.10.0", "paths", + "rustc-hash 2.1.1", ] [[package]] diff --git a/README.md b/README.md index 15d096671..7cf7f195c 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ Some internals of the OpenVAF compiler are documented in the [internals.md](inte - Natures, disciplines, and the corresponding attributes exposed in OSDI API. - Natures of unknowns and residuals exposed in OSDI descriptor. TODO: switch branches and implicit equations. - $bound_step() fixed. +- Initalization of instance parameters from model defaults now works. # What about binaries? @@ -69,32 +70,74 @@ If the binary is named `openvaf` it comes from the `branches/osdi_0.3` branch an # Building OpenVAF-reloaded -## Setting up the dependencies under Debian Bookworm +## LLVM Version Support + +OpenVAF-reloaded supports multiple LLVM versions from 18 to 21. You can choose which version to use at build time via Cargo features: + +| Feature | LLVM Version | Environment Variable | llvm-sys crate | +|---------|--------------|----------------------|----------------| +| `llvm18` | LLVM 18.1.x | `LLVM_SYS_181_PREFIX` | 181.2.0 | +| `llvm19` | LLVM 19.1.x | `LLVM_SYS_191_PREFIX` | 191.0.0 | +| `llvm20` | LLVM 20.1.x | `LLVM_SYS_201_PREFIX` | 201.0.1 | +| `llvm21` | LLVM 21.1.x | `LLVM_SYS_211_PREFIX` | 211.0.0 | + +**Note:** There is no default LLVM version. You must specify the version explicitly using `--features llvmXX` or use the `./configure` script for auto-detection (see Building section). + +**Ubuntu Noble (24.04)** ships with LLVM 18 as a system package, making it a convenient choice for those platforms. + +**Note:** The llvm-sys crate version follows the pattern `MAJORminor.patch`, where MAJOR is the LLVM major version and minor is the minor version (e.g., 181 = LLVM 18.1, 211 = LLVM 21.1). + +## Setting up the dependencies under Debian/Ubuntu Everything was tested under Debian 13. First, install Rust as ordinary user (files will go to `~/.cargo` and `~/.rustup`). -``` +```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` During installation select "Customize installation" and set profile to "complete". -Build LLVM and Clang. Download [LLVM 18.1.8 sources](https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8). Unpack them (this creates directory `llvm-project-llvmorg-18.1.8`) and create a build directory and decide where you want to install LLVM. Type +Make sure the Bash login script is read again (either log out and in again, or type `source ~/.bashrc`) Now you are good to go. + +### Using LLVM 18 (recommended for Ubuntu Noble) + +On Ubuntu Noble (24.04) or similar, LLVM 18 is available from system packages: +```bash +sudo apt-get install llvm-18 llvm-18-dev libclang-18-dev clang-18 ``` -cmake -S /llvm -B -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld" + +Set up the environment: +```bash +export LLVM_SYS_181_PREFIX=/usr/lib/llvm-18 +export PATH=/usr/lib/llvm-18/bin:$PATH ``` -Enter the build directory and type +### Using LLVM 21 + +For LLVM 21 on Ubuntu/Debian, use the official LLVM apt repository: +```bash +wget https://apt.llvm.org/llvm.sh +chmod +x llvm.sh +sudo ./llvm.sh 21 +sudo apt-get install llvm-21 llvm-21-dev libclang-21-dev ``` -make -j -make install + +Set up the environment: +```bash +export LLVM_SYS_211_PREFIX=/usr/lib/llvm-21 +export PATH=/usr/lib/llvm-21/bin:$PATH ``` -Set up the environment by adding the following to `.bashrc` +### Building LLVM from source (alternative) + +If you need to build LLVM from source, download [LLVM 21.1.6 sources](https://github.com/llvm/llvm-project/releases/tag/llvmorg-21.1.6) (or 18.1.8 for LLVM 18). Unpack them and create a build directory: ``` -export LLVM_SYS_181_PREFIX= -export PATH=/bin:$PATH +cmake -S /llvm -B -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld" ``` -Make sure the Bash login script is read again (either log out and in again, or type `source ~/.bashrc`) Now you are good to go. +Enter the build directory and type: +``` +make -j +make install +``` ## Setting up the dependencies under Windows @@ -103,35 +146,96 @@ During installation select "Customize installation" and set profile to "complete Install Visual Studio 2022 Community Edition. Make sure you install CMake Tools that come with VS2022 (also installs Ninja). -Build LLVM and Clang. Download [LLVM 18.1.8 sources](https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8) sources (get the .zip file). Unpack the sources (this creates directory `llvm-project-llvmorg-18.1.8`). Create a build directory and decide where you want to install LLVM. +Build LLVM and Clang. Download [LLVM 21.1.6 sources](https://github.com/llvm/llvm-project/releases/tag/llvmorg-21.1.6) sources (get the .zip file). Unpack the sources (this creates directory `llvm-project-llvmorg-21.1.6`). Create a build directory and decide where you want to install LLVM. Start Visual Studio x64 native command prompt. Run CMake, use Ninja as build system. Do not use default (nmake) because for me it always built the Debug version, even when I specified Release. -``` -cmake -G Ninja -S /llvm -B -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld" +```bash +cmake -G Ninja -S path_to_sources/llvm -B path_to_build_dir -DCMAKE_INSTALL_PREFIX=LLVM_install_directory -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" -DLLVM_ENABLE_PROJECTS="llvm;clang;lld" ``` Enter build directory and run Ninja (build and install) -``` +```bash ninja ninja install ``` -Add the LLVM binary directory (`\bin`) to the PATH. Set the `LLVM_SYS_181_PREFIX` environmental variable to ``. +Add the LLVM binary directory (`\bin`) to the PATH. Set the `LLVM_SYS_211_PREFIX` environmental variable to ``. + +Restart command prompt. Now you are good to go. + +## Setting up the dependencies under macOS -Restart command prompt. Now you are good to go. +Install Homebrew if not already installed. + +### Using LLVM 18 +```bash +brew install llvm@18 +export LLVM_SYS_181_PREFIX=$(brew --prefix llvm@18) +export PATH="$(brew --prefix llvm@18)/bin:$PATH" +``` + +### Using LLVM 21 (latest) +```bash +brew install llvm +export LLVM_SYS_211_PREFIX=$(brew --prefix llvm) +export PATH="$(brew --prefix llvm)/bin:$PATH" +``` + +Add the appropriate export commands to `~/.zshrc` (or `~/.bashrc`) to make them permanent. + +Install Rust if not already installed: +```bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +During installation select "Customize installation" and set profile to "complete". + +Now you are good to go. ## Building -To build the release version (`target/release/openvaf-r`), type +### Quick Start (Recommended) + +The easiest way to build is using the configure script which auto-detects your LLVM installation: + +```bash +./configure # Auto-detect LLVM version +./build.sh --release # Build release version ``` -cargo build --release --bin openvaf-r + +The configure script will: +1. Search for LLVM installations (via environment variables, PATH, or Homebrew on macOS) +2. Select the newest available version (21 > 20 > 19 > 18) +3. Save the configuration to `.llvm-version` + +You can also force a specific version: +```bash +./configure --llvm=18 # Force LLVM 18 ``` -To build the debug version (`target/debug/openvaf-r`), type +### Manual Build + +If you prefer not to use the configure script, specify the LLVM version explicitly: + +```bash +# Set environment variable for your LLVM version +export LLVM_SYS_211_PREFIX=/path/to/llvm-21 # For LLVM 21 +# Or: export LLVM_SYS_181_PREFIX=/path/to/llvm-18 # For LLVM 18 + +# Make sure LLVM binaries are in the system path + +# Build with explicit feature flag +cargo build --release --features llvm21 +# Or: cargo build --release --features llvm18 ``` -cargo build --bin openvaf-r + +To build the debug version: +```bash +cargo build --features llvm21 ``` +The release binary can be found in `target/release` while the debug binary is built in `target/debug`. + # Debugging OpenVAF-reloaded in Visual Studio Code You will need two extensions: CodeLLDB (under Linux) / Microsoft C++ (under Windows) and rust-analyzer. In the `.vscode` directory there are two files: `launch-openvaf-r.json` (for working with the master branch) and `launch-openvaf.json` (for working with the branches/osdi_0.3 branch). Copy the one that matches your branch to `launch.json`. There are two debug setups available in that file (Linux and Windows). Set your breakpoints and run the program. If there are any changes since the last build they will be applied upon which the program will be started and then stop at the first breakpoint. @@ -141,21 +245,51 @@ The debug configuration disables rayon running the .osdi file build process in p # Running tests with cargo -Pascal has set up a test suite for OpenVAF. To run the tests on the debug version of the binary type +Pascal has set up a test suite for OpenVAF. + +## Quick Test (Recommended) + +If you've run `./configure`, use the build script: +```bash +./build.sh --test # Debug tests +./build.sh --test --release # Release tests +``` + +## Manual Testing + +To run the tests manually, specify the LLVM version explicitly: - cargo test +```bash +# Debug tests +cargo test --features llvm21 -To run the tests on the release version type +# Release tests +cargo test --release --features llvm21 +``` - cargo test --release +By default only fast tests are run. To run all tests set the `RUN_SLOW_TEST` variable to 1, e.g. +```bash +RUN_SLOW_TESTS=1 cargo test +``` -By default only fast tests are run. To run all tests set the `RUN_SLOW_TEST` variable to 1, e.g. +## Integration Tests - RUN_SLOW_TESTS=1 cargo test +Integration tests compile real-world Verilog-A models (BSIM, HiSIM, PSP, MEXTRAM, etc.) and verify the generated OSDI libraries. These tests are disabled by default but can be enabled with: +```bash +RUN_DEV_TESTS=1 cargo test --release --features llvm21 --test integration +``` -Your changes may fail some tests although they are correct. Consider the case you changed the MIR generator. The expected test results assume MIR is generated the way Pascal did it. If you are sure your changes are correct you can update the expected values (stored in `openvaf/test_data` as files ending with .snap). To do this set the `UPDATE_EXPECT` variable 1, e.g. +Or using the build script: +```bash +RUN_DEV_TESTS=1 ./build.sh --test --release -- --test integration +``` - UPDATE_EXPECT=1 cargo test +## Updating Expected Test Results + +Your changes may fail some tests although they are correct. Consider the case you changed the MIR generator. The expected test results assume MIR is generated the way Pascal did it. If you are sure your changes are correct you can update the expected values (stored in `openvaf/test_data` as files ending with .snap). To do this set the `UPDATE_EXPECT` variable 1, e.g. +```bash +UPDATE_EXPECT=1 cargo test --release --features llvm21 +``` Unfortunately not all expected results are in .snap files. Some are hard-coded in the test sources, e.g. see `openvaf/mir_autodiff/src/builder/tests.rs`. You will have to update these expected values manually. @@ -166,7 +300,9 @@ Kudos to Pascal Kuthe for the great work he did. Geoffrey Coram and Dietmar Warning are authors of several bugfixes included in OpenVAF-reloaded. -Kreijstal ported OpenVAF to LLVM18. +Kreijstal ported OpenVAF to LLVM 18. + +Rob Taylor contributed CI improvements, MACOS support, and LLVM version support beyond LLVM 18. # Copyright diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..7bab9e9b2 --- /dev/null +++ b/build.sh @@ -0,0 +1,81 @@ +#!/bin/sh +# Build OpenVAF with auto-detected LLVM version +# +# Usage: +# ./build.sh # Debug build +# ./build.sh --release # Release build +# ./build.sh --test # Run tests +# ./build.sh -- # Pass additional args to cargo + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +VERSION_FILE="$SCRIPT_DIR/.llvm-version" + +# Parse our arguments +CARGO_CMD="build" +RELEASE="" +EXTRA_ARGS="" +while [ $# -gt 0 ]; do + case "$1" in + --release) + RELEASE="--release" + shift + ;; + --test) + CARGO_CMD="test" + shift + ;; + --clippy) + CARGO_CMD="clippy" + shift + ;; + --) + shift + EXTRA_ARGS="$*" + break + ;; + *) + EXTRA_ARGS="$EXTRA_ARGS $1" + shift + ;; + esac +done + +# Check for configuration +if [ ! -f "$VERSION_FILE" ]; then + echo "Error: Not configured. Run ./configure first." + echo "" + echo "Quick start:" + echo " ./configure # Auto-detect LLVM" + echo " ./build.sh # Build" + exit 1 +fi + +# Load configuration +. "$VERSION_FILE" + +if [ -z "$LLVM_VERSION" ]; then + echo "Error: Invalid configuration. Run ./configure again." + exit 1 +fi + +# Set environment variable for llvm-sys +case "$LLVM_VERSION" in + 18) export LLVM_SYS_181_PREFIX="$LLVM_PREFIX" ;; + 19) export LLVM_SYS_191_PREFIX="$LLVM_PREFIX" ;; + 20) export LLVM_SYS_201_PREFIX="$LLVM_PREFIX" ;; + 21) export LLVM_SYS_211_PREFIX="$LLVM_PREFIX" ;; +esac + +# Add LLVM to PATH if needed +if [ -d "$LLVM_PREFIX/bin" ]; then + export PATH="$LLVM_PREFIX/bin:$PATH" +fi + +echo "Using LLVM $LLVM_VERSION from $LLVM_PREFIX" +echo "" + +# Run cargo +# shellcheck disable=SC2086 +exec cargo $CARGO_CMD $RELEASE --features "llvm$LLVM_VERSION" $EXTRA_ARGS diff --git a/configure b/configure new file mode 100755 index 000000000..65d1fdbc0 --- /dev/null +++ b/configure @@ -0,0 +1,244 @@ +#!/bin/sh +# Auto-detect LLVM version and configure the build +# +# This script detects available LLVM installations and creates a +# .llvm-version file that build.sh uses to select the right features. +# +# Usage: +# ./configure # Auto-detect LLVM +# ./configure --llvm=18 # Force specific version +# ./configure --help # Show help + +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +VERSION_FILE="$SCRIPT_DIR/.llvm-version" + +usage() { + cat </dev/null 2>&1; then + detected=$("$cmd" --version 2>/dev/null | cut -d. -f1) + if [ "$detected" = "$version" ]; then + echo "$version" + return 0 + fi + fi + done + + # macOS: Check Homebrew + if [ "$(uname)" = "Darwin" ]; then + brew_prefix="${HOMEBREW_PREFIX:-/opt/homebrew}" + if [ ! -d "$brew_prefix" ]; then + brew_prefix="/usr/local" + fi + + # Check versioned formula first (llvm@18, llvm@19, etc.) + if [ -x "$brew_prefix/opt/llvm@$version/bin/llvm-config" ]; then + echo "$version" + return 0 + fi + + # Check default llvm formula + if [ -x "$brew_prefix/opt/llvm/bin/llvm-config" ]; then + detected=$("$brew_prefix/opt/llvm/bin/llvm-config" --version 2>/dev/null | cut -d. -f1) + if [ "$detected" = "$version" ]; then + echo "$version" + return 0 + fi + fi + fi + + return 1 +} + +# Get the LLVM prefix for a version +get_llvm_prefix() { + version=$1 + case "$version" in + 18) env_var="LLVM_SYS_181_PREFIX" ;; + 19) env_var="LLVM_SYS_191_PREFIX" ;; + 20) env_var="LLVM_SYS_201_PREFIX" ;; + 21) env_var="LLVM_SYS_211_PREFIX" ;; + *) return 1 ;; + esac + + # Check environment variable first + eval "prefix=\${$env_var:-}" + if [ -n "$prefix" ] && [ -d "$prefix" ]; then + echo "$prefix" + return 0 + fi + + # Check for llvm-config in PATH + for cmd in "llvm-config-$version" "llvm-config$version"; do + if command -v "$cmd" >/dev/null 2>&1; then + detected=$("$cmd" --version 2>/dev/null | cut -d. -f1) + if [ "$detected" = "$version" ]; then + # Get prefix from llvm-config + "$cmd" --prefix 2>/dev/null + return 0 + fi + fi + done + + # Check default llvm-config + if command -v llvm-config >/dev/null 2>&1; then + detected=$(llvm-config --version 2>/dev/null | cut -d. -f1) + if [ "$detected" = "$version" ]; then + llvm-config --prefix 2>/dev/null + return 0 + fi + fi + + # macOS: Check Homebrew + if [ "$(uname)" = "Darwin" ]; then + brew_prefix="${HOMEBREW_PREFIX:-/opt/homebrew}" + if [ ! -d "$brew_prefix" ]; then + brew_prefix="/usr/local" + fi + + if [ -x "$brew_prefix/opt/llvm@$version/bin/llvm-config" ]; then + echo "$brew_prefix/opt/llvm@$version" + return 0 + fi + + if [ -x "$brew_prefix/opt/llvm/bin/llvm-config" ]; then + detected=$("$brew_prefix/opt/llvm/bin/llvm-config" --version 2>/dev/null | cut -d. -f1) + if [ "$detected" = "$version" ]; then + echo "$brew_prefix/opt/llvm" + return 0 + fi + fi + fi + + return 1 +} + +# Detect available LLVM versions (prefer newer) +detect_llvm() { + for ver in 21 20 19 18; do + if check_llvm_version "$ver" >/dev/null 2>&1; then + echo "$ver" + return 0 + fi + done + return 1 +} + +# Main logic +if [ -n "$FORCE_VERSION" ]; then + case "$FORCE_VERSION" in + 18|19|20|21) + LLVM_VERSION="$FORCE_VERSION" + ;; + *) + echo "Error: Invalid LLVM version '$FORCE_VERSION'" + echo "Supported versions: 18, 19, 20, 21" + exit 1 + ;; + esac +else + echo "Detecting LLVM installation..." + if ! LLVM_VERSION=$(detect_llvm); then + echo "" + echo "Error: No supported LLVM version found." + echo "" + echo "Please install LLVM 18, 19, 20, or 21 and either:" + echo " 1. Add llvm-config to your PATH" + echo " 2. Set LLVM_SYS_XXX_PREFIX environment variable" + echo "" + echo "Installation examples:" + echo " macOS: brew install llvm" + echo " Ubuntu: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 21" + echo " Manual: export LLVM_SYS_211_PREFIX=/path/to/llvm" + exit 1 + fi +fi + +LLVM_PREFIX=$(get_llvm_prefix "$LLVM_VERSION") + +echo "" +echo "Detected LLVM $LLVM_VERSION at: $LLVM_PREFIX" +echo "" + +# Write configuration +cat > "$VERSION_FILE" < = iter::Map< iter::Enumerate>, @@ -15,7 +15,7 @@ pub type Iter<'a, I, K, V> = iter::Map< #[repr(transparent)] pub struct TiMap { /// raw set property - pub raw: IndexMap, + pub raw: IndexMap>, _marker: PhantomData I>, } @@ -38,7 +38,10 @@ impl Clone for TiMap { impl Default for TiMap { fn default() -> Self { - Self { raw: IndexMap::default(), _marker: PhantomData } + Self { + raw: IndexMap::with_hasher(BuildHasherDefault::::default()), + _marker: PhantomData, + } } } @@ -75,7 +78,7 @@ impl TiMap { pub fn with_capacity(cap: usize) -> Self { Self { - raw: IndexMap::with_capacity_and_hasher(cap, RandomState::new()), + raw: IndexMap::with_capacity_and_hasher(cap, BuildHasherDefault::::default()), _marker: PhantomData, } } @@ -177,21 +180,24 @@ where } } -impl From> for TiMap { - fn from(raw: IndexMap) -> Self { +impl From>> for TiMap { + fn from(raw: IndexMap>) -> Self { TiMap { raw, _marker: PhantomData } } } impl FromIterator<(K, V)> for TiMap { fn from_iter>(iter: T) -> Self { - Self { raw: iter.into_iter().collect(), _marker: PhantomData } + let mut map = IndexMap::with_hasher(BuildHasherDefault::::default()); + map.extend(iter); + Self { raw: map, _marker: PhantomData } } } -impl AsRef> for IndexMap { +impl AsRef> for IndexMap> { fn as_ref(&self) -> &TiMap { - let ptr = self as *const IndexMap as *const TiMap; + let ptr = + self as *const IndexMap> as *const TiMap; // safety: this is save because of repr(transparent) unsafe { &*ptr } } diff --git a/lib/typed_indexmap/src/set.rs b/lib/typed_indexmap/src/set.rs index 5bacf9402..8405ef751 100644 --- a/lib/typed_indexmap/src/set.rs +++ b/lib/typed_indexmap/src/set.rs @@ -1,17 +1,18 @@ use std::fmt::Debug; -use std::hash::Hash; +use std::hash::{BuildHasherDefault, Hash}; use std::iter; use std::marker::PhantomData; use std::ops::Index; use indexmap::{Equivalent, IndexSet}; +use rustc_hash::FxHasher; pub type Iter<'a, K, V> = iter::Map>, fn((usize, &'a V)) -> (K, &'a V)>; pub struct TiSet { /// raw set property - pub raw: IndexSet, + pub raw: IndexSet>, _marker: PhantomData K>, } @@ -33,14 +34,17 @@ impl Clone for TiSet { impl Default for TiSet { fn default() -> Self { - Self { raw: IndexSet::default(), _marker: PhantomData } + Self { + raw: IndexSet::with_hasher(BuildHasherDefault::::default()), + _marker: PhantomData, + } } } impl TiSet { pub fn with_capacity(cap: usize) -> TiSet { TiSet { - raw: IndexSet::with_capacity_and_hasher(cap, ahash::RandomState::default()), + raw: IndexSet::with_capacity_and_hasher(cap, BuildHasherDefault::::default()), _marker: PhantomData, } } @@ -174,6 +178,8 @@ where V: Eq + Hash, { fn from_iter>(iter: T) -> Self { - Self { raw: iter.into_iter().collect(), _marker: PhantomData } + let mut set = IndexSet::with_hasher(BuildHasherDefault::::default()); + set.extend(iter); + Self { raw: set, _marker: PhantomData } } } diff --git a/melange/core/src/simulation.rs b/melange/core/src/simulation.rs index 6a7d350bf..f834903a8 100644 --- a/melange/core/src/simulation.rs +++ b/melange/core/src/simulation.rs @@ -91,13 +91,13 @@ impl Circuit { eval_ctx: ExprEvalCtxRef, arena: &Arena, config: SimConfig, - ) -> Result { + ) -> Result> { let mut res = self.setup_simulation(config)?; res.prepare_solver(eval_ctx, arena)?; Ok(res) } - pub fn setup_simulation(&self, config: SimConfig) -> Result { + pub fn setup_simulation(&self, config: SimConfig) -> Result> { let model_data: Box> = self .models() .map(|model| { diff --git a/melange/core/src/veriloga.rs b/melange/core/src/veriloga.rs index ee31ee8c1..a4a8750f7 100644 --- a/melange/core/src/veriloga.rs +++ b/melange/core/src/veriloga.rs @@ -9,8 +9,8 @@ use libc::c_void; use libloading::Library; use log::{debug, error, info, warn}; use openvaf::{ - AbsPathBuf, CompilationDestination, CompilationTermination, LLVMCodeGenOptLevel, LintLevel, - Target, + AbsPathBuf, CompilationDestination, CompilationOpts, CompilationTermination, + LLVMCodeGenOptLevel, LintLevel, Target, }; pub(crate) use osdi_0_4::{ ANALYSIS_AC, ANALYSIS_DC, ANALYSIS_IC, ANALYSIS_NOISE, ANALYSIS_STATIC, ANALYSIS_TRAN, @@ -78,6 +78,7 @@ pub fn compile_va(path: &Utf8Path, opts: &Opts) -> Result LintData` #[derive(Debug, Default, Eq, PartialEq)] pub struct LintRegistry { - lints: IndexMap<&'static str, LintData, ahash::RandomState>, + lints: IndexMap<&'static str, LintData, BuildHasherDefault>, } impl LintRegistry { diff --git a/openvaf/hir/src/db.rs b/openvaf/hir/src/db.rs index e92a237a9..8b4d54464 100644 --- a/openvaf/hir/src/db.rs +++ b/openvaf/hir/src/db.rs @@ -8,7 +8,7 @@ use anyhow::{bail, Result}; use basedb::lints::{Lint, LintLevel}; use basedb::{AbsPathBuf, BaseDB, BaseDatabase, FileId, Vfs, VfsPath, VfsStorage, STANDARD_FLAGS}; use hir_def::db::{HirDefDB, HirDefDatabase, InternDatabase}; -use hir_ty::db::HirTyDatabase; +use hir_ty::db::{HirTyDB, HirTyDatabase}; use parking_lot::RwLock; use salsa::ParallelDatabase; use stdx::Upcast; @@ -16,6 +16,14 @@ use typed_index_collections::TiSlice; use crate::CompilationUnit; +/// Compilation options for the HIR database +#[derive(Debug, Clone, Default)] +pub struct CompilationOpts { + /// Allow analog operators (limexp, ddt, idt) in signal-dependent conditionals. + /// This is non-standard Verilog-A behavior required by some foundry models. + pub allow_analog_in_cond: bool, +} + #[salsa::database(BaseDatabase, InternDatabase, HirDefDatabase, HirTyDatabase)] pub struct CompilationDB { storage: salsa::Storage, @@ -41,6 +49,7 @@ impl CompilationDB { include_dirs: &[AbsPathBuf], macro_flags: &[String], lints: &[(String, LintLevel)], + opts: &CompilationOpts, ) -> Result { let contents = fs::read(&root_file); CompilationDB::new( @@ -49,6 +58,7 @@ impl CompilationDB { include_dirs.iter().map(|path| Ok(VfsPath::from(path.clone()))), macro_flags.iter().map(String::deref), lints.iter().map(|(name, lvl)| (&**name, *lvl)), + opts, ) } @@ -61,6 +71,7 @@ impl CompilationDB { iter::empty(), iter::empty(), iter::empty(), + &CompilationOpts::default(), ) } @@ -74,6 +85,7 @@ impl CompilationDB { include_dirs: impl Iterator>, macro_flags: impl Iterator, lints: impl Iterator, + opts: &CompilationOpts, ) -> Result { let mut vfs = Vfs::default(); vfs.insert_std_lib(); @@ -131,6 +143,7 @@ impl CompilationDB { }; res.set_global_lint_overwrites(root_file, overwrites); + res.set_allow_analog_in_cond(opts.allow_analog_in_cond); Ok(res) } } diff --git a/openvaf/hir/src/lib.rs b/openvaf/hir/src/lib.rs index d446d48c1..9f729bedb 100644 --- a/openvaf/hir/src/lib.rs +++ b/openvaf/hir/src/lib.rs @@ -39,7 +39,7 @@ pub use crate::attributes::AstCache; pub use crate::body::{ AssignmentLhs, Body, BodyRef, ContributeKind, Expr, ExprId, Ref, ResolvedFun, Stmt, StmtId, }; -pub use crate::db::CompilationDB; +pub use crate::db::{CompilationDB, CompilationOpts}; mod attributes; mod body; diff --git a/openvaf/hir/tests/data_tests.rs b/openvaf/hir/tests/data_tests.rs index e3c8e2228..f0e702c6c 100644 --- a/openvaf/hir/tests/data_tests.rs +++ b/openvaf/hir/tests/data_tests.rs @@ -2,7 +2,7 @@ use std::path::Path; use basedb::AbsPathBuf; use expect_test::expect_file; -use hir::CompilationDB; +use hir::{CompilationDB, CompilationOpts}; use mini_harness::{harness, Result}; use stdx::{ignore_dev_tests, ignore_never, is_va_file, openvaf_test_data, project_root}; @@ -10,17 +10,42 @@ fn integration_test(dir: &Path) -> Result { let name = dir.file_name().unwrap().to_str().unwrap().to_lowercase(); let main_file = dir.join(format!("{name}.va")); - let db = - CompilationDB::new_fs(AbsPathBuf::assert(main_file.canonicalize().unwrap()), &[], &[], &[]) - .unwrap(); + let db = CompilationDB::new_fs( + AbsPathBuf::assert(main_file.canonicalize().unwrap()), + &[], + &[], + &[], + &CompilationOpts::default(), + ) + .unwrap(); expect_file![dir.join("frontend.log")].assert_eq(&db.compilation_unit().test_diagnostics(&db)); Ok(()) } fn ui_test(file: &Path) -> Result { - let db = CompilationDB::new_fs(AbsPathBuf::assert(file.canonicalize().unwrap()), &[], &[], &[]) - .unwrap(); + let db = CompilationDB::new_fs( + AbsPathBuf::assert(file.canonicalize().unwrap()), + &[], + &[], + &[], + &CompilationOpts::default(), + ) + .unwrap(); + let actual = db.compilation_unit().test_diagnostics(&db); + expect_file![file.with_extension("log")].assert_eq(&actual); + Ok(()) +} + +fn ui_allow_analog_cond_test(file: &Path) -> Result { + let db = CompilationDB::new_fs( + AbsPathBuf::assert(file.canonicalize().unwrap()), + &[], + &[], + &[], + &CompilationOpts { allow_analog_in_cond: true }, + ) + .unwrap(); let actual = db.compilation_unit().test_diagnostics(&db); expect_file![file.with_extension("log")].assert_eq(&actual); Ok(()) @@ -28,5 +53,6 @@ fn ui_test(file: &Path) -> Result { harness! { Test::from_dir_filtered("integration", &integration_test, &Path::is_dir, &ignore_dev_tests, &project_root().join("integration_tests")), - Test::from_dir_filtered("ui", &ui_test, &is_va_file, &ignore_never, &openvaf_test_data("ui")) + Test::from_dir_filtered("ui", &ui_test, &is_va_file, &ignore_never, &openvaf_test_data("ui")), + Test::from_dir_filtered("ui_allow_analog_cond", &ui_allow_analog_cond_test, &is_va_file, &ignore_never, &openvaf_test_data("ui_allow_analog_cond")) } diff --git a/openvaf/hir_def/Cargo.toml b/openvaf/hir_def/Cargo.toml index b064a3dc2..cb8874444 100644 --- a/openvaf/hir_def/Cargo.toml +++ b/openvaf/hir_def/Cargo.toml @@ -31,6 +31,7 @@ typed-index-collections = "3.1" # Performant collections ahash = "0.8" +rustc-hash = "2.0" indexmap = "2.0" [dev-dependencies] diff --git a/openvaf/hir_def/src/builtin.rs b/openvaf/hir_def/src/builtin.rs index c3a12e939..5729cfb54 100644 --- a/openvaf/hir_def/src/builtin.rs +++ b/openvaf/hir_def/src/builtin.rs @@ -1,7 +1,9 @@ //! Generated by `generate_builtins`, do not edit by hand. -use ahash::RandomState; +use std::hash::BuildHasherDefault; + use indexmap::IndexMap; +use rustc_hash::FxHasher; use syntax::name::{kw, sysfun, Name}; use crate::nameres::ScopeDefItem; @@ -238,7 +240,7 @@ impl BuiltIn { } } } -pub fn insert_builtin_scope(dst: &mut IndexMap) { +pub fn insert_builtin_scope(dst: &mut IndexMap>) { dst.insert(kw::abs, BuiltIn::abs.into()); dst.insert(kw::acos, BuiltIn::acos.into()); dst.insert(kw::acosh, BuiltIn::acosh.into()); @@ -371,7 +373,9 @@ pub fn insert_builtin_scope(dst: &mut IndexMap) dst.insert(kw::slew, BuiltIn::slew.into()); dst.insert(kw::transition, BuiltIn::transition.into()); } -pub fn insert_module_builtin_scope(dst: &mut IndexMap) { +pub fn insert_module_builtin_scope( + dst: &mut IndexMap>, +) { dst.insert(sysfun::mfactor, ParamSysFun::mfactor.into()); dst.insert(sysfun::xposition, ParamSysFun::xposition.into()); dst.insert(sysfun::yposition, ParamSysFun::yposition.into()); diff --git a/openvaf/hir_def/src/nameres.rs b/openvaf/hir_def/src/nameres.rs index 17b1858e4..a49591c3b 100644 --- a/openvaf/hir_def/src/nameres.rs +++ b/openvaf/hir_def/src/nameres.rs @@ -1,3 +1,4 @@ +use std::hash::BuildHasherDefault; use std::ops::{Index, IndexMut}; use std::sync::Arc; @@ -5,6 +6,7 @@ use arena::{Arena, Idx}; use basedb::{AstIdMap, ErasedAstId, FileId}; use indexmap::IndexMap; use once_cell::sync::Lazy; +use rustc_hash::FxHasher; use stdx::{impl_display, impl_from, impl_from_typed}; use syntax::name::{kw, Name}; use syntax::{AstNode, Parse, SourceFile, TextRange}; @@ -271,18 +273,19 @@ impl_from_typed! { for ScopeOrigin } -static BUILTIN_SCOPE: Lazy> = Lazy::new(|| { - let mut scope = IndexMap::default(); - insert_builtin_scope(&mut scope); - scope -}); +static BUILTIN_SCOPE: Lazy>> = + Lazy::new(|| { + let mut scope = IndexMap::default(); + insert_builtin_scope(&mut scope); + scope + }); #[derive(PartialEq, Eq, Clone, Debug)] pub struct Scope { pub origin: ScopeOrigin, parent: Option, - pub children: IndexMap, - pub declarations: IndexMap, + pub children: IndexMap>, + pub declarations: IndexMap>, } impl DefMap { diff --git a/openvaf/hir_lower/Cargo.toml b/openvaf/hir_lower/Cargo.toml index 84c7e7454..af3fffa08 100644 --- a/openvaf/hir_lower/Cargo.toml +++ b/openvaf/hir_lower/Cargo.toml @@ -22,6 +22,7 @@ mir = {version = "0.0.0", path = "../mir" } mir_build = {version = "0.0.0", path = "../mir_build" } ahash = "0.8" +rustc-hash = "2.0" typed-index-collections = "3.1" indexmap = "2.0" lasso = {version = "0.7", features = ["ahash"]} diff --git a/openvaf/hir_lower/src/lib.rs b/openvaf/hir_lower/src/lib.rs index 6dc719f01..1f54f72e6 100644 --- a/openvaf/hir_lower/src/lib.rs +++ b/openvaf/hir_lower/src/lib.rs @@ -1,3 +1,4 @@ +use std::hash::BuildHasherDefault; use std::iter::FilterMap; use ahash::{AHashMap, AHashSet}; @@ -11,6 +12,7 @@ use lasso::Rodeo; use mir::builder::InstBuilder; use mir::{DataFlowGraph, FuncRef, Function, Inst, KnownDerivatives, Param, Unknown, Value}; use mir_build::{FunctionBuilder, FunctionBuilderContext, RetBuilder}; +use rustc_hash::FxHasher; use stdx::packed_option::PackedOption; use stdx::{impl_debug_display, impl_idx_from}; use typed_index_collections::TiVec; @@ -220,13 +222,13 @@ impl_debug_display! { /// A mapping between abstractions used in the MIR and the corresponding /// information from the HIR. This allows the MIR to remain independent of the frontend/HIR -#[derive(Debug, PartialEq, Default, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct HirInterner { - pub outputs: IndexMap, ahash::RandomState>, + pub outputs: IndexMap, BuildHasherDefault>, pub params: TiMap, pub callbacks: TiSet, pub callback_uses: TiVec>, - pub tagged_reads: IndexMap, + pub tagged_reads: IndexMap>, pub implicit_equations: TiVec, pub lim_state: TiMap>, } @@ -236,6 +238,20 @@ pub type LiveParams<'a> = FilterMap< fn((Param, (&'a ParamKind, &'a Value))) -> Option<(Param, &'a ParamKind, Value)>, >; +impl Default for HirInterner { + fn default() -> Self { + Self { + outputs: IndexMap::with_hasher(BuildHasherDefault::::default()), + params: TiMap::default(), + callbacks: TiSet::default(), + callback_uses: TiVec::default(), + tagged_reads: IndexMap::with_hasher(BuildHasherDefault::::default()), + implicit_equations: TiVec::default(), + lim_state: TiMap::default(), + } + } +} + impl HirInterner { fn contains_ddx( ddx_calls: &mut AHashMap, HybridBitSet)>, diff --git a/openvaf/hir_lower/src/parameters.rs b/openvaf/hir_lower/src/parameters.rs index c19677010..04975ac62 100644 --- a/openvaf/hir_lower/src/parameters.rs +++ b/openvaf/hir_lower/src/parameters.rs @@ -44,6 +44,9 @@ impl CmpOps { } } +// Instance parameter value in eval() is read always from instance, even if it is not given in the instance (bad) +// Instance parameter value in instance setup is read from instance, if not available there then it is read from model +// Storing the default values is performed in setup.rs at MIR->IR translation. impl HirInterner { pub fn insert_param_init( &mut self, @@ -82,6 +85,7 @@ impl HirInterner { let (then_src, else_src) = ctx.make_cond(param_given, |ctx, param_given| { if param_given { + // Builds the if block for the case when param is given if build_stores { let exit = ctx.create_block(); let mut ctx = BodyLoweringCtx { ctx, body: body.borrow(), path: "" }; @@ -107,6 +111,7 @@ impl HirInterner { } param_val } else { + // Builds the else block for the case when param is not given let default_val = ctx.lower_expr_body(body.borrow(), 0); if build_stores { let exit = ctx.create_block(); diff --git a/openvaf/hir_lower/tests/data_tests.rs b/openvaf/hir_lower/tests/data_tests.rs index 3c2a9afa8..1af54c550 100644 --- a/openvaf/hir_lower/tests/data_tests.rs +++ b/openvaf/hir_lower/tests/data_tests.rs @@ -2,7 +2,7 @@ use std::path::Path; use basedb::AbsPathBuf; use expect_test::expect_file; -use hir::CompilationDB; +use hir::{CompilationDB, CompilationOpts}; use hir_lower::{MirBuilder, PlaceKind}; use lasso::Rodeo; use mini_harness::{harness, Result}; @@ -29,14 +29,27 @@ fn lower(db: &CompilationDB) { fn integration_test(dir: &Path) -> Result { let name = dir.file_name().unwrap().to_str().unwrap().to_lowercase(); let main_file = dir.join(format!("{name}.va")).canonicalize().unwrap(); - let db = CompilationDB::new_fs(AbsPathBuf::assert(main_file), &[], &[], &[]).unwrap(); + let db = CompilationDB::new_fs( + AbsPathBuf::assert(main_file), + &[], + &[], + &[], + &CompilationOpts::default(), + ) + .unwrap(); lower(&db); Ok(()) } fn mir_test(file: &Path) -> Result { - let db = CompilationDB::new_fs(AbsPathBuf::assert(file.canonicalize().unwrap()), &[], &[], &[]) - .unwrap(); + let db = CompilationDB::new_fs( + AbsPathBuf::assert(file.canonicalize().unwrap()), + &[], + &[], + &[], + &CompilationOpts::default(), + ) + .unwrap(); assert_eq!(db.compilation_unit().test_diagnostics(&db), ""); let module = db.compilation_unit().modules(&db)[0]; diff --git a/openvaf/hir_ty/src/db.rs b/openvaf/hir_ty/src/db.rs index 99178388a..6a5c93ac3 100644 --- a/openvaf/hir_ty/src/db.rs +++ b/openvaf/hir_ty/src/db.rs @@ -44,6 +44,9 @@ pub trait HirTyDB: HirDefDB + Upcast { #[salsa::input] fn known_limit_functions(&self) -> Option>; + + #[salsa::input] + fn allow_analog_in_cond(&self) -> bool; } fn nature_attr_ty(db: &dyn HirTyDB, id: NatureAttrId) -> Option { diff --git a/openvaf/hir_ty/src/validation/body.rs b/openvaf/hir_ty/src/validation/body.rs index 255173522..4e6a6a344 100644 --- a/openvaf/hir_ty/src/validation/body.rs +++ b/openvaf/hir_ty/src/validation/body.rs @@ -120,6 +120,7 @@ impl BodyValidationDiagnostic { non_const_dominator: Box::default(), non_trivial_branches: HashSet::default(), trivial_probes: HashMap::default(), + allow_analog_in_cond: db.allow_analog_in_cond(), }; for stmt in &*body.entry_stmts { @@ -160,8 +161,12 @@ impl BodyCtx { matches!(self, Self::AnalogBlock | Self::Conditional) } - fn allow_analog_operator(self) -> bool { - matches!(self, Self::AnalogBlock) + fn allow_analog_operator(self, allow_in_cond: bool) -> bool { + match self { + Self::AnalogBlock => true, + Self::Conditional if allow_in_cond => true, + _ => false, + } } fn allow_analysis_fun(self) -> bool { @@ -195,6 +200,7 @@ struct BodyValidator<'a> { non_const_dominator: Box<[ExprId]>, non_trivial_branches: HashSet, trivial_probes: HashMap>, + allow_analog_in_cond: bool, } impl BodyValidator<'_> { @@ -574,7 +580,7 @@ impl ExprValidator<'_, '_> { non_const_dominator: sel.parent.non_const_dominator.clone(), }, expr, - self.parent.ctx.allow_analog_operator(), + self.parent.ctx.allow_analog_operator(self.parent.allow_analog_in_cond), ) } diff --git a/openvaf/linker/src/lib.rs b/openvaf/linker/src/lib.rs index 7c1c1a533..d0a105bd2 100644 --- a/openvaf/linker/src/lib.rs +++ b/openvaf/linker/src/lib.rs @@ -11,6 +11,16 @@ use camino::{Utf8Path, Utf8PathBuf}; use cc::windows_registry; use target::spec::{LinkerFlavor, Target}; +/// Get the LLVM prefix from environment variables. +/// Checks in order: LLVM 21.1, 20.1, 19.1, 18.1 (newest first). +fn get_llvm_prefix() -> Option { + env::var("LLVM_SYS_211_PREFIX") + .or_else(|_| env::var("LLVM_SYS_201_PREFIX")) + .or_else(|_| env::var("LLVM_SYS_191_PREFIX")) + .or_else(|_| env::var("LLVM_SYS_181_PREFIX")) + .ok() +} + pub fn link( path: Option, target: &Target, @@ -87,6 +97,21 @@ fn linker_with_args<'a>( // this environment variable too in recent versions. cmd.cmd().env("ZERO_AR_DATE", "1"); + // On macOS, we always need to add the SDK sysroot for linking against system libraries + if flavor == LinkerFlavor::Ld64 && target.options.is_like_osx { + // Detect SDK path using xcrun + if let Ok(output) = std::process::Command::new("xcrun").args(["--show-sdk-path"]).output() { + if output.status.success() { + if let Ok(sdk_path) = String::from_utf8(output.stdout) { + let sdk_path = sdk_path.trim(); + if !sdk_path.is_empty() { + cmd.args(["-syslibroot", sdk_path]); + } + } + } + } + } + cmd.add_pre_link_args(target, flavor); add_objects(&mut *cmd); @@ -145,7 +170,17 @@ fn get_linker<'a>( let path = path.unwrap_or_else(|| { if is_msys2_environment() { "gcc".into() + } else if flavor == LinkerFlavor::Ld64 { + // For macOS, prefer LLVM's ld64.lld if available + if let Some(llvm_prefix) = get_llvm_prefix() { + let llvm_lld = PathBuf::from(llvm_prefix).join("bin/ld64.lld"); + if llvm_lld.exists() { + return llvm_lld; + } + } + "ld".into() } else { + // On macOS and Linux, use system ld "ld".into() } }); diff --git a/openvaf/mir/Cargo.toml b/openvaf/mir/Cargo.toml index 7b36c947e..591cd3d02 100644 --- a/openvaf/mir/Cargo.toml +++ b/openvaf/mir/Cargo.toml @@ -16,6 +16,7 @@ list_pool = {version = "0.0.0" , path = "../../lib/list_pool"} typed-index-collections = "3.1" lasso = {version = "0.7", features = ["ahash"]} ahash = "0.8" +rustc-hash = "2.0" bitset = {version = "0.0.0", path = "../../lib/bitset" } typed_indexmap = { version = "0.0.0", path = "../../lib/typed_indexmap" } dot = "0.1.4" diff --git a/openvaf/mir/src/dfg/uses.rs b/openvaf/mir/src/dfg/uses.rs index e2a8de894..0d46b14f4 100644 --- a/openvaf/mir/src/dfg/uses.rs +++ b/openvaf/mir/src/dfg/uses.rs @@ -63,6 +63,7 @@ impl UseCursor { Some(res) } + // creates a UseIter from UseCursor pub fn into_iter>(self, dfg: &D) -> UseIter<'_> { UseIter { cursor: self, dfg: dfg.borrow() } } @@ -80,12 +81,14 @@ impl From> for UseCursor { } } +// Use iterator based on UseCursor #[derive(Clone)] pub struct UseIter<'a> { pub cursor: UseCursor, dfg: &'a DfgValues, } +// Iterator trait definition for UseIter impl Iterator for UseIter<'_> { type Item = Use; @@ -165,22 +168,29 @@ impl DfgValues { (self.uses[use_].parent, self.uses[use_].parent_idx) } + /// Creates a new use of Value val that occurs at Inst parent, operand index parent_ndx pub fn make_use(&mut self, val: Value, parent: Inst, parent_idx: u16) -> Use { + // Get Value data for val let def = &mut self.defs[val]; let use_ = self.uses.push_and_get_key(UseData { parent, parent_idx, attached: true, - next: def.uses_head, - prev: None.into(), + next: def.uses_head, // Add to the chain of uses of val + prev: None.into(), // Add at the beginning of the chain }); if let Some(old_head) = def.uses_head.expand() { + // This value already has a list of uses + // Set old head use's prev use index to the new use index self.uses[old_head].prev = use_.into(); } else { + // This value has no uses list + // Set tail use index in Value data to the new use index def.uses_tail = use_.into(); } + // Set head use index in Value data to the new use index def.uses_head = use_.into(); use_ } @@ -319,6 +329,7 @@ impl DataFlowGraph { self.attach_use(use_, val); } + // Returns an iterator to instruction's uses pub fn inst_uses(&self, inst: Inst) -> InstUseIter { let mut vals = self.inst_results(inst).iter(); let cursor = vals.next().map(|res| self.uses_head_cursor(*res)).unwrap_or_default(); diff --git a/openvaf/mir/src/flowgraph/transversal.rs b/openvaf/mir/src/flowgraph/transversal.rs index 9a77e605a..ecb177d9a 100644 --- a/openvaf/mir/src/flowgraph/transversal.rs +++ b/openvaf/mir/src/flowgraph/transversal.rs @@ -120,8 +120,8 @@ impl<'lt> Iterator for Postorder<'lt> { } */ -// Pascal's Postorder was wrong. Did not work for loops. -// This one passses all tests, except for HiSIMHV (has loops that we are trying to fix). +// Pascal's Postorder was wrong. Did not work for loops. +// This one passses all tests, except for HiSIMHV (has loops that we are trying to fix). // TODO: rewrite this without using recursion pub struct Postorder<'a> { cfg: &'a ControlFlowGraph, @@ -136,7 +136,7 @@ impl<'a> Postorder<'a> { cfg, visited: BitSet::new_empty(cfg.data.len()), result: SmallVec::new(), - index: 0, + index: 0, }; po.dfs(root); diff --git a/openvaf/mir/src/serialize.rs b/openvaf/mir/src/serialize.rs index 4dc09fe49..bfe158574 100644 --- a/openvaf/mir/src/serialize.rs +++ b/openvaf/mir/src/serialize.rs @@ -1,8 +1,9 @@ use std::fmt::{self, Display, Write}; +use std::hash::BuildHasherDefault; -use ahash::RandomState; use indexmap::{IndexMap, IndexSet}; use lasso::Rodeo; +use rustc_hash::FxHasher; use crate::{ Block, Const, ControlFlowGraph, Function, Inst, InstructionData, Param, Value, ValueDef, @@ -34,15 +35,15 @@ impl Function { mut param_name: impl FnMut(Param) -> (&'static str, String), outputs: impl Iterator, ) -> String { - let mut inst_map = IndexSet::default(); - let bb_map = cfg + let mut inst_map: IndexSet> = IndexSet::default(); + let bb_map: IndexSet> = cfg .reverse_postorder(self) .map(|bb| { inst_map.extend(self.layout.block_insts(bb)); bb }) .collect(); - let mut val_map: IndexSet = IndexSet::default(); + let mut val_map: IndexSet> = IndexSet::default(); for &inst in inst_map.iter() { if let InstructionData::PhiNode(phi) = &self.dfg.insts[inst] { val_map.extend(self.dfg.phi_edges(phi).map(|(_, val)| val)) @@ -99,9 +100,9 @@ impl Function { struct Serializer<'a> { cfg: &'a ControlFlowGraph, func: &'a Function, - inst_map: &'a IndexSet, - bb_map: &'a IndexSet, - val_map: &'a IndexSet, + inst_map: &'a IndexSet>, + bb_map: &'a IndexSet>, + val_map: &'a IndexSet>, inputs: &'a IndexMap<&'static str, Vec<(String, usize)>>, intern: &'a Rodeo, buf: String, diff --git a/openvaf/mir/src/validation.rs b/openvaf/mir/src/validation.rs index a670bea0d..9f8b86875 100644 --- a/openvaf/mir/src/validation.rs +++ b/openvaf/mir/src/validation.rs @@ -7,6 +7,7 @@ impl Function { cfg.compute(self); let mut dom_tree = DominatorTree::default(); dom_tree.compute(self, &cfg, true, false, true); + for &bb in dom_tree.cfg_postorder() { for (seq_num, inst) in self.layout.block_insts(bb).enumerate() { let mut valid_inst = true; @@ -27,6 +28,10 @@ impl Function { let edge_def = self.dfg.value_def(edge_val); if let Some(arg_def) = edge_def.inst() { if let Some(edge_val_bb) = self.layout.inst_block(arg_def) { + // if !dom_tree.dominates(edge_bb, edge_val_bb) { + // eprintln!("{edge_val} doesn't dominate use ({edge_val_bb} !dom {edge_bb})"); + // valid_inst = false; + // } assert!( dom_tree.dominates(edge_bb, edge_val_bb), "{edge_val} doesn't dominate use ({edge_val_bb} !dom {edge_bb})" @@ -49,6 +54,10 @@ impl Function { .unwrap(); assert!(arg_seq_num < seq_num, "{arg} doesn't dominate use"); } else { + // if !dom_tree.dominates(bb, arg_bb) { + // eprintln!("{arg} doesn't dominate use ({arg_bb} !dom {bb})"); + // valid_inst = false; + // } assert!( dom_tree.dominates(bb, arg_bb), "{arg} doesn't dominate use ({arg_bb} !dom {bb})" diff --git a/openvaf/mir_autodiff/Cargo.toml b/openvaf/mir_autodiff/Cargo.toml index 42382dfcf..5aa8ff9fd 100644 --- a/openvaf/mir_autodiff/Cargo.toml +++ b/openvaf/mir_autodiff/Cargo.toml @@ -21,6 +21,7 @@ arena = { version = "0.0.0", path = "../../lib/arena" } indexmap = "2.0" typed-index-collections = "3.1" ahash = "0.8" +rustc-hash = "2.0" [dev-dependencies] expect-test = "1.4" diff --git a/openvaf/mir_autodiff/src/builder.rs b/openvaf/mir_autodiff/src/builder.rs index 0d608baa5..2d3632466 100644 --- a/openvaf/mir_autodiff/src/builder.rs +++ b/openvaf/mir_autodiff/src/builder.rs @@ -1,3 +1,5 @@ +use std::collections::HashMap; +use std::hash::BuildHasherDefault; use std::ops::Range; use ahash::AHashMap; @@ -8,6 +10,7 @@ use mir::{ Block, Function, Inst, InstructionData, Opcode, SourceLoc, Unknown, Value, F_LOG10_E, F_ONE, F_TWO, F_ZERO, }; +use rustc_hash::FxHasher; use stdx::iter::zip; use stdx::packed_option::{PackedOption, ReservedValue}; @@ -22,8 +25,8 @@ pub fn build_derivatives( intern: &mut DerivativeIntern, live_derivatives: &LiveDerivatives, post_order: &[Block], -) -> AHashMap<(Value, Unknown), Value> { - let derivative_values: AHashMap<(Value, Unknown), Value> = +) -> HashMap<(Value, Unknown), Value, BuildHasherDefault> { + let derivative_values: HashMap<(Value, Unknown), Value, BuildHasherDefault> = intern.unknowns.iter_enumerated().map(|(unknown, &val)| ((val, unknown), F_ONE)).collect(); let mut known_values = BitSet::new_empty(func.dfg.num_values()); @@ -56,7 +59,7 @@ pub(crate) struct DerivativeBuilder<'a, 'u> { live_derivatives: &'a LiveDerivatives, intern: &'a mut DerivativeIntern<'u>, - derivative_values: AHashMap<(Value, Unknown), Value>, + derivative_values: HashMap<(Value, Unknown), Value, BuildHasherDefault>, known_values: BitSet, dst: (Inst, SourceLoc), new_block: Option, @@ -319,7 +322,60 @@ impl<'a, 'u> DerivativeBuilder<'a, 'u> { let unknown = self.intern.get_unknown(derivative); self.derivative_values.insert((prev_order, unknown), val); } - + /* + // Before calling insert_conversions, ensure any derivative values it will + // access that are defined in calculate_derivative_block have phi nodes. + // This fixes dominance violations when chain rule conversions reference + // intermediate derivatives computed in the conditional block. + if let Some(conversion) = self.live_derivatives.conversions.get(&inst) { + // TODO: maybe make values_to_phi a set for faster contains() + let values_to_phi: Vec<_> = conversion + .iter() + .flat_map(|chain_rule| { + let outer = + self.derivative_of(chain_rule.val, chain_rule.outer_derivative); + let inner = self.derivative_of( + chain_rule.inner_derivative.0, + chain_rule.inner_derivative.1, + ); + [outer, inner] + }) + .filter(|&val| { + if val == F_ZERO { + return false; + } + // Check if value is defined in calculate_derivative_block + if let Some(def_inst) = self.func.dfg.value_def(val).inst() { + self.func.layout.inst_block(def_inst) + == Some(calculate_derivative_block) + } else { + false + } + }) + .collect(); + + // Create phis for these values and update derivative_values + // We need to find the keys that map to these values + let entries_to_update: Vec<_> = self + .derivative_values + .iter() + .filter_map(|(&key, &val)| { + if values_to_phi.contains(&val) { + Some((key, val)) + } else { + None + } + }) + .collect(); + + for (key, val) in entries_to_update { + let checked_val = self + .ins() + .phi(&[(old_block, F_ZERO), (calculate_derivative_block, val)]); + self.derivative_values.insert(key, checked_val); + } + } + */ self.insert_conversions(inst); self.new_block.take(); } @@ -448,7 +504,7 @@ impl<'a, 'u> DerivativeBuilder<'a, 'u> { fn derivative_of_( intern: &DerivativeIntern, - derivative_values: &AHashMap<(Value, Unknown), Value>, + derivative_values: &HashMap<(Value, Unknown), Value, BuildHasherDefault>, mut val: Value, derivative: Derivative, ) -> Value { diff --git a/openvaf/mir_autodiff/src/lib.rs b/openvaf/mir_autodiff/src/lib.rs index 1de40e026..ccd29d988 100644 --- a/openvaf/mir_autodiff/src/lib.rs +++ b/openvaf/mir_autodiff/src/lib.rs @@ -4,12 +4,15 @@ mod live_derivatives; mod postorder; mod subgraph; -use ahash::AHashMap; +use std::collections::HashMap; +use std::hash::BuildHasherDefault; + pub use builder::build_derivatives; pub use live_derivatives::LiveDerivatives; use mir::{ DataFlowGraph, DominatorTree, Function, Inst, InstructionData, KnownDerivatives, Opcode, Value, }; +use rustc_hash::FxHasher; use crate::intern::{Derivative, DerivativeIntern}; @@ -18,7 +21,7 @@ pub fn auto_diff( dom_tree: &DominatorTree, derivatives: &KnownDerivatives, extra_derivatives: &[(Value, mir::Unknown)], -) -> AHashMap<(Value, mir::Unknown), Value> { +) -> HashMap<(Value, mir::Unknown), Value, BuildHasherDefault> { let func = func.as_mut(); let mut intern = DerivativeIntern::new(derivatives); let live_derivative = LiveDerivatives::build(func, &mut intern, extra_derivatives, dom_tree); diff --git a/openvaf/mir_autodiff/src/live_derivatives.rs b/openvaf/mir_autodiff/src/live_derivatives.rs index cb594f418..82f16700a 100644 --- a/openvaf/mir_autodiff/src/live_derivatives.rs +++ b/openvaf/mir_autodiff/src/live_derivatives.rs @@ -65,6 +65,7 @@ impl<'a, 'b> LiveDerivativeBuilder<'a, 'b> { let mut post_order = Postorder::from_parts(&self.func.dfg, take(&mut self.post_order_parts), self.intern); + // Find all instructions that depend on unknowns for (unknown, param) in self.intern.unknowns.iter_enumerated() { post_order.populate(*param); post_order.traverse_successor(); @@ -77,7 +78,7 @@ impl<'a, 'b> LiveDerivativeBuilder<'a, 'b> { self.post_order_parts = post_order.into_parts(); } - /// This function deterimes where a derivative (of higher order) is reachable in the DFG. + /// This function determines where a derivative (of higher order) is reachable in the DFG. /// If a derivative is not reachable at a certain instruction it can be assumed that its value is 0 here. /// The results are stored in `self.reachable_derivatives`. /// @@ -144,6 +145,7 @@ impl<'a, 'b> LiveDerivativeBuilder<'a, 'b> { self.post_order_parts = post_order.into_parts(); } + /// Add all instructions that depend on unknowns to workqueue fn initial_live_derivative_workque(&mut self) -> WorkQueue { let mut post_order = Postorder::from_parts(&self.func.dfg, take(&mut self.post_order_parts), self.intern); @@ -177,6 +179,8 @@ impl<'a, 'b> LiveDerivativeBuilder<'a, 'b> { let func = self.func; while let Some(inst) = workqueue.pop() { let mut dst = self.live_derivatives.compute_inst(inst, func, self.intern); + + // Handle Call (ddx) if let InstructionData::Call { func_ref, .. } = func.dfg.insts[inst] { if self.intern.ddx_calls.contains_key(&func_ref) { let old = dst.clone(); @@ -205,12 +209,19 @@ impl<'a, 'b> LiveDerivativeBuilder<'a, 'b> { } } + // Do we have some derivatives for instruction inst if !dst.is_empty() { + // Make sure there is a row for inst in live_derivatives let old = self.live_derivatives.mat.ensure_row(inst); + // If the derivatives list for inst changed if old != &dst { + // Go through arguments of inst for val in func.dfg.instr_args(inst) { + // Find the instruction where the argument is assigned if let Some(inst) = func.dfg.value_def(*val).inst() { + // Is it in the list of visited instructions (the ones that were initially added to the workqueue) if self.visited.contains(inst) { + // Add instruction where argument is assigned to the workqueue workqueue.insert(inst); } } @@ -221,7 +232,7 @@ impl<'a, 'b> LiveDerivativeBuilder<'a, 'b> { } } - /// This function strip unneeded live derivatives by taking an intersection with the reachable + /// This function strips unneeded live derivatives by taking an intersection with the reachable /// derivatives fn strip_unneeded_derivatives(&mut self) { let mut reachable_derivatives = take(&mut self.reachable_derivatives); @@ -251,6 +262,18 @@ pub struct LiveDerivatives { } impl LiveDerivatives { + fn print_d_matrix(builder: &LiveDerivativeBuilder, mat: &SparseBitMatrix) { + for inst in mat.rows() { + print!("{:?} -> {:?} : ", inst, builder.func.dfg.inst_results(inst)); + for d in mat.iter(inst) { + let u = builder.intern.get_unknown(d); + let v = builder.intern.unknowns[u]; + print!("{:?} ", v); + } + println!(); + } + } + pub fn build( func: &Function, intern: &mut DerivativeIntern, @@ -258,13 +281,23 @@ impl LiveDerivatives { dom_tree: &DominatorTree, ) -> LiveDerivatives { let mut builder = LiveDerivativeBuilder::new(func, intern); + + // Mark all instructions that have a nonzero derivative wrt. unknowns in a sparse bit matrix reachable_derivatives builder.populate_reachable_unknowns(); + + // Add extra derivatives to live_derivatives builder.insert_extra_derivative(extra_derivatives); + + // Solve for all possible live_derivatives let mut workqueue = builder.initial_live_derivative_workque(); builder.live_derivative_fixpoint(&mut workqueue); + + // Keep only those live_derivatives that are in reachable_derivatives builder.strip_unneeded_derivatives(); + let (mut res, buf) = builder.finish(); + // Optimize common subgraphs res.run_subgraph_opt(func, intern, extra_derivatives, dom_tree, buf); res @@ -281,10 +314,16 @@ impl LiveDerivatives { unknowns: &DerivativeIntern, ) -> HybridBitSet { let mut dst = HybridBitSet::new_empty(); + // Go through all instruction results for val in func.dfg.inst_results(inst) { + // For each result go through its uses for use_ in func.dfg.uses(*val) { + // Get instruction (user) where a result is used let user = func.dfg.use_to_operand(use_).0; + // Get row corresponding to user, columns are derivatives if let Some(row) = self.mat.row(user) { + // Compute union of dst and row + // Whatever derivatives are in the row (user) become also derivatives of inst dst.union(row, unknowns.num_derivatives()); } } diff --git a/openvaf/mir_autodiff/src/postorder.rs b/openvaf/mir_autodiff/src/postorder.rs index ec8c4caa6..331af26f4 100644 --- a/openvaf/mir_autodiff/src/postorder.rs +++ b/openvaf/mir_autodiff/src/postorder.rs @@ -62,6 +62,7 @@ impl<'a, 'b, 'c> Postorder<'a, 'b, 'c> { pub fn clear(&mut self) { self.visited.clear(); + // self.visit_stack.clear(); } pub fn traverse_successor(&mut self) { diff --git a/openvaf/mir_autodiff/src/subgraph.rs b/openvaf/mir_autodiff/src/subgraph.rs index d94b8a47a..9f5cc1bfc 100644 --- a/openvaf/mir_autodiff/src/subgraph.rs +++ b/openvaf/mir_autodiff/src/subgraph.rs @@ -1,8 +1,10 @@ +use std::hash::BuildHasherDefault; use std::mem::{replace, take}; use bitset::{BitSet, HybridBitSet, SparseBitSet}; use indexmap::IndexMap; use mir::{Block, DominatorTree, Function, Inst, Opcode, Unknown, Value, ValueDef}; +use rustc_hash::FxHasher; use crate::intern::{Derivative, DerivativeInfo, DerivativeIntern}; use crate::{zero_derivative, ChainRule, LiveDerivatives}; @@ -24,7 +26,7 @@ struct SubGraphExplorer<'a, 'b> { saved_insts: i32, completed_subgraphs: Vec>, - derivative_map: IndexMap, + derivative_map: IndexMap>, } impl<'a, 'b> SubGraphExplorer<'a, 'b> { @@ -108,6 +110,11 @@ impl<'a, 'b> SubGraphExplorer<'a, 'b> { self.curr_subgraph.insert(inst); while let Some(inst) = self.workqueue.pop() { + // Do not include phis in subgraphs. Stop at phi. + if self.func.dfg.insts[inst].is_phi() { + continue; + } + if zero_derivative(&self.func.dfg, inst) || self.func.dfg.insts[inst].opcode() == Opcode::Call { diff --git a/openvaf/mir_llvm/Cargo.toml b/openvaf/mir_llvm/Cargo.toml index 32e930b11..79bbb3d48 100644 --- a/openvaf/mir_llvm/Cargo.toml +++ b/openvaf/mir_llvm/Cargo.toml @@ -8,9 +8,18 @@ license = "GPL-3.0" [lib] doctest = false +[features] +# No default - user must specify --features llvm18/llvm19/llvm20/llvm21 +llvm18 = ["dep:llvm-sys-181"] +llvm19 = ["dep:llvm-sys-191"] +llvm20 = ["dep:llvm-sys-201"] +llvm21 = ["dep:llvm-sys-211"] [dependencies] -llvm-sys = {version="181.1.1", features=["prefer-dynamic"]} +llvm-sys-181 = { package = "llvm-sys", version = "181.2.0", features = ["prefer-dynamic"], optional = true } +llvm-sys-191 = { package = "llvm-sys", version = "191.0.0", features = ["prefer-dynamic"], optional = true } +llvm-sys-201 = { package = "llvm-sys", version = "201.0.1", features = ["prefer-dynamic"], optional = true } +llvm-sys-211 = { package = "llvm-sys", version = "211.0.0", features = ["prefer-dynamic"], optional = true } #target-lexicon = "0.12" mir = { version = "0.0.0", path = "../mir" } target = { version = "0.0.0", path = "../target" } diff --git a/openvaf/mir_llvm/src/context.rs b/openvaf/mir_llvm/src/context.rs index 303e8b0db..363bf2fd5 100644 --- a/openvaf/mir_llvm/src/context.rs +++ b/openvaf/mir_llvm/src/context.rs @@ -4,7 +4,9 @@ use std::ptr::NonNull; use ahash::AHashMap; use lasso::{Rodeo, Spur}; -use libc::{c_char, c_uint}; +use libc::c_char; +#[cfg(feature = "llvm18")] +use libc::c_uint; use llvm_sys::bit_reader::LLVMParseBitcodeInContext2; //use llvm_sys::LLVMBool; // For False, if applicable use llvm_sys::core::{LLVMCreateMemoryBufferWithMemoryRange, LLVMGetNamedFunction}; @@ -107,6 +109,8 @@ impl<'a, 'll> CodegenCx<'a, 'll> { // assert!(!val.contains(&b'\0')); // val.push(b'\0'); + // LLVM 18 uses LLVMConstStringInContext, LLVM 19+ uses LLVMConstStringInContext2 + #[cfg(feature = "llvm18")] let val = unsafe { llvm_sys::core::LLVMConstStringInContext( NonNull::from(self.llcx).as_ptr(), @@ -115,6 +119,15 @@ impl<'a, 'll> CodegenCx<'a, 'll> { 0, ) }; + #[cfg(any(feature = "llvm19", feature = "llvm20", feature = "llvm21"))] + let val = unsafe { + llvm_sys::core::LLVMConstStringInContext2( + NonNull::from(self.llcx).as_ptr(), + val.as_ptr() as *const c_char, + val.len(), + 0, + ) + }; let sym = self.generate_local_symbol_name("str"); let ty = self.val_ty(unsafe { &*val }); let global = self diff --git a/openvaf/mir_llvm/src/intrinsics.rs b/openvaf/mir_llvm/src/intrinsics.rs index d5cc92bb9..f04fd44af 100644 --- a/openvaf/mir_llvm/src/intrinsics.rs +++ b/openvaf/mir_llvm/src/intrinsics.rs @@ -97,7 +97,7 @@ impl<'a, 'll> CodegenCx<'a, 'll> { variadic: bool, ) -> (&'ll Type, &'ll Value) { let fn_ty = - if variadic { self.ty_variadic_func(&[], ret) } else { self.ty_func(args, ret) }; + if variadic { self.ty_variadic_func(args, ret) } else { self.ty_func(args, ret) }; let f = self.get_func_by_name(name).unwrap_or_else(|| self.declare_ext_fn(name, fn_ty)); self.intrinsics.borrow_mut().insert(name, (fn_ty, f)); (fn_ty, f) diff --git a/openvaf/mir_llvm/src/lib.rs b/openvaf/mir_llvm/src/lib.rs index 806a15670..f300c979b 100644 --- a/openvaf/mir_llvm/src/lib.rs +++ b/openvaf/mir_llvm/src/lib.rs @@ -1,3 +1,13 @@ +// Re-export the correct llvm-sys version based on feature flags +#[cfg(feature = "llvm18")] +extern crate llvm_sys_181 as llvm_sys; +#[cfg(feature = "llvm19")] +extern crate llvm_sys_191 as llvm_sys; +#[cfg(feature = "llvm20")] +extern crate llvm_sys_201 as llvm_sys; +#[cfg(feature = "llvm21")] +extern crate llvm_sys_211 as llvm_sys; + use std::error::Error; use std::ffi::{CStr, CString}; use std::fmt::{self, Debug, Display, Formatter}; @@ -82,7 +92,8 @@ impl Drop for LLVMString { } use llvm_sys::core::{LLVMGetDiagInfoDescription, LLVMGetDiagInfoSeverity}; -use llvm_sys::target_machine::{LLVMCodeGenOptLevel, LLVMGetHostCPUFeatures, LLVMGetHostCPUName}; +pub use llvm_sys::target_machine::LLVMCodeGenOptLevel; +use llvm_sys::target_machine::{LLVMGetHostCPUFeatures, LLVMGetHostCPUName}; use target::spec::Target; mod builder; @@ -98,6 +109,7 @@ mod tests; pub use builder::{Builder, BuilderVal, MemLoc}; pub use callbacks::{BuiltCallbackFun, CallbackFun, InlineCallbackBuilder}; pub use context::CodegenCx; + pub struct LLVMBackend<'t> { target: &'t Target, target_cpu: String, diff --git a/openvaf/mir_opt/Cargo.toml b/openvaf/mir_opt/Cargo.toml index 53c21086e..64f9fb59c 100644 --- a/openvaf/mir_opt/Cargo.toml +++ b/openvaf/mir_opt/Cargo.toml @@ -17,8 +17,8 @@ workqueue = {version = "0.0.0", path = "../../lib/workqueue" } bitset = {version = "0.0.0", path = "../../lib/bitset" } typed-index-collections = "3.1" -ahash = "0.8" hashbrown = {version = "0.14", features = ["raw"]} +rustc-hash = "2.1" [dev-dependencies] expect-test = "1.4" diff --git a/openvaf/mir_opt/src/global_value_numbering.rs b/openvaf/mir_opt/src/global_value_numbering.rs index f96fd9e85..4d8ccafa6 100644 --- a/openvaf/mir_opt/src/global_value_numbering.rs +++ b/openvaf/mir_opt/src/global_value_numbering.rs @@ -1,15 +1,15 @@ use std::cmp::Ordering; -use std::hash::{BuildHasher, Hash, Hasher}; +use std::hash::{BuildHasher, BuildHasherDefault, Hash, Hasher}; use std::mem::{swap, ManuallyDrop}; use std::ops::{Index, IndexMut}; -use ahash::RandomState; use bitset::{BitSet, HybridBitSet}; use hashbrown::raw::RawTable; use mir::{ Block, DominatorTree, FuncRef, Function, Inst, InstructionData, Opcode, Value, ValueDef, ValueList, }; +use rustc_hash::FxHasher; use stdx::packed_option::PackedOption; use stdx::{impl_idx_from, impl_idx_math}; use typed_index_collections::TiVec; @@ -188,7 +188,7 @@ impl GVNExpression { } } - fn hash(&self, state: &RandomState, func: &Function) -> u64 { + fn hash(&self, state: &BuildHasherDefault, func: &Function) -> u64 { let mut hasher = state.build_hasher(); self.opcode.hash(&mut hasher); match self.opcode { @@ -354,7 +354,7 @@ struct ClassMap { inst_class: TiVec>, expr_class: RawTable, classes: TiVec, - state: RandomState, + state: BuildHasherDefault, } impl ClassMap { diff --git a/openvaf/mir_opt/src/split_tainted.rs b/openvaf/mir_opt/src/split_tainted.rs index 2b3d6ac0e..42434fbb5 100644 --- a/openvaf/mir_opt/src/split_tainted.rs +++ b/openvaf/mir_opt/src/split_tainted.rs @@ -2,17 +2,17 @@ use bitset::{BitSet, HybridBitSet, SparseBitMatrix}; use mir::{Block, ControlFlowGraph, DominatorTree, Function, Inst, InstructionData, Value}; use std::collections::{HashMap, HashSet}; -// Constructs +// Constructs // - a map from block to corresponding top level loop header block -// - a map from top level loop header block to all blocks -// within that loop (including the header block). +// - a map from top level loop header block to all blocks +// within that loop (including the header block). pub fn loop_block_map( - func: &Function, + func: &Function, cfg: &ControlFlowGraph, ) -> (HashMap>, HashMap) { let mut loop_blocks_map: HashMap> = HashMap::new(); let mut header_map: HashMap = HashMap::new(); - + // Reverse postordering let mut rpo = cfg.reverse_postorder(func); rpo.reset(); @@ -33,9 +33,9 @@ pub fn loop_block_map( loop_blocks_map.insert(bb, Vec::new()); } } - _ => (), + _ => (), } - // Did we reach end of the loop + // Did we reach end of the loop if Some(bb) == tail { // No head, no tail head = None; @@ -47,7 +47,10 @@ pub fn loop_block_map( // Add to header_map header_map.insert(bb, head.unwrap()); // Add to vector of loop blocks - loop_blocks_map.get_mut(&head.unwrap()).expect("Blocks vector not in map.").push(bb); + loop_blocks_map + .get_mut(&head.unwrap()) + .expect("Blocks vector not in map.") + .push(bb); } } } @@ -72,7 +75,7 @@ pub fn propagate_taint( cfg, bb_queue: Vec::new(), }; - + // Taint all instructions that use the values in tainted list for val in tainted { for use_ in func.dfg.uses(val) { @@ -81,7 +84,6 @@ pub fn propagate_taint( } } - solver.solve(); } @@ -148,15 +150,15 @@ impl TaintSolver<'_> { } fn solve(&mut self) { - // Construct a map from block to the header block of the outermost loop. - // If a block is not in that map it does not belong to any loop. + // Construct a map from block to the header block of the outermost loop. + // If a block is not in that map it does not belong to any loop. let (loop_blocks_map, header_map) = loop_block_map(self.func, self.cfg); // Tainted loops let mut tainted_loops: HashSet = HashSet::new(); // While there are instructions in the queue - while self.inst_queue.len()>0 { + while self.inst_queue.len() > 0 { // Propagate taint from tainted instructions onward while let Some(inst) = self.inst_queue.pop() { match self.func.dfg.insts[inst] { @@ -182,11 +184,11 @@ impl TaintSolver<'_> { _ => (), } - // TODO: If instruction is in a loop and that loop is not tainted yet, - // taint all blocks of the outermost loop that contains it. + // TODO: If instruction is in a loop and that loop is not tainted yet, + // taint all blocks of the outermost loop that contains it. // Need a map block -> header block of the outermost loop containing that block - // A loop is identified by its header block. - + // A loop is identified by its header block. + // Find all uses of an instruction, taint instructions that correspond to uses for use_ in self.func.dfg.inst_uses(inst) { let user = self.func.dfg.use_to_operand(use_).0; @@ -196,12 +198,16 @@ impl TaintSolver<'_> { // Propagate taint from tainted instructions to loops holding those instructions // Collect all loop header blocks - let hdrs: HashSet = self.tainted_insts.iter().filter_map(|inst| { - if let Some(bb) = self.func.layout.inst_block(inst) { - return header_map.get(&bb).cloned(); - } - return None; - }).collect(); + let hdrs: HashSet = self + .tainted_insts + .iter() + .filter_map(|inst| { + if let Some(bb) = self.func.layout.inst_block(inst) { + return header_map.get(&bb).cloned(); + } + return None; + }) + .collect(); // Taint all loops // This adds new instructions to inst_queue for hdr in hdrs { @@ -222,8 +228,8 @@ impl TaintSolver<'_> { } } // Repeat until inst_queue is empty - } - } + } + } } pub fn propagate_direct_taint( diff --git a/openvaf/openvaf-driver/Cargo.toml b/openvaf/openvaf-driver/Cargo.toml index c5a2ea9d6..aa97951c7 100644 --- a/openvaf/openvaf-driver/Cargo.toml +++ b/openvaf/openvaf-driver/Cargo.toml @@ -11,9 +11,16 @@ path = "src/main.rs" doctest = false test = false +[features] +# No default - user must specify --features llvm18/llvm19/llvm20/llvm21 +llvm18 = ["openvaf/llvm18"] +llvm19 = ["openvaf/llvm19"] +llvm20 = ["openvaf/llvm20"] +llvm21 = ["openvaf/llvm21"] + [dependencies] -openvaf = { version = "0.1.2", path = "../openvaf" } +openvaf = { version = "0.1.2", path = "../openvaf", default-features = false } clap = "=4.3" directories-next = "2" diff --git a/openvaf/openvaf-driver/src/cli_def.rs b/openvaf/openvaf-driver/src/cli_def.rs index 2547e79b7..e8122dbb7 100644 --- a/openvaf/openvaf-driver/src/cli_def.rs +++ b/openvaf/openvaf-driver/src/cli_def.rs @@ -39,6 +39,7 @@ pub fn main_command() -> Command { interface(), expand(), dump_json(), + allow_analog_in_cond(), input(), ]) .subcommand_required(false) @@ -68,6 +69,7 @@ pub const DUMP_JSON: &str = "dump-json"; pub const ALLOW: &str = "allow"; pub const WARN: &str = "warn"; pub const DENY: &str = "deny"; +pub const ALLOW_ANALOG_IN_COND: &str = "allow-analog-in-cond"; fn interface() -> Arg { Arg::new(INTERFACE) @@ -303,6 +305,18 @@ fn dump_json() -> Arg { flag(DUMP_JSON, "dump-json").help("Abort after lowering and serialize MIR as json.") } +fn allow_analog_in_cond() -> Arg { + flag(ALLOW_ANALOG_IN_COND, ALLOW_ANALOG_IN_COND) + .help("Allow analog operators in signal-dependent conditionals.") + .long_help( + "Allow analog operators (like limexp, ddt, idt) in signal-dependent conditional bodies. + +This is non-standard behavior but required by some commercial foundry models (e.g., GF130 PDK). + +By default, OpenVAF enforces strict Verilog-A semantics which only allow analog operators in unconditional code.", + ) +} + fn def_arg() -> Arg { Arg::new(DEFINE) .short('D') diff --git a/openvaf/openvaf-driver/src/cli_process.rs b/openvaf/openvaf-driver/src/cli_process.rs index b617b3fae..562d01215 100644 --- a/openvaf/openvaf-driver/src/cli_process.rs +++ b/openvaf/openvaf-driver/src/cli_process.rs @@ -5,14 +5,15 @@ use anyhow::{bail, Context, Result}; use camino::Utf8PathBuf; use clap::ArgMatches; use openvaf::{ - builtin_lints, get_target_names, host_triple, AbsPathBuf, LLVMCodeGenOptLevel, LintLevel, + builtin_lints, get_target_names, host_triple, AbsPathBuf, CompilationOpts, LLVMCodeGenOptLevel, + LintLevel, }; use termcolor::{Color, ColorChoice, ColorSpec, WriteColor}; use crate::cli_def::{ - ALLOW, BATCHMODE, CACHE_DIR, CODEGEN, DEFINE, DENY, DRYRUN, DUMPIR, DUMPMIR, DUMPUNOPTIR, - DUMPUNOPTMIR, INCLUDE, INPUT, LINTS, OPT_LVL, OUTPUT, SUPPORTED_TARGETS, TARGET, TARGET_CPU, - WARN, + ALLOW, ALLOW_ANALOG_IN_COND, BATCHMODE, CACHE_DIR, CODEGEN, DEFINE, DENY, DRYRUN, DUMPIR, + DUMPMIR, DUMPUNOPTIR, DUMPUNOPTMIR, INCLUDE, INPUT, LINTS, OPT_LVL, OUTPUT, SUPPORTED_TARGETS, + TARGET, TARGET_CPU, WARN, }; use crate::{CompilationDestination, Opts}; @@ -122,6 +123,9 @@ pub fn matches_to_opts(matches: ArgMatches) -> Result { dump_ir: matches.get_flag(DUMPIR), dump_unopt_ir: matches.get_flag(DUMPUNOPTIR), dry_run: matches.get_flag(DRYRUN), + compilation_opts: CompilationOpts { + allow_analog_in_cond: matches.get_flag(ALLOW_ANALOG_IN_COND), + }, }) } diff --git a/openvaf/openvaf/Cargo.toml b/openvaf/openvaf/Cargo.toml index c9a858d0e..ff7f8568d 100644 --- a/openvaf/openvaf/Cargo.toml +++ b/openvaf/openvaf/Cargo.toml @@ -8,16 +8,26 @@ license = "GPL-3.0" [lib] doctest = false +[features] +# No default - user must specify --features llvm18/llvm19/llvm20/llvm21 +llvm18 = ["dep:llvm-sys-181", "mir_llvm/llvm18", "osdi/llvm18"] +llvm19 = ["dep:llvm-sys-191", "mir_llvm/llvm19", "osdi/llvm19"] +llvm20 = ["dep:llvm-sys-201", "mir_llvm/llvm20", "osdi/llvm20"] +llvm21 = ["dep:llvm-sys-211", "mir_llvm/llvm21", "osdi/llvm21"] + [dependencies] tokens = { version = "0.0.0", path = "../tokens" } basedb = { version = "0.0.0", path = "../basedb" } sim_back = { version = "0.0.0", path = "../sim_back" } -osdi = { version = "0.0.0", path = "../osdi" } +osdi = { version = "0.0.0", path = "../osdi", default-features = false } #llvm = { version = "0.0.0", path = "../llvm" } -llvm-sys = "181.1.1" -mir_llvm = { version = "0.0.0", path = "../mir_llvm" } +llvm-sys-181 = { package = "llvm-sys", version = "181.2.0", optional = true } +llvm-sys-191 = { package = "llvm-sys", version = "191.0.0", optional = true } +llvm-sys-201 = { package = "llvm-sys", version = "201.0.1", optional = true } +llvm-sys-211 = { package = "llvm-sys", version = "211.0.0", optional = true } +mir_llvm = { version = "0.0.0", path = "../mir_llvm", default-features = false } hir = { version = "0.0.0", path = "../hir" } target = { version = "0.0.0", path = "../target" } linker = { version = "0.0.0", path = "../linker" } diff --git a/openvaf/openvaf/src/lib.rs b/openvaf/openvaf/src/lib.rs index bc889f38f..ae7f81c07 100644 --- a/openvaf/openvaf/src/lib.rs +++ b/openvaf/openvaf/src/lib.rs @@ -1,3 +1,13 @@ +// Re-export the correct llvm-sys version based on feature flags +#[cfg(feature = "llvm18")] +extern crate llvm_sys_181 as llvm_sys; +#[cfg(feature = "llvm19")] +extern crate llvm_sys_191 as llvm_sys; +#[cfg(feature = "llvm20")] +extern crate llvm_sys_201 as llvm_sys; +#[cfg(feature = "llvm21")] +extern crate llvm_sys_211 as llvm_sys; + use std::fs::{create_dir_all, remove_file}; use std::io::Write; use std::time::Instant; @@ -8,6 +18,7 @@ pub use basedb::lints::{builtin as builtin_lints, LintLevel}; use basedb::BaseDB; use camino::Utf8PathBuf; use hir::CompilationDB; +pub use hir::CompilationOpts; use linker::link; pub use llvm_sys::target_machine::LLVMCodeGenOptLevel; use mir_llvm::LLVMBackend; @@ -46,6 +57,7 @@ pub struct Opts { pub dump_unopt_mir: bool, pub dump_ir: bool, pub dump_unopt_ir: bool, + pub compilation_opts: CompilationOpts, } // pub fn dump_json(opts: &Opts) -> Result { // let input = @@ -111,7 +123,13 @@ pub fn expand(opts: &Opts) -> Result { let input = opts.input.canonicalize().with_context(|| format!("failed to resolve {}", opts.input))?; let input = AbsPathBuf::assert(input); - let db = CompilationDB::new_fs(input, &opts.include, &opts.defines, &opts.lints)?; + let db = CompilationDB::new_fs( + input, + &opts.include, + &opts.defines, + &opts.lints, + &opts.compilation_opts, + )?; let cu = db.compilation_unit(); let preprocess = cu.preprocess(&db); @@ -159,7 +177,13 @@ pub fn compile(opts: &Opts) -> Result { let input = opts.input.canonicalize().with_context(|| format!("failed to resolve {}", opts.input))?; let input = AbsPathBuf::assert(input); - let db = CompilationDB::new_fs(input, &opts.include, &opts.defines, &opts.lints)?; + let db = CompilationDB::new_fs( + input, + &opts.include, + &opts.defines, + &opts.lints, + &opts.compilation_opts, + )?; let lib_file = match &opts.output { CompilationDestination::Cache { cache_dir } => { diff --git a/openvaf/openvaf/tests/integration.rs b/openvaf/openvaf/tests/integration.rs index 6298bf782..f5aa5be57 100644 --- a/openvaf/openvaf/tests/integration.rs +++ b/openvaf/openvaf/tests/integration.rs @@ -1,12 +1,12 @@ use std::f64::consts; +use std::ffi::OsStr; use std::path::Path; use camino::Utf8Path; use expect_test::expect_file; use float_cmp::assert_approx_eq; -use llvm_sys::target_machine::LLVMCodeGenOptLevel; use mini_harness::{harness, Result}; -use openvaf::{CompilationDestination, CompilationTermination}; +use openvaf::{CompilationDestination, CompilationTermination, LLVMCodeGenOptLevel}; use stdx::{ignore_dev_tests, openvaf_test_data, project_root}; use target::spec::Target; @@ -35,6 +35,7 @@ fn compile_and_load(root_file: &Utf8Path) -> &'static OsdiDescriptor { dump_unopt_mir: false, dump_ir: false, dump_unopt_ir: false, + compilation_opts: hir::CompilationOpts::default(), }; let res = openvaf::compile(&openvaf_opts).unwrap(); @@ -65,13 +66,46 @@ fn integration_test(dir: &Path) -> Result { Ok(()) } +/// Test a single Verilog-A file directly (for VACASK models) +/// Uses "vacask_" prefix for snapshot names to avoid conflicts with OpenVAF models +fn vacask_test(file: &Path) -> Result { + test_descriptor_with_prefix(file, "vacask_")?; + Ok(()) +} + +/// Test a single Verilog-A file with SPICE naming prefix +fn vacask_spice_test(file: &Path) -> Result { + test_descriptor_with_prefix(file, "vacask_spice_")?; + Ok(()) +} + +/// Test a single Verilog-A file with simplified SPICE naming prefix +fn vacask_spice_sn_test(file: &Path) -> Result { + test_descriptor_with_prefix(file, "vacask_spice_sn_")?; + Ok(()) +} + +/// Filter to only include .va files +fn is_va_file(path: &Path) -> bool { + path.extension() == Some(OsStr::new("va")) +} + +/// Get path to VACASK devices directory +fn vacask_devices() -> std::path::PathBuf { + project_root().join("external/vacask/devices") +} + fn test_descriptor(main_file: &Path) -> Result<&'static OsdiDescriptor> { + test_descriptor_with_prefix(main_file, "") +} + +fn test_descriptor_with_prefix(main_file: &Path, prefix: &str) -> Result<&'static OsdiDescriptor> { let main_file: &Utf8Path = main_file.try_into().unwrap(); let name = main_file.file_stem().unwrap(); let desc = compile_and_load(main_file); let expect = format!("{desc:?}"); let test_dir = openvaf_test_data("osdi"); - expect_file![test_dir.join(format!("{name}.snap"))].assert_eq(&expect); + expect_file![test_dir.join(format!("{prefix}{name}.snap"))].assert_eq(&expect); let default_model = desc.new_model(); default_model.process_params()?; let mut instance = default_model.new_instance(); @@ -225,5 +259,11 @@ fn test_noise() -> Result<()> { harness! { // TODO: run this in CI, somehow this test is flakey tough regarding the linker invocation (and really slow) Test::from_dir("integration", &integration_test, &ignore_dev_tests, &project_root().join("integration_tests")), + // VACASK basic device models + Test::from_dir_filtered("vacask", &vacask_test, &is_va_file, &ignore_dev_tests, &vacask_devices()), + // VACASK SPICE models + Test::from_dir_filtered("vacask_spice", &vacask_spice_test, &is_va_file, &ignore_dev_tests, &vacask_devices().join("spice")), + // VACASK simplified SPICE models + Test::from_dir_filtered("vacask_spice_sn", &vacask_spice_sn_test, &is_va_file, &ignore_dev_tests, &vacask_devices().join("spice/sn")), [Test::new("$limit", &test_limit),Test::new("noise", &test_noise)] } diff --git a/openvaf/openvaf/tests/load/mod.rs b/openvaf/openvaf/tests/load/mod.rs index beb398b3b..db519f78e 100644 --- a/openvaf/openvaf/tests/load/mod.rs +++ b/openvaf/openvaf/tests/load/mod.rs @@ -452,24 +452,19 @@ impl Debug for OsdiDescriptor { osdi_str(node.units), osdi_str(node.residual_units) ); - wn!( - "residual {} {} {} {}", - node.resist_residual_off, - node.react_residual_off, - node.resist_limit_rhs_off, - node.react_limit_rhs_off - ); + // Residual offsets are arch-specific (depend on struct alignment) + // so we omit them from snapshots to allow cross-platform testing } for matrix_entry in self.matrix_entries() { let hi = self.nodes()[matrix_entry.nodes.node_1 as usize].name; let lo = self.nodes()[matrix_entry.nodes.node_2 as usize].name; wn!( - "jacobian ({}, {}) {:?} react_ptr = {}", + "jacobian ({}, {}) {:?}", osdi_str(hi), osdi_str(lo), JacobianFlags::from_bits(matrix_entry.flags).unwrap(), - matrix_entry.react_ptr_off, ); + // react_ptr offset is arch-specific, omitted for cross-platform testing } for OsdiNodePair { node_1, node_2 } in self.collapsible() { let hi = self.nodes()[*node_1 as usize].name; @@ -491,8 +486,8 @@ impl Debug for OsdiDescriptor { } wn!("{} states", self.num_states); wn!("has bound_step {}", self.bound_step_offset != u32::MAX); - wn!("instance size {}", self.instance_size); - wn!("model size {}", self.model_size); + // instance_size and model_size are arch-specific (depend on struct alignment) + // so we omit them from snapshots to allow cross-platform testing Ok(()) } } diff --git a/openvaf/osdi/Cargo.toml b/openvaf/osdi/Cargo.toml index 8e59d3b8c..ad724a795 100644 --- a/openvaf/osdi/Cargo.toml +++ b/openvaf/osdi/Cargo.toml @@ -8,6 +8,13 @@ license = "GPL-3.0" [lib] doctest = false +[features] +# No default - user must specify --features llvm18/llvm19/llvm20/llvm21 +llvm18 = ["dep:llvm-sys-181", "mir_llvm/llvm18"] +llvm19 = ["dep:llvm-sys-191", "mir_llvm/llvm19"] +llvm20 = ["dep:llvm-sys-201", "mir_llvm/llvm20"] +llvm21 = ["dep:llvm-sys-211", "mir_llvm/llvm21"] + [dependencies] stdx = { version = "0.0.0", path = "../../lib/stdx" } @@ -20,15 +27,18 @@ hir = { version = "0.0.0", path = "../hir" } sim_back = { version = "0.0.0", path = "../sim_back" } mir = { version = "0.0.0", path = "../mir" } -mir_llvm = { version = "0.0.0", path = "../mir_llvm" } +mir_llvm = { version = "0.0.0", path = "../mir_llvm", default-features = false } syntax = { version = "0.0.0", path = "../syntax" } #llvm = { version = "0.0.0", path = "../llvm" } -llvm-sys = "181.1.1" +llvm-sys-181 = { package = "llvm-sys", version = "181.2.0", optional = true } +llvm-sys-191 = { package = "llvm-sys", version = "191.0.0", optional = true } +llvm-sys-201 = { package = "llvm-sys", version = "201.0.1", optional = true } +llvm-sys-211 = { package = "llvm-sys", version = "211.0.0", optional = true } target = { version = "0.0.0", path = "../target"} typed-index-collections = "3.1" -ahash = "0.8" +rustc-hash = "2.0" lasso = {version = "0.7", features = ["ahash"]} salsa = "0.17.0-pre.2" diff --git a/openvaf/osdi/build.rs b/openvaf/osdi/build.rs index 0c609a5e9..1e8f9f1d2 100644 --- a/openvaf/osdi/build.rs +++ b/openvaf/osdi/build.rs @@ -22,6 +22,41 @@ fn main() { let osdi_dir = stdx::project_root().join("openvaf").join("osdi"); let src_file = osdi_dir.join("stdlib.c"); + // Use clang from LLVM prefix environment variables (check newest first) + // Fall back to Homebrew LLVM on macOS, then system clang + let clang_path = tracked_env_var_os("LLVM_SYS_211_PREFIX") + .or_else(|| tracked_env_var_os("LLVM_SYS_201_PREFIX")) + .or_else(|| tracked_env_var_os("LLVM_SYS_191_PREFIX")) + .or_else(|| tracked_env_var_os("LLVM_SYS_181_PREFIX")) + .map(|prefix| Path::new(&prefix).join("bin/clang")) + .and_then(|path| path.exists().then_some(path)) + .or_else(|| { + // Try Homebrew LLVM paths on macOS + #[cfg(target_os = "macos")] + { + // Check HOMEBREW_PREFIX first, then common default locations + if let Some(prefix) = tracked_env_var_os("HOMEBREW_PREFIX") { + let p = Path::new(&prefix).join("opt/llvm/bin/clang"); + if p.exists() { + return Some(p); + } + } + let homebrew_paths = [ + "/opt/homebrew/opt/llvm/bin/clang", // Apple Silicon + "/usr/local/opt/llvm/bin/clang", // Intel Mac + ]; + for path in homebrew_paths { + let p = Path::new(path); + if p.exists() { + return Some(p.to_path_buf()); + } + } + } + None + }) + .map(|path| path.display().to_string()) + .unwrap_or_else(|| "clang".to_string()); + sh.change_dir(osdi_dir); for file in sh.read_dir("header").unwrap() { if file.extension().map_or(true, |ext| ext != "h") @@ -47,7 +82,7 @@ fn main() { } else { println!("cargo:rerun-if-changed={}", file.display()); - let mut cmd = cmd!(sh, "clang -emit-llvm -O3 -D{def_name} -DNO_STD -o {out_file} -c {src_file} -target {target_name}"); + let mut cmd = cmd!(sh, "{clang_path} -emit-llvm -O3 -D{def_name} -DNO_STD -o {out_file} -c {src_file} -target {target_name}"); if !target.options.is_like_windows { cmd = cmd.arg("-fPIC"); } diff --git a/openvaf/osdi/src/access.rs b/openvaf/osdi/src/access.rs index 444da5ce8..a3fd7bb41 100644 --- a/openvaf/osdi/src/access.rs +++ b/openvaf/osdi/src/access.rs @@ -167,6 +167,7 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { ); LLVMPositionBuilderAtEnd(llbuilder, bb); // construct case constant, add case with building block bb + // instance parameter IDs are 0..num_instance_params-1 let case = cx.const_unsigned_int(param_idx as u32); LLVMAddCase(switch_model, NonNull::from(case).as_ptr(), bb); @@ -213,6 +214,8 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { ); LLVMPositionBuilderAtEnd(llbuilder, bb); // construct case constant, add case with building block bb + // model parameter IDs are num_instance_params..num_instance_params+num_model_params-1 + // num_model_params == model_data.params.len() counts only model parameters let case = cx.const_unsigned_int((inst_data.params.len() + param_idx) as u32); LLVMAddCase(switch_model, NonNull::from(case).as_ptr(), bb); diff --git a/openvaf/osdi/src/compilation_unit.rs b/openvaf/osdi/src/compilation_unit.rs index ce4c5d14a..40f0b5d8b 100644 --- a/openvaf/osdi/src/compilation_unit.rs +++ b/openvaf/osdi/src/compilation_unit.rs @@ -8,8 +8,8 @@ use lasso::Rodeo; use llvm_sys::core::{ LLVMAddIncoming, LLVMAppendBasicBlockInContext, LLVMBuildAdd, LLVMBuildArrayMalloc, LLVMBuildBr, LLVMBuildCall2, LLVMBuildCondBr, LLVMBuildFMul, LLVMBuildFree, LLVMBuildICmp, - LLVMBuildInBoundsGEP2, LLVMBuildLoad2, LLVMBuildPhi, LLVMGetFirstFunction, LLVMGetNextFunction, - LLVMGetParam, LLVMIsDeclaration, LLVMPositionBuilderAtEnd, LLVMSetLinkage, + LLVMBuildInBoundsGEP2, LLVMBuildLoad2, LLVMBuildPhi, LLVMBuildZExt, LLVMGetFirstFunction, + LLVMGetNextFunction, LLVMGetParam, LLVMIsDeclaration, LLVMPositionBuilderAtEnd, LLVMSetLinkage, LLVMSetUnnamedAddress, }; use llvm_sys::{LLVMIntPredicate, LLVMLinkage, LLVMUnnamedAddr, LLVMValue}; @@ -449,10 +449,6 @@ fn print_callback<'ll>( FmtArgKind::Other => args.push(&*val), } } - args.extend( - (1..(2 + arg_tys.len())) - .map(|arg| &*LLVMGetParam(NonNull::from(fun).as_ptr(), arg as u32)), - ); let (fun_ty, fun) = cx.intrinsic("snprintf").unwrap(); // Convert Vec<&LLVMValue> to Vec<*mut LLVMValue> let mut raw_args: Vec<*mut LLVMValue> = @@ -504,6 +500,9 @@ fn print_callback<'ll>( LLVMPositionBuilderAtEnd(llbuilder, write_bb); let data_len = LLVMBuildAdd(llbuilder, len, NonNull::from(cx.const_int(1)).as_ptr(), UNNAMED); + // LLVM value data_len is i32, we need size_t because snprintf needs it. Zero extend to get size_t + let data_len = + LLVMBuildZExt(llbuilder, data_len, NonNull::from(cx.ty_size()).as_ptr(), UNNAMED); raw_args[0] = ptr; raw_args[1] = data_len; let len = LLVMBuildCall2( diff --git a/openvaf/osdi/src/inst_data.rs b/openvaf/osdi/src/inst_data.rs index 189aa857a..b8fd1db3e 100644 --- a/openvaf/osdi/src/inst_data.rs +++ b/openvaf/osdi/src/inst_data.rs @@ -1,7 +1,7 @@ use core::ffi::c_uint; use core::ptr::NonNull; +use std::hash::BuildHasherDefault; -use ahash::RandomState; use hir::{CompilationDB, ParamSysFun, Parameter, Variable}; use hir_lower::{HirInterner, LimitState, ParamKind, PlaceKind}; use indexmap::IndexMap; @@ -21,6 +21,7 @@ use llvm_sys::target::{LLVMOffsetOfElement, LLVMTargetDataRef}; use llvm_sys::LLVMIntPredicate; use mir::{strip_optbarrier, Const, Function, Param, ValueDef, F_ZERO}; use mir_llvm::{CodegenCx, MemLoc, UNNAMED}; +use rustc_hash::FxHasher; use sim_back::dae::{self, MatrixEntryId, SimUnknown}; use sim_back::init::CacheSlot; use stdx::packed_option::PackedOption; @@ -212,13 +213,13 @@ pub struct OsdiInstanceData<'ll> { pub collapsed: &'ll llvm_sys::LLVMType, // llvm types for dynamic instance data struct fields - pub params: IndexMap, + pub params: IndexMap>, pub eval_outputs: TiMap, pub cache_slots: TiVec, pub residual: TiVec, pub noise: Vec, - pub opvars: IndexMap, + pub opvars: IndexMap>, pub jacobian: TiVec, pub bound_step: Option, } @@ -244,21 +245,17 @@ impl<'ll> OsdiInstanceData<'ll> { let user_inst_params = module.info.params.iter().filter_map(|(param, info)| { info.is_instance.then(|| (OsdiInstanceParam::User(*param), lltype(¶m.ty(db), cx))) }); - let params: IndexMap<_, _, _> = - builtin_inst_params.chain(alias_inst_params).chain(user_inst_params).collect(); + let mut params = IndexMap::with_hasher(BuildHasherDefault::::default()); + params.extend(builtin_inst_params.chain(alias_inst_params).chain(user_inst_params)); let mut eval_outputs = TiMap::default(); - let opvars = module - .info - .op_vars - .keys() - .map(|var| { - let val = module.intern.outputs[&PlaceKind::Var(*var)].unwrap_unchecked(); - let ty = lltype(&var.ty(db), cx); - let pos = EvalOutput::new(module, val, &mut eval_outputs, true, ty); - (*var, pos) - }) - .collect(); + let mut opvars = IndexMap::with_hasher(BuildHasherDefault::::default()); + opvars.extend(module.info.op_vars.keys().map(|var| { + let val = module.intern.outputs[&PlaceKind::Var(*var)].unwrap_unchecked(); + let ty = lltype(&var.ty(db), cx); + let pos = EvalOutput::new(module, val, &mut eval_outputs, true, ty); + (*var, pos) + })); let residual = module .dae_system .residual diff --git a/openvaf/osdi/src/lib.rs b/openvaf/osdi/src/lib.rs index 970d2ac6c..520877dec 100644 --- a/openvaf/osdi/src/lib.rs +++ b/openvaf/osdi/src/lib.rs @@ -1,8 +1,21 @@ +// Re-export the correct llvm-sys version based on feature flags +#[cfg(feature = "llvm18")] +extern crate llvm_sys_181 as llvm_sys; +#[cfg(feature = "llvm19")] +extern crate llvm_sys_191 as llvm_sys; +#[cfg(feature = "llvm20")] +extern crate llvm_sys_201 as llvm_sys; +#[cfg(feature = "llvm21")] +extern crate llvm_sys_211 as llvm_sys; + use std::collections::HashMap; use std::ffi::CString; +use std::hash::BuildHasherDefault; use std::ptr::NonNull; use std::sync::{Arc, Mutex}; +use rustc_hash::FxHasher; + use base_n::CASE_INSENSITIVE; use camino::{Utf8Path, Utf8PathBuf}; use hir::{CompilationDB, ParamSysFun, Type}; @@ -115,8 +128,9 @@ pub fn compile<'a>( let main_file = dst.with_extension("o"); - let unoptirs = Arc::new(Mutex::new(HashMap::new())); - let irs = Arc::new(Mutex::new(HashMap::new())); + let unoptirs = + Arc::new(Mutex::new(HashMap::with_hasher(BuildHasherDefault::::default()))); + let irs = Arc::new(Mutex::new(HashMap::with_hasher(BuildHasherDefault::::default()))); // Build natures, disciplines, and attributes vectors, intern strings in Rodeo let (natures_vec, disciplines_vec, attributes_vec) = nda_arrays(&*db, &mut literals); diff --git a/openvaf/osdi/src/model_data.rs b/openvaf/osdi/src/model_data.rs index 0d2bc2f09..272106c8c 100644 --- a/openvaf/osdi/src/model_data.rs +++ b/openvaf/osdi/src/model_data.rs @@ -1,11 +1,12 @@ use core::ptr::NonNull; +use std::hash::BuildHasherDefault; -use ahash::RandomState; use hir::{CompilationDB, Parameter}; use indexmap::IndexMap; use llvm_sys::core::{LLVMBuildLoad2, LLVMBuildStore, LLVMBuildStructGEP2}; use llvm_sys::LLVMValue as Value; use mir_llvm::{CodegenCx, MemLoc, UNNAMED}; +use rustc_hash::FxHasher; use crate::compilation_unit::OsdiModule; use crate::inst_data::{OsdiInstanceData, OsdiInstanceParam}; @@ -15,7 +16,7 @@ const NUM_CONST_FIELDS: u32 = 1; pub struct OsdiModelData<'ll> { pub param_given: &'ll llvm_sys::LLVMType, - pub params: IndexMap, + pub params: IndexMap>, pub ty: &'ll llvm_sys::LLVMType, } @@ -27,18 +28,14 @@ impl<'ll> OsdiModelData<'ll> { inst_data: &OsdiInstanceData<'ll>, ) -> Self { let inst_params = &inst_data.params; - let params: IndexMap<_, _, _> = cgunit - .info - .params - .keys() - .filter_map(|param| { - if inst_params.contains_key(&OsdiInstanceParam::User(*param)) { - None - } else { - Some((*param, lltype(¶m.ty(db), cx))) - } - }) - .collect(); + let mut params = IndexMap::with_hasher(BuildHasherDefault::::default()); + params.extend(cgunit.info.params.keys().filter_map(|param| { + if inst_params.contains_key(&OsdiInstanceParam::User(*param)) { + None + } else { + Some((*param, lltype(¶m.ty(db), cx))) + } + })); let param_given = bitfield::arr_ty((inst_params.len() + params.len()) as u32, cx); @@ -165,6 +162,22 @@ impl<'ll> OsdiModelData<'ll> { ); } + pub unsafe fn store_nth_inst_param( + &self, + inst_data: &OsdiInstanceData<'ll>, + param: u32, + ptr: &'ll Value, + val: &'ll llvm_sys::LLVMValue, + llbuilder: &llvm_sys::LLVMBuilder, + ) { + let (ptr, _) = self.nth_inst_param_ptr(inst_data, param, ptr, llbuilder); + LLVMBuildStore( + NonNull::from(llbuilder).as_ptr(), + NonNull::from(val).as_ptr(), + NonNull::from(ptr).as_ptr(), + ); + } + // pub unsafe fn read_nth_param( // &self, // param: u32, diff --git a/openvaf/osdi/src/setup.rs b/openvaf/osdi/src/setup.rs index fee4a5732..fd2ac3887 100644 --- a/openvaf/osdi/src/setup.rs +++ b/openvaf/osdi/src/setup.rs @@ -3,9 +3,12 @@ use core::ptr::NonNull; use hir_lower::{CallBackKind, ParamInfoKind, ParamKind, PlaceKind}; use llvm_sys::core::{ LLVMAppendBasicBlockInContext, LLVMBuildBr, LLVMBuildCondBr, LLVMBuildRetVoid, - LLVMCreateBuilderInContext, LLVMDisposeBuilder, LLVMGetParam, LLVMPositionBuilderAtEnd, + LLVMCreateBuilderInContext, LLVMDisposeBuilder, LLVMGetInsertBlock, LLVMGetLastInstruction, + LLVMGetParam, LLVMPositionBuilder, LLVMPositionBuilderAtEnd, }; +use llvm_sys::prelude::LLVMBasicBlockRef; use llvm_sys::LLVMIntPredicate::LLVMIntSLT; +use llvm_sys::LLVMValue; use mir::ControlFlowGraph; use mir_llvm::{ Builder, BuilderVal, BuiltCallbackFun, CallbackFun, CodegenCx, InlineCallbackBuilder, UNNAMED, @@ -15,6 +18,8 @@ use sim_back::SimUnknownKind; use crate::compilation_unit::{general_callbacks, OsdiCompilationUnit}; use crate::inst_data::OsdiInstanceParam; +use std::collections::HashMap; + struct VoidAbortCallback; impl<'ll> InlineCallbackBuilder<'ll> for VoidAbortCallback { @@ -162,6 +167,9 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { builder.params[dst] = BuilderVal::Eager(is_given); } + let mut builtin_blocks: HashMap = HashMap::new(); + let mut builtin_values: HashMap = HashMap::new(); + for (i, param) in inst_data.params.keys().enumerate() { let i = i as u32; @@ -173,10 +181,16 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { match *param { OsdiInstanceParam::Builtin(builtin) => { + let default_val = builtin.default_value(); + let default_val = cx.const_real(default_val); + let val = unsafe { builder.select(is_given, val, default_val) }; + unsafe { + let bb = LLVMGetInsertBlock(builder.llbuilder); + builtin_blocks.insert(*param, bb); + } + builtin_values.insert(*param, val); + // Never true! But does not matter because we never use these LLVM values in built code. if let Some(dst) = intern.params.index(&ParamKind::ParamSysFun(builtin)) { - let default_val = builtin.default_value(); - let default_val = cx.const_real(default_val); - let val = unsafe { builder.select(is_given, val, default_val) }; builder.params[dst] = BuilderVal::Eager(val); } } @@ -253,7 +267,7 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { }) .unwrap(); - // store parameters + // store model parameters to reflect defaulted values for (i, param) in model_data.params.keys().enumerate() { let val = intern.outputs[&PlaceKind::Param(*param)].unwrap_unchecked(); let inst = func.dfg.value_def(val).unwrap_inst(); @@ -265,6 +279,49 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { } } + // store instance parameters to reflect defaulted values + for (i, param) in inst_data.params.keys().enumerate() { + match param { + OsdiInstanceParam::Builtin(_) => { + if let Some(bb) = builtin_blocks.get(param) { + let val = builtin_values.get(param).unwrap(); + unsafe { + let bb_ptr = NonNull::from(&**bb).as_ptr(); + let inst = LLVMGetLastInstruction(bb_ptr); + LLVMPositionBuilder( + builder.llbuilder as *const _ as *mut _, + bb_ptr, + inst, + ); + model_data.store_nth_inst_param( + inst_data, + i as u32, + &*model, + val, + builder.llbuilder, + ); + } + } + } + OsdiInstanceParam::User(param) => { + let val = intern.outputs[&PlaceKind::Param(*param)].unwrap_unchecked(); + let inst = func.dfg.value_def(val).unwrap_inst(); + let bb = func.layout.inst_block(inst).unwrap(); + builder.select_bb_before_terminator(bb); + unsafe { + let val = builder.values[val].get(&builder); + model_data.store_nth_inst_param( + inst_data, + i as u32, + &*model, + val, + builder.llbuilder, + ); + } + } + } + } + builder.select_bb(exit_bb); unsafe { builder.ret_void() } @@ -365,6 +422,10 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { OsdiInstanceParam::User(param) => { let dst = intern.params.unwrap_index(&ParamKind::Param(param)); builder.params[dst] = BuilderVal::Eager(val); + // Store in instance structure to reflect defaulted value + unsafe { + inst_data.store_nth_param(i, instance, val, builder.llbuilder); + } let dst = intern.params.unwrap_index(&ParamKind::ParamGiven { param }); builder.params[dst] = BuilderVal::Eager(is_given); } @@ -482,6 +543,9 @@ impl<'ll> OsdiCompilationUnit<'_, '_, 'll> { } unsafe { + // This fills builder.values with builder.params based on + // param keys associated with a MIR values. + // Also builds constants from MIR builder.build_consts(); builder.build_func(); } diff --git a/openvaf/osdi/tests/data_tests.rs b/openvaf/osdi/tests/data_tests.rs index fcf8ed744..dfed48bc1 100644 --- a/openvaf/osdi/tests/data_tests.rs +++ b/openvaf/osdi/tests/data_tests.rs @@ -2,10 +2,9 @@ use std::path::Path; use camino::Utf8Path; use hir::diagnostics::ConsoleSink; -use hir::CompilationDB; -use llvm_sys::target_machine::LLVMCodeGenOptLevel; +use hir::{CompilationDB, CompilationOpts}; use mini_harness::{harness, Result}; -use mir_llvm::LLVMBackend; +use mir_llvm::{LLVMBackend, LLVMCodeGenOptLevel}; use paths::AbsPathBuf; use sim_back::collect_modules; use stdx::{ignore_slow_tests, project_root}; @@ -13,7 +12,7 @@ use target::spec::Target; fn test_compile(root_file: &Path) { let root_file = AbsPathBuf::assert(root_file.canonicalize().unwrap()); - let db = CompilationDB::new_fs(root_file, &[], &[], &[]).unwrap(); + let db = CompilationDB::new_fs(root_file, &[], &[], &[], &CompilationOpts::default()).unwrap(); let modules = collect_modules(&db, false, &mut ConsoleSink::new(&db)).unwrap(); let target = Target::host_target().expect( "Failed to determine host target. This architecture may not be supported by OpenVAF. \ diff --git a/openvaf/sim_back/Cargo.toml b/openvaf/sim_back/Cargo.toml index 31fc5282f..ec2fda79d 100644 --- a/openvaf/sim_back/Cargo.toml +++ b/openvaf/sim_back/Cargo.toml @@ -24,6 +24,7 @@ mir_opt = { version = "0.0.0", path = "../mir_opt" } typed-index-collections = "3.1" ahash = "0.8" +rustc-hash = "2.0" lasso = {version = "0.7", features = ["ahash"]} indexmap = "2.0" diff --git a/openvaf/sim_back/src/context.rs b/openvaf/sim_back/src/context.rs index 17d456873..eb518e019 100644 --- a/openvaf/sim_back/src/context.rs +++ b/openvaf/sim_back/src/context.rs @@ -2,7 +2,7 @@ use bitset::{BitSet, SparseBitMatrix}; use hir::CompilationDB; use hir_lower::{HirInterner, MirBuilder, PlaceKind}; use lasso::Rodeo; -use mir::{InstructionData, Block, ControlFlowGraph, DominatorTree, Function, Inst, Value}; +use mir::{Block, ControlFlowGraph, DominatorTree, Function, Inst, InstructionData, Value}; use mir_opt::{ aggressive_dead_code_elimination, dead_code_elimination, inst_combine, propagate_direct_taint, propagate_taint, simplify_cfg, simplify_cfg_no_phi_merge, @@ -40,7 +40,7 @@ impl<'a> Context<'a> { PlaceKind::Contribute { .. } | PlaceKind::ImplicitResidual { .. } | PlaceKind::CollapseImplicitEquation(_) - | PlaceKind::IsVoltageSrc(_) + | PlaceKind::IsVoltageSrc(_) | PlaceKind::BoundStep => true, PlaceKind::Var(var) => module.op_vars.contains_key(&var), _ => false, @@ -148,7 +148,7 @@ impl<'a> Context<'a> { self.op_dependent_vals.push(val) } } - + // Propagate taint propagate_direct_taint( &self.func, @@ -167,9 +167,9 @@ impl<'a> Context<'a> { for (cb, uses) in self.intern.callback_uses.iter_mut_enumerated() { // Ff callback is op dependent if self.intern.callbacks[cb].op_dependent() { - // Remove uses that appear in instructions that are not inserted into the layout. - // Add to op dependent instructions. - // Add the results of these instructions to op dependent values. + // Remove uses that appear in instructions that are not inserted into the layout. + // Add to op dependent instructions. + // Add the results of these instructions to op dependent values. uses.retain(|&inst| { if self.func.layout.inst_block(inst).is_none() { return false; @@ -183,13 +183,13 @@ impl<'a> Context<'a> { } } // Go through parameters, if the corresponding value is not dead and is op dependent - // (i.e. current, voltage, abstime, ...) add it to op dependent values. + // (i.e. current, voltage, abstime, ...) add it to op dependent values. for (param, &val) in self.intern.params.iter() { if !dfg.value_dead(val) && param.op_dependent() { self.op_dependent_vals.push(val) } } - + // Propagate taint propagate_taint( &self.func, diff --git a/openvaf/sim_back/src/dae.rs b/openvaf/sim_back/src/dae.rs index 57b4c7be0..2e22fd502 100644 --- a/openvaf/sim_back/src/dae.rs +++ b/openvaf/sim_back/src/dae.rs @@ -1,5 +1,8 @@ +use std::hash::BuildHasherDefault; + use indexmap::IndexSet; use mir::{strip_optbarrier, Value, F_ZERO}; +use rustc_hash::FxHasher; use stdx::{impl_debug_display, impl_idx_from}; use typed_index_collections::TiVec; use typed_indexmap::TiSet; @@ -40,7 +43,7 @@ pub struct DaeSystem { pub jacobian: TiVec, /// list of parameter which are known to be small signal values (always zero during /// large signal simulation). - pub small_signal_parameters: IndexSet, + pub small_signal_parameters: IndexSet>, /// noise pub noise_sources: Vec, /// model inputs (node pairs) diff --git a/openvaf/sim_back/src/dae/builder.rs b/openvaf/sim_back/src/dae/builder.rs index 2fa47016b..3c6b6d4b6 100644 --- a/openvaf/sim_back/src/dae/builder.rs +++ b/openvaf/sim_back/src/dae/builder.rs @@ -1,7 +1,3 @@ -use std::mem::replace; -use std::vec; - -use ahash::AHashMap; use bitset::BitSet; use hir::{BranchWrite, CompilationDB, Node, ParamSysFun}; use hir_lower::{CurrentKind, HirInterner, ImplicitEquation, ParamKind}; @@ -13,6 +9,11 @@ use mir::{ Value, FALSE, F_ONE, F_ZERO, TRUE, }; use mir_autodiff::auto_diff; +use rustc_hash::FxHasher; +use std::collections::HashMap; +use std::hash::BuildHasherDefault; +use std::mem::replace; +use std::vec; use typed_index_collections::TiVec; use crate::context::Context; @@ -122,7 +123,7 @@ impl<'a> Builder<'a> { pub(super) fn with_small_signal_network( mut self, - small_signal_parameters: IndexSet, + small_signal_parameters: IndexSet>, ) -> Self { self.system.small_signal_parameters = small_signal_parameters; self @@ -219,7 +220,7 @@ impl<'a> Builder<'a> { fn build_lim_rhs( &mut self, derivative_info: &KnownDerivatives, - derivatives: AHashMap<(Value, Unknown), Value>, + derivatives: HashMap<(Value, Unknown), Value, BuildHasherDefault>, ) { for residual in &mut self.system.residual { for (state, (unchanged, lim_vals)) in self.intern.lim_state.iter_enumerated() { @@ -272,7 +273,7 @@ impl<'a> Builder<'a> { &mut self, sim_unknown_reads: &[(ParamKind, Value)], derivative_info: &KnownDerivatives, - derivatives: &AHashMap<(Value, Unknown), Value>, + derivatives: &HashMap<(Value, Unknown), Value, BuildHasherDefault>, ) { self.system.jacobian = TiVec::with_capacity(self.system.unknowns.len() * self.system.unknowns.len()); diff --git a/openvaf/sim_back/src/init.rs b/openvaf/sim_back/src/init.rs index aaab86318..9c3e4254f 100644 --- a/openvaf/sim_back/src/init.rs +++ b/openvaf/sim_back/src/init.rs @@ -1,4 +1,6 @@ -use ahash::{AHashMap, AHashSet, RandomState}; +use std::hash::BuildHasherDefault; + +use ahash::{AHashMap, AHashSet}; use bitset::{BitSet, SparseBitMatrix}; use hir::{CompilationDB, Type}; use hir_lower::{HirInterner, ParamKind, PlaceKind}; @@ -10,6 +12,7 @@ use mir::{ InstructionData, Opcode, Value, FALSE, }; use mir_opt::{aggressive_dead_code_elimination, simplify_cfg, simplify_cfg_init, ClassId, GVN}; +use rustc_hash::FxHasher; use stdx::packed_option::PackedOption; use stdx::{impl_debug_display, impl_idx_from}; use typed_indexmap::TiMap; @@ -31,7 +34,7 @@ impl_debug_display! {match CacheSlot{CacheSlot(id) => "cslot{id}";}} pub struct Initialization { pub func: Function, pub intern: HirInterner, - pub cached_vals: IndexMap, + pub cached_vals: IndexMap>, pub cache_slots: TiMap, u32), hir::Type>, } @@ -62,7 +65,7 @@ impl Initialization { struct Builder<'a> { init: Initialization, - init_cache: IndexMap, + init_cache: IndexMap>, // inputs func: &'a mut Function, cfg: &'a mut ControlFlowGraph, @@ -81,11 +84,17 @@ impl<'a> Builder<'a> { Builder { init: Initialization { func: Function::with_name(format!("{}_init", &ctx.func.name)), - cached_vals: IndexMap::with_capacity_and_hasher(128, RandomState::new()), + cached_vals: IndexMap::with_capacity_and_hasher( + 128, + BuildHasherDefault::::default(), + ), cache_slots: TiMap::default(), intern: HirInterner::default(), }, - init_cache: IndexMap::with_capacity_and_hasher(256, RandomState::default()), + init_cache: IndexMap::with_capacity_and_hasher( + 256, + BuildHasherDefault::::default(), + ), func: &mut ctx.func, cfg: &mut ctx.cfg, dom_tree: &mut ctx.dom_tree, diff --git a/openvaf/sim_back/src/lib.rs b/openvaf/sim_back/src/lib.rs index dec6c022d..6f67c3bb8 100644 --- a/openvaf/sim_back/src/lib.rs +++ b/openvaf/sim_back/src/lib.rs @@ -178,18 +178,18 @@ impl<'a> CompiledModule<'a> { let topology = Topology::new(&mut cx); debug_assert!(cx.func.validate()); let mut dae_system = DaeSystem::new(&mut cx, topology); - debug_assert!(cx.func.validate()); if dump_unopt_mir { println!("Partially optimized MIR (with DAE) of {}", module.module.name(db)); print_mir(literals, &cx.func); } + debug_assert!(cx.func.validate()); + // Optimization cx.compute_cfg(); let gvn = cx.optimize(OptimiziationStage::PostDerivative); dae_system.sparsify(&mut cx); - debug_assert!(cx.func.validate()); // Instance setup MIR - a copy of module MIR where only those instructions diff --git a/openvaf/sim_back/src/module_info.rs b/openvaf/sim_back/src/module_info.rs index 20df49c41..2e33538b7 100644 --- a/openvaf/sim_back/src/module_info.rs +++ b/openvaf/sim_back/src/module_info.rs @@ -1,3 +1,5 @@ +use std::hash::BuildHasherDefault; + use ahash::AHashSet; use hir::diagnostics::{BaseDB, ConsoleSink, Diagnostic, FileId, Label, LabelStyle, Report}; use hir::{ @@ -5,6 +7,7 @@ use hir::{ ResolvedAliasParameter, ScopeDef, Variable, }; use indexmap::IndexMap; +use rustc_hash::FxHasher; use smol_str::SmolStr; use syntax::ast::{self, Expr}; use syntax::sourcemap::FileSpan; @@ -42,9 +45,9 @@ pub fn collect_modules( pub struct ModuleInfo { pub module: Module, - pub params: IndexMap, - pub sys_fun_alias: IndexMap, ahash::RandomState>, - pub op_vars: IndexMap, + pub params: IndexMap>, + pub sys_fun_alias: IndexMap, BuildHasherDefault>, + pub op_vars: IndexMap>, } impl ModuleInfo { @@ -55,10 +58,12 @@ impl ModuleInfo { sink: &mut ConsoleSink, all_vars_opvars: bool, ) -> ModuleInfo { - let mut params: IndexMap = IndexMap::default(); - let mut sys_fun_alias: IndexMap, ahash::RandomState> = + let mut params: IndexMap> = + IndexMap::default(); + let mut sys_fun_alias: IndexMap, BuildHasherDefault> = + IndexMap::default(); + let mut op_vars: IndexMap> = IndexMap::default(); - let mut op_vars = IndexMap::default(); let ast = cu.ast(db); diff --git a/openvaf/sim_back/src/topology.rs b/openvaf/sim_back/src/topology.rs index 2a31741c2..0133e1993 100644 --- a/openvaf/sim_back/src/topology.rs +++ b/openvaf/sim_back/src/topology.rs @@ -17,6 +17,8 @@ //! generation of unnecessary derivatives. //! +use std::hash::BuildHasherDefault; + use ahash::AHashMap; use bitset::{BitSet, SparseBitMatrix}; use hir_lower::{CallBackKind, HirInterner, ImplicitEquation, ParamKind, PlaceKind}; @@ -25,6 +27,7 @@ use lasso::Spur; use mir::{strip_optbarrier, Function, Inst, Value, F_ZERO, TRUE}; use mir_build::SSAVariableBuilder; use mir_opt::simplify_cfg_no_phi_merge; +use rustc_hash::FxHasher; use stdx::{impl_debug_display, impl_idx_from}; use typed_index_collections::TiVec; use typed_indexmap::TiMap; @@ -150,7 +153,7 @@ impl Noise { pub(crate) struct Topology { pub(crate) branches: TiMap, pub(crate) implicit_equations: TiVec, - pub(crate) small_signal_vals: IndexSet, + pub(crate) small_signal_vals: IndexSet>, contributes: AHashMap, } @@ -284,7 +287,7 @@ impl Topology { implicit_equations, small_signal_vals: IndexSet::with_capacity_and_hasher( 128, - ahash::RandomState::default(), + BuildHasherDefault::::default(), ), }; let num_insts = ctx.func.dfg.num_insts(); diff --git a/openvaf/sim_back/src/topology/small_signal_network.rs b/openvaf/sim_back/src/topology/small_signal_network.rs index 45da1a708..d883f6183 100644 --- a/openvaf/sim_back/src/topology/small_signal_network.rs +++ b/openvaf/sim_back/src/topology/small_signal_network.rs @@ -1,9 +1,11 @@ +use std::hash::BuildHasherDefault; use std::iter::once; use std::mem::take; use hir::Node; use indexmap::IndexMap; use mir::{Const, InstructionData, Opcode, Value, ValueDef, FALSE, F_ZERO}; +use rustc_hash::FxHasher; use crate::topology::Builder; use crate::util::{add, update_optbarrier}; @@ -56,7 +58,7 @@ enum CandidateKind { } impl Builder<'_> { - /// explores all `candidates` to extract the noise network + /// Explores all `candidates` to extract the noise network fn solve(&mut self, candidates: &mut Vec) { loop { let mut changed = false; @@ -82,7 +84,7 @@ impl Builder<'_> { } changed = true; } else if let Some(node) = candidate.as_node() { - self.topology.small_signal_vals.remove(&node); + self.topology.small_signal_vals.swap_remove(&node); } set == FlatSet::Bottom }); @@ -305,7 +307,8 @@ impl Builder<'_> { } fn collect_candidates(&mut self) -> Vec { - let mut nodes = IndexMap::with_capacity_and_hasher(32, ahash::RandomState::new()); + let mut nodes = + IndexMap::with_capacity_and_hasher(32, BuildHasherDefault::::default()); let mut candidates = Vec::new(); for (_, (&branch, contributes)) in self.topology.branches() { let (hi, lo) = branch.nodes(self.db); diff --git a/openvaf/sim_back/src/topology/test.rs b/openvaf/sim_back/src/topology/test.rs index a608fbc29..4b63010ea 100644 --- a/openvaf/sim_back/src/topology/test.rs +++ b/openvaf/sim_back/src/topology/test.rs @@ -221,3 +221,39 @@ fn psp103() { assert(src); } + +/// Regression test for issue #30: Small signal analysis with constant offset +/// +/// This test verifies that when a contribution has a constant offset (like V(pn1) - 1), +/// the node is NOT incorrectly marked as a small signal value. The buggy algorithm +/// speculatively added all candidate nodes to small_signal_vals before analysis, +/// which caused V(pn2) to incorrectly see V(pn1) as a small signal value during +/// its evaluation, leading to V(pn2) being incorrectly marked as small signal. +/// +/// The correct behavior is: +/// - V(pn1) - 1 has a constant term, so pn1 is NOT small signal +/// - V(pn2) - V(pn1) depends on pn1 which is NOT small signal, so pn2 is also NOT small signal +/// - Therefore small_signal_vals should be empty +#[test] +fn constant_offset_not_small_signal() { + let src = indoc! {r#" + `include "disciplines.vams" + module constant_offset_not_small_signal(inout pn1, inout pn2); + electrical pn1, pn2; + analog begin + I(pn1) <+ V(pn1) - 1; + I(pn2) <+ V(pn2) - V(pn1); + end + endmodule + "#}; + + let (_, topology, _) = compile(src); + // The bug would incorrectly add V(pn2) to small_signal_vals because during + // evaluation it would see V(pn1) as "speculatively" in the set. + // The correct behavior is that neither node should be in small_signal_vals. + assert!( + topology.small_signal_vals.is_empty(), + "small_signal_vals should be empty but contains {:?}", + topology.small_signal_vals + ); +} diff --git a/openvaf/target/src/spec/aarch64_apple_darwin.rs b/openvaf/target/src/spec/aarch64_apple_darwin.rs index 6aef6a9c5..d598f24eb 100644 --- a/openvaf/target/src/spec/aarch64_apple_darwin.rs +++ b/openvaf/target/src/spec/aarch64_apple_darwin.rs @@ -9,11 +9,21 @@ pub fn target() -> Target { vec![ "-arch".to_string(), "arm64".to_string(), + "-platform_version".to_string(), + "macos".to_string(), + "11.0".to_string(), + "11.0".to_string(), "-undefined".to_string(), "dynamic_lookup".to_string(), ], ); + // Link against libSystem which provides dyld_stub_binder + base.post_link_args.insert( + LinkerFlavor::Ld64, + vec!["-lSystem".to_string()], + ); + Target { llvm_target: "arm64-apple-macosx11.0.0".to_owned(), pointer_width: 64, diff --git a/openvaf/target/src/spec/x86_64_apple_darwin.rs b/openvaf/target/src/spec/x86_64_apple_darwin.rs index 7a852654c..4525691b2 100644 --- a/openvaf/target/src/spec/x86_64_apple_darwin.rs +++ b/openvaf/target/src/spec/x86_64_apple_darwin.rs @@ -10,11 +10,21 @@ pub fn target() -> Target { vec![ "-arch".to_string(), "x86_64".to_string(), + "-platform_version".to_string(), + "macos".to_string(), + "10.15".to_string(), + "10.15".to_string(), "-undefined".to_string(), "dynamic_lookup".to_string(), ], ); + // Link against libSystem which provides dyld_stub_binder + base.post_link_args.insert( + LinkerFlavor::Ld64, + vec!["-lSystem".to_string()], + ); + Target { llvm_target: "x86_64-apple-macosx10.15.0".to_owned(), arch: "x86_64".to_owned(), diff --git a/openvaf/test_data/osdi/amplifier.snap b/openvaf/test_data/osdi/amplifier.snap index d6eeb92d5..77b7000ef 100644 --- a/openvaf/test_data/osdi/amplifier.snap +++ b/openvaf/test_data/osdi/amplifier.snap @@ -8,34 +8,26 @@ param "G" units = "", desc = "Voltage amplification factor", flags = ParameterFlags(0x0) 4 terminals -node "Inp" units = "V", runits = "" -residual 224 4294967295 4294967295 4294967295 -node "Inm" units = "V", runits = "" -residual 232 4294967295 4294967295 4294967295 -node "Outp" units = "V", runits = "" -residual 240 4294967295 4294967295 4294967295 -node "Outm" units = "V", runits = "" -residual 248 4294967295 4294967295 4294967295 -node(flow) "flow(Outp)" units = "A", runits = "" -residual 256 4294967295 4294967295 4294967295 -node(flow) "flow(Outm)" units = "A", runits = "" -residual 264 4294967295 4294967295 4294967295 -jacobian (Inp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, flow(Outp)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, flow(Outm)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(Outp), Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(Outp), Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(Outp), Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(Outm), Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(Outm), Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "Inp" units = "V", runits = "A" +node "Inm" units = "V", runits = "A" +node "Outp" units = "V", runits = "A" +node "Outm" units = "V", runits = "A" +node(flow) "flow(Outp)" units = "A", runits = "V" +node(flow) "flow(Outm)" units = "A", runits = "V" +jacobian (Inp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, flow(Outp)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, flow(Outm)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(Outp), Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(Outp), Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(Outp), Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(Outm), Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(Outm), Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) 0 states has bound_step false -instance size 272 -model size 40 diff --git a/openvaf/test_data/osdi/asmhemt.snap b/openvaf/test_data/osdi/asmhemt.snap index 6c19688c0..be41cb64c 100644 --- a/openvaf/test_data/osdi/asmhemt.snap +++ b/openvaf/test_data/osdi/asmhemt.snap @@ -400,180 +400,164 @@ param "gdsmin" units = "S", desc = " Convergence Parameter", flags = ParameterFlags(0x0) 5 terminals -node "d" units = "V", runits = "" -residual 2792 2800 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 2808 2816 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 2824 2832 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 4294967295 2840 4294967295 4294967295 -node "dt" units = "K", runits = "" -residual 2848 2856 4294967295 4294967295 -node "trap1" units = "V", runits = "" -residual 2864 2872 4294967295 4294967295 -node "trap2" units = "V", runits = "" -residual 2880 2888 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 2896 2904 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 2912 2920 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 2928 2936 4294967295 4294967295 -node "fp1" units = "V", runits = "" -residual 2944 2952 4294967295 4294967295 -node "fp2" units = "V", runits = "" -residual 2960 2968 4294967295 4294967295 -node "fp3" units = "V", runits = "" -residual 2976 2984 4294967295 4294967295 -node "fp4" units = "V", runits = "" -residual 2992 3000 4294967295 4294967295 -node(flow) "flow(di,si)" units = "A", runits = "" -residual 3008 3016 4294967295 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "dt" units = "K", runits = "W" +node "trap1" units = "V", runits = "A" +node "trap2" units = "V", runits = "A" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "fp1" units = "V", runits = "A" +node "fp2" units = "V", runits = "A" +node "fp3" units = "V", runits = "A" +node "fp4" units = "V", runits = "A" +node(flow) "flow(di,si)" units = "A", runits = "A" node "implicit_equation_0" units = "", runits = "" -residual 3024 3032 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1144 -jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1152 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1160 -jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1168 -jacobian (d, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1176 -jacobian (d, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1184 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1192 -jacobian (g, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1200 -jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1208 -jacobian (g, dt) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1216 -jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1224 -jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1232 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1240 -jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1248 -jacobian (s, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1256 -jacobian (s, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1264 -jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1272 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1280 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1288 -jacobian (s, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1296 -jacobian (s, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1304 -jacobian (s, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1312 -jacobian (s, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1320 -jacobian (b, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1328 -jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1336 -jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1344 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1352 -jacobian (b, dt) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1360 -jacobian (b, trap1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1368 -jacobian (b, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1376 -jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1384 -jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1392 -jacobian (b, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1400 -jacobian (b, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1408 -jacobian (b, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1416 -jacobian (b, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1424 -jacobian (b, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1432 -jacobian (dt, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1440 -jacobian (dt, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap1, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap1, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap1, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1448 -jacobian (trap1, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap1, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap2, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap2, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (trap2, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1456 -jacobian (di, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1464 -jacobian (di, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1472 -jacobian (di, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1480 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1488 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1496 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1504 -jacobian (di, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1512 -jacobian (di, flow(di,si)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1520 -jacobian (si, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1528 -jacobian (si, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1536 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1544 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1552 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1560 -jacobian (si, flow(di,si)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1568 -jacobian (gi, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1576 -jacobian (gi, trap1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1584 -jacobian (gi, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1592 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1600 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1608 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1616 -jacobian (gi, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1624 -jacobian (gi, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1632 -jacobian (gi, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1640 -jacobian (gi, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1648 -jacobian (fp1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1656 -jacobian (fp1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1664 -jacobian (fp1, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1672 -jacobian (fp1, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1680 -jacobian (fp1, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1688 -jacobian (fp1, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1696 -jacobian (fp1, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1704 -jacobian (fp1, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1712 -jacobian (fp2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1720 -jacobian (fp2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1728 -jacobian (fp2, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1736 -jacobian (fp2, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1744 -jacobian (fp2, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1752 -jacobian (fp2, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1760 -jacobian (fp2, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1768 -jacobian (fp2, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1776 -jacobian (fp2, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1784 -jacobian (fp3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1792 -jacobian (fp3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1800 -jacobian (fp3, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1808 -jacobian (fp3, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1816 -jacobian (fp3, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1824 -jacobian (fp3, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1832 -jacobian (fp3, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1840 -jacobian (fp3, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1848 -jacobian (fp3, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1856 -jacobian (fp3, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1864 -jacobian (fp4, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fp4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1872 -jacobian (fp4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1880 -jacobian (fp4, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fp4, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1888 -jacobian (fp4, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1896 -jacobian (fp4, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1904 -jacobian (fp4, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1912 -jacobian (fp4, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1920 -jacobian (fp4, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1928 -jacobian (fp4, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1936 -jacobian (fp4, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1944 -jacobian (flow(di,si), dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(di,si), trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(di,si), trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(di,si), di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1952 -jacobian (flow(di,si), si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1960 -jacobian (flow(di,si), gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1968 -jacobian (flow(di,si), flow(di,si)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (implicit_equation_0, trap1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1976 -jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, dt) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, dt) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, trap1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (dt, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dt, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap1, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap1, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap1, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (trap1, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap1, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap2, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap2, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (trap2, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, flow(di,si)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, flow(di,si)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, trap1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp1, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp1, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp2, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp2, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp2, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, trap2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp3, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp3, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp3, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp3, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fp4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fp4, trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp4, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp4, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), trap1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), trap2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(di,si), flow(di,si)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, trap1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) collapsible (implicit_equation_0, gnd) collapsible (dt, gnd) collapsible (trap1, gnd) @@ -593,5 +577,3 @@ noise "thermal" (d, fp4) noise "thermal" (si, s) 0 states has bound_step false -instance size 4512 -model size 1608 diff --git a/openvaf/test_data/osdi/bsim3.snap b/openvaf/test_data/osdi/bsim3.snap index ffd3b83eb..38eaa496a 100644 --- a/openvaf/test_data/osdi/bsim3.snap +++ b/openvaf/test_data/osdi/bsim3.snap @@ -1450,40 +1450,34 @@ param "delvto" units = "", desc = "", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 1904 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 1912 1920 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 1928 4294967295 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 1936 1944 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 1952 1960 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 1968 1976 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 184 -jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 192 -jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 200 -jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 208 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 216 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 224 -jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 232 -jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 240 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 248 -jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 256 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 264 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 272 -jacobian (si, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 280 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 288 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 296 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 304 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (s, si) collapsible (d, di) noise "Rs" (s, si) @@ -1492,5 +1486,3 @@ noise "flicker" (di, si) noise "ids" (di, si) 0 states has bound_step false -instance size 2304 -model size 5824 diff --git a/openvaf/test_data/osdi/bsim4.snap b/openvaf/test_data/osdi/bsim4.snap index 953d9b1cd..26f7049e4 100644 --- a/openvaf/test_data/osdi/bsim4.snap +++ b/openvaf/test_data/osdi/bsim4.snap @@ -1796,111 +1796,95 @@ param "pdvtp5" units = "", desc = "", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 3424 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 3432 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 3440 4294967295 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 3448 4294967295 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 3456 3464 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 3472 3480 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 3488 3496 4294967295 4294967295 -node "gm" units = "V", runits = "" -residual 3504 4294967295 4294967295 4294967295 -node "bi" units = "V", runits = "" -residual 3512 3520 4294967295 4294967295 -node "sbulk" units = "V", runits = "" -residual 3528 3536 4294967295 4294967295 -node "dbulk" units = "V", runits = "" -residual 3544 3552 4294967295 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "gm" units = "V", runits = "A" +node "bi" units = "V", runits = "A" +node "sbulk" units = "V", runits = "A" +node "dbulk" units = "V", runits = "A" node(flow) "flow(sbulk,bi)" units = "A", runits = "" -residual 3560 4294967295 4294967295 4294967295 node(flow) "flow(sbulk,b)" units = "A", runits = "" -residual 3568 4294967295 4294967295 4294967295 node(flow) "flow(b,bi)" units = "A", runits = "" -residual 3576 4294967295 4294967295 4294967295 node(flow) "flow(b,dbulk)" units = "A", runits = "" -residual 3584 4294967295 4294967295 4294967295 node(flow) "flow(bi,dbulk)" units = "A", runits = "" -residual 3592 4294967295 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 592 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 600 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 608 -jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 616 -jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 632 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 640 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 648 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 664 -jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 672 -jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 680 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 688 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 696 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 704 -jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 712 -jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 720 -jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 728 -jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 736 -jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 744 -jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 752 -jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (bi, flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 768 -jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 -jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 784 -jacobian (sbulk, flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sbulk, flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 792 -jacobian (dbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 800 -jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 808 -jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 816 -jacobian (dbulk, flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dbulk, flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(sbulk,bi), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(sbulk,bi), sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(sbulk,bi), flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(sbulk,b), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(sbulk,b), sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(sbulk,b), flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(b,bi), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(b,bi), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(b,bi), flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(b,dbulk), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(b,dbulk), dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(b,dbulk), flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(bi,dbulk), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(bi,dbulk), dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(bi,dbulk), flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,bi), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,bi), sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,bi), flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,b), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,b), sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,b), flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,bi), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,bi), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,bi), flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,dbulk), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,dbulk), dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,dbulk), flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(bi,dbulk), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(bi,dbulk), dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(bi,dbulk), flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) collapsible (s, si) collapsible (d, di) collapsible (g, gm) @@ -1929,5 +1913,3 @@ noise "Rbulk" (flow(bi,dbulk), gnd) noise "Rg" (gi, g) 0 states has bound_step false -instance size 4256 -model size 7208 diff --git a/openvaf/test_data/osdi/bsim6.snap b/openvaf/test_data/osdi/bsim6.snap index 7c529881f..7a012a353 100644 --- a/openvaf/test_data/osdi/bsim6.snap +++ b/openvaf/test_data/osdi/bsim6.snap @@ -1786,115 +1786,101 @@ param "DVT2EDGE" units = "", desc = "Body-bias coefficient for SCE effect for Edge FET", flags = ParameterFlags(0x0) 5 terminals -node "d" units = "V", runits = "" -residual 3376 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 3384 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 3392 4294967295 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 3400 4294967295 4294967295 4294967295 -node "t" units = "K", runits = "" -residual 3408 3416 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 3424 3432 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 3440 3448 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 3456 3464 4294967295 4294967295 -node "gm" units = "V", runits = "" -residual 3472 3480 4294967295 4294967295 -node "bi" units = "V", runits = "" -residual 3488 3496 4294967295 4294967295 -node "sbulk" units = "V", runits = "" -residual 3504 3512 4294967295 4294967295 -node "dbulk" units = "V", runits = "" -residual 3520 3528 4294967295 4294967295 -node "N1" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "N2" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 664 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 672 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 680 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 688 -jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 696 -jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 704 -jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 712 -jacobian (di, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 720 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 728 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 736 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 744 -jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 752 -jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 768 -jacobian (si, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 784 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 792 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 800 -jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 808 -jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 816 -jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 824 -jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 832 -jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 840 -jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 848 -jacobian (bi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 856 -jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 864 -jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 872 -jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 880 -jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 888 -jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 896 -jacobian (bi, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 904 -jacobian (bi, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 912 -jacobian (sbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 920 -jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 928 -jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 936 -jacobian (dbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 944 -jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 952 -jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 960 -jacobian (N1, N1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (N1, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (N2, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "gm" units = "V", runits = "A" +node "bi" units = "V", runits = "A" +node "sbulk" units = "V", runits = "A" +node "dbulk" units = "V", runits = "A" +node "N1" units = "V", runits = "A" +node "N2" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (N1, N1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (N1, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (N2, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) collapsible (d, di) collapsible (s, si) collapsible (g, gm) @@ -1921,5 +1907,3 @@ noise "rbdb" (b, dbulk) noise "rbpd" (bi, dbulk) 0 states has bound_step false -instance size 4480 -model size 7176 diff --git a/openvaf/test_data/osdi/bsimbulk.snap b/openvaf/test_data/osdi/bsimbulk.snap index 2ae7496e9..93bf12b81 100644 --- a/openvaf/test_data/osdi/bsimbulk.snap +++ b/openvaf/test_data/osdi/bsimbulk.snap @@ -2094,127 +2094,113 @@ param "DELTAII" units = "V", desc = "Smoothing parameter", flags = ParameterFlags(0x0) 5 terminals -node "d" units = "V", runits = "" -residual 4080 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 4088 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 4096 4294967295 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 4104 4294967295 4294967295 4294967295 -node "t" units = "K", runits = "" -residual 4112 4120 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 4128 4136 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 4144 4152 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 4160 4168 4294967295 4294967295 -node "gm" units = "V", runits = "" -residual 4176 4184 4294967295 4294967295 -node "bi" units = "V", runits = "" -residual 4192 4200 4294967295 4294967295 -node "sbulk" units = "V", runits = "" -residual 4208 4216 4294967295 4294967295 -node "dbulk" units = "V", runits = "" -residual 4224 4232 4294967295 4294967295 -node "N1" units = "V", runits = "" -residual 4240 4248 4294967295 4294967295 -node "N2" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 752 -jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 768 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 784 -jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 792 -jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 800 -jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 808 -jacobian (di, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 816 -jacobian (di, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 824 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 832 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 840 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 848 -jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 856 -jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 864 -jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 872 -jacobian (si, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 880 -jacobian (si, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 888 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 896 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 904 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 912 -jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 920 -jacobian (gi, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 928 -jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 936 -jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 944 -jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 952 -jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 960 -jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 968 -jacobian (bi, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 976 -jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 984 -jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 992 -jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1000 -jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1008 -jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1016 -jacobian (bi, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1024 -jacobian (bi, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1032 -jacobian (sbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1040 -jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1048 -jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1056 -jacobian (dbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1064 -jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1072 -jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1080 -jacobian (N1, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1088 -jacobian (N1, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1096 -jacobian (N1, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1104 -jacobian (N1, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1112 -jacobian (N1, bi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1120 -jacobian (N1, N1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1128 -jacobian (N1, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (N2, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "gm" units = "V", runits = "A" +node "bi" units = "V", runits = "A" +node "sbulk" units = "V", runits = "A" +node "dbulk" units = "V", runits = "A" +node "N1" units = "V", runits = "A" +node "N2" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (N1, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, bi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, N1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (N2, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) collapsible (t, gnd) collapsible (N1, gnd) collapsible (d, di) @@ -2244,5 +2230,3 @@ noise "rbdb" (b, dbulk) noise "rbpd" (bi, dbulk) 0 states has bound_step false -instance size 5336 -model size 8424 diff --git a/openvaf/test_data/osdi/bsimcmg.snap b/openvaf/test_data/osdi/bsimcmg.snap index 10f2bd8f5..babb19001 100644 --- a/openvaf/test_data/osdi/bsimcmg.snap +++ b/openvaf/test_data/osdi/bsimcmg.snap @@ -2130,99 +2130,88 @@ param "ALPHA_UFCM" units = "", desc = "Mobile charge scaling term taking QM effects into account", flags = ParameterFlags(0x0) 5 terminals -node "d" units = "V", runits = "" -residual 4320 4328 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 4336 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 4344 4352 4294967295 4294967295 -node "e" units = "V", runits = "" -residual 4360 4368 4294967295 4294967295 -node "t" units = "K", runits = "" -residual 4376 4384 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 4392 4400 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 4408 4416 4294967295 4294967295 -node "ge" units = "V", runits = "" -residual 4424 4432 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 4440 4448 4294967295 4294967295 -node "q" units = "V", runits = "" -residual 4456 4464 4294967295 4294967295 -node "n" units = "V", runits = "" -residual 4472 4294967295 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 576 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 584 -jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 592 -jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 600 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 608 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 616 -jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (s, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 632 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 640 -jacobian (e, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 648 -jacobian (e, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (e, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 664 -jacobian (e, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 672 -jacobian (e, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 680 -jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 688 -jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 696 -jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 704 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 712 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 720 -jacobian (di, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 728 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 736 -jacobian (di, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 744 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 752 -jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 768 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 -jacobian (si, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 784 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 792 -jacobian (si, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 800 -jacobian (ge, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 808 -jacobian (ge, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ge, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 816 -jacobian (ge, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 824 -jacobian (ge, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 832 -jacobian (ge, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 840 -jacobian (ge, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 848 -jacobian (ge, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 856 -jacobian (ge, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 864 -jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 872 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 880 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 888 -jacobian (gi, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 896 -jacobian (gi, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, n) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 904 -jacobian (q, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 912 -jacobian (q, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 920 -jacobian (q, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 928 -jacobian (q, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 936 -jacobian (q, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 944 -jacobian (q, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 952 -jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "ge" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "q" units = "V", runits = "A" +node "n" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (ge, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ge, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (ge, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, n) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (q, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q, q) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) collapsible (d, di) collapsible (s, si) collapsible (ge, gi) @@ -2246,5 +2235,3 @@ noise "rg" (g, ge) noise "corl" (n, gnd) 0 states has bound_step false -instance size 5336 -model size 8584 diff --git a/openvaf/test_data/osdi/bsimimg.snap b/openvaf/test_data/osdi/bsimimg.snap index a5cf5e8fd..2ec36642b 100644 --- a/openvaf/test_data/osdi/bsimimg.snap +++ b/openvaf/test_data/osdi/bsimimg.snap @@ -1522,75 +1522,66 @@ param "PQSREF" units = "", desc = "P-term of QSREF", flags = ParameterFlags(0x0) 5 terminals -node "d" units = "V", runits = "" -residual 2888 4294967295 4294967295 4294967295 -node "fg" units = "V", runits = "" -residual 2896 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 2904 4294967295 4294967295 4294967295 -node "bg" units = "V", runits = "" -residual 4294967295 2912 4294967295 4294967295 -node "t" units = "K", runits = "" -residual 2920 2928 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 2936 2944 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 2952 2960 4294967295 4294967295 -node "ge" units = "V", runits = "" -residual 2968 2976 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 2984 2992 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fg, fg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fg, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bg, bg) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 416 -jacobian (bg, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 424 -jacobian (bg, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 432 -jacobian (bg, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 440 -jacobian (bg, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 448 -jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 456 -jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 464 -jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 472 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 480 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 488 -jacobian (di, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 496 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 504 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 512 -jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 520 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 528 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 536 -jacobian (si, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 544 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 552 -jacobian (ge, fg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ge, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 560 -jacobian (ge, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 568 -jacobian (ge, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 576 -jacobian (ge, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 584 -jacobian (ge, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 592 -jacobian (ge, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 600 -jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 608 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 616 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (gi, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 632 +node "d" units = "V", runits = "A" +node "fg" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "bg" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "ge" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fg, fg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fg, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bg, bg) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bg, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bg, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bg, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bg, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, ge) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, fg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ge, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ge, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, bg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, ge) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (d, di) collapsible (s, si) collapsible (ge, gi) @@ -1609,5 +1600,3 @@ noise "Rs" (s, si) noise "Rg" (fg, ge) 0 states has bound_step false -instance size 3648 -model size 6144 diff --git a/openvaf/test_data/osdi/bsimsoi.snap b/openvaf/test_data/osdi/bsimsoi.snap index 782853d82..66767aabc 100644 --- a/openvaf/test_data/osdi/bsimsoi.snap +++ b/openvaf/test_data/osdi/bsimsoi.snap @@ -1994,128 +1994,115 @@ param "VTM00" units = "V", desc = "Hard coded 25 degC thermal voltage", flags = ParameterFlags(0x0) 7 terminals -node "d" units = "V", runits = "" -residual 4664 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 4672 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 4680 4294967295 4294967295 4294967295 -node "e" units = "V", runits = "" -residual 4294967295 4688 4294967295 4294967295 -node "p" units = "V", runits = "" -residual 4696 4704 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 4712 4720 4294967295 4294967295 -node "t" units = "K", runits = "" -residual 4728 4736 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 4744 4752 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 4760 4768 4294967295 4294967295 -node "gi" units = "V", runits = "" -residual 4776 4784 4294967295 4294967295 -node "gm" units = "V", runits = "" -residual 4792 4800 4294967295 4294967295 -node "sb" units = "V", runits = "" -residual 4808 4816 4294967295 4294967295 -node "db" units = "V", runits = "" -residual 4824 4832 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 776 -jacobian (e, p) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 784 -jacobian (e, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 792 -jacobian (e, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 800 -jacobian (e, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 808 -jacobian (e, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 816 -jacobian (e, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 824 -jacobian (e, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 832 -jacobian (p, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (p, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 840 -jacobian (p, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 848 -jacobian (p, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 856 -jacobian (p, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (p, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (p, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 864 -jacobian (b, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 872 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 880 -jacobian (b, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 888 -jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 896 -jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 904 -jacobian (b, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 912 -jacobian (b, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 920 -jacobian (b, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 928 -jacobian (t, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 936 -jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 944 -jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 952 -jacobian (di, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 960 -jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 968 -jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 976 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 984 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 992 -jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1000 -jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1008 -jacobian (di, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1016 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1024 -jacobian (si, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1032 -jacobian (si, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1040 -jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1048 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1056 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1064 -jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1072 -jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1080 -jacobian (si, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1088 -jacobian (si, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1096 -jacobian (gi, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1104 -jacobian (gi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1112 -jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1120 -jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1128 -jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1136 -jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1144 -jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1152 -jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1160 -jacobian (gm, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1168 -jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1176 -jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1184 -jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1192 -jacobian (sb, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1200 -jacobian (sb, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1208 -jacobian (sb, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1216 -jacobian (sb, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1224 -jacobian (sb, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1232 -jacobian (db, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1240 -jacobian (db, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1248 -jacobian (db, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1256 -jacobian (db, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1264 -jacobian (db, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1272 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "p" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "gm" units = "V", runits = "A" +node "sb" units = "V", runits = "A" +node "db" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, p) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (p, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (p, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (p, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (p, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (b, gnd) collapsible (p, gnd) collapsible (d, di) @@ -2145,5 +2132,3 @@ noise "rbdb" (b, db) noise "rbsb" (b, sb) 0 states has bound_step false -instance size 6064 -model size 8024 diff --git a/openvaf/test_data/osdi/cccs.snap b/openvaf/test_data/osdi/cccs.snap index 4381d66ee..24d8b67fe 100644 --- a/openvaf/test_data/osdi/cccs.snap +++ b/openvaf/test_data/osdi/cccs.snap @@ -8,27 +8,21 @@ param "Rout" units = "Ohm", desc = "output Resistance", flags = ParameterFlags(0x0) 4 terminals -node "Inp" units = "V", runits = "" -residual 184 4294967295 4294967295 4294967295 -node "Inm" units = "V", runits = "" -residual 192 4294967295 4294967295 4294967295 -node "Outp" units = "V", runits = "" -residual 200 4294967295 4294967295 4294967295 -node "Outm" units = "V", runits = "" -residual 208 4294967295 4294967295 4294967295 -node(flow) "flow(br_in)" units = "A", runits = "" -residual 216 4294967295 4294967295 4294967295 -jacobian (Inp, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inm, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(br_in), Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(br_in), Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(br_in), flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "Inp" units = "V", runits = "A" +node "Inm" units = "V", runits = "A" +node "Outp" units = "V", runits = "A" +node "Outm" units = "V", runits = "A" +node(flow) "flow(br_in)" units = "A", runits = "A" +jacobian (Inp, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inm, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br_in), Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br_in), Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br_in), flow(br_in)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) 0 states has bound_step false -instance size 224 -model size 40 diff --git a/openvaf/test_data/osdi/current_source.snap b/openvaf/test_data/osdi/current_source.snap index 6861586b8..4a5fa09fb 100644 --- a/openvaf/test_data/osdi/current_source.snap +++ b/openvaf/test_data/osdi/current_source.snap @@ -6,15 +6,11 @@ param "R" units = "Ohm", desc = "Output Resistance", flags = ParameterFlags(0x0) 2 terminals -node "Np" units = "V", runits = "" -residual 88 4294967295 4294967295 4294967295 -node "Nm" units = "V", runits = "" -residual 96 4294967295 4294967295 4294967295 -jacobian (Np, Np) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Np, Nm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Nm, Np) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Nm, Nm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "Np" units = "V", runits = "A" +node "Nm" units = "V", runits = "A" +jacobian (Np, Np) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Np, Nm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Nm, Np) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Nm, Nm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) 0 states has bound_step false -instance size 104 -model size 32 diff --git a/openvaf/test_data/osdi/diode.snap b/openvaf/test_data/osdi/diode.snap index e56adf83c..f71194ff1 100644 --- a/openvaf/test_data/osdi/diode.snap +++ b/openvaf/test_data/osdi/diode.snap @@ -28,33 +28,27 @@ param "minr" units = "Ohm", desc = "minr is the value below which the simulator expects elimination of resitance and it will improve simulation efficiency without significantly altering the results.", flags = ParameterFlags(0x0) 3 terminals -node "A" units = "V", runits = "" -residual 248 256 4294967295 4294967295 -node "C" units = "V", runits = "" -residual 264 4294967295 4294967295 4294967295 -node "dT" units = "K", runits = "" -residual 272 4294967295 4294967295 4294967295 -node "CI" units = "V", runits = "" -residual 280 288 4294967295 4294967295 -jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 120 -jacobian (A, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 128 -jacobian (A, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 136 -jacobian (C, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (C, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (C, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (CI, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 144 -jacobian (CI, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (CI, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 152 -jacobian (CI, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 160 +node "A" units = "V", runits = "A" +node "C" units = "V", runits = "A" +node "dT" units = "K", runits = "W" +node "CI" units = "V", runits = "A" +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (A, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (A, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (C, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (C, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (C, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (CI, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (CI, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (CI, C) collapsible (dT, gnd) noise "unnamed0" (A, CI) noise "unnamed1" (CI, C) 0 states has bound_step false -instance size 456 -model size 120 diff --git a/openvaf/test_data/osdi/diode_cmc.snap b/openvaf/test_data/osdi/diode_cmc.snap index fc4644dc2..d86e6c3cc 100644 --- a/openvaf/test_data/osdi/diode_cmc.snap +++ b/openvaf/test_data/osdi/diode_cmc.snap @@ -206,40 +206,34 @@ param "MULT" units = "", desc = "", flags = ParameterFlags(0x0) 2 terminals -node "A" units = "V", runits = "" -residual 1616 1624 4294967295 4294967295 -node "K" units = "V", runits = "" -residual 1632 4294967295 4294967295 4294967295 -node "AIK" units = "V", runits = "" -residual 1640 1648 4294967295 4294967295 -node "charge_A" units = "V", runits = "" -residual 1656 1664 4294967295 4294967295 -node "charge_K" units = "V", runits = "" -residual 1672 1680 4294967295 4294967295 -node "depl_A" units = "V", runits = "" -residual 1688 1696 4294967295 4294967295 -jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 184 -jacobian (A, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 192 -jacobian (A, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 200 -jacobian (A, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 208 -jacobian (A, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 216 -jacobian (K, K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (K, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (AIK, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 224 -jacobian (AIK, K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (AIK, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 232 -jacobian (AIK, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 240 -jacobian (AIK, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 248 -jacobian (AIK, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 256 -jacobian (charge_A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_A, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_A, charge_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 264 -jacobian (charge_K, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_K, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_K, charge_K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 272 -jacobian (depl_A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (depl_A, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (depl_A, depl_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 280 +node "A" units = "V", runits = "A" +node "K" units = "V", runits = "A" +node "AIK" units = "V", runits = "A" +node "charge_A" units = "V", runits = "A" +node "charge_K" units = "V", runits = "A" +node "depl_A" units = "V", runits = "A" +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (A, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (A, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (A, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (A, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (K, K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (K, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (AIK, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (AIK, K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (AIK, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (AIK, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (AIK, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (AIK, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (charge_A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_A, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_A, charge_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (charge_K, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_K, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_K, charge_K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (depl_A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (depl_A, AIK) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (depl_A, depl_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (AIK, K) collapsible (charge_A, gnd) collapsible (charge_K, gnd) @@ -249,5 +243,3 @@ noise "flicker" (A, AIK) noise "thermal" (AIK, K) 0 states has bound_step false -instance size 1856 -model size 840 diff --git a/openvaf/test_data/osdi/diode_lim.snap b/openvaf/test_data/osdi/diode_lim.snap index 260bfdc38..ff1c50b3e 100644 --- a/openvaf/test_data/osdi/diode_lim.snap +++ b/openvaf/test_data/osdi/diode_lim.snap @@ -29,30 +29,24 @@ units = "Ohm", desc = "minr is the value below which the simulator expects elimi 3 terminals node "A" units = "V", runits = "A" -residual 216 224 232 240 node "C" units = "V", runits = "A" -residual 248 4294967295 4294967295 4294967295 node "dT" units = "K", runits = "W" -residual 256 4294967295 264 4294967295 node "CI" units = "V", runits = "A" -residual 272 280 288 296 -jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 120 -jacobian (A, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (A, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 128 -jacobian (C, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (C, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (C, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dT, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (CI, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 136 -jacobian (CI, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (CI, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (CI, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 144 +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (A, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (A, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (C, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (C, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (C, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dT, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (CI, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, dT) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (CI, C) collapsible (dT, gnd) 1 states has bound_step false -instance size 400 -model size 120 diff --git a/openvaf/test_data/osdi/ekv.snap b/openvaf/test_data/osdi/ekv.snap index 0a1553c12..de3e4397b 100644 --- a/openvaf/test_data/osdi/ekv.snap +++ b/openvaf/test_data/osdi/ekv.snap @@ -152,53 +152,45 @@ param "tp_njtsswg" units = "", desc = "", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 904 912 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 4294967295 920 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 928 936 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 944 952 4294967295 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" node "implicit_equation_0" units = "", runits = "" -residual 960 968 4294967295 4294967295 node "implicit_equation_1" units = "", runits = "" -residual 976 984 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 264 -jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 272 -jacobian (d, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 280 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 288 -jacobian (g, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 296 -jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 304 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 312 -jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 320 -jacobian (s, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 328 -jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 336 -jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 344 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 352 -jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (implicit_equation_0, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 360 -jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 368 -jacobian (implicit_equation_0, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 376 -jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 384 -jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (implicit_equation_1, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 392 -jacobian (implicit_equation_1, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 400 -jacobian (implicit_equation_1, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 408 -jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 416 -jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) noise "thermal" (d, s) noise "flicker" (d, s) 0 states has bound_step false -instance size 1296 -model size 616 diff --git a/openvaf/test_data/osdi/ekv_longchannel.snap b/openvaf/test_data/osdi/ekv_longchannel.snap index b48dc9170..34ef76b48 100644 --- a/openvaf/test_data/osdi/ekv_longchannel.snap +++ b/openvaf/test_data/osdi/ekv_longchannel.snap @@ -16,23 +16,17 @@ param "THETA" units = "", desc = "", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 112 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 120 4294967295 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) 0 states has bound_step false -instance size 192 -model size 72 diff --git a/openvaf/test_data/osdi/hicuml2.snap b/openvaf/test_data/osdi/hicuml2.snap index c45bc9fff..03742c14b 100644 --- a/openvaf/test_data/osdi/hicuml2.snap +++ b/openvaf/test_data/osdi/hicuml2.snap @@ -274,134 +274,117 @@ param "type" units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) 5 terminals -node "c" units = "V", runits = "" -residual 2376 2384 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 2392 2400 4294967295 4294967295 -node "e" units = "V", runits = "" -residual 2408 2416 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 2424 2432 4294967295 4294967295 -node "tnode" units = "V", runits = "" -residual 2440 2448 4294967295 4294967295 -node "ci" units = "V", runits = "" -residual 2456 2464 4294967295 4294967295 -node "ei" units = "V", runits = "" -residual 2472 2480 4294967295 4294967295 -node "bp" units = "V", runits = "" -residual 2488 2496 4294967295 4294967295 -node "bi" units = "V", runits = "" -residual 2504 2512 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 2520 2528 4294967295 4294967295 -node "xf1" units = "V", runits = "" -residual 2536 2544 4294967295 4294967295 -node "xf2" units = "V", runits = "" -residual 2552 2560 4294967295 4294967295 -node "xf" units = "V", runits = "" -residual 2568 2576 4294967295 4294967295 -node "n1" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "n2" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 +node "c" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "tnode" units = "V", runits = "A" +node "ci" units = "V", runits = "A" +node "ei" units = "V", runits = "A" +node "bp" units = "V", runits = "A" +node "bi" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "xf1" units = "V", runits = "A" +node "xf2" units = "V", runits = "A" +node "xf" units = "V", runits = "A" +node "n1" units = "V", runits = "A" +node "n2" units = "V", runits = "A" node "implicit_equation_0" units = "", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 node "implicit_equation_1" units = "", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (c, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 768 -jacobian (c, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 -jacobian (c, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 784 -jacobian (b, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 792 -jacobian (b, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 800 -jacobian (b, ci) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 808 -jacobian (b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 816 -jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 824 -jacobian (e, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e, bp) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 832 -jacobian (s, c) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 840 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 848 -jacobian (s, tnode) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 856 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 864 -jacobian (tnode, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 872 -jacobian (tnode, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tnode, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ci, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ci, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 880 -jacobian (ci, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 888 -jacobian (ci, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 896 -jacobian (ci, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 904 -jacobian (ci, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 912 -jacobian (ci, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 920 -jacobian (ci, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 928 -jacobian (ci, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ci, n2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ei, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ei, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 936 -jacobian (ei, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 944 -jacobian (ei, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 952 -jacobian (ei, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 960 -jacobian (ei, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 968 -jacobian (ei, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ei, xf) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 976 -jacobian (ei, n1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ei, n2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ei, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (ei, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bp, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bp, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 984 -jacobian (bp, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 992 -jacobian (bp, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1000 -jacobian (bp, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1008 -jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1016 -jacobian (bp, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1024 -jacobian (bp, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1032 -jacobian (bi, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1040 -jacobian (bi, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1048 -jacobian (bi, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1056 -jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1064 -jacobian (bi, xf) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1072 -jacobian (bi, n1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bi, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1080 -jacobian (si, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1088 -jacobian (si, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1096 -jacobian (si, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1104 -jacobian (xf1, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf1, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf1, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf1, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf1, xf1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1112 -jacobian (xf1, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf2, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf2, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf2, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf2, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf2, xf1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf2, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1120 -jacobian (xf, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xf, xf) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1128 -jacobian (n1, n1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (n2, n2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (implicit_equation_0, n1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1136 -jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (implicit_equation_1, n2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1144 -jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (c, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, ci) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, bp) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, c) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, tnode) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (tnode, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (tnode, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tnode, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ci, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ci, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (ci, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ci, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ci, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ci, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ci, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ci, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ci, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ci, n2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ei, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ei, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ei, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ei, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ei, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ei, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (ei, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ei, xf) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (ei, n1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ei, n2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ei, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (ei, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bp, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bp, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, xf) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bi, n1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (xf1, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, xf1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (xf1, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, xf1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (xf, tnode) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf, ci) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf, ei) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf, xf) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (n1, n1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (n2, n2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, n1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, n2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) collapsible (implicit_equation_0, gnd) collapsible (implicit_equation_1, gnd) collapsible (b, bp) @@ -429,5 +412,3 @@ noise "ibei" (n1, gnd) noise "it" (n2, gnd) 0 states has bound_step false -instance size 3560 -model size 1112 diff --git a/openvaf/test_data/osdi/hisim2.snap b/openvaf/test_data/osdi/hisim2.snap index ca0c37381..0a6cebd61 100644 --- a/openvaf/test_data/osdi/hisim2.snap +++ b/openvaf/test_data/osdi/hisim2.snap @@ -1376,94 +1376,81 @@ param "PSLIMPT" units = "V", desc = "Ps0 limit for deep punchthrough ", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 3688 4294967295 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 3696 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 3704 4294967295 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 3712 4294967295 4294967295 4294967295 -node "dp" units = "V", runits = "" -residual 3720 3728 4294967295 4294967295 -node "gp" units = "V", runits = "" -residual 3736 3744 4294967295 4294967295 -node "sp" units = "V", runits = "" -residual 3752 3760 4294967295 4294967295 -node "bp" units = "V", runits = "" -residual 3768 3776 4294967295 4294967295 -node "db" units = "V", runits = "" -residual 3784 3792 4294967295 4294967295 -node "sb" units = "V", runits = "" -residual 3800 3808 4294967295 4294967295 -node "n" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "int_nqs_b" units = "V", runits = "" -residual 3816 3824 4294967295 4294967295 -node "int_nqs_i" units = "V", runits = "" -residual 3832 3840 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 504 -jacobian (dp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 512 -jacobian (dp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 520 -jacobian (dp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 528 -jacobian (dp, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 536 -jacobian (dp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 544 -jacobian (gp, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 552 -jacobian (gp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 560 -jacobian (gp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 568 -jacobian (gp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 576 -jacobian (gp, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 584 -jacobian (gp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 592 -jacobian (sp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 600 -jacobian (sp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 608 -jacobian (sp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 616 -jacobian (sp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (sp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 632 -jacobian (sp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sp, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 640 -jacobian (sp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 648 -jacobian (bp, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (bp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 664 -jacobian (bp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 672 -jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 680 -jacobian (bp, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 688 -jacobian (bp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 696 -jacobian (bp, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 704 -jacobian (bp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 712 -jacobian (db, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (db, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 720 -jacobian (db, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 728 -jacobian (db, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 736 -jacobian (sb, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (sb, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 744 -jacobian (sb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 752 -jacobian (sb, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_b, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_b, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_b, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_b, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 768 -jacobian (int_nqs_i, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_i, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_i, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_i, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (int_nqs_i, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "dp" units = "V", runits = "A" +node "gp" units = "V", runits = "A" +node "sp" units = "V", runits = "A" +node "bp" units = "V", runits = "A" +node "db" units = "V", runits = "A" +node "sb" units = "V", runits = "A" +node "n" units = "V", runits = "A" +node "int_nqs_b" units = "V", runits = "A" +node "int_nqs_i" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sp, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (db, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (db, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sb, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_b, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_b, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_b, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_b, int_nqs_b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (int_nqs_i, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_i, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_i, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_i, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (int_nqs_i, int_nqs_i) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (d, dp) collapsible (sp, s) collapsible (g, gp) @@ -1480,5 +1467,3 @@ noise "isource" (sp, s) noise "unnamed1" (n, gnd) 0 states has bound_step false -instance size 4416 -model size 5480 diff --git a/openvaf/test_data/osdi/hisimhv.snap b/openvaf/test_data/osdi/hisimhv.snap index fe0b90252..567eb8fb5 100644 --- a/openvaf/test_data/osdi/hisimhv.snap +++ b/openvaf/test_data/osdi/hisimhv.snap @@ -1724,174 +1724,155 @@ param "PVDIFFJS" units = "-", desc = "Cross-term dependence of vdiffjs )", flags = ParameterFlags(0x0) 6 terminals -node "d" units = "V", runits = "" -residual 5776 5784 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 5792 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 5800 5808 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 5816 4294967295 4294967295 4294967295 -node "sub" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "temp" units = "V", runits = "" -residual 5824 5832 4294967295 4294967295 -node "dp" units = "V", runits = "" -residual 5840 5848 4294967295 4294967295 -node "gp" units = "V", runits = "" -residual 5856 5864 4294967295 4294967295 -node "sp" units = "V", runits = "" -residual 5872 5880 4294967295 4294967295 -node "bp" units = "V", runits = "" -residual 5888 5896 4294967295 4294967295 -node "db" units = "V", runits = "" -residual 5904 5912 4294967295 4294967295 -node "sb" units = "V", runits = "" -residual 5920 5928 4294967295 4294967295 -node "qi" units = "V", runits = "" -residual 5936 5944 4294967295 4294967295 -node "qb" units = "V", runits = "" -residual 5952 5960 4294967295 4294967295 -node "qbd" units = "V", runits = "" -residual 5968 5976 4294967295 4294967295 -node "n" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "charge_A" units = "V", runits = "" -residual 5984 5992 4294967295 4294967295 -node "charge_K" units = "V", runits = "" -residual 6000 6008 4294967295 4294967295 -node "depl_A" units = "V", runits = "" -residual 6016 6024 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1048 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1056 -jacobian (d, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1064 -jacobian (d, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1072 -jacobian (d, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1080 -jacobian (d, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1088 -jacobian (d, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1096 -jacobian (d, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1104 -jacobian (d, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1112 -jacobian (d, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1120 -jacobian (d, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1128 -jacobian (d, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1136 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1144 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1152 -jacobian (s, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1160 -jacobian (s, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1168 -jacobian (s, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1176 -jacobian (s, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1184 -jacobian (s, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1192 -jacobian (s, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1200 -jacobian (s, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1208 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (temp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (temp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (temp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1216 -jacobian (temp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (temp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (temp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (temp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1224 -jacobian (dp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1232 -jacobian (dp, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1240 -jacobian (dp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1248 -jacobian (dp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1256 -jacobian (dp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1264 -jacobian (dp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1272 -jacobian (dp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1280 -jacobian (dp, db) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1288 -jacobian (dp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1296 -jacobian (dp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1304 -jacobian (dp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gp, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1312 -jacobian (gp, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gp, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1320 -jacobian (gp, sub) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1328 -jacobian (gp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1336 -jacobian (gp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1344 -jacobian (gp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1352 -jacobian (gp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1360 -jacobian (gp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1368 -jacobian (gp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1376 -jacobian (gp, qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1384 -jacobian (gp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1392 -jacobian (sp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1400 -jacobian (sp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1408 -jacobian (sp, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1416 -jacobian (sp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1424 -jacobian (sp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1432 -jacobian (sp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1440 -jacobian (sp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1448 -jacobian (sp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1456 -jacobian (sp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1464 -jacobian (sp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1472 -jacobian (sp, qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1480 -jacobian (sp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1488 -jacobian (sp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1496 -jacobian (bp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1504 -jacobian (bp, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (bp, sub) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1512 -jacobian (bp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1520 -jacobian (bp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1528 -jacobian (bp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1536 -jacobian (bp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1544 -jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1552 -jacobian (bp, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1560 -jacobian (bp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1568 -jacobian (bp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1576 -jacobian (bp, qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1584 -jacobian (bp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1592 -jacobian (db, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1600 -jacobian (db, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1608 -jacobian (db, dp) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1616 -jacobian (db, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1624 -jacobian (db, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1632 -jacobian (db, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1640 -jacobian (db, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1648 -jacobian (db, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1656 -jacobian (sb, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1664 -jacobian (sb, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1672 -jacobian (sb, sp) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1680 -jacobian (sb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1688 -jacobian (sb, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1696 -jacobian (qi, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qi, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qi, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qi, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qi, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qi, qi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1704 -jacobian (qb, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qb, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qb, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qb, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qb, qb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1712 -jacobian (qbd, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (qbd, qbd) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1720 -jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_A, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_A, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_A, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_A, charge_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1728 -jacobian (charge_K, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_K, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_K, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (charge_K, charge_K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1736 -jacobian (depl_A, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (depl_A, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (depl_A, depl_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1744 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "sub" units = "V", runits = "A" +node "temp" units = "V", runits = "A" +node "dp" units = "V", runits = "A" +node "gp" units = "V", runits = "A" +node "sp" units = "V", runits = "A" +node "bp" units = "V", runits = "A" +node "db" units = "V", runits = "A" +node "sb" units = "V", runits = "A" +node "qi" units = "V", runits = "A" +node "qb" units = "V", runits = "A" +node "qbd" units = "V", runits = "A" +node "n" units = "V", runits = "A" +node "charge_A" units = "V", runits = "A" +node "charge_K" units = "V", runits = "A" +node "depl_A" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (temp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (temp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (temp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (temp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (temp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (temp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (temp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dp, db) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (dp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (dp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (dp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gp, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gp, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, sub) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sp, qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sp, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bp, sub) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, qbd) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (db, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, dp) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (db, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db, charge_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (db, charge_K) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (db, depl_A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sb, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, sp) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (sb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb, sb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (qi, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qi, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qi, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qi, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qi, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qi, qi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (qb, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qb, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qb, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qb, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qb, qb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (qbd, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, dp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, sp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (qbd, qbd) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_A, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_A, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_A, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_A, charge_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (charge_K, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_K, temp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_K, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (charge_K, charge_K) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (depl_A, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (depl_A, db) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (depl_A, depl_A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (sub, temp) collapsible (charge_A, gnd) collapsible (charge_K, gnd) @@ -1915,5 +1896,3 @@ noise "isource" (sp, s) noise "unnamed1" (n, gnd) 0 states has bound_step false -instance size 7424 -model size 6848 diff --git a/openvaf/test_data/osdi/hisimsotb.snap b/openvaf/test_data/osdi/hisimsotb.snap index 5958633bc..86b29b050 100644 --- a/openvaf/test_data/osdi/hisimsotb.snap +++ b/openvaf/test_data/osdi/hisimsotb.snap @@ -632,93 +632,82 @@ param "TN" units = "", desc = "", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 2248 2256 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 2264 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 2272 2280 4294967295 4294967295 -node "e" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "t" units = "K", runits = "" -residual 2288 2296 4294967295 4294967295 -node "gp" units = "V", runits = "" -residual 2304 2312 4294967295 4294967295 -node "bp" units = "V", runits = "" -residual 2320 2328 4294967295 4294967295 -node "n" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -node "nqs_qi" units = "V", runits = "" -residual 2336 2344 4294967295 4294967295 -node "nqs_qb" units = "V", runits = "" -residual 2352 2360 4294967295 4294967295 -node "nqs_qhs" units = "V", runits = "" -residual 2368 2376 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 528 -jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 536 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 544 -jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 552 -jacobian (d, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 560 -jacobian (d, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 568 -jacobian (d, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 576 -jacobian (d, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 584 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 592 -jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 600 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 608 -jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 616 -jacobian (s, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (s, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 632 -jacobian (s, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 640 -jacobian (s, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 648 -jacobian (s, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 664 -jacobian (t, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (t, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 672 -jacobian (gp, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 680 -jacobian (gp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 688 -jacobian (gp, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 696 -jacobian (gp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 704 -jacobian (gp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 712 -jacobian (gp, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 720 -jacobian (gp, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 728 -jacobian (gp, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 736 -jacobian (bp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 744 -jacobian (bp, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 752 -jacobian (bp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 760 -jacobian (bp, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 768 -jacobian (bp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 776 -jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 784 -jacobian (bp, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 792 -jacobian (bp, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 800 -jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qi, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qi, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qi, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qi, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qi, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 808 -jacobian (nqs_qi, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qb, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qb, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qb, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qb, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qb, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 816 -jacobian (nqs_qb, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qhs, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qhs, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qhs, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qhs, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qhs, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (nqs_qhs, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 824 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "gp" units = "V", runits = "A" +node "bp" units = "V", runits = "A" +node "n" units = "V", runits = "A" +node "nqs_qi" units = "V", runits = "A" +node "nqs_qb" units = "V", runits = "A" +node "nqs_qhs" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gp, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gp, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bp, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bp, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qi, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qi, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qi, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qi, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qi, nqs_qi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (nqs_qi, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qb, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qb, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qb, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qb, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qb, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qb, nqs_qb) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (nqs_qb, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qhs, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qhs, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qhs, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qhs, gp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qhs, bp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (nqs_qhs, nqs_qhs) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (g, gp) collapsible (e, bp) collapsible (t, gnd) @@ -733,5 +722,3 @@ noise "iigb" (gp, bp) noise "unnamed1" (n, gnd) 0 states has bound_step false -instance size 3056 -model size 2480 diff --git a/openvaf/test_data/osdi/mextram.snap b/openvaf/test_data/osdi/mextram.snap index 37190cc49..4d1e491e5 100644 --- a/openvaf/test_data/osdi/mextram.snap +++ b/openvaf/test_data/osdi/mextram.snap @@ -244,138 +244,130 @@ param "gmin" units = "", desc = "Minimum conductance", flags = ParameterFlags(0x0) 5 terminals -node "c" units = "V", runits = "" -residual 2616 2624 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 2632 2640 4294967295 4294967295 -node "e" units = "V", runits = "" -residual 2648 2656 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 2664 2672 4294967295 4294967295 -node "dt" units = "V", runits = "" -residual 2680 2688 4294967295 4294967295 -node "e1" units = "V", runits = "" -residual 2696 2704 4294967295 4294967295 -node "b1" units = "V", runits = "" -residual 2712 2720 4294967295 4294967295 -node "b2" units = "V", runits = "" -residual 2728 2736 4294967295 4294967295 -node "c1" units = "V", runits = "" -residual 2744 2752 4294967295 4294967295 -node "c2" units = "V", runits = "" -residual 2760 2768 4294967295 4294967295 -node "c3" units = "V", runits = "" -residual 2776 2784 4294967295 4294967295 -node "c4" units = "V", runits = "" -residual 2792 2800 4294967295 4294967295 -node "noi" units = "V", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 +node "c" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "dt" units = "V", runits = "A" +node "e1" units = "V", runits = "A" +node "b1" units = "V", runits = "A" +node "b2" units = "V", runits = "A" +node "c1" units = "V", runits = "A" +node "c2" units = "V", runits = "A" +node "c3" units = "V", runits = "A" +node "c4" units = "V", runits = "A" +node "noi" units = "V", runits = "A" node "implicit_equation_0" units = "", runits = "" -residual 4294967295 4294967295 4294967295 4294967295 -jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 840 -jacobian (c, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 848 -jacobian (c, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, c) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 856 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 864 -jacobian (b, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 872 -jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 880 -jacobian (b, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 888 -jacobian (b, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 896 -jacobian (b, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 904 -jacobian (b, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 912 -jacobian (b, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 920 -jacobian (b, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 928 -jacobian (e, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 936 -jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 944 -jacobian (e, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 952 -jacobian (s, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 960 -jacobian (s, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 968 -jacobian (s, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 976 -jacobian (dt, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e1, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 984 -jacobian (e1, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 992 -jacobian (e1, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1000 -jacobian (e1, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1008 -jacobian (e1, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1016 -jacobian (e1, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1024 -jacobian (e1, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (e1, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b1, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1032 -jacobian (b1, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1040 -jacobian (b1, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1048 -jacobian (b1, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1056 -jacobian (b1, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1064 -jacobian (b1, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1072 -jacobian (b1, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1080 -jacobian (b2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1088 -jacobian (b2, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1096 -jacobian (b2, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1104 -jacobian (b2, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1112 -jacobian (b2, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1120 -jacobian (b2, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1128 -jacobian (b2, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b2, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c1, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c1, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1136 -jacobian (c1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1144 -jacobian (c1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1152 -jacobian (c1, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1160 -jacobian (c1, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c1, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1168 -jacobian (c1, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1176 -jacobian (c1, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1184 -jacobian (c1, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1192 -jacobian (c2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1200 -jacobian (c2, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1208 -jacobian (c2, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1216 -jacobian (c2, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1224 -jacobian (c2, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1232 -jacobian (c2, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c3, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c3, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1240 -jacobian (c3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1248 -jacobian (c3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1256 -jacobian (c3, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1264 -jacobian (c3, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1272 -jacobian (c3, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1280 -jacobian (c3, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1288 -jacobian (c3, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1296 -jacobian (c4, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (c4, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1304 -jacobian (c4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1312 -jacobian (c4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1320 -jacobian (c4, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1328 -jacobian (c4, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1336 -jacobian (c4, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1344 -jacobian (c4, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1352 -jacobian (c4, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1360 -jacobian (noi, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (implicit_equation_0, noi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 1368 -jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, c) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, e) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dt, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e1, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e1, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e1, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e1, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e1, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e1, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e1, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e1, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b1, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b1, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b1, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b1, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b1, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b1, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b1, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b2, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b2, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c1, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c1, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c1, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c2, e1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c2, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c2, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c2, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c2, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c3, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c3, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c3, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c4, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, b1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, b2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, c1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, c2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, c3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c4, c4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (noi, noi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, noi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) collapsible (c4, c1) collapsible (c3, c4) noise "ib1e1_f" (b1, e1) @@ -406,5 +398,3 @@ noise "rcc" (c, c1) noise "in" (noi, gnd) 0 states has bound_step false -instance size 4264 -model size 960 diff --git a/openvaf/test_data/osdi/mvsg_cmc.snap b/openvaf/test_data/osdi/mvsg_cmc.snap index 809cde9d4..5efafea9c 100644 --- a/openvaf/test_data/osdi/mvsg_cmc.snap +++ b/openvaf/test_data/osdi/mvsg_cmc.snap @@ -510,246 +510,221 @@ param "minc" units = "F", desc = "Minimum capacitance", flags = ParameterFlags(0x0) 4 terminals -node "d" units = "V", runits = "" -residual 3560 3568 4294967295 4294967295 -node "g" units = "V", runits = "" -residual 3576 4294967295 4294967295 4294967295 -node "s" units = "V", runits = "" -residual 3584 3592 4294967295 4294967295 -node "b" units = "V", runits = "" -residual 4294967295 3600 4294967295 4294967295 -node "di" units = "V", runits = "" -residual 3608 3616 4294967295 4294967295 -node "gi1" units = "V", runits = "" -residual 3624 3632 4294967295 4294967295 -node "gi2" units = "V", runits = "" -residual 3640 3648 4294967295 4294967295 -node "si" units = "V", runits = "" -residual 3656 3664 4294967295 4294967295 -node "fps1" units = "V", runits = "" -residual 3672 3680 4294967295 4294967295 -node "fps2" units = "V", runits = "" -residual 3688 3696 4294967295 4294967295 -node "fps3" units = "V", runits = "" -residual 3704 3712 4294967295 4294967295 -node "fps4" units = "V", runits = "" -residual 3720 3728 4294967295 4294967295 -node "fp1" units = "V", runits = "" -residual 3736 3744 4294967295 4294967295 -node "fp2" units = "V", runits = "" -residual 3752 3760 4294967295 4294967295 -node "fp3" units = "V", runits = "" -residual 3768 3776 4294967295 4294967295 -node "fp4" units = "V", runits = "" -residual 3784 3792 4294967295 4294967295 -node "drc" units = "V", runits = "" -residual 3800 4294967295 4294967295 4294967295 -node "src" units = "V", runits = "" -residual 3808 4294967295 4294967295 4294967295 -node "tr" units = "V", runits = "" -residual 3816 3824 4294967295 4294967295 -node "tr1" units = "V", runits = "" -residual 3832 3840 4294967295 4294967295 -node "xt1" units = "V", runits = "" -residual 3848 3856 4294967295 4294967295 -node "xt2" units = "V", runits = "" -residual 3864 3872 4294967295 4294967295 -node "dt" units = "K", runits = "" -residual 3880 3888 4294967295 4294967295 +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "di" units = "V", runits = "A" +node "gi1" units = "V", runits = "A" +node "gi2" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "fps1" units = "V", runits = "A" +node "fps2" units = "V", runits = "A" +node "fps3" units = "V", runits = "A" +node "fps4" units = "V", runits = "A" +node "fp1" units = "V", runits = "A" +node "fp2" units = "V", runits = "A" +node "fp3" units = "V", runits = "A" +node "fp4" units = "V", runits = "A" +node "drc" units = "V", runits = "A" +node "src" units = "V", runits = "A" +node "tr" units = "V", runits = "A" +node "tr1" units = "V", runits = "A" +node "xt1" units = "V", runits = "A" +node "xt2" units = "V", runits = "A" +node "dt" units = "K", runits = "W" node(flow) "flow(d,drc)" units = "A", runits = "" -residual 3896 4294967295 4294967295 4294967295 node(flow) "flow(src,s)" units = "A", runits = "" -residual 3904 4294967295 4294967295 4294967295 -jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1528 -jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1536 -jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1544 -jacobian (d, gi1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1552 -jacobian (d, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (d, flow(d,drc)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (g, gi1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1560 -jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1568 -jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1576 -jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1584 -jacobian (s, gi1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1592 -jacobian (s, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1600 -jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1608 -jacobian (s, fps1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1616 -jacobian (s, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1624 -jacobian (s, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1632 -jacobian (s, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1640 -jacobian (s, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1648 -jacobian (s, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1656 -jacobian (s, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1664 -jacobian (s, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1672 -jacobian (s, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1680 -jacobian (s, flow(src,s)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (b, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1688 -jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1696 -jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1704 -jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1712 -jacobian (b, gi1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1720 -jacobian (b, fps1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1728 -jacobian (b, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1736 -jacobian (b, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1744 -jacobian (b, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1752 -jacobian (b, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1760 -jacobian (b, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1768 -jacobian (b, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1776 -jacobian (b, dt) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1784 -jacobian (di, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1792 -jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1800 -jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1808 -jacobian (di, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1816 -jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1824 -jacobian (di, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1832 -jacobian (di, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (di, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1840 -jacobian (gi1, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1848 -jacobian (gi1, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi1, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1856 -jacobian (gi1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1864 -jacobian (gi1, gi1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1872 -jacobian (gi1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi2, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1880 -jacobian (gi2, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1888 -jacobian (gi2, gi1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (gi2, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1896 -jacobian (gi2, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1904 -jacobian (gi2, fps1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1912 -jacobian (gi2, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1920 -jacobian (gi2, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1928 -jacobian (gi2, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1936 -jacobian (gi2, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1944 -jacobian (gi2, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1952 -jacobian (gi2, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1960 -jacobian (gi2, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 1968 -jacobian (gi2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1976 -jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1984 -jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 1992 -jacobian (si, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2000 -jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2008 -jacobian (si, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2016 -jacobian (si, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2024 -jacobian (si, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2032 -jacobian (si, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2040 -jacobian (si, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2048 -jacobian (si, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2056 -jacobian (si, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2064 -jacobian (si, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (si, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2072 -jacobian (fps1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2080 -jacobian (fps1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2088 -jacobian (fps1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2096 -jacobian (fps1, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2104 -jacobian (fps1, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2112 -jacobian (fps1, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2120 -jacobian (fps1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2128 -jacobian (fps2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2136 -jacobian (fps2, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2144 -jacobian (fps2, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2152 -jacobian (fps2, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2160 -jacobian (fps2, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2168 -jacobian (fps2, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2176 -jacobian (fps2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2184 -jacobian (fps3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2192 -jacobian (fps3, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2200 -jacobian (fps3, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2208 -jacobian (fps3, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2216 -jacobian (fps3, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2224 -jacobian (fps3, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2232 -jacobian (fps3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2240 -jacobian (fps4, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fps4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2248 -jacobian (fps4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2256 -jacobian (fps4, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2264 -jacobian (fps4, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2272 -jacobian (fps4, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2280 -jacobian (fps4, src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fps4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2288 -jacobian (fp1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2296 -jacobian (fp1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2304 -jacobian (fp1, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2312 -jacobian (fp1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2320 -jacobian (fp1, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2328 -jacobian (fp1, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2336 -jacobian (fp1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2344 -jacobian (fp2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2352 -jacobian (fp2, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2360 -jacobian (fp2, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2368 -jacobian (fp2, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2376 -jacobian (fp2, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2384 -jacobian (fp2, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2392 -jacobian (fp2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2400 -jacobian (fp3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2408 -jacobian (fp3, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2416 -jacobian (fp3, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2424 -jacobian (fp3, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2432 -jacobian (fp3, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2440 -jacobian (fp3, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2448 -jacobian (fp3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2456 -jacobian (fp4, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fp4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2464 -jacobian (fp4, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2472 -jacobian (fp4, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2480 -jacobian (fp4, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2488 -jacobian (fp4, drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fp4, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (fp4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2496 -jacobian (drc, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (drc, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (drc, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (drc, drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (drc, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (drc, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (drc, flow(d,drc)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (src, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (src, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (src, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (src, src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (src, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (src, flow(src,s)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tr, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2504 -jacobian (tr, tr1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2512 -jacobian (tr1, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tr1, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (tr1, tr) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2520 -jacobian (tr1, tr1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2528 -jacobian (xt1, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xt1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xt1, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xt1, xt1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 2536 -jacobian (xt1, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xt1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xt2, xt1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (xt2, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2544 -jacobian (dt, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (dt, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 2552 -jacobian (flow(d,drc), d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(d,drc), drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(d,drc), dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(d,drc), flow(d,drc)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(src,s), s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(src,s), src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(src,s), dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (flow(src,s), flow(src,s)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, gi1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, flow(d,drc)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gi1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, gi1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fps1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, flow(src,s)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, gi1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fps1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b, dt) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi1, d) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi1, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi1, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi1, gi1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi2, s) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi2, gi1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi2, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi2, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi2, fps1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, fp4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gi2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, fps2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, fps3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, fps4) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, fp1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, fp2) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, fp3) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fps1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps1, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps1, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps1, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps2, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fps2, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps2, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps2, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps2, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps3, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fps3, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps3, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps3, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps3, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps4, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fps4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fps4, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps4, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps4, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fps4, src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fps4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp1, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp2, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp2, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (fp3, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp3, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fp4, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (fp4, drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fp4, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (fp4, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (drc, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (drc, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (drc, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (drc, drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (drc, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (drc, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (drc, flow(d,drc)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (src, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (src, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (src, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (src, src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (src, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (src, flow(src,s)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tr, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (tr, tr1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (tr1, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tr1, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tr1, tr) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (tr1, tr1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (xt1, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xt1, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xt1, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xt1, xt1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (xt1, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xt1, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xt2, xt1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xt2, xt2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dt, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, gi2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fps1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fps2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fps3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fps4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, fp4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, tr) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dt, dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(d,drc), d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(d,drc), drc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(d,drc), dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(d,drc), flow(d,drc)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(src,s), s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(src,s), src) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(src,s), dt) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(src,s), flow(src,s)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) collapsible (tr1, gnd) collapsible (tr, gnd) collapsible (fp4, fp3) @@ -787,5 +762,3 @@ noise "rcd" (flow(d,drc), gnd) noise "rcs" (flow(src,s), gnd) 0 states has bound_step false -instance size 5840 -model size 2072 diff --git a/openvaf/test_data/osdi/noise.snap b/openvaf/test_data/osdi/noise.snap index 2f8a138d0..07cd51887 100644 --- a/openvaf/test_data/osdi/noise.snap +++ b/openvaf/test_data/osdi/noise.snap @@ -7,14 +7,10 @@ units = "", desc = "", flags = ParameterFlags(0x0) 2 terminals node "a" units = "V", runits = "A" -residual 4294967295 4294967295 4294967295 4294967295 node "c" units = "V", runits = "A" -residual 4294967295 4294967295 4294967295 4294967295 noise "white1" (a, c) noise "white2" (a, c) noise "flickr1" (a, c) noise "flickr2" (a, c) 0 states has bound_step false -instance size 96 -model size 32 diff --git a/openvaf/test_data/osdi/psp102.snap b/openvaf/test_data/osdi/psp102.snap index d8f457c1c..86c84f185 100644 --- a/openvaf/test_data/osdi/psp102.snap +++ b/openvaf/test_data/osdi/psp102.snap @@ -636,78 +636,67 @@ param "XGW" units = "", desc = "", flags = ParameterFlags(0x0) 4 terminals -node "D" units = "V", runits = "" -residual 5088 5096 4294967295 4294967295 -node "G" units = "V", runits = "" -residual 5104 4294967295 4294967295 4294967295 -node "S" units = "V", runits = "" -residual 5112 5120 4294967295 4294967295 -node "B" units = "V", runits = "" -residual 5128 4294967295 4294967295 4294967295 -node "NOI" units = "V", runits = "" -residual 5136 5144 4294967295 4294967295 -node "NOI2" units = "V", runits = "" -residual 5152 4294967295 4294967295 4294967295 -node "GP" units = "V", runits = "" -residual 5160 5168 4294967295 4294967295 -node "BP" units = "V", runits = "" -residual 5176 5184 4294967295 4294967295 -node "BI" units = "V", runits = "" -residual 5192 4294967295 4294967295 4294967295 -node "BS" units = "V", runits = "" -residual 5200 5208 4294967295 4294967295 -node "BD" units = "V", runits = "" -residual 5216 5224 4294967295 4294967295 -jacobian (D, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 408 -jacobian (D, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 416 -jacobian (D, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 424 -jacobian (D, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (D, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 432 -jacobian (D, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 440 -jacobian (D, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 448 -jacobian (D, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 456 -jacobian (G, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (G, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (S, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 464 -jacobian (S, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 472 -jacobian (S, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 480 -jacobian (S, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (S, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 488 -jacobian (S, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 496 -jacobian (S, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 504 -jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (B, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (NOI, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 512 -jacobian (NOI, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 520 -jacobian (NOI, NOI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 528 -jacobian (NOI, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (NOI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 536 -jacobian (NOI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 544 -jacobian (NOI2, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (GP, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 552 -jacobian (GP, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (GP, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 560 -jacobian (GP, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 568 -jacobian (GP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 576 -jacobian (GP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 584 -jacobian (BP, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 592 -jacobian (BP, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 600 -jacobian (BP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 608 -jacobian (BP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 616 -jacobian (BP, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BS, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (BS, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BS, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 632 -jacobian (BD, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 640 -jacobian (BD, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 648 -jacobian (BD, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BD, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (BD, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 664 +node "D" units = "V", runits = "A" +node "G" units = "V", runits = "A" +node "S" units = "V", runits = "A" +node "B" units = "V", runits = "A" +node "NOI" units = "V", runits = "A" +node "NOI2" units = "V", runits = "A" +node "GP" units = "V", runits = "A" +node "BP" units = "V", runits = "A" +node "BI" units = "V", runits = "A" +node "BS" units = "V", runits = "A" +node "BD" units = "V", runits = "A" +jacobian (D, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (D, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (D, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (D, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (D, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (D, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (D, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (D, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (G, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (G, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (S, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (S, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (S, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (S, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (S, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (S, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (S, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (NOI, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, NOI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (NOI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI2, NOI2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (GP, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (GP, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (GP, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (GP, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (GP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (GP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BS, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BS, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BS, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BD, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) collapsible (G, GP) collapsible (BP, BI) collapsible (BS, BI) @@ -727,5 +716,3 @@ noise "unnamed4" (B, BI) noise "igig" (NOI2, gnd) 0 states has bound_step false -instance size 5760 -model size 2584 diff --git a/openvaf/test_data/osdi/psp103.snap b/openvaf/test_data/osdi/psp103.snap index 5fc3954fe..bac20d683 100644 --- a/openvaf/test_data/osdi/psp103.snap +++ b/openvaf/test_data/osdi/psp103.snap @@ -1692,88 +1692,75 @@ param "FJUNQD" units = "", desc = "Fraction below which drain-bulk junction capacitance components are considered negligible", flags = ParameterFlags(0x0) 4 terminals -node "D" units = "V", runits = "" -residual 6488 4294967295 4294967295 4294967295 -node "G" units = "V", runits = "" -residual 6496 4294967295 4294967295 4294967295 -node "S" units = "V", runits = "" -residual 6504 4294967295 4294967295 4294967295 -node "B" units = "V", runits = "" -residual 6512 4294967295 4294967295 4294967295 -node "NOI" units = "V", runits = "" -residual 6520 6528 4294967295 4294967295 -node "GP" units = "V", runits = "" -residual 6536 6544 4294967295 4294967295 -node "SI" units = "V", runits = "" -residual 6552 6560 4294967295 4294967295 -node "DI" units = "V", runits = "" -residual 6568 6576 4294967295 4294967295 -node "BP" units = "V", runits = "" -residual 6584 6592 4294967295 4294967295 -node "BI" units = "V", runits = "" -residual 6600 4294967295 4294967295 4294967295 -node "BS" units = "V", runits = "" -residual 6608 6616 4294967295 4294967295 -node "BD" units = "V", runits = "" -residual 6624 6632 4294967295 4294967295 -node(flow) "flow(NOII)" units = "A", runits = "" -residual 6640 4294967295 4294967295 4294967295 -jacobian (D, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (D, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (G, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (G, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (S, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (S, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (B, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (NOI, NOI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 456 -jacobian (NOI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 464 -jacobian (NOI, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 472 -jacobian (NOI, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 480 -jacobian (NOI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 488 -jacobian (NOI, flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (GP, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (GP, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 496 -jacobian (GP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 504 -jacobian (GP, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 512 -jacobian (GP, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 520 -jacobian (GP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 528 -jacobian (SI, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (SI, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 536 -jacobian (SI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 544 -jacobian (SI, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 552 -jacobian (SI, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 560 -jacobian (SI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 568 -jacobian (SI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 576 -jacobian (SI, flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (DI, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (DI, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) react_ptr = 584 -jacobian (DI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 592 -jacobian (DI, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 600 -jacobian (DI, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 608 -jacobian (DI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 616 -jacobian (DI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 624 -jacobian (DI, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 632 -jacobian (DI, flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 640 -jacobian (BP, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 648 -jacobian (BP, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 656 -jacobian (BP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 664 -jacobian (BP, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BI, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BS, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 672 -jacobian (BS, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BS, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 680 -jacobian (BD, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 688 -jacobian (BD, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 696 -jacobian (BD, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (BD, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 704 -jacobian (BD, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) react_ptr = 712 -jacobian (flow(NOII), flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "D" units = "V", runits = "A" +node "G" units = "V", runits = "A" +node "S" units = "V", runits = "A" +node "B" units = "V", runits = "A" +node "NOI" units = "V", runits = "A" +node "GP" units = "V", runits = "A" +node "SI" units = "V", runits = "A" +node "DI" units = "V", runits = "A" +node "BP" units = "V", runits = "A" +node "BI" units = "V", runits = "A" +node "BS" units = "V", runits = "A" +node "BD" units = "V", runits = "A" +node(flow) "flow(NOII)" units = "A", runits = "A" +jacobian (D, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (D, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (G, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (G, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (S, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (S, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (NOI, NOI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (NOI, flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (GP, G) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (GP, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (GP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (GP, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (GP, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (GP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (SI, S) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (SI, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (SI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (SI, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (SI, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (SI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (SI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (SI, flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (DI, D) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (DI, NOI) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (DI, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (DI, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (DI, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (DI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (DI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (DI, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (DI, flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BP, GP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BP, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BP) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BI, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BS, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BS, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BS, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, SI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, DI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, BI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (BD, BS) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (BD, BD) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (flow(NOII), flow(NOII)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) collapsible (G, GP) collapsible (S, SI) collapsible (D, DI) @@ -1799,5 +1786,3 @@ noise "rwell" (B, BI) noise "igig" (flow(NOII), gnd) 0 states has bound_step false -instance size 7184 -model size 6824 diff --git a/openvaf/test_data/osdi/resistor.snap b/openvaf/test_data/osdi/resistor.snap index 1986b397d..7fa110aa8 100644 --- a/openvaf/test_data/osdi/resistor.snap +++ b/openvaf/test_data/osdi/resistor.snap @@ -8,15 +8,11 @@ param "tnom" units = "Kelvin", desc = "Reference Temp.", flags = ParameterFlags(0x0) 2 terminals -node "A" units = "V", runits = "" -residual 96 4294967295 4294967295 4294967295 -node "B" units = "V", runits = "" -residual 104 4294967295 4294967295 4294967295 -jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (A, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (B, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "A" units = "V", runits = "A" +node "B" units = "V", runits = "A" +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (A, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) 0 states has bound_step false -instance size 112 -model size 40 diff --git a/openvaf/test_data/osdi/strings.snap b/openvaf/test_data/osdi/strings.snap index 9cdc5928f..da78845d8 100644 --- a/openvaf/test_data/osdi/strings.snap +++ b/openvaf/test_data/osdi/strings.snap @@ -6,11 +6,7 @@ param "dummy2" units = "none", desc = "Dummy", flags = ParameterFlags(PARA_TY_STR) 2 terminals -node "A" units = "V", runits = "" -residual 64 4294967295 4294967295 4294967295 -node "C" units = "V", runits = "" -residual 72 4294967295 4294967295 4294967295 +node "A" units = "V", runits = "A" +node "C" units = "V", runits = "A" 0 states has bound_step false -instance size 80 -model size 32 diff --git a/openvaf/test_data/osdi/vacask_bsim3v3.snap b/openvaf/test_data/osdi/vacask_bsim3v3.snap new file mode 100644 index 000000000..fe02e467c --- /dev/null +++ b/openvaf/test_data/osdi/vacask_bsim3v3.snap @@ -0,0 +1,1486 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "", flags = ParameterFlags(PARA_KIND_INST) +param "verbose" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "version" +units = "", desc = "", flags = ParameterFlags(0x0) +param "level" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "paramchk" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "type" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "vth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "w0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nlx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "a0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "b0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "b1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "a1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "a2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "keta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nch" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lint" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wint" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ll" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lln" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wln" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ww" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "binunit" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "mobmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "u0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "uc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "drout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "voff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "etab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "alpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "alpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "beta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijth" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lgcs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lgcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rdc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldif" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hdif" +units = "", desc = "", flags = ParameterFlags(0x0) +param "minr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jssw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "imelt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jmelt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xpart" +units = "", desc = "", flags = ParameterFlags(0x0) +param "meto" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ckappa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "php" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjgate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fcsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "capmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "nqsmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "dwc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "clc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "elm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "acde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "moin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "voffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "", flags = ParameterFlags(0x0) +param "trise" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tlev" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tlevc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gap1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gap2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "at" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "uc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "trs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "trd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tpb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ptp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tpbsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tpbswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tcj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ctp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tcjsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tcjswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noimod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "kf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ef" +units = "", desc = "", flags = ParameterFlags(0x0) +param "em" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noia" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noib" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noic" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnoi" +units = "", desc = "", flags = ParameterFlags(0x0) +param "flkmod" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmax" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmax" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "imax" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jmax" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bvj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vbox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "la0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "la1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "la2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lketa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnch" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lgamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lgamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lw0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnlx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldrout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "luc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "luc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lelm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldelta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lprwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lprwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lprt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "leta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "letab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lckappa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lclc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lalpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lalpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lacde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmoin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wa0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wa1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wa2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wketa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnch" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wgamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wgamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ww0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnlx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdrout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wuc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wuc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "welm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdelta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wprwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wprwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wprt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "weta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wetab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wckappa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wclc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "walpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "walpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wacde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmoin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pa0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pa1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pa2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pketa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnch" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pgamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pgamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pw0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnlx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdrout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "puc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "puc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pelm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdelta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pprwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pprwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pprt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "peta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "petab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pwr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pckappa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pclc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "palpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "palpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pacde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pmoin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnpeak" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnpeak" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnpeak" +units = "", desc = "", flags = ParameterFlags(0x0) +param "igcmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "gidlmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "igbmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "tempmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "agidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lagidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wagidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pagidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "egidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "legidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wegidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pegidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "leigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "weigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "peigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxe" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtm0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ltvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wtvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ptvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "poxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpoxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpoxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppoxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dlcig" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "agisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wagisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lagisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pagisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "egisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wegisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "legisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pegisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wfgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pfgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wfgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pfgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "acm" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "calcacm" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "vfbflag" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "breakmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "bvs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bvd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijthsrev" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijthdrev" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xjbvs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xjbvd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "stimod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "sa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "saref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sbref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa5" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa6" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa7" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa8" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa9" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa10" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb5" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb6" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb7" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb8" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb9" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb10" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw5" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw6" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw7" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw8" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw9" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sw10" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlod" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llodku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlodku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llodvth" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlodvth" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "stk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lodk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "steta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lodeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vgslim" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dtoxcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "binflag" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "geo" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "lref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xlref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xwref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmlt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmlt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "", flags = ParameterFlags(0x0) +param "del" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mulu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mulua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mulub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "deltox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "delk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "delnfct" +units = "", desc = "", flags = ParameterFlags(0x0) +param "delvto" +units = "", desc = "", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +collapsible (s, si) +collapsible (d, di) +noise "Rs" (s, si) +noise "Rd" (d, di) +noise "flicker" (di, si) +noise "ids" (di, si) +5 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_bsim4v8.snap b/openvaf/test_data/osdi/vacask_bsim4v8.snap new file mode 100644 index 000000000..26f7049e4 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_bsim4v8.snap @@ -0,0 +1,1915 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "verbose" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "type" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nf" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "_min" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "ad" +units = "", desc = "", flags = ParameterFlags(0x0) +param "as" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ps" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nrd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nrs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "off" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "trnqsmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "acnqsmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "rbodymod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "rgatemod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "geomod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "rgeomod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "capmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "diomod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "rdsmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "level" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "mobmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "tempmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "permod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "fnoimod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "tnoimod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "igcmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "igbmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "paramchk" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "binunit" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "version" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxe" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "toxref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dtox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "epsrox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "at" +units = "", desc = "", flags = ParameterFlags(0x0) +param "a0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "a1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "a2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "keta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ndep" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "phin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "w0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvtp0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvtp1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpe0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpeb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "drout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "uc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "uc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "u0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eu" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "voff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "minv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "voffl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xpart" +units = "", desc = "", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rdswmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rdw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rdwmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rswmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "etab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fprout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdits" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pditsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pditsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jss" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jsws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtis" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbsws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjsws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjsws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtid" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mjswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cjswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tpb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tcj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tpbsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tcjsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tpbswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tcjswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "acde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "moin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "voffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dmcg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dmci" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dmdg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dmcgt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xgw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xgl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rshg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ngcon" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xrcrg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xrcrg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lint" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ll" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lln" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmax" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wint" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wln" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ww" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmax" +units = "", desc = "", flags = ParameterFlags(0x0) +param "b0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "b1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ckappas" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ckappad" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "clc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dwc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dlc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dlcig" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dlcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dwj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "alpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "alpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "beta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "agidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "egidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "nigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "poxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijthsfwd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijthdfwd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijthsrev" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ijthdrev" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xjbvs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xjbvd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bvs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bvd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gbmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbdb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbps" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "la0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "la1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "la2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lketa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lndep" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lphin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lgamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lgamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lw0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvtp0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvtp1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llpe0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llpeb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldrout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "luc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "luc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lminv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldelta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrdw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lprwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lprwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lprt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "leta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "letab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfprout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpdits" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpditsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lwr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lckappas" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lckappad" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lclc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lalpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lalpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lagidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "legidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "leigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lpoxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lacde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lmoin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lnoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxrcrg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxrcrg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "leu" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wa0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wa1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wa2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wketa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wndep" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wphin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wgamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wgamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ww0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvtp0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvtp1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlpe0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlpeb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdrout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wuc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wuc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wminv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdelta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrdw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wprwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wprwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wprt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "weta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wetab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wfprout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpdits" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpditsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wwr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wckappas" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wckappad" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wclc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "walpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "walpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wagidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wegidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "weigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpoxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wacde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wmoin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wnoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxrcrg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxrcrg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "weu" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcdsc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcdscb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcdscd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcit" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxj" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pa0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pags" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pa1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pa2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pketa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pndep" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pphin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pngate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pgamma1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pgamma2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvbx" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvbm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkt1l" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk3b" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pw0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvtp0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvtp1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "plpe0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "plpeb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt0w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt1w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvt2w" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdrout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pua" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pua1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pub1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "puc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "puc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pu0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pute" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pminv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdelta" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prdsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prdw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pprwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pprwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pprt" +units = "", desc = "", flags = ParameterFlags(0x0) +param "peta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "petab" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppclm" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdiblc1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdiblc2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdiblcb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pfprout" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppdits" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppditsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppscbe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppscbe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppvag" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pwr" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdwg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdwb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pb0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pb1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pckappas" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pckappad" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pclc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcle" +units = "", desc = "", flags = ParameterFlags(0x0) +param "palpha0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "palpha1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pagidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pegidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnigc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnigbacc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pntox" +units = "", desc = "", flags = ParameterFlags(0x0) +param "peigbinv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppigcd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ppoxedge" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvfbcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvfb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pacde" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pmoin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pnoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxrcrg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxrcrg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "peu" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noia" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noib" +units = "", desc = "", flags = ParameterFlags(0x0) +param "noic" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnoia" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnoib" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnoic" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ntnoi" +units = "", desc = "", flags = ParameterFlags(0x0) +param "em" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ef" +units = "", desc = "", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sa" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "saref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sbref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlod" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kvsat" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llodku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlodku0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkvth0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llodvth" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlodvth" +units = "", desc = "", flags = ParameterFlags(0x0) +param "stk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lodk2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "steta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lodeta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lxn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wxn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pxn" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llambda" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlambda" +units = "", desc = "", flags = ParameterFlags(0x0) +param "plambda" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rnoia" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rnoib" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rnoic" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvtl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvtl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvtl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "_ckt_gmin" +units = "", desc = "", flags = ParameterFlags(0x0) +param "sc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wtvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ltvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ptvoffcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "teta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wteta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lteta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pteta0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpdl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpdnf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "voffcvl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wtnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ltnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ptnfactor" +units = "", desc = "", flags = ParameterFlags(0x0) +param "minvcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wminvcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lminvcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pminvcv" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wtvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ltvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ptvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "gidlmod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "aigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "aigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "waigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "laigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "paigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcigd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "delvto" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ados" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bdos" +units = "", desc = "", flags = ParameterFlags(0x0) +param "agisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wagisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lagisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pagisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wbgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lbgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pbgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wcgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lcgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pcgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "egisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wegisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "legisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pegisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wfgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pfgisl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wrgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lrgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "prgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "fgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wfgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pfgidl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "cvchargemod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "ud" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wud" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lud" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pud" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ud1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wud1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lud1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pud1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "up" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wup" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lup" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pup" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wlp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "llp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "plp" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ucs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wucs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lucs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pucs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ucste" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wucste" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lucste" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pucste" +units = "", desc = "", flags = ParameterFlags(0x0) +param "kvth0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wkvth0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lkvth0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pkvth0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "k2we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wk2we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lk2we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pk2we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ku0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wku0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lku0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pku0we" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pvfbsdoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wtvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ltvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ptvoff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wpemod" +units = "", desc = "", flags = ParameterFlags(PARA_TY_INT) +param "sca" +units = "", desc = "", flags = ParameterFlags(0x0) +param "scb" +units = "", desc = "", flags = ParameterFlags(0x0) +param "scc" +units = "", desc = "", flags = ParameterFlags(0x0) +param "web" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wec" +units = "", desc = "", flags = ParameterFlags(0x0) +param "scref" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbps0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpsl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpsw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpsnf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpd0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpdw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbx0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbxl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbxw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbxnf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpby0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbyl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbyw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbpbynf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsbx0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsby0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbdbx0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbdby0" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsdbxl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsdbxw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsdbxnf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsdbyl" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsdbyw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "rbsdbynf" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtss" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtssws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtsswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtweff" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njts" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njtssw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njtsswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtss" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtssws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtsswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtss" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtssws" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtsswgs" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnjts" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnjtssw" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnjtsswg" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtsswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "jtsswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njtsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njtsswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "njtsswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtsswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "xtsswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtsswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vtsswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnjtsd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnjtsswd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tnjtsswgd" +units = "", desc = "", flags = ParameterFlags(0x0) +param "epsrsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "phig" +units = "", desc = "", flags = ParameterFlags(0x0) +param "easub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mtrlcompatmod" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mtrlmod" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tempeot" +units = "", desc = "", flags = ParameterFlags(0x0) +param "leffeot" +units = "", desc = "", flags = ParameterFlags(0x0) +param "weffeot" +units = "", desc = "", flags = ParameterFlags(0x0) +param "vddeot" +units = "", desc = "", flags = ParameterFlags(0x0) +param "eot" +units = "", desc = "", flags = ParameterFlags(0x0) +param "epsrgate" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ni0sub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "bg0sub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tbgasub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "tbgbsub" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvtp2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvtp2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvtp2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvtp2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvtp3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvtp3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvtp3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvtp3" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvtp4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvtp4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvtp4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvtp4" +units = "", desc = "", flags = ParameterFlags(0x0) +param "dvtp5" +units = "", desc = "", flags = ParameterFlags(0x0) +param "wdvtp5" +units = "", desc = "", flags = ParameterFlags(0x0) +param "ldvtp5" +units = "", desc = "", flags = ParameterFlags(0x0) +param "pdvtp5" +units = "", desc = "", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "gm" units = "V", runits = "A" +node "bi" units = "V", runits = "A" +node "sbulk" units = "V", runits = "A" +node "dbulk" units = "V", runits = "A" +node(flow) "flow(sbulk,bi)" units = "A", runits = "" +node(flow) "flow(sbulk,b)" units = "A", runits = "" +node(flow) "flow(b,bi)" units = "A", runits = "" +node(flow) "flow(b,dbulk)" units = "A", runits = "" +node(flow) "flow(bi,dbulk)" units = "A", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,bi), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,bi), sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,bi), flow(sbulk,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,b), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,b), sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(sbulk,b), flow(sbulk,b)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,bi), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,bi), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,bi), flow(b,bi)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,dbulk), b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,dbulk), dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(b,dbulk), flow(b,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(bi,dbulk), bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(bi,dbulk), dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(bi,dbulk), flow(bi,dbulk)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (s, si) +collapsible (d, di) +collapsible (g, gm) +collapsible (gm, gi) +collapsible (sbulk, b) +collapsible (b, bi) +collapsible (b, dbulk) +collapsible (flow(sbulk,b), gnd) +collapsible (flow(b,bi), gnd) +collapsible (flow(b,dbulk), gnd) +noise "thermal" (di, si) +noise "flicker" (di, si) +noise "shot" (gi, si) +noise "shot" (gi, si) +noise "shot" (gi, di) +noise "shot" (gi, di) +noise "shot" (gi, bi) +noise "Rs" (s, si) +noise "Rd" (d, di) +noise "Rg" (g, gm) +noise "Rbulk" (flow(sbulk,bi), gnd) +noise "Rbulk" (flow(sbulk,b), gnd) +noise "Rbulk" (flow(b,bi), gnd) +noise "Rbulk" (flow(b,dbulk), gnd) +noise "Rbulk" (flow(bi,dbulk), gnd) +noise "Rg" (gi, g) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_bsimbulk106.snap b/openvaf/test_data/osdi/vacask_bsimbulk106.snap new file mode 100644 index 000000000..29e20b3ee --- /dev/null +++ b/openvaf/test_data/osdi/vacask_bsimbulk106.snap @@ -0,0 +1,2097 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "L" +units = "m", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "W" +units = "m", desc = "Total width including fingers", flags = ParameterFlags(PARA_KIND_INST) +param "NF" +units = "", desc = "Number of fingers", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "NRS" +units = "", desc = "Number of squares in source", flags = ParameterFlags(PARA_KIND_INST) +param "NRD" +units = "", desc = "Number of squares in drain", flags = ParameterFlags(PARA_KIND_INST) +param "VFBSDOFF" +units = "V", desc = "Flat-band Voltage Offset Parameter", flags = ParameterFlags(PARA_KIND_INST) +param "MINZ" +units = "", desc = "Minimize either D or S", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "XGW" +units = "m", desc = "Distance from gate contact centre to dev edge", flags = ParameterFlags(PARA_KIND_INST) +param "NGCON" +units = "", desc = "Number of gate contacts", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "RGATEMOD" +units = "", desc = "Gate resistance model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "RBODYMOD" +units = "", desc = "Distributed body R model", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "GEOMOD" +units = "", desc = "Geometry-dependent parasitics model", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "RGEOMOD" +units = "", desc = "Geometry-dependent source/drain resistance, 0: RSH-based, 1: Holistic", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "EDGEFET" +units = "", desc = "0: Edge FET Model Off, 1: Edge FET Model ON", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "SSLMOD" +units = "", desc = "Sub-Surface Leakage Drain Current, 0: Turn off 1: Turn on", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "RBPB" +units = "ohm", desc = "Resistance between bNodePrime and bNode", flags = ParameterFlags(PARA_KIND_INST) +param "RBPD" +units = "ohm", desc = "Resistance between bNodePrime and bNode ", flags = ParameterFlags(PARA_KIND_INST) +param "RBPS" +units = "ohm", desc = "Resistance between bNodePrime and sbNode ", flags = ParameterFlags(PARA_KIND_INST) +param "RBDB" +units = "ohm", desc = "Resistance between bNode and dbNode ", flags = ParameterFlags(PARA_KIND_INST) +param "RBSB" +units = "ohm", desc = "Resistance between bNode and sbNode", flags = ParameterFlags(PARA_KIND_INST) +param "SA" +units = "m", desc = "Distance between OD edge from Poly from one side", flags = ParameterFlags(PARA_KIND_INST) +param "SB" +units = "m", desc = "Distance between OD edge from Poly from other side", flags = ParameterFlags(PARA_KIND_INST) +param "SD" +units = "m", desc = "Distance between neighbouring fingers", flags = ParameterFlags(PARA_KIND_INST) +param "SCA" +units = "", desc = "Integral of the first distribution function for scattered well dopant", flags = ParameterFlags(PARA_KIND_INST) +param "SCB" +units = "", desc = "Integral of second distribution function for scattered well dopant", flags = ParameterFlags(PARA_KIND_INST) +param "SCC" +units = "", desc = "Integral of third distribution function for scattered well dopant", flags = ParameterFlags(PARA_KIND_INST) +param "SC" +units = "m", desc = "Distance to a single well edge if <=0.0, turn off WPE", flags = ParameterFlags(PARA_KIND_INST) +param "AS" +units = "m^2", desc = "Source to Substrate Junction Area", flags = ParameterFlags(PARA_KIND_INST) +param "AD" +units = "m^2", desc = "Drain to Substrate Junction Area", flags = ParameterFlags(PARA_KIND_INST) +param "PS" +units = "m", desc = "Source to Substrate Junction Perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "PD" +units = "m", desc = "Drain to Substrate Junction Perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "DTEMP" +units = "K", desc = "Offset of Device Temperature", flags = ParameterFlags(PARA_KIND_INST) +param "MULU0" +units = "m^2/(V*s)", desc = "Multiplication factor for low field mobility", flags = ParameterFlags(PARA_KIND_INST) +param "DELVTO" +units = "V", desc = "Zero bias threshold voltage variation", flags = ParameterFlags(PARA_KIND_INST) +param "IDS0MULT" +units = "", desc = "Variability in drain current for miscellaneous reasons", flags = ParameterFlags(PARA_KIND_INST) +param "TYPE" +units = "", desc = "ntype=1, ptype=-1", flags = ParameterFlags(PARA_TY_INT) +param "CVMOD" +units = "", desc = "0: Consistent IV-CV, 1: Different IV-CV", flags = ParameterFlags(PARA_TY_INT) +param "COVMOD" +units = "", desc = "0: Use Bias-independent Overlap Capacitances, 1: Use Bias-dependent Overlap Capacitances", flags = ParameterFlags(PARA_TY_INT) +param "RDSMOD" +units = "", desc = "0: Internal bias dependent and external bias independent s/d resistance model, 1: External s/d resistance model, 2: Internal s/d resistance model", flags = ParameterFlags(PARA_TY_INT) +param "WPEMOD" +units = "", desc = "Model flag", flags = ParameterFlags(PARA_TY_INT) +param "ASYMMOD" +units = "", desc = "0: Asymmetry Model turned off - forward mode parameters used, 1: Asymmetry Model turned on", flags = ParameterFlags(PARA_TY_INT) +param "GIDLMOD" +units = "", desc = "0: Turn off GIDL Current, 1: Turn on GIDL Current", flags = ParameterFlags(PARA_TY_INT) +param "IGCMOD" +units = "", desc = "0: Turn off Igc, Igs and Igd, 1: Turn on Igc, Igs and Igd", flags = ParameterFlags(PARA_TY_INT) +param "IGBMOD" +units = "", desc = "0: Turn off Igb, 1: Turn on Igb", flags = ParameterFlags(PARA_TY_INT) +param "TNOIMOD" +units = "", desc = "Thermal noise model selector", flags = ParameterFlags(PARA_TY_INT) +param "SHMOD" +units = "", desc = "0 : Self heating model OFF, 1 : Self heating model ON", flags = ParameterFlags(PARA_TY_INT) +param "MOBSCALE" +units = "", desc = "Mobility scaling model, 0: Old Model, 1: New Model", flags = ParameterFlags(PARA_TY_INT) +param "LLONG" +units = "m", desc = "L of extracted Long channel device", flags = ParameterFlags(0x0) +param "LMLT" +units = "", desc = "Length Shrinking Parameter", flags = ParameterFlags(0x0) +param "WMLT" +units = "", desc = "Width Shrinking Parameter", flags = ParameterFlags(0x0) +param "XL" +units = "m", desc = "L offset for channel length due to mask/etch effect", flags = ParameterFlags(0x0) +param "WWIDE" +units = "m", desc = "W of extracted Wide channel device", flags = ParameterFlags(0x0) +param "XW" +units = "m", desc = "W offset for channel width due to mask/etch effect", flags = ParameterFlags(0x0) +param "LINT" +units = "m", desc = "Delta L for IV", flags = ParameterFlags(0x0) +param "LL" +units = "m^(1+LLN)", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "LW" +units = "m^(1+LWN)", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "LWL" +units = "m^(1+LLN+LWN)", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "LLN" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "LWN" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "WINT" +units = "m", desc = "Delta W for IV", flags = ParameterFlags(0x0) +param "WL" +units = "m^(1+WLN)", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "WW" +units = "m^(1+WWN)", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "WWL" +units = "m^(1+WWN+WLN)", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "WLN" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "WWN" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "DLC" +units = "m", desc = "Delta L for CV", flags = ParameterFlags(0x0) +param "LLC" +units = "m^(1+LLN)", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "LWC" +units = "m^(1+LWN)", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "LWLC" +units = "m^(1+LWN+LLN)", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "DWC" +units = "m", desc = "Delta W for CV", flags = ParameterFlags(0x0) +param "WLC" +units = "m^(1+WLN)", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "WWC" +units = "m^(1+WWN)", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "WWLC" +units = "m^(1+WWN+WLN)", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "TOXE" +units = "m", desc = "Effective gate dielectric thickness relative to SiO2", flags = ParameterFlags(0x0) +param "TOXP" +units = "m", desc = "Physical gate dielectric thickness. If not given, TOXP is calculated from TOXE and DTOX", flags = ParameterFlags(0x0) +param "DTOX" +units = "m", desc = "Difference between effective dielectric thickness", flags = ParameterFlags(0x0) +param "NDEP" +units = "1/m^3", desc = "Channel Doping Concentration for IV", flags = ParameterFlags(0x0) +param "NDEPL1" +units = "m", desc = "Length dependence coefficient of NDEP", flags = ParameterFlags(0x0) +param "NDEPLEXP1" +units = "", desc = "Length dependence exponent coefficient of NDEP", flags = ParameterFlags(0x0) +param "NDEPL2" +units = "m", desc = "Length dependence of NDEP - For Short Channel Devices", flags = ParameterFlags(0x0) +param "NDEPLEXP2" +units = "", desc = "Length dependence exponent coefficient of NDEP", flags = ParameterFlags(0x0) +param "NDEPW" +units = "m", desc = "Width dependence coefficient of NDEP", flags = ParameterFlags(0x0) +param "NDEPWEXP" +units = "", desc = "Width dependence exponent coefficient of NDEP", flags = ParameterFlags(0x0) +param "NDEPWL" +units = "m^2", desc = "Width-Length dependence coefficient of NDEP", flags = ParameterFlags(0x0) +param "NDEPWLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of NDEP", flags = ParameterFlags(0x0) +param "LNDEP" +units = "1/m^2", desc = "Length dependence of NDEP", flags = ParameterFlags(0x0) +param "WNDEP" +units = "1/m^2", desc = "Width dependence of NDEP", flags = ParameterFlags(0x0) +param "PNDEP" +units = "1/m", desc = "Area dependence of NDEP ", flags = ParameterFlags(0x0) +param "NDEPCV" +units = "1/m^3", desc = "Channel Doping Concentration for CV", flags = ParameterFlags(0x0) +param "NDEPCVL1" +units = "m", desc = "Length dependence coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "NDEPCVLEXP1" +units = "", desc = "Length dependence exponent coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "NDEPCVL2" +units = "m", desc = "Length dependence coefficient of NDEPCV - For Short Channel Devices", flags = ParameterFlags(0x0) +param "NDEPCVLEXP2" +units = "", desc = "Length dependence exponent coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "NDEPCVW" +units = "m", desc = "Width dependence coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "NDEPCVWEXP" +units = "", desc = "Width dependence exponent coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "NDEPCVWL" +units = "m^2", desc = "Width-Length dependence coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "NDEPCVWLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of NDEPCV", flags = ParameterFlags(0x0) +param "LNDEPCV" +units = "1/m^2", desc = "Length dependence of NDEP for CV", flags = ParameterFlags(0x0) +param "WNDEPCV" +units = "1/m^2", desc = "Width dependence of NDEP for CV", flags = ParameterFlags(0x0) +param "PNDEPCV" +units = "1/m", desc = "Area dependence of NDEP for CV", flags = ParameterFlags(0x0) +param "NGATE" +units = "1/m^3", desc = "Gate Doping Concentration", flags = ParameterFlags(0x0) +param "LNGATE" +units = "1/m^2", desc = "Length dependence of NGATE", flags = ParameterFlags(0x0) +param "WNGATE" +units = "1/m^2", desc = "Width dependence of NGATE", flags = ParameterFlags(0x0) +param "PNGATE" +units = "1/m", desc = "Area dependence of NGATE", flags = ParameterFlags(0x0) +param "EASUB" +units = "eV", desc = "Electron affinity of substrate", flags = ParameterFlags(0x0) +param "NI0SUB" +units = "1/m^3", desc = "Intrinsic carrier concentration of the substrate at 300.15K", flags = ParameterFlags(0x0) +param "BG0SUB" +units = "eV", desc = "Band gap of substrate at 300.15K", flags = ParameterFlags(0x0) +param "EPSRSUB" +units = "", desc = "Relative dielectric constant of the channel material", flags = ParameterFlags(0x0) +param "EPSROX" +units = "", desc = "Relative dielectric constant of the gate dielectric", flags = ParameterFlags(0x0) +param "XJ" +units = "m", desc = "S/D junction depth", flags = ParameterFlags(0x0) +param "LXJ" +units = "m^2", desc = "Length dependence of XJ ", flags = ParameterFlags(0x0) +param "WXJ" +units = "m^2", desc = "Width dependence of XJ", flags = ParameterFlags(0x0) +param "PXJ" +units = "m^3", desc = "Area dependence of XJ", flags = ParameterFlags(0x0) +param "VFB" +units = "V", desc = "Flat band voltage ", flags = ParameterFlags(0x0) +param "LVFB" +units = "V*m", desc = "Length dependence of VFB", flags = ParameterFlags(0x0) +param "WVFB" +units = "V*m", desc = "Width dependence of VFB", flags = ParameterFlags(0x0) +param "PVFB" +units = "V*m^2", desc = "Area dependence of VFB", flags = ParameterFlags(0x0) +param "VFBCV" +units = "V", desc = "Flat band voltage for CV", flags = ParameterFlags(0x0) +param "LVFBCV" +units = "V*m", desc = "Length dependence of VFBCV", flags = ParameterFlags(0x0) +param "WVFBCV" +units = "V*m", desc = "Width dependence of VFBCV", flags = ParameterFlags(0x0) +param "PVFBCV" +units = "V*m^2", desc = "Area dependence of VFBCV", flags = ParameterFlags(0x0) +param "VFBCVL" +units = "m", desc = "Length dependence coefficient of VFBCV", flags = ParameterFlags(0x0) +param "VFBCVLEXP" +units = "", desc = "Length dependence exponent coefficient of VFBCV", flags = ParameterFlags(0x0) +param "VFBCVW" +units = "m", desc = "Width dependence coefficient of VFBCV", flags = ParameterFlags(0x0) +param "VFBCVWEXP" +units = "", desc = "Width dependence exponent coefficient of VFBCV", flags = ParameterFlags(0x0) +param "VFBCVWL" +units = "m^2", desc = "Width-Length dependence coefficient of VFBCV", flags = ParameterFlags(0x0) +param "VFBCVWLEXP" +units = "", desc = "Width-Length dependence coefficient of VFBCV", flags = ParameterFlags(0x0) +param "PERMOD" +units = "", desc = "Whether PS/PD (when given) include gate-edge perimeter", flags = ParameterFlags(PARA_TY_INT) +param "DWJ" +units = "m", desc = "delta W for S/D junctions", flags = ParameterFlags(0x0) +param "NSD" +units = "1/m^3", desc = "S/D Doping Concentration", flags = ParameterFlags(0x0) +param "LNSD" +units = "1/m^2", desc = "Length dependence of NSD", flags = ParameterFlags(0x0) +param "WNSD" +units = "1/m^2", desc = "Width dependence of NSD", flags = ParameterFlags(0x0) +param "PNSD" +units = "1/m", desc = "Area dependence of NSD", flags = ParameterFlags(0x0) +param "DVTP0" +units = "m", desc = "DITS", flags = ParameterFlags(0x0) +param "LDVTP0" +units = "m^2", desc = "Length dependence of DVTP0", flags = ParameterFlags(0x0) +param "WDVTP0" +units = "m^2", desc = "Width dependence of DVTP0", flags = ParameterFlags(0x0) +param "PDVTP0" +units = "m^3", desc = "Area dependence of DVTP0", flags = ParameterFlags(0x0) +param "DVTP1" +units = "1/V", desc = "DITS", flags = ParameterFlags(0x0) +param "LDVTP1" +units = "m/V", desc = "Length dependence of DVTP1", flags = ParameterFlags(0x0) +param "WDVTP1" +units = "m/V", desc = "Width dependence of DVTP1", flags = ParameterFlags(0x0) +param "PDVTP1" +units = "m^2/V", desc = "Area dependence of DVTP1", flags = ParameterFlags(0x0) +param "DVTP2" +units = "m*V", desc = "DITS", flags = ParameterFlags(0x0) +param "LDVTP2" +units = "m^2/V", desc = "Length dependence of DVTP2", flags = ParameterFlags(0x0) +param "WDVTP2" +units = "m^2/V", desc = "Width dependence of DVTP2", flags = ParameterFlags(0x0) +param "PDVTP2" +units = "m^3/V", desc = "Area dependence of DVTP2", flags = ParameterFlags(0x0) +param "DVTP3" +units = "", desc = "DITS", flags = ParameterFlags(0x0) +param "LDVTP3" +units = "m", desc = "Length dependence of DVTP3", flags = ParameterFlags(0x0) +param "WDVTP3" +units = "m", desc = "Width dependence of DVTP3", flags = ParameterFlags(0x0) +param "PDVTP3" +units = "m^2", desc = "Area dependence of DVTP3", flags = ParameterFlags(0x0) +param "DVTP4" +units = "1/V", desc = "DITS", flags = ParameterFlags(0x0) +param "LDVTP4" +units = "m/V", desc = "Length dependence of DVTP4", flags = ParameterFlags(0x0) +param "WDVTP4" +units = "m/V", desc = "Width dependence of DVTP4", flags = ParameterFlags(0x0) +param "PDVTP4" +units = "m^2/V", desc = "Area dependence of DVTP4", flags = ParameterFlags(0x0) +param "DVTP5" +units = "V", desc = "DITS", flags = ParameterFlags(0x0) +param "LDVTP5" +units = "m*V", desc = "Length dependence of DVTP5", flags = ParameterFlags(0x0) +param "WDVTP5" +units = "m*V", desc = "Width dependence of DVTP5", flags = ParameterFlags(0x0) +param "PDVTP5" +units = "m^2*V", desc = "Area dependence of DVTP5", flags = ParameterFlags(0x0) +param "PHIN" +units = "V", desc = "Non-uniform vertical doping effect on surface potential", flags = ParameterFlags(0x0) +param "LPHIN" +units = "m*V", desc = "Length dependence of PHIN", flags = ParameterFlags(0x0) +param "WPHIN" +units = "m*V", desc = "Width dependence of PHIN", flags = ParameterFlags(0x0) +param "PPHIN" +units = "m^2*V", desc = "Area dependence of PHIN", flags = ParameterFlags(0x0) +param "ETA0" +units = "", desc = "DIBL coefficient", flags = ParameterFlags(0x0) +param "LETA0" +units = "m", desc = "Length dependence of ETA0", flags = ParameterFlags(0x0) +param "WETA0" +units = "m", desc = "Width dependence of ETA0", flags = ParameterFlags(0x0) +param "PETA0" +units = "m^2", desc = "Area dependence of ETA0", flags = ParameterFlags(0x0) +param "ETA0R" +units = "", desc = "DIBL coefficient", flags = ParameterFlags(0x0) +param "LETA0R" +units = "m", desc = "Length dependence of ETA0R", flags = ParameterFlags(0x0) +param "WETA0R" +units = "m", desc = "Width dependence of ETA0R", flags = ParameterFlags(0x0) +param "PETA0R" +units = "m^2", desc = "Area dependence of ETA0R", flags = ParameterFlags(0x0) +param "DSUB" +units = "", desc = "Length scaling exponent for DIBL", flags = ParameterFlags(0x0) +param "ETAB" +units = "1/V", desc = "Body bias coefficient for sub-threshold DIBL effect", flags = ParameterFlags(0x0) +param "ETABEXP" +units = "", desc = "Exponent coefficient of ETAB", flags = ParameterFlags(0x0) +param "LETAB" +units = "m/V", desc = "Length dependence of ETAB", flags = ParameterFlags(0x0) +param "WETAB" +units = "m/V", desc = "Width dependence of ETAB", flags = ParameterFlags(0x0) +param "PETAB" +units = "m^2/V", desc = "Area dependence of ETAB", flags = ParameterFlags(0x0) +param "K1" +units = "V^0.5", desc = "First-order body-bias Vth shift due to Vertical Non-uniform doping", flags = ParameterFlags(0x0) +param "K1L" +units = "", desc = "length dependence coefficient of K1", flags = ParameterFlags(0x0) +param "K1LEXP" +units = "", desc = "Length dependence exponent coefficient of K1", flags = ParameterFlags(0x0) +param "K1W" +units = "", desc = "Width dependence coefficient of K1", flags = ParameterFlags(0x0) +param "K1WEXP" +units = "", desc = "Width dependence exponent coefficient of K1", flags = ParameterFlags(0x0) +param "K1WL" +units = "", desc = "Width-Length dependence coefficient of K1", flags = ParameterFlags(0x0) +param "K1WLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of K1", flags = ParameterFlags(0x0) +param "LK1" +units = "m*V^0.5", desc = "Length dependence of K1", flags = ParameterFlags(0x0) +param "WK1" +units = "m*V^0.5", desc = "Width dependence of K1", flags = ParameterFlags(0x0) +param "PK1" +units = "m^2*V^0.5", desc = "Area dependence of K1", flags = ParameterFlags(0x0) +param "K2" +units = "V", desc = "Vth shift due to Vertical Non-uniform doping", flags = ParameterFlags(0x0) +param "K2L" +units = "m^K2LEXP", desc = "Length dependence coefficient of K2", flags = ParameterFlags(0x0) +param "K2LEXP" +units = "", desc = "Length dependence exponent coefficient of K2", flags = ParameterFlags(0x0) +param "K2W" +units = "m^K2WEXP", desc = "Width dependence coefficient of K2", flags = ParameterFlags(0x0) +param "K2WEXP" +units = "", desc = "Width dependence exponent coefficient of K2", flags = ParameterFlags(0x0) +param "K2WL" +units = "m^(2*K2WLEXP)", desc = "Width-Length dependence coefficient of K2", flags = ParameterFlags(0x0) +param "K2WLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of K2", flags = ParameterFlags(0x0) +param "LK2" +units = "m", desc = "Length dependence of K2", flags = ParameterFlags(0x0) +param "WK2" +units = "m", desc = "Width dependence of K2", flags = ParameterFlags(0x0) +param "PK2" +units = "m^2", desc = "Area dependence of K2", flags = ParameterFlags(0x0) +param "ADOS" +units = "", desc = "Quantum mechanical effect pre-factor cum switch in inversion", flags = ParameterFlags(0x0) +param "BDOS" +units = "", desc = "Charge centroid parameter - slope of CV curve under QME in inversion", flags = ParameterFlags(0x0) +param "QM0" +units = "", desc = "Charge centroid parameter - starting point for QME in inversion", flags = ParameterFlags(0x0) +param "ETAQM" +units = "", desc = "Bulk charge coefficient for charge centroid in inversion", flags = ParameterFlags(0x0) +param "CIT" +units = "F/m^2", desc = "Parameter for interface trap", flags = ParameterFlags(0x0) +param "LCIT" +units = "F/m", desc = "Length dependence of CIT", flags = ParameterFlags(0x0) +param "WCIT" +units = "F/m", desc = "Width dependence of CIT", flags = ParameterFlags(0x0) +param "PCIT" +units = "F", desc = "Area dependence of CIT", flags = ParameterFlags(0x0) +param "NFACTOR" +units = "", desc = "Sub-threshold slope factor", flags = ParameterFlags(0x0) +param "NFACTORL" +units = "m^NFACTORLEXP", desc = "Length dependence coefficient of NFACTOR", flags = ParameterFlags(0x0) +param "NFACTORLEXP" +units = "", desc = "Length dependence exponent coefficient of NFACTOR", flags = ParameterFlags(0x0) +param "NFACTORW" +units = "m^NFACTORWEXP", desc = "Width dependence coefficient of NFACTOR", flags = ParameterFlags(0x0) +param "NFACTORWEXP" +units = "", desc = "Width dependence exponent coefficient of NFACTOR", flags = ParameterFlags(0x0) +param "NFACTORWL" +units = "m^(2*NFACTORWLEXP)", desc = "Width-Length dependence coefficient of NFACTOR", flags = ParameterFlags(0x0) +param "NFACTORWLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of NFACTOR", flags = ParameterFlags(0x0) +param "LNFACTOR" +units = "m", desc = "Length dependence of NFACTOR", flags = ParameterFlags(0x0) +param "WNFACTOR" +units = "m", desc = "Width dependence of NFACTOR", flags = ParameterFlags(0x0) +param "PNFACTOR" +units = "m^2", desc = "Area dependence of NFACTOR", flags = ParameterFlags(0x0) +param "CDSCD" +units = "F/m^2/V", desc = "Drain-bias sensitivity of sub-threshold slope", flags = ParameterFlags(0x0) +param "CDSCDL" +units = "m^CDSCDLEXP", desc = "Length dependence coefficient of CDSCD", flags = ParameterFlags(0x0) +param "CDSCDLEXP" +units = "", desc = "Length dependence exponent coefficient of CDSCD", flags = ParameterFlags(0x0) +param "LCDSCD" +units = "F/m/V", desc = "Length dependence of CDSCD", flags = ParameterFlags(0x0) +param "WCDSCD" +units = "F/m/V", desc = "Width dependence of CDSCD", flags = ParameterFlags(0x0) +param "PCDSCD" +units = "F/V", desc = "Area dependence of CDSCD", flags = ParameterFlags(0x0) +param "CDSCDR" +units = "F/m^2/V", desc = "Drain-bias sensitivity of sub-threshold slope", flags = ParameterFlags(0x0) +param "CDSCDLR" +units = "m^CDSCDLEXP", desc = "Length dependence coefficient of CDSCD", flags = ParameterFlags(0x0) +param "LCDSCDR" +units = "F/m/V", desc = "Length dependence of CDSCDR", flags = ParameterFlags(0x0) +param "WCDSCDR" +units = "F/m/V", desc = "Width dependence of CDSCDR", flags = ParameterFlags(0x0) +param "PCDSCDR" +units = "F/V", desc = "Area dependence of CDSCDR", flags = ParameterFlags(0x0) +param "CDSCB" +units = "F/m^2/V", desc = "Body-bias sensitivity of sub-threshold slope", flags = ParameterFlags(0x0) +param "CDSCBL" +units = "m^CDSCBLEXP", desc = "Length dependence coefficient of CDSCB", flags = ParameterFlags(0x0) +param "CDSCBLEXP" +units = "", desc = "Length dependence exponent coefficient of CDSCB", flags = ParameterFlags(0x0) +param "LCDSCB" +units = "F/m/V", desc = "Length dependence of CDSCB", flags = ParameterFlags(0x0) +param "WCDSCB" +units = "F/m/V", desc = "Width dependence of CDSCB", flags = ParameterFlags(0x0) +param "PCDSCB" +units = "F/V", desc = "Area dependence of CDSCB", flags = ParameterFlags(0x0) +param "VSAT" +units = "m/s", desc = "Saturation Velocity", flags = ParameterFlags(0x0) +param "LVSAT" +units = "m^2/s", desc = "Length dependence of VSAT", flags = ParameterFlags(0x0) +param "WVSAT" +units = "m^2/s", desc = "Width dependence of VSAT", flags = ParameterFlags(0x0) +param "PVSAT" +units = "m^3/s", desc = "Area dependence of VSAT", flags = ParameterFlags(0x0) +param "VSATL" +units = "m^VSATLEXP", desc = "Length dependence coefficient of of VSAT", flags = ParameterFlags(0x0) +param "VSATLEXP" +units = "", desc = "Length dependence exponent coefficient of VSAT", flags = ParameterFlags(0x0) +param "VSATW" +units = "m^VSATWEXP", desc = "Width dependence coefficient of of VSAT", flags = ParameterFlags(0x0) +param "VSATWEXP" +units = "", desc = "Width dependence exponent coefficient of of VSAT", flags = ParameterFlags(0x0) +param "VSATWL" +units = "m^(2*VSATWLEXP)", desc = "Width-Length dependence coefficient of of VSAT", flags = ParameterFlags(0x0) +param "VSATWLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of of VSAT", flags = ParameterFlags(0x0) +param "VSATR" +units = "m/s", desc = "Saturation Velocity", flags = ParameterFlags(0x0) +param "LVSATR" +units = "m^2/s", desc = "Length dependence of VSATR", flags = ParameterFlags(0x0) +param "WVSATR" +units = "m^2/s", desc = "Width dependence of VSATR", flags = ParameterFlags(0x0) +param "PVSATR" +units = "m^3/s", desc = "Area dependence of VSATR", flags = ParameterFlags(0x0) +param "DELTA" +units = "", desc = "Smoothing function factor for Vdsat", flags = ParameterFlags(0x0) +param "LDELTA" +units = "m", desc = "Length dependence of DELTA", flags = ParameterFlags(0x0) +param "WDELTA" +units = "m", desc = "Width dependence of DELTA", flags = ParameterFlags(0x0) +param "PDELTA" +units = "m^2", desc = "Area dependence of DELTA", flags = ParameterFlags(0x0) +param "DELTAL" +units = "m^DELTALEXP", desc = "Length dependence coefficient of DELTA", flags = ParameterFlags(0x0) +param "DELTALEXP" +units = "", desc = "Length dependence exponent coefficient of DELTA", flags = ParameterFlags(0x0) +param "VSATCV" +units = "m/s", desc = "VSAT parameter for CV", flags = ParameterFlags(0x0) +param "LVSATCV" +units = "m^2/s", desc = "Length dependence of VSATCV", flags = ParameterFlags(0x0) +param "WVSATCV" +units = "m^2/s", desc = "Width dependence of VSATCV", flags = ParameterFlags(0x0) +param "PVSATCV" +units = "m^3/s", desc = "Area dependence of VSATCV", flags = ParameterFlags(0x0) +param "VSATCVL" +units = "m^VSATCVLEXP", desc = "Length dependence coefficient of VSATCV", flags = ParameterFlags(0x0) +param "VSATCVLEXP" +units = "", desc = "Length dependence exponent coefficient of VSATCV", flags = ParameterFlags(0x0) +param "VSATCVW" +units = "m^VSATCVWEXP", desc = "Width dependence coefficient of VSATCV", flags = ParameterFlags(0x0) +param "VSATCVWEXP" +units = "", desc = "Width dependence exponent coefficient of VSATCV", flags = ParameterFlags(0x0) +param "VSATCVWL" +units = "m^(2*VSATCVWLEXP)", desc = "Width-Length dependence coefficient of VSATCV", flags = ParameterFlags(0x0) +param "VSATCVWLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of VSATCV", flags = ParameterFlags(0x0) +param "UP1" +units = "", desc = "Mobility channel length coefficient", flags = ParameterFlags(0x0) +param "LP1" +units = "m", desc = "Mobility channel length exponential coefficient", flags = ParameterFlags(0x0) +param "UP2" +units = "", desc = "Mobility channel length coefficient", flags = ParameterFlags(0x0) +param "LP2" +units = "m", desc = "Mobility channel length exponential coefficient", flags = ParameterFlags(0x0) +param "U0" +units = "m^2/V/s", desc = "Low Field mobility.", flags = ParameterFlags(0x0) +param "U0L" +units = "m^U0LEXP", desc = "Length dependence coefficient of U0L", flags = ParameterFlags(0x0) +param "U0LEXP" +units = "", desc = "Length dependence exponent coefficient of U0L", flags = ParameterFlags(0x0) +param "LU0" +units = "m^3/V/s", desc = "Length dependence of U0", flags = ParameterFlags(0x0) +param "WU0" +units = "m^3/V/s", desc = "Width dependence of U0", flags = ParameterFlags(0x0) +param "PU0" +units = "m^4/V/s", desc = "Area dependence of U0", flags = ParameterFlags(0x0) +param "U0R" +units = "m2/V/s", desc = "Reverse-mode Low Field mobility.", flags = ParameterFlags(0x0) +param "LU0R" +units = "m^3/V/s", desc = "Length dependence of U0R", flags = ParameterFlags(0x0) +param "WU0R" +units = "m^3/V/s", desc = "Width dependence of U0R", flags = ParameterFlags(0x0) +param "PU0R" +units = "m^4/V/s", desc = "Area dependence of U0R", flags = ParameterFlags(0x0) +param "ETAMOB" +units = "", desc = "Effective field parameter (should be kept close to 1)", flags = ParameterFlags(0x0) +param "UA" +units = "(m/V)^EU", desc = "Mobility reduction coefficient", flags = ParameterFlags(0x0) +param "UAL" +units = "m^UALEXP", desc = "Length dependence coefficient of UA", flags = ParameterFlags(0x0) +param "UALEXP" +units = "", desc = "Length dependence exponent coefficient of UA", flags = ParameterFlags(0x0) +param "UAW" +units = "m^UAWEXP", desc = "Width dependence coefficient of UA", flags = ParameterFlags(0x0) +param "UAWEXP" +units = "", desc = "Width dependence exponent coefficient of UA", flags = ParameterFlags(0x0) +param "UAWL" +units = "m^UAWLEXP", desc = "Width-Length dependence coefficient of UA", flags = ParameterFlags(0x0) +param "UAWLEXP" +units = "", desc = "Width-Length dependence coefficient of UA", flags = ParameterFlags(0x0) +param "LUA" +units = "m*(m/V)^EU", desc = "Length dependence of UA", flags = ParameterFlags(0x0) +param "WUA" +units = "m*(m/V)^EU", desc = "Width dependence of UA", flags = ParameterFlags(0x0) +param "PUA" +units = "m^2*(m/V)^EU", desc = "Area dependence of UA", flags = ParameterFlags(0x0) +param "UAR" +units = "(m/V)^EU", desc = "Reverse-mode Mobility reduction coefficient", flags = ParameterFlags(0x0) +param "LUAR" +units = "m*(m/V)^EU", desc = "Length dependence of UAR", flags = ParameterFlags(0x0) +param "WUAR" +units = "m*(m/V)^EU", desc = "Width dependence of UAR", flags = ParameterFlags(0x0) +param "PUAR" +units = "m^2*(m/V)^EU", desc = "Area dependence of UAR", flags = ParameterFlags(0x0) +param "EU" +units = "", desc = "Mobility reduction exponent", flags = ParameterFlags(0x0) +param "LEU" +units = "m", desc = "Length dependence of EU", flags = ParameterFlags(0x0) +param "WEU" +units = "m", desc = "Width dependence of EU", flags = ParameterFlags(0x0) +param "PEU" +units = "m^2", desc = "Area dependence of EU", flags = ParameterFlags(0x0) +param "EUL" +units = "m^EULEXP", desc = "Length dependence coefficient of EU", flags = ParameterFlags(0x0) +param "EULEXP" +units = "", desc = "Length dependence exponent coefficient of EU", flags = ParameterFlags(0x0) +param "EUW" +units = "m^EUWEXP", desc = "Width dependence coefficient of EU", flags = ParameterFlags(0x0) +param "EUWEXP" +units = "", desc = "Width dependence exponent coefficient of EU", flags = ParameterFlags(0x0) +param "EUWL" +units = "m^EUWLEXP", desc = "Width-Length dependence coefficient of EU", flags = ParameterFlags(0x0) +param "EUWLEXP" +units = "", desc = "Width-Length dependence coefficient of EU", flags = ParameterFlags(0x0) +param "UD" +units = "", desc = "Coulomb scattering parameter", flags = ParameterFlags(0x0) +param "UDL" +units = "m^UDLEXP", desc = "Length dependence coefficient of UD", flags = ParameterFlags(0x0) +param "UDLEXP" +units = "", desc = "Length dependence exponent coefficient of UD", flags = ParameterFlags(0x0) +param "LUD" +units = "m", desc = "Length dependence of UD", flags = ParameterFlags(0x0) +param "WUD" +units = "m", desc = "Width dependence of UD", flags = ParameterFlags(0x0) +param "PUD" +units = "m^2", desc = "Area dependence of UD", flags = ParameterFlags(0x0) +param "UDR" +units = "", desc = "Reverse-mode Coulomb scattering parameter", flags = ParameterFlags(0x0) +param "LUDR" +units = "m", desc = "Length dependence of UDR", flags = ParameterFlags(0x0) +param "WUDR" +units = "m", desc = "Width dependence of UDR", flags = ParameterFlags(0x0) +param "PUDR" +units = "m^2", desc = "Area dependence of UDR", flags = ParameterFlags(0x0) +param "UCS" +units = "", desc = "Coulomb scattering parameter", flags = ParameterFlags(0x0) +param "LUCS" +units = "m", desc = "Length dependence of UCS", flags = ParameterFlags(0x0) +param "WUCS" +units = "m", desc = "Width dependence of UCS", flags = ParameterFlags(0x0) +param "PUCS" +units = "m^2", desc = "Area dependence of UCS", flags = ParameterFlags(0x0) +param "UCSR" +units = "", desc = "Reverse-mode Coulomb scattering parameter", flags = ParameterFlags(0x0) +param "LUCSR" +units = "m", desc = "Length dependence of UCSR", flags = ParameterFlags(0x0) +param "WUCSR" +units = "m", desc = "Width dependence of UCSR", flags = ParameterFlags(0x0) +param "PUCSR" +units = "m^2", desc = "Area dependence of UCSR", flags = ParameterFlags(0x0) +param "UC" +units = "(m/V)^EU/V", desc = "Mobility reduction with body bias", flags = ParameterFlags(0x0) +param "UCL" +units = "m^UCLEXP", desc = "Length dependence coefficient of UC", flags = ParameterFlags(0x0) +param "UCLEXP" +units = "", desc = "Length dependence exponent coefficient of UC", flags = ParameterFlags(0x0) +param "UCW" +units = "m^UCWEXP", desc = "Width dependence coefficient of UC", flags = ParameterFlags(0x0) +param "UCWEXP" +units = "", desc = "Width dependence exponent coefficient of UC", flags = ParameterFlags(0x0) +param "UCWL" +units = "m^(2*UCWLEXP)", desc = "Width-Length dependence coefficient of UC", flags = ParameterFlags(0x0) +param "UCWLEXP" +units = "", desc = "Width-Length dependence exponent coefficient of UC", flags = ParameterFlags(0x0) +param "LUC" +units = "m*(m/V)^EU/V", desc = "Length dependence of UC", flags = ParameterFlags(0x0) +param "WUC" +units = "m*(m/V)^EU/V", desc = "Width dependence of UC", flags = ParameterFlags(0x0) +param "PUC" +units = "m^2*(m/V)^EU/V", desc = "Area dependence of UC", flags = ParameterFlags(0x0) +param "UCR" +units = "(m/V)^EU/V", desc = "Reverse-mode Mobility reduction with body bias", flags = ParameterFlags(0x0) +param "LUCR" +units = "m*(m/V)^EU/V", desc = "Length dependence of UCR", flags = ParameterFlags(0x0) +param "WUCR" +units = "m*(m/V)^EU/V", desc = "Width dependence of UCR", flags = ParameterFlags(0x0) +param "PUCR" +units = "m^2*(m/V)^EU/V", desc = "Area dependence of UCR", flags = ParameterFlags(0x0) +param "PCLM" +units = "", desc = "CLM pre-factor", flags = ParameterFlags(0x0) +param "PCLML" +units = "m^PCLMLEXP", desc = "Length dependence coefficient of PCLM", flags = ParameterFlags(0x0) +param "PCLMLEXP" +units = "", desc = "Length dependence exponent coefficient of PCLM", flags = ParameterFlags(0x0) +param "LPCLM" +units = "m", desc = "Length dependence of PCLM", flags = ParameterFlags(0x0) +param "WPCLM" +units = "m", desc = "Width dependence of PCLM", flags = ParameterFlags(0x0) +param "PPCLM" +units = "m^2", desc = "Area dependence of PCLM", flags = ParameterFlags(0x0) +param "PCLMR" +units = "", desc = "Reverse-mode CLM pre-factor", flags = ParameterFlags(0x0) +param "LPCLMR" +units = "m", desc = "Length dependence of PCLMR", flags = ParameterFlags(0x0) +param "WPCLMR" +units = "m", desc = "Width dependence of PCLMR", flags = ParameterFlags(0x0) +param "PPCLMR" +units = "m^2", desc = "Area dependence of PCLMR", flags = ParameterFlags(0x0) +param "PCLMG" +units = "V", desc = "CLM pre-factor gate voltage dependence", flags = ParameterFlags(0x0) +param "PCLMCV" +units = "", desc = "CLM parameter for CV", flags = ParameterFlags(0x0) +param "PCLMCVL" +units = "m^PCLMLEXP", desc = "Length dependence coefficient of PCLMCV", flags = ParameterFlags(0x0) +param "PCLMCVLEXP" +units = "", desc = "Length dependence exponent coefficient of PCLMCV", flags = ParameterFlags(0x0) +param "LPCLMCV" +units = "m", desc = "Length dependence of PCLMCV", flags = ParameterFlags(0x0) +param "WPCLMCV" +units = "m", desc = "Width dependence of PCLMCV", flags = ParameterFlags(0x0) +param "PPCLMCV" +units = "m^2", desc = "Area dependence of PCLMCV", flags = ParameterFlags(0x0) +param "PSCBE1" +units = "V/m", desc = "Substrate current body-effect coefficient", flags = ParameterFlags(0x0) +param "LPSCBE1" +units = "V", desc = "Length dependence of PSCBE1", flags = ParameterFlags(0x0) +param "WPSCBE1" +units = "V", desc = "Width dependence of PSCBE1", flags = ParameterFlags(0x0) +param "PPSCBE1" +units = "V*m", desc = "Area dependence of PSCBE1", flags = ParameterFlags(0x0) +param "PSCBE2" +units = "m/V", desc = "Substrate current body-effect coefficient", flags = ParameterFlags(0x0) +param "LPSCBE2" +units = "m^2/V", desc = "Length dependence of PSCBE2", flags = ParameterFlags(0x0) +param "WPSCBE2" +units = "m^2/V", desc = "Width dependence of PSCBE2", flags = ParameterFlags(0x0) +param "PPSCBE2" +units = "m^3/V", desc = "Area dependence of PSCBE2", flags = ParameterFlags(0x0) +param "PDITS" +units = "1/V", desc = "Coefficient for drain-induced Vth shift", flags = ParameterFlags(0x0) +param "LPDITS" +units = "m/V", desc = "Length dependence of PDITS", flags = ParameterFlags(0x0) +param "WPDITS" +units = "m/V", desc = "Width dependence of PDITS", flags = ParameterFlags(0x0) +param "PPDITS" +units = "m^2/V", desc = "Area dependence of PDITS", flags = ParameterFlags(0x0) +param "PDITSL" +units = "1/m", desc = "L dependence of drain-induced Vth shift", flags = ParameterFlags(0x0) +param "PDITSD" +units = "1/V", desc = "Vds dependence of drain-induced Vth shift", flags = ParameterFlags(0x0) +param "LPDITSD" +units = "m/V", desc = "Length dependence of PDITSD", flags = ParameterFlags(0x0) +param "WPDITSD" +units = "m/V", desc = "Width dependence of PDITSD", flags = ParameterFlags(0x0) +param "PPDITSD" +units = "m^2/V", desc = "Area dependence of PDITSD", flags = ParameterFlags(0x0) +param "RSH" +units = "ohm/square", desc = "Source-drain sheet resistance", flags = ParameterFlags(0x0) +param "PRWG" +units = "1/V", desc = "Gate bias dependence of S/D extension resistance", flags = ParameterFlags(0x0) +param "LPRWG" +units = "m/V", desc = "Length dependence of PRWG", flags = ParameterFlags(0x0) +param "WPRWG" +units = "m/V", desc = "Width dependence of PRWG", flags = ParameterFlags(0x0) +param "PPRWG" +units = "m^2/V", desc = "Area dependence of PRWG", flags = ParameterFlags(0x0) +param "PRWB" +units = "1/V", desc = "Body bias dependence of resistance", flags = ParameterFlags(0x0) +param "LPRWB" +units = "m/V", desc = "Length dependence of PRWB", flags = ParameterFlags(0x0) +param "WPRWB" +units = "m/V", desc = "Width dependence of PRWB", flags = ParameterFlags(0x0) +param "PPRWB" +units = "m^2/V", desc = "Area dependence of PRWB", flags = ParameterFlags(0x0) +param "PRWBL" +units = "m^PRWBLEXP", desc = "Length dependence coefficient of PPRWB", flags = ParameterFlags(0x0) +param "PRWBLEXP" +units = "", desc = "Length dependence exponent coefficient of PPRWB", flags = ParameterFlags(0x0) +param "WR" +units = "", desc = "W dependence parameter of S/D extension resistance", flags = ParameterFlags(0x0) +param "LWR" +units = "m", desc = "Length dependence of WR", flags = ParameterFlags(0x0) +param "WWR" +units = "m", desc = "Width dependence of WR", flags = ParameterFlags(0x0) +param "PWR" +units = "m^2", desc = "Area dependence of WR", flags = ParameterFlags(0x0) +param "RSWMIN" +units = "ohm*m^WR", desc = "Source Resistance per unit width at high Vgs (RDSMOD=1)", flags = ParameterFlags(0x0) +param "LRSWMIN" +units = "ohm*m^(2*WR)", desc = "Length dependence of RSWMIN", flags = ParameterFlags(0x0) +param "WRSWMIN" +units = "ohm*m^(2*WR)", desc = "Width dependence of RSWMIN", flags = ParameterFlags(0x0) +param "PRSWMIN" +units = "ohm*m^(3*WR)", desc = "Area dependence of RSWMIN", flags = ParameterFlags(0x0) +param "RSW" +units = "ohm*m^WR", desc = "Zero bias Source Resistance (RDSMOD=1)", flags = ParameterFlags(0x0) +param "LRSW" +units = "ohm*m^(2*WR)", desc = "Length dependence of RSW", flags = ParameterFlags(0x0) +param "WRSW" +units = "ohm*m^(2*WR)", desc = "Width dependence of RSW", flags = ParameterFlags(0x0) +param "PRSW" +units = "ohm*m^(3*WR)", desc = "Area dependence of RSW", flags = ParameterFlags(0x0) +param "RSWL" +units = "m^RSWLEXP", desc = "Geometrical scaling of RSW (RDSMOD=1)", flags = ParameterFlags(0x0) +param "RSWLEXP" +units = "", desc = "Geometrical scaling of RSW (RDSMOD=1)", flags = ParameterFlags(0x0) +param "RDWMIN" +units = "ohm*m^WR", desc = "Drain Resistance per unit width at high Vgs (RDSMOD=1)", flags = ParameterFlags(0x0) +param "LRDWMIN" +units = "ohm*m^(2*WR)", desc = "Length dependence of RDWMIN", flags = ParameterFlags(0x0) +param "WRDWMIN" +units = "ohm*m^(2*WR)", desc = "Width dependence of RDWMIN", flags = ParameterFlags(0x0) +param "PRDWMIN" +units = "ohm*m^(3*WR)", desc = "Area dependence of RDWMIN", flags = ParameterFlags(0x0) +param "RDW" +units = "ohm*m^WR", desc = "zero bias Drain Resistance (RDSMOD=1)", flags = ParameterFlags(0x0) +param "LRDW" +units = "ohm*m^(2*WR)", desc = "Length dependence of RDW", flags = ParameterFlags(0x0) +param "WRDW" +units = "ohm*m^(2*WR)", desc = "Width dependence of RDW", flags = ParameterFlags(0x0) +param "PRDW" +units = "ohm*m^(3*WR)", desc = "Area dependence of RDW", flags = ParameterFlags(0x0) +param "RDWL" +units = "m^RDWLEXP", desc = "Geometrical scaling of RDW (RDSMOD=1)", flags = ParameterFlags(0x0) +param "RDWLEXP" +units = "", desc = "Geometrical scaling of RDW (RDSMOD=1)", flags = ParameterFlags(0x0) +param "RDSWMIN" +units = "ohm*m^WR", desc = "S/D Resistance per unit width at high Vgs (RDSMOD=0 and RDSMOD=2)", flags = ParameterFlags(0x0) +param "LRDSWMIN" +units = "ohm*m^(2*WR)", desc = "Length dependence of RDSWMIN ", flags = ParameterFlags(0x0) +param "WRDSWMIN" +units = "ohm*m^(2*WR)", desc = "Width dependence of RDSWMIN ", flags = ParameterFlags(0x0) +param "PRDSWMIN" +units = "ohm*m^(3*WR)", desc = "Area dependence of RDSWMIN ", flags = ParameterFlags(0x0) +param "RDSW" +units = "ohm*um^WR", desc = "Zero bias Resistance (RDSMOD=0 and RDSMOD=2)", flags = ParameterFlags(0x0) +param "RDSWL" +units = "m^RDSWLEXP", desc = "Geometrical scaling of RDSW (RDSMOD=0 and RDSMOD=2)", flags = ParameterFlags(0x0) +param "RDSWLEXP" +units = "", desc = "Geometrical scaling of RDSW (RDSMOD=0 and RDSMOD=2)", flags = ParameterFlags(0x0) +param "LRDSW" +units = "ohm*m^(2*WR)", desc = "Length dependence of RDSW", flags = ParameterFlags(0x0) +param "WRDSW" +units = "ohm*m^(2*WR)", desc = "Width dependence of RDSW", flags = ParameterFlags(0x0) +param "PRDSW" +units = "ohm*m^(3*WR)", desc = "Area dependence of RDSW ", flags = ParameterFlags(0x0) +param "PSAT" +units = "", desc = "Gmsat variation with gate bias", flags = ParameterFlags(0x0) +param "LPSAT" +units = "m", desc = "Length dependence of PSAT", flags = ParameterFlags(0x0) +param "WPSAT" +units = "m", desc = "Width dependence of PSAT", flags = ParameterFlags(0x0) +param "PPSAT" +units = "m^2", desc = "Area dependence of PSAT", flags = ParameterFlags(0x0) +param "PSATL" +units = "m^PSATLEXP", desc = "Length dependence coefficient of PSATL", flags = ParameterFlags(0x0) +param "PSATLEXP" +units = "", desc = "Length dependence exponent coefficient of PSATLEXP", flags = ParameterFlags(0x0) +param "PSATB" +units = "1/V", desc = "Body bias effect on Idsat", flags = ParameterFlags(0x0) +param "PSATR" +units = "", desc = "Reverse-mode Gmsat variation with gate bias", flags = ParameterFlags(0x0) +param "LPSATR" +units = "m", desc = "Length dependence of PSATR", flags = ParameterFlags(0x0) +param "WPSATR" +units = "m", desc = "Width dependence of PSATR", flags = ParameterFlags(0x0) +param "PPSATR" +units = "m^2", desc = "Area dependence of PSATR", flags = ParameterFlags(0x0) +param "LPSATB" +units = "m/V", desc = "Length dependence of PSATB", flags = ParameterFlags(0x0) +param "WPSATB" +units = "m/V", desc = "Width dependence of PSATB", flags = ParameterFlags(0x0) +param "PPSATB" +units = "m^2/V", desc = "Area dependence of PSATB", flags = ParameterFlags(0x0) +param "PSATX" +units = "", desc = "Fine tuning of PTWG effect", flags = ParameterFlags(0x0) +param "PTWG" +units = "", desc = "Idsat variation with gate bias", flags = ParameterFlags(0x0) +param "LPTWG" +units = "m", desc = "Length dependence of PTWG", flags = ParameterFlags(0x0) +param "WPTWG" +units = "m", desc = "Width dependence of PTWG", flags = ParameterFlags(0x0) +param "PPTWG" +units = "m^2", desc = "Area dependence of PTWG", flags = ParameterFlags(0x0) +param "PTWGL" +units = "m^PTWGLEXP", desc = "Length dependence coefficient of PTWG", flags = ParameterFlags(0x0) +param "PTWGLEXP" +units = "", desc = "Length dependence exponent coefficient of PTWG", flags = ParameterFlags(0x0) +param "PTWGR" +units = "", desc = "Reverse-mode Idsat variation with gate bias", flags = ParameterFlags(0x0) +param "LPTWGR" +units = "m", desc = "Length dependence of PTWGR", flags = ParameterFlags(0x0) +param "WPTWGR" +units = "m", desc = "Width dependence of PTWGR", flags = ParameterFlags(0x0) +param "PPTWGR" +units = "m^2", desc = "Area dependence of PTWGR", flags = ParameterFlags(0x0) +param "PTWGLR" +units = "m^PTWGLEXPR", desc = "Length dependence coefficient of PTWG", flags = ParameterFlags(0x0) +param "PTWGLEXPR" +units = "", desc = "Length dependence exponent coefficient of PTWG", flags = ParameterFlags(0x0) +param "A1" +units = "1/V^2", desc = "Non-saturation effect parameter for strong inversion region", flags = ParameterFlags(0x0) +param "LA1" +units = "m/V^2", desc = "Length dependence of A1", flags = ParameterFlags(0x0) +param "WA1" +units = "m/V^2", desc = "Width dependence of A1", flags = ParameterFlags(0x0) +param "PA1" +units = "m^2/V^2", desc = "Area dependence of A1", flags = ParameterFlags(0x0) +param "A11" +units = "", desc = "Temperature dependence of A1", flags = ParameterFlags(0x0) +param "LA11" +units = "m", desc = "Length dependence of A11", flags = ParameterFlags(0x0) +param "WA11" +units = "m", desc = "Width dependence of A11", flags = ParameterFlags(0x0) +param "PA11" +units = "m^2", desc = "Area dependence of A11", flags = ParameterFlags(0x0) +param "A2" +units = "1/V", desc = "Non-saturation effect parameter for moderate inversion region", flags = ParameterFlags(0x0) +param "LA2" +units = "m/V", desc = "Length dependence of A2", flags = ParameterFlags(0x0) +param "WA2" +units = "m/V", desc = "Width dependence of A2", flags = ParameterFlags(0x0) +param "PA2" +units = "m^2/V", desc = "Area dependence of A2", flags = ParameterFlags(0x0) +param "A21" +units = "", desc = "Temperature dependence of A2", flags = ParameterFlags(0x0) +param "LA21" +units = "m", desc = "Length dependence of A21", flags = ParameterFlags(0x0) +param "WA21" +units = "m", desc = "Width dependence of A21", flags = ParameterFlags(0x0) +param "PA21" +units = "m^2", desc = "Area dependence of A21", flags = ParameterFlags(0x0) +param "PDIBLC" +units = "", desc = "Parameter for DIBL effect on Rout", flags = ParameterFlags(0x0) +param "PDIBLCL" +units = "m^PDIBLCLEXP", desc = "Length dependence coefficient of PDIBLC", flags = ParameterFlags(0x0) +param "PDIBLCLEXP" +units = "", desc = "Length dependence exponent coefficient of PDIBLC", flags = ParameterFlags(0x0) +param "LPDIBLC" +units = "m", desc = "Length dependence of PDIBLC", flags = ParameterFlags(0x0) +param "WPDIBLC" +units = "m", desc = "Width dependence of PDIBLC", flags = ParameterFlags(0x0) +param "PPDIBLC" +units = "m^2", desc = "Area dependence of PDIBLC", flags = ParameterFlags(0x0) +param "PDIBLCR" +units = "", desc = "Reverse-mode Parameter for DIBL effect on Rout", flags = ParameterFlags(0x0) +param "PDIBLCLR" +units = "m^PDIBLCLEXPR", desc = "Length dependence coefficient of PDIBLC", flags = ParameterFlags(0x0) +param "PDIBLCLEXPR" +units = "", desc = "Length dependence exponent coefficient of PDIBLC", flags = ParameterFlags(0x0) +param "LPDIBLCR" +units = "m", desc = "Length dependence of PDIBLCR", flags = ParameterFlags(0x0) +param "WPDIBLCR" +units = "m", desc = "Width dependence of PDIBLCR", flags = ParameterFlags(0x0) +param "PPDIBLCR" +units = "m^2", desc = "Area dependence of PDIBLCR", flags = ParameterFlags(0x0) +param "PDIBLCB" +units = "1/V", desc = "Parameter for DIBL effect on Rout", flags = ParameterFlags(0x0) +param "LPDIBLCB" +units = "m/V", desc = "Length dependence of PDIBLCB", flags = ParameterFlags(0x0) +param "WPDIBLCB" +units = "m/V", desc = "Width dependence of PDIBLCB", flags = ParameterFlags(0x0) +param "PPDIBLCB" +units = "m^2/V", desc = "Area dependence of PDIBLCB", flags = ParameterFlags(0x0) +param "PVAG" +units = "", desc = "Vg dependence of early voltage", flags = ParameterFlags(0x0) +param "LPVAG" +units = "m", desc = "Length dependence of PVAG", flags = ParameterFlags(0x0) +param "WPVAG" +units = "m", desc = "Width dependence of PVAG", flags = ParameterFlags(0x0) +param "PPVAG" +units = "m^2", desc = "Area dependence of PVAG", flags = ParameterFlags(0x0) +param "FPROUT" +units = "V/m^0.5", desc = "gds degradation factor due to pocket implant.", flags = ParameterFlags(0x0) +param "FPROUTL" +units = "m^FPROUTLEXP", desc = "Length dependence coefficient of FPROUT", flags = ParameterFlags(0x0) +param "FPROUTLEXP" +units = "", desc = "Length dependence exponent coefficient of FPROUT", flags = ParameterFlags(0x0) +param "LFPROUT" +units = "V*m^0.5", desc = "Length dependence of FPROUT", flags = ParameterFlags(0x0) +param "WFPROUT" +units = "V*m^0.5", desc = "Width dependence of FPROUT", flags = ParameterFlags(0x0) +param "PFPROUT" +units = "V*m^1.5", desc = "Area dependence of FPROUT", flags = ParameterFlags(0x0) +param "ALPHA0" +units = "m/V", desc = "First parameter of Iii", flags = ParameterFlags(0x0) +param "ALPHA0L" +units = "m^ALPHA0LEXP", desc = "Length dependence coefficient of ALPHA0", flags = ParameterFlags(0x0) +param "ALPHA0LEXP" +units = "", desc = "Length dependence exponent coefficient of ALPHA0", flags = ParameterFlags(0x0) +param "LALPHA0" +units = "m^2/V", desc = "Length dependence of ALPHA0", flags = ParameterFlags(0x0) +param "WALPHA0" +units = "m^2/V", desc = "Width dependence of ALPHA0", flags = ParameterFlags(0x0) +param "PALPHA0" +units = "m^3/V", desc = "Area dependence of ALPHA0", flags = ParameterFlags(0x0) +param "BETA0" +units = "1/V", desc = "Vds dependent parameter of Iii", flags = ParameterFlags(0x0) +param "LBETA0" +units = "m/V", desc = "Length dependence of BETA0", flags = ParameterFlags(0x0) +param "WBETA0" +units = "m/V", desc = "Width dependence of BETA0", flags = ParameterFlags(0x0) +param "PBETA0" +units = "m^2/V", desc = "Area dependence of BETA0", flags = ParameterFlags(0x0) +param "AIGBACC" +units = "(F*s^2/g)^0.5/m", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "BIGBACC" +units = "(F*s^2/g)^0.5/m/V", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "CIGBACC" +units = "1/V", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "NIGBACC" +units = "", desc = "Parameter for Igbacc slope", flags = ParameterFlags(0x0) +param "AIGBINV" +units = "(F*s^2/g)^0.5/m", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "BIGBINV" +units = "(F*s^2/g)^0.5/m/V", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "CIGBINV" +units = "1/V", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "EIGBINV" +units = "V", desc = "Parameter for the Si band-gap for Igbinv", flags = ParameterFlags(0x0) +param "NIGBINV" +units = "", desc = "Parameter for Igbinv slope", flags = ParameterFlags(0x0) +param "AIGC" +units = "(F*s^2/g)^0.5/m", desc = "Parameter for Igc", flags = ParameterFlags(0x0) +param "BIGC" +units = "(F*s^2/g)^0.5/m/V", desc = "Parameter for Igc", flags = ParameterFlags(0x0) +param "CIGC" +units = "1/V", desc = "Parameter for Igc", flags = ParameterFlags(0x0) +param "AIGS" +units = "(F*s^2/g)^0.5/m", desc = "Parameter for Igs d", flags = ParameterFlags(0x0) +param "BIGS" +units = "(F*s^2/g)^0.5/m/V", desc = "Parameter for Igs d", flags = ParameterFlags(0x0) +param "CIGS" +units = "1/V", desc = "Parameter for Igs d", flags = ParameterFlags(0x0) +param "AIGD" +units = "(F*s^2/g)^0.5/m", desc = "Parameter for Igs d", flags = ParameterFlags(0x0) +param "BIGD" +units = "(F*s^2/g)^0.5/m/V", desc = "Parameter for Igs d", flags = ParameterFlags(0x0) +param "CIGD" +units = "1/V", desc = "Parameter for Igs d", flags = ParameterFlags(0x0) +param "DLCIG" +units = "m", desc = "Delta L for Ig model", flags = ParameterFlags(0x0) +param "DLCIGD" +units = "m", desc = "Delta L for Ig model", flags = ParameterFlags(0x0) +param "POXEDGE" +units = "", desc = "Factor for the gate edge Tox", flags = ParameterFlags(0x0) +param "NTOX" +units = "", desc = "Exponent for Tox ratio", flags = ParameterFlags(0x0) +param "TOXREF" +units = "m", desc = "Target tox value", flags = ParameterFlags(0x0) +param "PIGCD" +units = "", desc = "Igc, S/D partition parameter", flags = ParameterFlags(0x0) +param "AIGCL" +units = "m", desc = "Length dependence coefficient of AIGC", flags = ParameterFlags(0x0) +param "AIGCW" +units = "m", desc = "Width dependence coefficient of AIGC", flags = ParameterFlags(0x0) +param "AIGSL" +units = "m", desc = "Length dependence coefficient of AIGS", flags = ParameterFlags(0x0) +param "AIGSW" +units = "m", desc = "Width dependence coefficient of AIGS", flags = ParameterFlags(0x0) +param "AIGDL" +units = "m", desc = "Length dependence coefficient of AIGD", flags = ParameterFlags(0x0) +param "AIGDW" +units = "m", desc = "Width dependence coefficient of AIGD", flags = ParameterFlags(0x0) +param "PIGCDL" +units = "m", desc = "Length dependence coefficient of PIGCD", flags = ParameterFlags(0x0) +param "LAIGBINV" +units = "(F*s^2/g)^0.5", desc = "Length dependence of AIGBINV", flags = ParameterFlags(0x0) +param "WAIGBINV" +units = "(F*s^2/g)^0.5", desc = "Width dependence of AIGBINV", flags = ParameterFlags(0x0) +param "PAIGBINV" +units = "m*(F*s^2/g)^0.5", desc = "Area dependence of AIGBINV", flags = ParameterFlags(0x0) +param "LBIGBINV" +units = "(F*s^2/g)^0.5/V", desc = "Length dependence of BIGBINV", flags = ParameterFlags(0x0) +param "WBIGBINV" +units = "(F*s^2/g)^0.5/V", desc = "Width dependence of BIGBINV", flags = ParameterFlags(0x0) +param "PBIGBINV" +units = "m*(F*s^2/g)^0.5/V", desc = "Area dependence of BIGBINV", flags = ParameterFlags(0x0) +param "LCIGBINV" +units = "m/V", desc = "Length dependence of CIGBINV", flags = ParameterFlags(0x0) +param "WCIGBINV" +units = "m/V", desc = "Width dependence of CIGBINV", flags = ParameterFlags(0x0) +param "PCIGBINV" +units = "m^2/V", desc = "Area dependence of CIGBINV", flags = ParameterFlags(0x0) +param "LEIGBINV" +units = "m*V", desc = "Length dependence of EIGBINV", flags = ParameterFlags(0x0) +param "WEIGBINV" +units = "m*V", desc = "Width dependence of EIGBINV", flags = ParameterFlags(0x0) +param "PEIGBINV" +units = "m^2*V", desc = "Area dependence of EIGBINV", flags = ParameterFlags(0x0) +param "LNIGBINV" +units = "m", desc = "Length dependence of NIGBINV", flags = ParameterFlags(0x0) +param "WNIGBINV" +units = "m", desc = "Width dependence of NIGBINV", flags = ParameterFlags(0x0) +param "PNIGBINV" +units = "m^2", desc = "Area dependence of NIGBINV", flags = ParameterFlags(0x0) +param "LAIGBACC" +units = "(F*s^2/g)^0.5", desc = "Length dependence of AIGBACC", flags = ParameterFlags(0x0) +param "WAIGBACC" +units = "(F*s^2/g)^0.5", desc = "Width dependence of AIGBACC", flags = ParameterFlags(0x0) +param "PAIGBACC" +units = "m*(F*s^2/g)^0.5", desc = "Area dependence of AIGBACC", flags = ParameterFlags(0x0) +param "LBIGBACC" +units = "(F*s^2/g)^0.5/V", desc = "Length dependence of BIGBACC", flags = ParameterFlags(0x0) +param "WBIGBACC" +units = "(F*s^2/g)^0.5/V", desc = "Width dependence of BIGBACC", flags = ParameterFlags(0x0) +param "PBIGBACC" +units = "m*(F*s^2/g)^0.5/V", desc = "Area dependence of BIGBACC", flags = ParameterFlags(0x0) +param "LCIGBACC" +units = "m/V", desc = "Length dependence of CIGBACC", flags = ParameterFlags(0x0) +param "WCIGBACC" +units = "m/V", desc = "Width dependence of CIGBACC", flags = ParameterFlags(0x0) +param "PCIGBACC" +units = "m^2/V", desc = "Area dependence of CIGBACC", flags = ParameterFlags(0x0) +param "LNIGBACC" +units = "m", desc = "Length dependence of NIGBACC", flags = ParameterFlags(0x0) +param "WNIGBACC" +units = "m", desc = "Width dependence of NIGBACC", flags = ParameterFlags(0x0) +param "PNIGBACC" +units = "m^2", desc = "Area dependence of NIGBACC", flags = ParameterFlags(0x0) +param "LAIGC" +units = "(F*s^2/g)^0.5", desc = "Length dependence of AIGC", flags = ParameterFlags(0x0) +param "WAIGC" +units = "(F*s^2/g)^0.5", desc = "Width dependence of AIGC", flags = ParameterFlags(0x0) +param "PAIGC" +units = "m*(F*s^2/g)^0.5", desc = "Area dependence of AIGC", flags = ParameterFlags(0x0) +param "LBIGC" +units = "(F*s^2/g)^0.5/V", desc = "Length dependence of BIGC", flags = ParameterFlags(0x0) +param "WBIGC" +units = "(F*s^2/g)^0.5/V", desc = "Width dependence of BIGC", flags = ParameterFlags(0x0) +param "PBIGC" +units = "m*(F*s^2/g)^0.5/V", desc = "Area dependence of BIGC", flags = ParameterFlags(0x0) +param "LCIGC" +units = "m/V", desc = "Length dependence of CIGC", flags = ParameterFlags(0x0) +param "WCIGC" +units = "m/V", desc = "Width dependence of CIGC", flags = ParameterFlags(0x0) +param "PCIGC" +units = "m^2/V", desc = "Area dependence of CIGC", flags = ParameterFlags(0x0) +param "LAIGS" +units = "(F*s^2/g)^0.5", desc = "Length dependence of AIGS", flags = ParameterFlags(0x0) +param "WAIGS" +units = "(F*s^2/g)^0.5", desc = "Width dependence of AIGS", flags = ParameterFlags(0x0) +param "PAIGS" +units = "m*(F*s^2/g)^0.5", desc = "Area dependence of AIGS", flags = ParameterFlags(0x0) +param "LBIGS" +units = "(F*s^2/g)^0.5/V", desc = "Length dependence of BIGS", flags = ParameterFlags(0x0) +param "WBIGS" +units = "(F*s^2/g)^0.5/V", desc = "Width dependence of BIGS", flags = ParameterFlags(0x0) +param "PBIGS" +units = "m*(F*s^2/g)^0.5/V", desc = "Area dependence of BIGS", flags = ParameterFlags(0x0) +param "LCIGS" +units = "m/V", desc = "Length dependence of CIGS", flags = ParameterFlags(0x0) +param "WCIGS" +units = "m/V", desc = "Width dependence of CIGS", flags = ParameterFlags(0x0) +param "PCIGS" +units = "m^2/V", desc = "Area dependence of CIGS", flags = ParameterFlags(0x0) +param "LAIGD" +units = "(F*s^2/g)^0.5", desc = "Length dependence of AIGD", flags = ParameterFlags(0x0) +param "WAIGD" +units = "(F*s^2/g)^0.5", desc = "Width dependence of AIGD", flags = ParameterFlags(0x0) +param "PAIGD" +units = "m*(F*s^2/g)^0.5", desc = "Area dependence of AIGD", flags = ParameterFlags(0x0) +param "LBIGD" +units = "(F*s^2/g)^0.5/V", desc = "Length dependence of BIGD", flags = ParameterFlags(0x0) +param "WBIGD" +units = "(F*s^2/g)^0.5/V", desc = "Width dependence of BIGD", flags = ParameterFlags(0x0) +param "PBIGD" +units = "m*(F*s^2/g)^0.5/V", desc = "Area dependence of BIGD", flags = ParameterFlags(0x0) +param "LCIGD" +units = "m/V", desc = "Length dependence of CIGD", flags = ParameterFlags(0x0) +param "WCIGD" +units = "m/V", desc = "Width dependence of CIGD", flags = ParameterFlags(0x0) +param "PCIGD" +units = "m^2/V", desc = "Area dependence of CIGD", flags = ParameterFlags(0x0) +param "LPOXEDGE" +units = "m", desc = "Length dependence of POXEDGE", flags = ParameterFlags(0x0) +param "WPOXEDGE" +units = "m", desc = "Width dependence of POXEDGE", flags = ParameterFlags(0x0) +param "PPOXEDGE" +units = "m^2", desc = "Area dependence of POXEDGE", flags = ParameterFlags(0x0) +param "LDLCIG" +units = "m^2", desc = "Length dependence of DLCIG", flags = ParameterFlags(0x0) +param "WDLCIG" +units = "m^2", desc = "Width dependence of DLCIG", flags = ParameterFlags(0x0) +param "PDLCIG" +units = "m^3", desc = "Area dependence of DLCIG", flags = ParameterFlags(0x0) +param "LDLCIGD" +units = "m^2", desc = "Length dependence of DLCIGD", flags = ParameterFlags(0x0) +param "WDLCIGD" +units = "m^2", desc = "Width dependence of DLCIGD", flags = ParameterFlags(0x0) +param "PDLCIGD" +units = "m^3", desc = "Area dependence of DLCIGD", flags = ParameterFlags(0x0) +param "LNTOX" +units = "m", desc = "Length dependence of NTOX", flags = ParameterFlags(0x0) +param "WNTOX" +units = "m", desc = "Width dependence of NTOX", flags = ParameterFlags(0x0) +param "PNTOX" +units = "m^2", desc = "Area dependence of NTOX", flags = ParameterFlags(0x0) +param "AGIDL" +units = "V/m", desc = "Pre-exponential coefficient for GIDL", flags = ParameterFlags(0x0) +param "AGIDLL" +units = "m", desc = "Length dependence coefficient of AGIDL", flags = ParameterFlags(0x0) +param "AGIDLW" +units = "m", desc = "Width dependence coefficient of AGIDL", flags = ParameterFlags(0x0) +param "LAGIDL" +units = "m^2", desc = "Length dependence of AGIDL", flags = ParameterFlags(0x0) +param "WAGIDL" +units = "m^2", desc = "Width dependence of AGIDL", flags = ParameterFlags(0x0) +param "PAGIDL" +units = "m^3", desc = "Area dependence of AGIDL", flags = ParameterFlags(0x0) +param "BGIDL" +units = "V/m", desc = "Exponential coefficient for GIDL", flags = ParameterFlags(0x0) +param "LBGIDL" +units = "V", desc = "Length dependence of BGIDL", flags = ParameterFlags(0x0) +param "WBGIDL" +units = "V", desc = "Width dependence of BGIDL", flags = ParameterFlags(0x0) +param "PBGIDL" +units = "V*m", desc = "Area dependence of BGIDL", flags = ParameterFlags(0x0) +param "CGIDL" +units = "V/m", desc = "Exponential coefficient for GIDL", flags = ParameterFlags(0x0) +param "LCGIDL" +units = "V", desc = "Length dependence of CGIDL", flags = ParameterFlags(0x0) +param "WCGIDL" +units = "V", desc = "Width dependence of CGIDL", flags = ParameterFlags(0x0) +param "PCGIDL" +units = "V*m", desc = "Area dependence of CGIDL", flags = ParameterFlags(0x0) +param "EGIDL" +units = "V", desc = "Band bending parameter for GIDL", flags = ParameterFlags(0x0) +param "LEGIDL" +units = "V*m", desc = "Length dependence of EGIDL", flags = ParameterFlags(0x0) +param "WEGIDL" +units = "V*m", desc = "Width dependence of EGIDL", flags = ParameterFlags(0x0) +param "PEGIDL" +units = "V*m^2", desc = "Area dependence of EGIDL", flags = ParameterFlags(0x0) +param "AGISL" +units = "V/m", desc = "Pre-exponential coefficient for GISL", flags = ParameterFlags(0x0) +param "AGISLL" +units = "m", desc = "Length dependence coefficient of AGISL", flags = ParameterFlags(0x0) +param "AGISLW" +units = "m", desc = "Width dependence coefficient of AGISL", flags = ParameterFlags(0x0) +param "LAGISL" +units = "m^2", desc = "Length dependence of AGISL", flags = ParameterFlags(0x0) +param "WAGISL" +units = "m^2", desc = "Width dependence of AGISL", flags = ParameterFlags(0x0) +param "PAGISL" +units = "m^3", desc = "Area dependence of AGISL", flags = ParameterFlags(0x0) +param "BGISL" +units = "V/m", desc = "Exponential coefficient for GISL", flags = ParameterFlags(0x0) +param "LBGISL" +units = "V", desc = "Length dependence of BGISL", flags = ParameterFlags(0x0) +param "WBGISL" +units = "V", desc = "Width dependence of BGISL", flags = ParameterFlags(0x0) +param "PBGISL" +units = "V*m", desc = "Area dependence of BGISL", flags = ParameterFlags(0x0) +param "CGISL" +units = "V/m", desc = "Exponential coefficient for GISL", flags = ParameterFlags(0x0) +param "LCGISL" +units = "V", desc = "Length dependence of CGISL", flags = ParameterFlags(0x0) +param "WCGISL" +units = "V", desc = "Width dependence of CGISL", flags = ParameterFlags(0x0) +param "PCGISL" +units = "V*m", desc = "Area dependence of CGISL", flags = ParameterFlags(0x0) +param "EGISL" +units = "V", desc = "Band bending parameter for GISL", flags = ParameterFlags(0x0) +param "LEGISL" +units = "V*m", desc = "Length dependence of EGISL", flags = ParameterFlags(0x0) +param "WEGISL" +units = "V*m", desc = "Width dependence of EGISL", flags = ParameterFlags(0x0) +param "PEGISL" +units = "V*m^2", desc = "Area dependence of EGISL", flags = ParameterFlags(0x0) +param "CF" +units = "F/m", desc = "Outer Fringe capacitance", flags = ParameterFlags(0x0) +param "LCF" +units = "F", desc = "Length dependence of CF", flags = ParameterFlags(0x0) +param "WCF" +units = "F", desc = "Width dependence of CF", flags = ParameterFlags(0x0) +param "PCF" +units = "F*m", desc = "Area dependence of CF", flags = ParameterFlags(0x0) +param "CFRCOEFF" +units = "F/m", desc = "Coefficient for Outer Fringe capacitance", flags = ParameterFlags(0x0) +param "CGSO" +units = "F/m", desc = "Gate - Source overlap capacitance", flags = ParameterFlags(0x0) +param "CGDO" +units = "F/m", desc = "Gate - Drain overlap capacitance", flags = ParameterFlags(0x0) +param "CGBO" +units = "F/m", desc = "Gate - Body overlap capacitance", flags = ParameterFlags(0x0) +param "CGSL" +units = "F/m", desc = "Overlap capacitance between gate and lightly-doped source region", flags = ParameterFlags(0x0) +param "LCGSL" +units = "", desc = "Length dependence of CGSL", flags = ParameterFlags(0x0) +param "WCGSL" +units = "", desc = "Width dependence of CGSL", flags = ParameterFlags(0x0) +param "PCGSL" +units = "", desc = "Area dependence of CGSL", flags = ParameterFlags(0x0) +param "CGDL" +units = "F/m", desc = "Overlap capacitance between gate and lightly-doped drain region", flags = ParameterFlags(0x0) +param "LCGDL" +units = "F", desc = "Length dependence of CGDL", flags = ParameterFlags(0x0) +param "WCGDL" +units = "F", desc = "Width dependence of CGDL", flags = ParameterFlags(0x0) +param "PCGDL" +units = "F*m", desc = "Area dependence of CGDL", flags = ParameterFlags(0x0) +param "CKAPPAS" +units = "V", desc = "Coefficient of bias-dependent overlap capacitance for the source side", flags = ParameterFlags(0x0) +param "LCKAPPAS" +units = "m*V", desc = "Length dependence of CKAPPAS", flags = ParameterFlags(0x0) +param "WCKAPPAS" +units = "m*V", desc = "Width dependence of CKAPPAS", flags = ParameterFlags(0x0) +param "PCKAPPAS" +units = "m^2*V", desc = "Area dependence of CKAPPAS", flags = ParameterFlags(0x0) +param "CKAPPAD" +units = "V", desc = "Coefficient of bias-dependent overlap capacitance for the drain side", flags = ParameterFlags(0x0) +param "LCKAPPAD" +units = "m*V", desc = "Length dependence of CKAPPAD", flags = ParameterFlags(0x0) +param "WCKAPPAD" +units = "m*V", desc = "Width dependence of CKAPPAD", flags = ParameterFlags(0x0) +param "PCKAPPAD" +units = "m^2*V", desc = "Area dependence of CKAPPAD", flags = ParameterFlags(0x0) +param "DMCG" +units = "m", desc = "Distance of Mid-Contact to Gate edge", flags = ParameterFlags(0x0) +param "DMCI" +units = "m", desc = "Distance of Mid-Contact to Isolation", flags = ParameterFlags(0x0) +param "DMDG" +units = "m", desc = "Distance of Mid-Diffusion to Gate edge", flags = ParameterFlags(0x0) +param "DMCGT" +units = "m", desc = "Distance of Mid-Contact to Gate edge in Test", flags = ParameterFlags(0x0) +param "XGL" +units = "m", desc = "Variation in Ldrawn", flags = ParameterFlags(0x0) +param "RSHG" +units = "ohm", desc = "Gate sheet resistance", flags = ParameterFlags(0x0) +param "CJS" +units = "F/m^2", desc = "Unit area source-side junction capacitance at zero bias", flags = ParameterFlags(0x0) +param "CJD" +units = "F/m^2", desc = "Unit area drain-side junction capacitance at zero bias", flags = ParameterFlags(0x0) +param "CJSWS" +units = "F/m", desc = "Unit length source-side side-wall junction capacitance at zero bias", flags = ParameterFlags(0x0) +param "CJSWD" +units = "F/m", desc = "Unit length drain-side side-wall junction capacitance at zero bias", flags = ParameterFlags(0x0) +param "CJSWGS" +units = "F/m", desc = "Unit length source-side gate side-wall junction capacitance at zero bias", flags = ParameterFlags(0x0) +param "CJSWGD" +units = "F/m", desc = "Unit length drain-side gate side-wall junction capacitance at zero bias", flags = ParameterFlags(0x0) +param "PBS" +units = "V", desc = "Source-side bulk junction built-in potential", flags = ParameterFlags(0x0) +param "PBD" +units = "V", desc = "Drain-side bulk junction built-in potential", flags = ParameterFlags(0x0) +param "PBSWS" +units = "V", desc = "Built-in potential for Source-side side-wall junction capacitance", flags = ParameterFlags(0x0) +param "PBSWD" +units = "V", desc = "Built-in potential for Drain-side side-wall junction capacitance", flags = ParameterFlags(0x0) +param "PBSWGS" +units = "V", desc = "Built-in potential for Source-side gate side-wall junction capacitance", flags = ParameterFlags(0x0) +param "PBSWGD" +units = "V", desc = "Built-in potential for Drain-side gate side-wall junction capacitance", flags = ParameterFlags(0x0) +param "MJS" +units = "", desc = "Source bottom junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "MJD" +units = "", desc = "Drain bottom junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "MJSWS" +units = "", desc = "Source side-wall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "MJSWD" +units = "", desc = "Drain side-wall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "MJSWGS" +units = "", desc = "Source-side gate side-wall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "MJSWGD" +units = "", desc = "Drain-side gate side-wall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "JSS" +units = "A/m^2", desc = "Bottom source junction reverse saturation current density", flags = ParameterFlags(0x0) +param "JSD" +units = "A/m^2", desc = "Bottom drain junction reverse saturation current density", flags = ParameterFlags(0x0) +param "JSWS" +units = "A/m", desc = "Unit length reverse saturation current for side-wall source junction", flags = ParameterFlags(0x0) +param "JSWD" +units = "A/m", desc = "Unit length reverse saturation current for side-wall drain junction", flags = ParameterFlags(0x0) +param "JSWGS" +units = "A/m", desc = "Unit length reverse saturation current for gate-edge side-wall source junction", flags = ParameterFlags(0x0) +param "JSWGD" +units = "A/m", desc = "Unit length reverse saturation current for gate-edge side-wall drain junction", flags = ParameterFlags(0x0) +param "NJS" +units = "", desc = "Source junction emission coefficient", flags = ParameterFlags(0x0) +param "NJD" +units = "", desc = "Drain junction emission coefficient", flags = ParameterFlags(0x0) +param "IJTHSFWD" +units = "A", desc = "Forward source diode breakdown limiting current", flags = ParameterFlags(0x0) +param "IJTHDFWD" +units = "A", desc = "Forward drain diode breakdown limiting current", flags = ParameterFlags(0x0) +param "IJTHSREV" +units = "A", desc = "Reverse source diode breakdown limiting current", flags = ParameterFlags(0x0) +param "IJTHDREV" +units = "A", desc = "Reverse drain diode breakdown limiting current", flags = ParameterFlags(0x0) +param "BVS" +units = "V", desc = "Source diode breakdown voltage", flags = ParameterFlags(0x0) +param "BVD" +units = "V", desc = "Drain diode breakdown voltage", flags = ParameterFlags(0x0) +param "XJBVS" +units = "", desc = "Fitting parameter for source diode breakdown current", flags = ParameterFlags(0x0) +param "XJBVD" +units = "", desc = "Fitting parameter for drain diode breakdown current", flags = ParameterFlags(0x0) +param "JTSS" +units = "A/m", desc = "Bottom source junction trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "JTSD" +units = "A/m", desc = "Bottom drain junction trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "JTSSWS" +units = "A/m^2", desc = "Unit length trap-assisted saturation current for side-wall source junction", flags = ParameterFlags(0x0) +param "JTSSWD" +units = "A/m^2", desc = "Unit length trap-assisted saturation current for side-wall drain junction", flags = ParameterFlags(0x0) +param "JTSSWGS" +units = "A/m", desc = "Unit length trap-assisted saturation current for gate-edge side-wall source junction", flags = ParameterFlags(0x0) +param "JTSSWGD" +units = "A/m", desc = "Unit length trap-assisted saturation current for gate-edge side-wall drain junction", flags = ParameterFlags(0x0) +param "JTWEFF" +units = "", desc = "Trap assisted tunnelling current width dependence", flags = ParameterFlags(0x0) +param "NJTS" +units = "", desc = "Non-ideality factor for JTSS", flags = ParameterFlags(0x0) +param "NJTSD" +units = "", desc = "Non-ideality factor for JTSD", flags = ParameterFlags(0x0) +param "NJTSSW" +units = "", desc = "Non-ideality factor for JTSSWS", flags = ParameterFlags(0x0) +param "NJTSSWD" +units = "", desc = "Non-ideality factor for JTSSWD", flags = ParameterFlags(0x0) +param "NJTSSWG" +units = "", desc = "Non-ideality factor for JTSSWGS", flags = ParameterFlags(0x0) +param "NJTSSWGD" +units = "", desc = "Non-ideality factor for JTSSWGD", flags = ParameterFlags(0x0) +param "VTSS" +units = "V", desc = "Bottom source junction trap-assisted current voltage dependent parameter", flags = ParameterFlags(0x0) +param "VTSD" +units = "V", desc = "Bottom drain junction trap-assisted current voltage dependent parameter", flags = ParameterFlags(0x0) +param "VTSSWS" +units = "V", desc = "Unit length trap-assisted current voltage dependent parameter for side-wall source junction", flags = ParameterFlags(0x0) +param "VTSSWD" +units = "V", desc = "Unit length trap-assisted current voltage dependent parameter for side-wall drain junction", flags = ParameterFlags(0x0) +param "VTSSWGS" +units = "V", desc = "Unit length trap-assisted current voltage dependent parameter for gate-edge side-wall source junction", flags = ParameterFlags(0x0) +param "VTSSWGD" +units = "V", desc = "Unit length trap-assisted current voltage dependent parameter for gate-edge side-wall drain junction", flags = ParameterFlags(0x0) +param "XRCRG1" +units = "", desc = "1st fitting parameter the bias-dependent Rg ", flags = ParameterFlags(0x0) +param "XRCRG2" +units = "", desc = "2nd fitting parameter the bias-dependent Rg ", flags = ParameterFlags(0x0) +param "GBMIN" +units = "mho", desc = "Minimum body conductance", flags = ParameterFlags(0x0) +param "RBPS0" +units = "ohm", desc = "Scaling pre-factor for RBPS", flags = ParameterFlags(0x0) +param "RBPSL" +units = "", desc = "Length Scaling parameter for RBPS", flags = ParameterFlags(0x0) +param "RBPSW" +units = "", desc = "Width Scaling parameter for RBPS", flags = ParameterFlags(0x0) +param "RBPSNF" +units = "", desc = "Number of fingers Scaling parameter for RBPS", flags = ParameterFlags(0x0) +param "RBPD0" +units = "ohm", desc = "Scaling pre-factor for RBPD", flags = ParameterFlags(0x0) +param "RBPDL" +units = "", desc = "Length Scaling parameter for RBPD", flags = ParameterFlags(0x0) +param "RBPDW" +units = "", desc = "Width Scaling parameter for RBPD", flags = ParameterFlags(0x0) +param "RBPDNF" +units = "", desc = "Number of fingers Scaling parameter for RBPD", flags = ParameterFlags(0x0) +param "RBPBX0" +units = "ohm", desc = "Scaling pre-factor for RBPBX", flags = ParameterFlags(0x0) +param "RBPBXL" +units = "", desc = "Length Scaling parameter for RBPBX", flags = ParameterFlags(0x0) +param "RBPBXW" +units = "", desc = "Width Scaling parameter for RBPBX", flags = ParameterFlags(0x0) +param "RBPBXNF" +units = "", desc = "Number of fingers Scaling parameter for RBPBX", flags = ParameterFlags(0x0) +param "RBPBY0" +units = "ohm", desc = "Scaling pre-factor for RBPBY", flags = ParameterFlags(0x0) +param "RBPBYL" +units = "", desc = "Length Scaling parameter for RBPBY", flags = ParameterFlags(0x0) +param "RBPBYW" +units = "", desc = "Width Scaling parameter for RBPBY", flags = ParameterFlags(0x0) +param "RBPBYNF" +units = "", desc = "Number of fingers Scaling parameter for RBPBY", flags = ParameterFlags(0x0) +param "RBSBX0" +units = "ohm", desc = "Scaling pre-factor for RBSBX", flags = ParameterFlags(0x0) +param "RBSBY0" +units = "ohm", desc = "Scaling pre-factor for RBSBY", flags = ParameterFlags(0x0) +param "RBDBX0" +units = "ohm", desc = "Scaling pre-factor for RBDBX", flags = ParameterFlags(0x0) +param "RBDBY0" +units = "ohm", desc = "Scaling pre-factor for RBDBY", flags = ParameterFlags(0x0) +param "RBSDBXL" +units = "", desc = "Length Scaling parameter for RBSBX and RBDBX", flags = ParameterFlags(0x0) +param "RBSDBXW" +units = "", desc = "Width Scaling parameter for RBSBX and RBDBX", flags = ParameterFlags(0x0) +param "RBSDBXNF" +units = "", desc = "Number of fingers Scaling parameter for RBSBX and RBDBX", flags = ParameterFlags(0x0) +param "RBSDBYL" +units = "", desc = "Length Scaling parameter for RBSBY and RBDBY", flags = ParameterFlags(0x0) +param "RBSDBYW" +units = "", desc = "Width Scaling parameter for RBSBY and RBDBY", flags = ParameterFlags(0x0) +param "RBSDBYNF" +units = "", desc = "Number of fingers Scaling parameter for RBSBY and RBDBY", flags = ParameterFlags(0x0) +param "EF" +units = "", desc = "Flicker Noise frequency exponent", flags = ParameterFlags(0x0) +param "EM" +units = "V/m", desc = "Saturation Field", flags = ParameterFlags(0x0) +param "NOIA" +units = "s^(1-EF)/(eV)^1/m^3", desc = "Flicker noise parameter A", flags = ParameterFlags(0x0) +param "NOIB" +units = "s^(1-EF)/(eV)^1/m", desc = "Flicker noise parameter B", flags = ParameterFlags(0x0) +param "NOIC" +units = "s^(1-EF)*m/(eV)^1", desc = "Flicker noise parameter C", flags = ParameterFlags(0x0) +param "LINTNOI" +units = "m", desc = "Length Reduction Parameter Offset", flags = ParameterFlags(0x0) +param "NTNOI" +units = "", desc = "Noise factor for short-channel devices for TNOIMOD=0 only", flags = ParameterFlags(0x0) +param "RNOIA" +units = "", desc = "TNOIMOD = 1", flags = ParameterFlags(0x0) +param "RNOIB" +units = "", desc = "TNOIMOD = 1", flags = ParameterFlags(0x0) +param "RNOIC" +units = "", desc = "TNOIMOD = 1", flags = ParameterFlags(0x0) +param "TNOIA" +units = "", desc = "TNOIMOD = 1", flags = ParameterFlags(0x0) +param "TNOIB" +units = "", desc = "TNOIMOD = 1", flags = ParameterFlags(0x0) +param "TNOIC" +units = "", desc = "Correlation coefficient", flags = ParameterFlags(0x0) +param "BINUNIT" +units = "", desc = "Unit of L and W for Binning, 1 : micro-meter, 0 : default", flags = ParameterFlags(PARA_TY_INT) +param "DLBIN" +units = "", desc = "Length reduction parameter for binning", flags = ParameterFlags(0x0) +param "DWBIN" +units = "", desc = "Width reduction parameter for binning", flags = ParameterFlags(0x0) +param "TNOM" +units = "degC", desc = "Temperature at which the model was extracted", flags = ParameterFlags(0x0) +param "TBGASUB" +units = "eV/K", desc = "Band-gap Temperature Coefficient", flags = ParameterFlags(0x0) +param "TBGBSUB" +units = "K", desc = "Band-gap Temperature Coefficient", flags = ParameterFlags(0x0) +param "TNFACTOR" +units = "", desc = "Temperature exponent for NFACTOR", flags = ParameterFlags(0x0) +param "UTE" +units = "", desc = "Mobility temperature exponent", flags = ParameterFlags(0x0) +param "LUTE" +units = "m", desc = "Length dependence of UTE", flags = ParameterFlags(0x0) +param "WUTE" +units = "m", desc = "Width dependence of UTE", flags = ParameterFlags(0x0) +param "PUTE" +units = "m^2", desc = "Area dependence of UTE", flags = ParameterFlags(0x0) +param "UTEL" +units = "m", desc = "Length Scaling parameter for UTE", flags = ParameterFlags(0x0) +param "UA1" +units = "m/V", desc = "Temperature coefficient for UA", flags = ParameterFlags(0x0) +param "LUA1" +units = "m^2/V", desc = "Length dependence of UA1", flags = ParameterFlags(0x0) +param "WUA1" +units = "m^2/V", desc = "Width dependence of UA1", flags = ParameterFlags(0x0) +param "PUA1" +units = "m^3/V", desc = "Area dependence of UA1", flags = ParameterFlags(0x0) +param "UA1L" +units = "m", desc = "Length Scaling parameter for UA1", flags = ParameterFlags(0x0) +param "UC1" +units = "1/K", desc = "Temperature coefficient for UC", flags = ParameterFlags(0x0) +param "LUC1" +units = "m/K", desc = "Length dependence of UC1", flags = ParameterFlags(0x0) +param "WUC1" +units = "m/K", desc = "Width dependence of UC1", flags = ParameterFlags(0x0) +param "PUC1" +units = "m^2/K", desc = "Area dependence of UC1", flags = ParameterFlags(0x0) +param "UD1" +units = "1/m^2", desc = "Temperature coefficient for UD", flags = ParameterFlags(0x0) +param "LUD1" +units = "1/m", desc = "Length dependence of UD1", flags = ParameterFlags(0x0) +param "WUD1" +units = "1/m", desc = "Width dependence of UD1", flags = ParameterFlags(0x0) +param "PUD1" +units = "", desc = "Area dependence of UD1", flags = ParameterFlags(0x0) +param "UD1L" +units = "m", desc = "Length Scaling parameter for UD1", flags = ParameterFlags(0x0) +param "UCSTE" +units = "", desc = "Temperature coefficient for UCS", flags = ParameterFlags(0x0) +param "LUCSTE" +units = "m", desc = "Length dependence of UCSTE", flags = ParameterFlags(0x0) +param "WUCSTE" +units = "m", desc = "Width dependence of UCSTE", flags = ParameterFlags(0x0) +param "PUCSTE" +units = "m^2", desc = "Area dependence of UCSTE", flags = ParameterFlags(0x0) +param "TETA0" +units = "", desc = "Temperature coefficient for ETA0", flags = ParameterFlags(0x0) +param "PRT" +units = "", desc = "Temperature coefficient for resistance", flags = ParameterFlags(0x0) +param "LPRT" +units = "m", desc = "Length dependence of PRT", flags = ParameterFlags(0x0) +param "WPRT" +units = "m", desc = "Width dependence of PRT", flags = ParameterFlags(0x0) +param "PPRT" +units = "m^2", desc = "Area dependence of PRT", flags = ParameterFlags(0x0) +param "AT" +units = "m/s", desc = "Temperature coefficient for saturation velocity", flags = ParameterFlags(0x0) +param "LAT" +units = "m^2/s", desc = "Length dependence of AT", flags = ParameterFlags(0x0) +param "WAT" +units = "m^2/s", desc = "Width dependence of AT", flags = ParameterFlags(0x0) +param "PAT" +units = "m^3/s", desc = "Area dependence of AT", flags = ParameterFlags(0x0) +param "ATL" +units = "m", desc = "Length Scaling parameter for AT", flags = ParameterFlags(0x0) +param "TDELTA" +units = "1/K", desc = "Temperature coefficient for DELTA", flags = ParameterFlags(0x0) +param "PTWGT" +units = "1/K", desc = "Temperature coefficient for PTWG", flags = ParameterFlags(0x0) +param "LPTWGT" +units = "m/K", desc = "Length dependence of PTWGT", flags = ParameterFlags(0x0) +param "WPTWGT" +units = "m/K", desc = "Width dependence of PTWGT", flags = ParameterFlags(0x0) +param "PPTWGT" +units = "m^2/K", desc = "Area dependence of PTWGT", flags = ParameterFlags(0x0) +param "PTWGTL" +units = "m", desc = "Length Scaling parameter for PTWGT", flags = ParameterFlags(0x0) +param "KT1" +units = "V", desc = "Temperature coefficient for Vth", flags = ParameterFlags(0x0) +param "KT1EXP" +units = "", desc = "Temperature coefficient for Vth", flags = ParameterFlags(0x0) +param "KT1L" +units = "V*m", desc = "Temperature coefficient for Vth", flags = ParameterFlags(0x0) +param "LKT1" +units = "V*m", desc = "Length dependence of KT1", flags = ParameterFlags(0x0) +param "WKT1" +units = "V*m", desc = "Width dependence of KT1", flags = ParameterFlags(0x0) +param "PKT1" +units = "V*m^2", desc = "Area dependence of KT1", flags = ParameterFlags(0x0) +param "KT2" +units = "", desc = "Temperature coefficient for Vth", flags = ParameterFlags(0x0) +param "LKT2" +units = "m", desc = "Length dependence of KT2", flags = ParameterFlags(0x0) +param "WKT2" +units = "m", desc = "Width dependence of KT2", flags = ParameterFlags(0x0) +param "PKT2" +units = "m^2", desc = "Area dependence of KT2", flags = ParameterFlags(0x0) +param "IIT" +units = "", desc = "Temperature coefficient for BETA0", flags = ParameterFlags(0x0) +param "LIIT" +units = "m", desc = "Length dependence of IIT", flags = ParameterFlags(0x0) +param "WIIT" +units = "m", desc = "Width dependence of IIT", flags = ParameterFlags(0x0) +param "PIIT" +units = "m^2", desc = "Area dependence of IIT", flags = ParameterFlags(0x0) +param "IGT" +units = "", desc = "Gate Current Temperature Dependence", flags = ParameterFlags(0x0) +param "LIGT" +units = "m", desc = "Length dependence of IGT", flags = ParameterFlags(0x0) +param "WIGT" +units = "m", desc = "Width dependence of IGT", flags = ParameterFlags(0x0) +param "PIGT" +units = "m^2", desc = "Area dependence of IGT", flags = ParameterFlags(0x0) +param "TGIDL" +units = "1/K", desc = "Temperature coefficient for GIDL/GISL", flags = ParameterFlags(0x0) +param "LTGIDL" +units = "m/K", desc = "Length dependence of TGIDL", flags = ParameterFlags(0x0) +param "WTGIDL" +units = "m/K", desc = "Width dependence of TGIDL", flags = ParameterFlags(0x0) +param "PTGIDL" +units = "m^2/K", desc = "Area dependence of TGIDL", flags = ParameterFlags(0x0) +param "TCJ" +units = "1/K", desc = "Temperature coefficient for CJS/CJD", flags = ParameterFlags(0x0) +param "TCJSW" +units = "1/K", desc = "Temperature coefficient for CJSWS/CJSWD", flags = ParameterFlags(0x0) +param "TCJSWG" +units = "1/K", desc = "Temperature coefficient for CJSWGS/CJSWGD", flags = ParameterFlags(0x0) +param "TPB" +units = "V/K", desc = "Temperature coefficient for PBS/PBD", flags = ParameterFlags(0x0) +param "TPBSW" +units = "V/K", desc = "Temperature coefficient for PBSWS/PBSWD", flags = ParameterFlags(0x0) +param "TPBSWG" +units = "V/K", desc = "Temperature coefficient for PBSWGS/PBSWGD", flags = ParameterFlags(0x0) +param "XTIS" +units = "", desc = "Source junction current temperature exponent", flags = ParameterFlags(0x0) +param "XTID" +units = "", desc = "Drain junction current temperature exponent", flags = ParameterFlags(0x0) +param "XTSS" +units = "", desc = "Power dependence of JTSS on temperature", flags = ParameterFlags(0x0) +param "XTSD" +units = "", desc = "Power dependence of JTSD on temperature", flags = ParameterFlags(0x0) +param "XTSSWS" +units = "", desc = "Power dependence of JTSSWS on temperature", flags = ParameterFlags(0x0) +param "XTSSWD" +units = "", desc = "Power dependence of JTSSWD on temperature", flags = ParameterFlags(0x0) +param "XTSSWGS" +units = "", desc = "Power dependence of JTSSWGS on temperature", flags = ParameterFlags(0x0) +param "XTSSWGD" +units = "", desc = "Power dependence of JTSSWGD on temperature", flags = ParameterFlags(0x0) +param "TNJTS" +units = "", desc = "Temperature coefficient for NJTS", flags = ParameterFlags(0x0) +param "TNJTSD" +units = "", desc = "Temperature coefficient for NJTSD", flags = ParameterFlags(0x0) +param "TNJTSSW" +units = "", desc = "Temperature coefficient for NJTSSW", flags = ParameterFlags(0x0) +param "TNJTSSWD" +units = "", desc = "Temperature coefficient for NJTSSWD", flags = ParameterFlags(0x0) +param "TNJTSSWG" +units = "", desc = "Temperature coefficient for NJTSSWG", flags = ParameterFlags(0x0) +param "TNJTSSWGD" +units = "", desc = "Temperature coefficient for NJTSSWGD", flags = ParameterFlags(0x0) +param "RTH0" +units = "m*K/W", desc = "Thermal resistance", flags = ParameterFlags(0x0) +param "CTH0" +units = "s*W/(m*K)", desc = "Thermal capacitance", flags = ParameterFlags(0x0) +param "WTH0" +units = "m", desc = "Width dependence coefficient for Rth and Cth", flags = ParameterFlags(0x0) +param "SAREF" +units = "m", desc = "Reference distance between OD edge from Poly from one side", flags = ParameterFlags(0x0) +param "SBREF" +units = "m", desc = "Reference distance between OD edge from Poly from other side", flags = ParameterFlags(0x0) +param "WLOD" +units = "m", desc = "Width Parameter for Stress Effect", flags = ParameterFlags(0x0) +param "KU0" +units = "m", desc = "Mobility degradation/enhancement Parameter for Stress Effect", flags = ParameterFlags(0x0) +param "KVSAT" +units = "m", desc = "Saturation Velocity degradation/enhancement Parameter for Stress Effect", flags = ParameterFlags(0x0) +param "TKU0" +units = "", desc = "Temperature Coefficient for KU0", flags = ParameterFlags(0x0) +param "LKU0" +units = "m^LLODKU0", desc = "Length Dependence of KU0", flags = ParameterFlags(0x0) +param "WKU0" +units = "m^WLODKU0", desc = "Width Dependence of KU0", flags = ParameterFlags(0x0) +param "PKU0" +units = "m^(LLODKU0+WLODKU0)", desc = "Cross Term Dependence of KU0", flags = ParameterFlags(0x0) +param "LLODKU0" +units = "", desc = "Length Parameter for U0 stress effect", flags = ParameterFlags(0x0) +param "WLODKU0" +units = "", desc = "Width Parameter for U0 stress effect", flags = ParameterFlags(0x0) +param "KVTH0" +units = "V*m", desc = "Threshold Shift parameter for stress effect", flags = ParameterFlags(0x0) +param "LKVTH0" +units = "m^LLODKU0", desc = "Length dependence of KVTH0", flags = ParameterFlags(0x0) +param "WKVTH0" +units = "m^WLODKU0", desc = "Width dependence of KVTH0", flags = ParameterFlags(0x0) +param "PKVTH0" +units = "m^(LLODKU0+WLODKU0)", desc = "Cross-term dependence of KVTH0", flags = ParameterFlags(0x0) +param "LLODVTH" +units = "", desc = "Length Parameter for Vth stress effect", flags = ParameterFlags(0x0) +param "WLODVTH" +units = "", desc = "Width Parameter for Vth stress effect", flags = ParameterFlags(0x0) +param "STK2" +units = "m", desc = "K2 shift factor related to Vth change", flags = ParameterFlags(0x0) +param "LODK2" +units = "", desc = "K2 shift modification factor for stress effect", flags = ParameterFlags(0x0) +param "STETA0" +units = "m", desc = "ETA0 shift related to Vth0 change", flags = ParameterFlags(0x0) +param "LODETA0" +units = "", desc = "ETA0 modification factor for stress effect", flags = ParameterFlags(0x0) +param "WEB" +units = "", desc = "Coefficient for SCB (>0.0)", flags = ParameterFlags(0x0) +param "WEC" +units = "", desc = "Coefficient for SCC (>0.0)", flags = ParameterFlags(0x0) +param "KVTH0WE" +units = "", desc = "Threshold shift factor for well proximity effect", flags = ParameterFlags(0x0) +param "LKVTH0WE" +units = "m", desc = "Length dependence of KVTH0WE", flags = ParameterFlags(0x0) +param "WKVTH0WE" +units = "m", desc = "Width dependence of KVTH0WE", flags = ParameterFlags(0x0) +param "PKVTH0WE" +units = "m^2", desc = "Area dependence of KVTH0WE", flags = ParameterFlags(0x0) +param "K2WE" +units = "", desc = "K2 shift factor for well proximity effect", flags = ParameterFlags(0x0) +param "LK2WE" +units = "m", desc = "Length dependence of K2WE", flags = ParameterFlags(0x0) +param "WK2WE" +units = "m", desc = "Width dependence of K2WE", flags = ParameterFlags(0x0) +param "PK2WE" +units = "m^2", desc = "Area dependence of K2WE", flags = ParameterFlags(0x0) +param "KU0WE" +units = "", desc = "Mobility degradation factor for well proximity effect", flags = ParameterFlags(0x0) +param "LKU0WE" +units = "m", desc = "Length dependence of KU0WE", flags = ParameterFlags(0x0) +param "WKU0WE" +units = "m", desc = "Width dependence of KU0WE", flags = ParameterFlags(0x0) +param "PKU0WE" +units = "m^2", desc = "Area dependence of KU0WE", flags = ParameterFlags(0x0) +param "SCREF" +units = "m", desc = "Reference distance to calculate SCA,SCB and SCC (<0)", flags = ParameterFlags(0x0) +param "SSL0" +units = "A/m", desc = "Temperature- and doping-independent parameter for sub-surface leakage drain current", flags = ParameterFlags(0x0) +param "SSL1" +units = "1/m", desc = "Temperature- and doping-independent parameter for gate length for sub-surface leakage drain current", flags = ParameterFlags(0x0) +param "SSL2" +units = "", desc = "Fitting parameter for sub-surface leakage drain current: barrier height", flags = ParameterFlags(0x0) +param "SSL3" +units = "V", desc = "Fitting parameter for sub-surface leakage drain current: gate voltage effect", flags = ParameterFlags(0x0) +param "SSL4" +units = "1/V", desc = "Fitting parameter for sub-surface leakage drain current: gate voltage effect", flags = ParameterFlags(0x0) +param "SSLEXP1" +units = "", desc = "Fitting exponent for ssl doping effect", flags = ParameterFlags(0x0) +param "SSLEXP2" +units = "", desc = "Fitting exponent for ssl temperature", flags = ParameterFlags(0x0) +param "AVDSX" +units = "", desc = "Smoothing parameter in Vdsx in Vbsx", flags = ParameterFlags(0x0) +param "WEDGE" +units = "m", desc = "Edge FET Width", flags = ParameterFlags(0x0) +param "DGAMMAEDGE" +units = "", desc = "Different in body-bias coefficient between Edge-FET and Main-FET", flags = ParameterFlags(0x0) +param "DGAMMAEDGEL" +units = "", desc = "L dependence parameter for DGAMMA", flags = ParameterFlags(0x0) +param "DGAMMAEDGELEXP" +units = "", desc = "Exponent of L dependence parameter for DGAMMA", flags = ParameterFlags(0x0) +param "DVTEDGE" +units = "", desc = "Vth shift for Edge FET", flags = ParameterFlags(0x0) +param "NFACTOREDGE" +units = "", desc = "NFACTOR for Edge FET", flags = ParameterFlags(0x0) +param "LNFACTOREDGE" +units = "m", desc = "Length dependence of NFACTOREDGE", flags = ParameterFlags(0x0) +param "WNFACTOREDGE" +units = "m", desc = "Width dependence of NFACTOREDGE", flags = ParameterFlags(0x0) +param "PNFACTOREDGE" +units = "m^2", desc = "Area dependence of NFACTOREDGE", flags = ParameterFlags(0x0) +param "CITEDGE" +units = "F/m^2", desc = "CIT for Edge FET", flags = ParameterFlags(0x0) +param "LCITEDGE" +units = "F/m", desc = "Length dependence of CITEDGE", flags = ParameterFlags(0x0) +param "WCITEDGE" +units = "F/m", desc = "Width dependence of CITEDGE", flags = ParameterFlags(0x0) +param "PCITEDGE" +units = "F", desc = "Area dependence of CITEDGE", flags = ParameterFlags(0x0) +param "CDSCDEDGE" +units = "F/m^2/V", desc = "CDSCD for edge FET", flags = ParameterFlags(0x0) +param "LCDSCDEDGE" +units = "F/m/V", desc = "Length dependence of CDSCDEDGE", flags = ParameterFlags(0x0) +param "WCDSCDEDGE" +units = "F/m/V", desc = "Width dependence of CDSCDEDGE", flags = ParameterFlags(0x0) +param "PCDSCDEDGE" +units = "F/V", desc = "Area dependence of CDSCDEDGE", flags = ParameterFlags(0x0) +param "CDSCBEDGE" +units = "F/m^2/V", desc = "CDSCB for edge FET", flags = ParameterFlags(0x0) +param "LCDSCBEDGE" +units = "F/m/V", desc = "Length dependence of CDSCBEDGE", flags = ParameterFlags(0x0) +param "WCDSCBEDGE" +units = "F/m/V", desc = "Width dependence of CDSCBEDGE", flags = ParameterFlags(0x0) +param "PCDSCBEDGE" +units = "F/V", desc = "Area dependence of CDSCBEDGE", flags = ParameterFlags(0x0) +param "ETA0EDGE" +units = "", desc = "DIBL parameter for edge FET", flags = ParameterFlags(0x0) +param "LETA0EDGE" +units = "m", desc = "Length dependence of ETA0EDGE", flags = ParameterFlags(0x0) +param "WETA0EDGE" +units = "m", desc = "Width dependence of ETA0EDGE", flags = ParameterFlags(0x0) +param "PETA0EDGE" +units = "m^2", desc = "Area dependence of ETA0EDGE", flags = ParameterFlags(0x0) +param "ETABEDGE" +units = "1/V", desc = "ETAB for edge FET", flags = ParameterFlags(0x0) +param "LETABEDGE" +units = "m/V", desc = "Length dependence of ETABEDGE", flags = ParameterFlags(0x0) +param "WETABEDGE" +units = "m/V", desc = "Width dependence of ETABEDGE", flags = ParameterFlags(0x0) +param "PETABEDGE" +units = "m^2/V", desc = "Area dependence of ETABEDGE", flags = ParameterFlags(0x0) +param "KT1EDGE" +units = "V", desc = "Temperature dependence parameter of threshold voltage for edge FET", flags = ParameterFlags(0x0) +param "LKT1EDGE" +units = "V*m", desc = "Length dependence of KT1EDGE", flags = ParameterFlags(0x0) +param "WKT1EDGE" +units = "V*m", desc = "Width dependence of KT1EDGE", flags = ParameterFlags(0x0) +param "PKT1EDGE" +units = "V*m^2", desc = "Area dependence of KT1EDGE", flags = ParameterFlags(0x0) +param "KT1LEDGE" +units = "V*m", desc = "Temperature dependence parameter of threshold voltage for edge FET", flags = ParameterFlags(0x0) +param "LKT1LEDGE" +units = "V*m^2", desc = "Length dependence of KT1LEDGE", flags = ParameterFlags(0x0) +param "WKT1LEDGE" +units = "V*m^2", desc = "Width dependence of KT1LEDGE", flags = ParameterFlags(0x0) +param "PKT1LEDGE" +units = "V*m^3", desc = "Area dependence of KT1LEDGE", flags = ParameterFlags(0x0) +param "KT2EDGE" +units = "", desc = "Temperature dependence parameter of threshold voltage for edge FET", flags = ParameterFlags(0x0) +param "LKT2EDGE" +units = "m", desc = "Length dependence of KT2EDGE", flags = ParameterFlags(0x0) +param "WKT2EDGE" +units = "m", desc = "Width dependence of KT2EDGE", flags = ParameterFlags(0x0) +param "PKT2EDGE" +units = "m^2", desc = "Area dependence of KT2EDGE", flags = ParameterFlags(0x0) +param "KT1EXPEDGE" +units = "", desc = "Temperature dependence parameter of threshold voltage for edge device", flags = ParameterFlags(0x0) +param "LKT1EXPEDGE" +units = "m", desc = "Length dependence of KT1EXPEDGE", flags = ParameterFlags(0x0) +param "WKT1EXPEDGE" +units = "m", desc = "Width dependence of KT1EXPEDGE", flags = ParameterFlags(0x0) +param "PKT1EXPEDGE" +units = "m^2", desc = "Area dependence of KT1EXPEDGE", flags = ParameterFlags(0x0) +param "TNFACTOREDGE" +units = "", desc = "Temperature dependence parameter of sub-threshold slope factor for edge", flags = ParameterFlags(0x0) +param "LTNFACTOREDGE" +units = "m", desc = "Length dependence of TNFACTOREDGE", flags = ParameterFlags(0x0) +param "WTNFACTOREDGE" +units = "m", desc = "Width dependence of TNFACTOREDGE", flags = ParameterFlags(0x0) +param "PTNFACTOREDGE" +units = "m^2", desc = "Area dependence of TNFACTOREDGE", flags = ParameterFlags(0x0) +param "TETA0EDGE" +units = "", desc = "Temperature dependence parameter of DIBL parameter for edge FET", flags = ParameterFlags(0x0) +param "LTETA0EDGE" +units = "m", desc = "Length dependence of TETA0EDGE", flags = ParameterFlags(0x0) +param "WTETA0EDGE" +units = "m", desc = "Width dependence of TETA0EDGE", flags = ParameterFlags(0x0) +param "PTETA0EDGE" +units = "m^2", desc = "Area dependence of TETA0EDGE", flags = ParameterFlags(0x0) +param "DVT0EDGE" +units = "", desc = "First coefficient of SCE effect on Vth for Edge FET", flags = ParameterFlags(0x0) +param "DVT1EDGE" +units = "", desc = "Second coefficient of SCE effect on Vth for Edge FET", flags = ParameterFlags(0x0) +param "DVT2EDGE" +units = "1/V", desc = "Body-bias coefficient for SCE effect for Edge FET", flags = ParameterFlags(0x0) +param "K2EDGE" +units = "V", desc = "Vth shift due to Vertical Non-uniform doping", flags = ParameterFlags(0x0) +param "LK2EDGE" +units = "m", desc = "Length dependence of K2EDGE", flags = ParameterFlags(0x0) +param "WK2EDGE" +units = "m", desc = "Width dependence of K2EDGE", flags = ParameterFlags(0x0) +param "PK2EDGE" +units = "m^2", desc = "Area dependence of K2EDGE", flags = ParameterFlags(0x0) +param "KVTH0EDGE" +units = "V*m", desc = "Threshold Shift parameter for stress effect", flags = ParameterFlags(0x0) +param "LKVTH0EDGE" +units = "m^LLODKU0", desc = "Length dependence of KVTH0EDGE", flags = ParameterFlags(0x0) +param "WKVTH0EDGE" +units = "m^WLODKU0", desc = "Width dependence of KVTH0EDGE", flags = ParameterFlags(0x0) +param "PKVTH0EDGE" +units = "m^(LLODKU0+WLODKU0)", desc = "Area dependence of KVTH0EDGE", flags = ParameterFlags(0x0) +param "STK2EDGE" +units = "m", desc = "K2 shift factor related to Vth change", flags = ParameterFlags(0x0) +param "LSTK2EDGE" +units = "m^2", desc = "Length dependence of STK2EDGE", flags = ParameterFlags(0x0) +param "WSTK2EDGE" +units = "m^2", desc = "Width dependence of STK2EDGE", flags = ParameterFlags(0x0) +param "PSTK2EDGE" +units = "m^3", desc = "Area dependence of STK2EDGE", flags = ParameterFlags(0x0) +param "STETA0EDGE" +units = "m", desc = "ETA0 shift related to Vth0 change", flags = ParameterFlags(0x0) +param "LSTETA0EDGE" +units = "m^2", desc = "Length dependence of STETA0EDGE", flags = ParameterFlags(0x0) +param "WSTETA0EDGE" +units = "m^2", desc = "Width dependence of STETA0EDGE", flags = ParameterFlags(0x0) +param "PSTETA0EDGE" +units = "m^3", desc = "Area dependence of STETA0EDGE", flags = ParameterFlags(0x0) +param "IGCLAMP" +units = "", desc = "Model flag", flags = ParameterFlags(PARA_TY_INT) +param "LP" +units = "m", desc = "Length scaling parameter for thermal noise", flags = ParameterFlags(0x0) +param "RNOIK" +units = "", desc = "Exponential coefficient for enhanced correlated thermal noise", flags = ParameterFlags(0x0) +param "TNOIK" +units = "1/m", desc = "Empirical parameter for Leff trend of Sid at low Ids", flags = ParameterFlags(0x0) +param "TNOIK2" +units = "1/m", desc = "Empirical parameter for sensitivity of RNOIK", flags = ParameterFlags(0x0) +param "K0" +units = "", desc = "Non-saturation effect parameter for strong inversion region", flags = ParameterFlags(0x0) +param "LK0" +units = "m", desc = "Length dependence of ", flags = ParameterFlags(0x0) +param "WK0" +units = "m", desc = "Width dependence of ", flags = ParameterFlags(0x0) +param "PK0" +units = "m^2", desc = "Area dependence of ", flags = ParameterFlags(0x0) +param "K01" +units = "1/K", desc = "Temperature coefficient for K0", flags = ParameterFlags(0x0) +param "LK01" +units = "m/K", desc = "Length dependence of K0", flags = ParameterFlags(0x0) +param "WK01" +units = "m/K", desc = "Width dependence of K0", flags = ParameterFlags(0x0) +param "PK01" +units = "m^2/K", desc = "Area dependence of K0", flags = ParameterFlags(0x0) +param "M0" +units = "", desc = "offset of non-saturation effect parameter for strong inversion region", flags = ParameterFlags(0x0) +param "LM0" +units = "m", desc = "Length dependence of ", flags = ParameterFlags(0x0) +param "WM0" +units = "m", desc = "Width dependence of ", flags = ParameterFlags(0x0) +param "PM0" +units = "m^2", desc = "Area dependence of ", flags = ParameterFlags(0x0) +param "M01" +units = "1/K", desc = "Temperature coefficient for M0", flags = ParameterFlags(0x0) +param "LM01" +units = "m/K", desc = "Length dependence of M0", flags = ParameterFlags(0x0) +param "WM01" +units = "m/K", desc = "Width dependence of M0", flags = ParameterFlags(0x0) +param "PM01" +units = "m^2/K", desc = "Area dependence of M0", flags = ParameterFlags(0x0) +param "FNOIMOD" +units = "", desc = "Flicker noise model selector", flags = ParameterFlags(PARA_TY_INT) +param "LH" +units = "m", desc = "Length of Halo transistor", flags = ParameterFlags(0x0) +param "NOIA2" +units = "s^(1-EF)/(eV)^1/m^3", desc = "Flicker noise parameter A for Halo", flags = ParameterFlags(0x0) +param "HNDEP" +units = "1/m^3", desc = "Halo Doping Concentration for IV", flags = ParameterFlags(0x0) + +5 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "t" units = "K", runits = "W" +node "di" units = "V", runits = "A" +node "si" units = "V", runits = "A" +node "gi" units = "V", runits = "A" +node "gm" units = "V", runits = "A" +node "bi" units = "V", runits = "A" +node "sbulk" units = "V", runits = "A" +node "dbulk" units = "V", runits = "A" +node "N1" units = "V", runits = "A" +node "N2" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (di, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (di, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (di, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (si, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (si, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (si, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gi, N1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (gm, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gm, gm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gm, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bi, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, gm) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (bi, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bi, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, si) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sbulk, sbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, di) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (dbulk, bi) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (dbulk, dbulk) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (N1, t) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, di) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, si) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, gi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, bi) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, N1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (N1, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (N2, N2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (t, gnd) +collapsible (N1, gnd) +collapsible (d, di) +collapsible (s, si) +collapsible (g, gm) +collapsible (gm, gi) +collapsible (b, sbulk) +collapsible (b, bi) +collapsible (b, dbulk) +noise "1overf" (di, si) +noise "1overf" (di, si) +noise "id" (di, si) +noise "id" (di, si) +noise "corl" (N2, gnd) +noise "corl" (N1, gnd) +noise "igs" (gi, si) +noise "igd" (gi, di) +noise "igb" (gi, bi) +noise "rd" (d, di) +noise "rs" (s, si) +noise "rg" (g, gm) +noise "rbps" (bi, sbulk) +noise "rbsb" (b, sbulk) +noise "rbpb" (b, bi) +noise "rbdb" (b, dbulk) +noise "rbpd" (bi, dbulk) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_capacitor.snap b/openvaf/test_data/osdi/vacask_capacitor.snap new file mode 100644 index 000000000..1123bf115 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_capacitor.snap @@ -0,0 +1,14 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "c" +units = "F", desc = "Capacitance", flags = ParameterFlags(PARA_KIND_INST) + +2 terminals +node "A" units = "V", runits = "A" +node "B" units = "V", runits = "A" +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (A, B) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (B, A) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_diode.snap b/openvaf/test_data/osdi/vacask_diode.snap new file mode 100644 index 000000000..6ab887478 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_diode.snap @@ -0,0 +1,45 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Device area factor", flags = ParameterFlags(PARA_KIND_INST) +param "Is" +units = "A", desc = "Saturation current", flags = ParameterFlags(0x0) +param "N" +units = "", desc = "Emission coefficient", flags = ParameterFlags(0x0) +param "Rs" +units = "Ohm", desc = "Ohmic resistance", flags = ParameterFlags(0x0) +param "BV" +units = "V", desc = "Reverse breakdown voltage", flags = ParameterFlags(0x0) +param "IBV" +units = "A", desc = "Reverse breakdown current", flags = ParameterFlags(0x0) +param "XTI" +units = "", desc = "Saturation current temperature exponent", flags = ParameterFlags(0x0) +param "EG" +units = "eV", desc = "Activation energy", flags = ParameterFlags(0x0) +param "Tnom" +units = "C", desc = "Parameter extraction temperature", flags = ParameterFlags(0x0) +param "Cjo" +units = "F", desc = "Zero-bias junction capacitance", flags = ParameterFlags(0x0) +param "Vj" +units = "V", desc = "Junction potential", flags = ParameterFlags(0x0) +param "M" +units = "", desc = "Grading coefficient", flags = ParameterFlags(0x0) +param "FC" +units = "", desc = "Forward bias junction fit parameter", flags = ParameterFlags(0x0) +param "TT" +units = "s", desc = "Transit time", flags = ParameterFlags(0x0) + +2 terminals +node "A" units = "V", runits = "A" +node "C" units = "V", runits = "A" +node "CI" units = "V", runits = "A" +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (A, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (C, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (C, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (CI, C) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (CI, CI) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +collapsible (CI, C) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_inductor.snap b/openvaf/test_data/osdi/vacask_inductor.snap new file mode 100644 index 000000000..5a21d90ff --- /dev/null +++ b/openvaf/test_data/osdi/vacask_inductor.snap @@ -0,0 +1,16 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "H", desc = "Inductance", flags = ParameterFlags(PARA_KIND_INST) + +2 terminals +node "A" units = "V", runits = "A" +node "B" units = "V", runits = "A" +node(flow) "flow(br)" units = "A", runits = "V" +jacobian (A, flow(br)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, flow(br)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br), A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br), B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br), flow(br)) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_opamp.snap b/openvaf/test_data/osdi/vacask_opamp.snap new file mode 100644 index 000000000..f3449e4f1 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_opamp.snap @@ -0,0 +1,30 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "rin" +units = "Ohm", desc = "Input resistance", flags = ParameterFlags(PARA_KIND_INST) +param "rout" +units = "Ohm", desc = "Output resistance", flags = ParameterFlags(PARA_KIND_INST) +param "gain" +units = "", desc = "Gain", flags = ParameterFlags(PARA_KIND_INST) +param "cmgain" +units = "", desc = "Common mode gain", flags = ParameterFlags(PARA_KIND_INST) +param "va" +units = "V", desc = "Positive saturation", flags = ParameterFlags(PARA_KIND_INST) +param "vb" +units = "V", desc = "Negative saturation", flags = ParameterFlags(PARA_KIND_INST) +param "voffs" +units = "V", desc = "Input offset", flags = ParameterFlags(PARA_KIND_INST) + +3 terminals +node "p" units = "V", runits = "A" +node "n" units = "V", runits = "A" +node "out" units = "V", runits = "A" +jacobian (p, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (n, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (n, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (out, p) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (out, n) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (out, out) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_resistor.snap b/openvaf/test_data/osdi/vacask_resistor.snap new file mode 100644 index 000000000..b18ef9352 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_resistor.snap @@ -0,0 +1,17 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "r" +units = "Ohm", desc = "Resistance", flags = ParameterFlags(PARA_KIND_INST) +param "has_noise" +units = "", desc = "Noise switch", flags = ParameterFlags(PARA_TY_INT) + +2 terminals +node "A" units = "V", runits = "A" +node "B" units = "V", runits = "A" +jacobian (A, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (A, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, A) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (B, B) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +noise "thermal" (A, B) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_bjt.snap b/openvaf/test_data/osdi/vacask_spice_bjt.snap new file mode 100644 index 000000000..891ddd3c8 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_bjt.snap @@ -0,0 +1,343 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "(Emitter) Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "areab" +units = "", desc = "Base area factor", flags = ParameterFlags(PARA_KIND_INST) +param "areac" +units = "", desc = "Collector area factor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "instance temperature delta from circuit", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "subs" +units = "", desc = "vertical (1) or lateral (-1)", flags = ParameterFlags(PARA_TY_INT) +param "tnom", "tref" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Saturation Current", flags = ParameterFlags(0x0) +param "ibe" +units = "", desc = "Base-Emitter saturation Current", flags = ParameterFlags(0x0) +param "ibc" +units = "", desc = "Base-Collector saturation Current", flags = ParameterFlags(0x0) +param "bf" +units = "", desc = "Ideal forward beta", flags = ParameterFlags(0x0) +param "nf" +units = "", desc = "Forward emission coefficient", flags = ParameterFlags(0x0) +param "vaf", "va" +units = "", desc = "Forward Early voltage", flags = ParameterFlags(0x0) +param "ikf", "ik" +units = "", desc = "Forward beta roll-off corner current", flags = ParameterFlags(0x0) +param "ise", "c2" +units = "", desc = "B-E leakage saturation current", flags = ParameterFlags(0x0) +param "ne" +units = "", desc = "B-E leakage emission coefficient", flags = ParameterFlags(0x0) +param "br" +units = "", desc = "Ideal reverse beta", flags = ParameterFlags(0x0) +param "nr" +units = "", desc = "Reverse emission coefficient", flags = ParameterFlags(0x0) +param "var", "vb" +units = "", desc = "Reverse Early voltage", flags = ParameterFlags(0x0) +param "ikr" +units = "", desc = "reverse beta roll-off corner current", flags = ParameterFlags(0x0) +param "isc", "c4" +units = "", desc = "B-C leakage saturation current", flags = ParameterFlags(0x0) +param "nc" +units = "", desc = "B-C leakage emission coefficient", flags = ParameterFlags(0x0) +param "rb" +units = "", desc = "Zero bias base resistance", flags = ParameterFlags(0x0) +param "irb" +units = "", desc = "Current for base resistance=(rb+rbm)/2", flags = ParameterFlags(0x0) +param "rbm" +units = "", desc = "Minimum base resistance", flags = ParameterFlags(0x0) +param "re" +units = "", desc = "Emitter resistance", flags = ParameterFlags(0x0) +param "rc" +units = "", desc = "Collector resistance", flags = ParameterFlags(0x0) +param "cje" +units = "", desc = "Zero bias B-E depletion capacitance", flags = ParameterFlags(0x0) +param "vje", "pe" +units = "", desc = "B-E built in potential", flags = ParameterFlags(0x0) +param "mje", "me" +units = "", desc = "B-E junction grading coefficient", flags = ParameterFlags(0x0) +param "tf" +units = "", desc = "Ideal forward transit time", flags = ParameterFlags(0x0) +param "xtf" +units = "", desc = "Coefficient for bias dependence of TF", flags = ParameterFlags(0x0) +param "vtf" +units = "", desc = "Voltage giving VBC dependence of TF", flags = ParameterFlags(0x0) +param "itf" +units = "", desc = "High current dependence of TF", flags = ParameterFlags(0x0) +param "ptf" +units = "", desc = "Excess phase", flags = ParameterFlags(0x0) +param "cjc" +units = "", desc = "Zero bias B-C depletion capacitance", flags = ParameterFlags(0x0) +param "vjc", "pc" +units = "", desc = "B-C built in potential", flags = ParameterFlags(0x0) +param "mjc", "mc" +units = "", desc = "B-C junction grading coefficient", flags = ParameterFlags(0x0) +param "xcjc" +units = "", desc = "Fraction of B-C cap to internal base", flags = ParameterFlags(0x0) +param "tr" +units = "", desc = "Ideal reverse transit time", flags = ParameterFlags(0x0) +param "cjs", "csub", "ccs" +units = "", desc = "Zero bias Substrate capacitance", flags = ParameterFlags(0x0) +param "vjs", "ps" +units = "", desc = "Substrate junction built in potential", flags = ParameterFlags(0x0) +param "mjs", "ms" +units = "", desc = "Substrate junction grading coefficient", flags = ParameterFlags(0x0) +param "xtb" +units = "", desc = "Forward and reverse beta temp. exp.", flags = ParameterFlags(0x0) +param "eg" +units = "", desc = "Energy gap for IS temp. dependency", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Temp. exponent for IS", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parameter", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker Noise Coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker Noise Exponent", flags = ParameterFlags(0x0) +param "iss" +units = "", desc = "Substrate Jct. Saturation Current", flags = ParameterFlags(0x0) +param "ns" +units = "", desc = "Substrate current emission coefficient", flags = ParameterFlags(0x0) +param "rco" +units = "", desc = "Intrinsic coll. resistance", flags = ParameterFlags(0x0) +param "vo" +units = "", desc = "Epi drift saturation voltage", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Epi doping parameter", flags = ParameterFlags(0x0) +param "qco" +units = "", desc = "Epi Charge parameter", flags = ParameterFlags(0x0) +param "tlev" +units = "", desc = "Temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "tlevc" +units = "", desc = "Temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "tbf1" +units = "", desc = "BF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tbf2" +units = "", desc = "BF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tbr1" +units = "", desc = "BR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tbr2" +units = "", desc = "BR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tikf1" +units = "", desc = "IKF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tikf2" +units = "", desc = "IKF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tikr1" +units = "", desc = "IKR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tikr2" +units = "", desc = "IKR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tirb1" +units = "", desc = "IRB 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tirb2" +units = "", desc = "IRB 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tnc1" +units = "", desc = "NC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tnc2" +units = "", desc = "NC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tne1" +units = "", desc = "NE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tne2" +units = "", desc = "NE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tnf1" +units = "", desc = "NF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tnf2" +units = "", desc = "NF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tnr1" +units = "", desc = "NR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tnr2" +units = "", desc = "NR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "trb1", "trb" +units = "", desc = "RB 1. temperature coefficient", flags = ParameterFlags(0x0) +param "trb2" +units = "", desc = "RB 2. temperature coefficient", flags = ParameterFlags(0x0) +param "trc1", "trc" +units = "", desc = "RC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "trc2" +units = "", desc = "RC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tre1", "tre" +units = "", desc = "RE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tre2" +units = "", desc = "RE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "trm1" +units = "", desc = "RBM 1. temperature coefficient", flags = ParameterFlags(0x0) +param "trm2" +units = "", desc = "RBM 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tvaf1" +units = "", desc = "VAF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tvaf2" +units = "", desc = "VAF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tvar1" +units = "", desc = "VAR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tvar2" +units = "", desc = "VAR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "ctc" +units = "", desc = "CJC temperature coefficient", flags = ParameterFlags(0x0) +param "cte" +units = "", desc = "CJE temperature coefficient", flags = ParameterFlags(0x0) +param "cts" +units = "", desc = "CJS temperature coefficient", flags = ParameterFlags(0x0) +param "tvjc" +units = "", desc = "VJC temperature coefficient", flags = ParameterFlags(0x0) +param "tvje" +units = "", desc = "VJE temperature coefficient", flags = ParameterFlags(0x0) +param "tvjs" +units = "", desc = "VJS temperature coefficient", flags = ParameterFlags(0x0) +param "titf1" +units = "", desc = "ITF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "titf2" +units = "", desc = "ITF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "ttf1" +units = "", desc = "TF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "ttf2" +units = "", desc = "TF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "ttr1" +units = "", desc = "TR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "ttr2" +units = "", desc = "TR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tmje1" +units = "", desc = "MJE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tmje2" +units = "", desc = "MJE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjc1" +units = "", desc = "MJC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjc2" +units = "", desc = "MJC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjs1" +units = "", desc = "MJS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjs2" +units = "", desc = "MJS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tns1" +units = "", desc = "NS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tns2" +units = "", desc = "NS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "nkf", "nk" +units = "", desc = "NKF High current beta rolloff exponent", flags = ParameterFlags(0x0) +param "tis1" +units = "", desc = "IS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tis2" +units = "", desc = "IS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tise1" +units = "", desc = "ISE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tise2" +units = "", desc = "ISE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tisc1" +units = "", desc = "ISC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tisc2" +units = "", desc = "ISC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tiss1" +units = "", desc = "ISS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tiss2" +units = "", desc = "ISS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "quasimod" +units = "", desc = "Temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "vg" +units = "", desc = "Energy gap for QS temp. dependency", flags = ParameterFlags(0x0) +param "cn" +units = "", desc = "Temperature exponent of RCI", flags = ParameterFlags(0x0) +param "d" +units = "", desc = "Temperature exponent of VO", flags = ParameterFlags(0x0) +param "vbe_max" +units = "", desc = "maximum voltage B-E junction", flags = ParameterFlags(0x0) +param "vbc_max" +units = "", desc = "maximum voltage B-C junction", flags = ParameterFlags(0x0) +param "vce_max" +units = "", desc = "maximum voltage C-E branch", flags = ParameterFlags(0x0) +param "pd_max" +units = "", desc = "maximum device power dissipation", flags = ParameterFlags(0x0) +param "ic_max" +units = "", desc = "maximum collector current", flags = ParameterFlags(0x0) +param "ib_max" +units = "", desc = "maximum base current", flags = ParameterFlags(0x0) +param "te_max" +units = "", desc = "maximum temperature", flags = ParameterFlags(0x0) +param "rth0" +units = "", desc = "thermal resistance juntion to ambient", flags = ParameterFlags(0x0) + +4 terminals +node "c" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "sub" units = "V", runits = "A" +node "cx_int" units = "V", runits = "A" +node "c_int" units = "V", runits = "A" +node "b_int" units = "V", runits = "A" +node "e_int" units = "V", runits = "A" +node "sub_con" units = "V", runits = "A" +node "xf1" units = "V", runits = "A" +node "xf2" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, cx_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sub, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sub, sub_con) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (cx_int, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (cx_int, cx_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (cx_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (cx_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c_int, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (c_int, cx_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c_int, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c_int, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, cx_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sub_con, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sub_con, sub_con) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (xf1, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, xf1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (xf1, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, xf1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (implicit_equation_0, c_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, b_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, e_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, c_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, b_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (cx_int, c) +collapsible (c_int, cx_int) +collapsible (b_int, b) +collapsible (e_int, e) +collapsible (sub_con, b_int) +collapsible (sub_con, c_int) +collapsible (sub, gnd) +collapsible (xf1, gnd) +collapsible (xf2, gnd) +noise "rc" (cx_int, c) +noise "rb" (b_int, b) +noise "re" (e_int, e) +noise "ic" (c_int, e_int) +noise "ib" (b_int, e_int) +noise "flicker" (b_int, e_int) +3 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_bsim3v3.snap b/openvaf/test_data/osdi/vacask_spice_bsim3v3.snap new file mode 100644 index 000000000..28803826b --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_bsim3v3.snap @@ -0,0 +1,924 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Number of squares in drain", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Number of squares in source", flags = ParameterFlags(PARA_KIND_INST) +param "instance_nqsmod" +units = "", desc = "Non-quasi-static model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_acnqsmod" +units = "", desc = "AC NQS model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "geo" +units = "", desc = "ACM model drain/source connection", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "delvto" +units = "", desc = "Zero bias threshold voltage variation", flags = ParameterFlags(PARA_KIND_INST) +param "mulu0" +units = "", desc = "Low field mobility multiplier", flags = ParameterFlags(PARA_KIND_INST) +param "capmod" +units = "", desc = "Capacitance model selector", flags = ParameterFlags(PARA_TY_INT) +param "mobmod" +units = "", desc = "Mobility model selector", flags = ParameterFlags(PARA_TY_INT) +param "noimod" +units = "", desc = "Noise model selector", flags = ParameterFlags(PARA_TY_INT) +param "nqsmod" +units = "", desc = "Non-quasi-static model selector", flags = ParameterFlags(PARA_TY_INT) +param "acnqsmod" +units = "", desc = "AC NQS model selector", flags = ParameterFlags(PARA_TY_INT) +param "acm" +units = "", desc = "Area calculation method selector", flags = ParameterFlags(PARA_TY_INT) +param "calcacm" +units = "", desc = "Area calculation method ACM=12", flags = ParameterFlags(PARA_TY_INT) +param "paramchk" +units = "", desc = "Model parameter checking selector", flags = ParameterFlags(PARA_TY_INT) +param "binunit" +units = "", desc = "Bin unit selector", flags = ParameterFlags(PARA_TY_INT) +param "tox" +units = "", desc = "Gate oxide thickness in meters", flags = ParameterFlags(0x0) +param "toxm" +units = "", desc = "Gate oxide thickness used in extraction", flags = ParameterFlags(0x0) +param "cdsc" +units = "", desc = "Drain/Source and channel coupling capacitance", flags = ParameterFlags(0x0) +param "cdscb" +units = "", desc = "Body-bias dependence of cdsc", flags = ParameterFlags(0x0) +param "cdscd" +units = "", desc = "Drain-bias dependence of cdsc", flags = ParameterFlags(0x0) +param "cit" +units = "", desc = "Interface state capacitance", flags = ParameterFlags(0x0) +param "nfactor" +units = "", desc = "Subthreshold swing Coefficient", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth in meters", flags = ParameterFlags(0x0) +param "vsat" +units = "", desc = "Saturation velocity at tnom", flags = ParameterFlags(0x0) +param "at" +units = "", desc = "Temperature coefficient of vsat", flags = ParameterFlags(0x0) +param "a0" +units = "", desc = "Non-uniform depletion width effect coefficient.", flags = ParameterFlags(0x0) +param "ags" +units = "", desc = "Gate bias coefficient of Abulk.", flags = ParameterFlags(0x0) +param "a1" +units = "", desc = "Non-saturation effect coefficient", flags = ParameterFlags(0x0) +param "a2" +units = "", desc = "Non-saturation effect coefficient", flags = ParameterFlags(0x0) +param "keta" +units = "", desc = "Body-bias coefficient of non-uniform depletion width effect.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping concentration", flags = ParameterFlags(0x0) +param "nch" +units = "", desc = "Channel doping concentration", flags = ParameterFlags(0x0) +param "ngate" +units = "", desc = "Poly-gate doping concentration", flags = ParameterFlags(0x0) +param "gamma1" +units = "", desc = "Vth body coefficient", flags = ParameterFlags(0x0) +param "gamma2" +units = "", desc = "Vth body coefficient", flags = ParameterFlags(0x0) +param "vbx" +units = "", desc = "Vth transition body Voltage", flags = ParameterFlags(0x0) +param "vbm" +units = "", desc = "Maximum body voltage", flags = ParameterFlags(0x0) +param "xt" +units = "", desc = "Doping depth", flags = ParameterFlags(0x0) +param "k1" +units = "", desc = "Bulk effect coefficient 1", flags = ParameterFlags(0x0) +param "kt1" +units = "", desc = "Temperature coefficient of Vth", flags = ParameterFlags(0x0) +param "kt1l" +units = "", desc = "Temperature coefficient of Vth", flags = ParameterFlags(0x0) +param "kt2" +units = "", desc = "Body-coefficient of kt1", flags = ParameterFlags(0x0) +param "k2" +units = "", desc = "Bulk effect coefficient 2", flags = ParameterFlags(0x0) +param "k3" +units = "", desc = "Narrow width effect coefficient", flags = ParameterFlags(0x0) +param "k3b" +units = "", desc = "Body effect coefficient of k3", flags = ParameterFlags(0x0) +param "w0" +units = "", desc = "Narrow width effect parameter", flags = ParameterFlags(0x0) +param "nlx" +units = "", desc = "Lateral non-uniform doping effect", flags = ParameterFlags(0x0) +param "dvt0" +units = "", desc = "Short channel effect coeff. 0", flags = ParameterFlags(0x0) +param "dvt1" +units = "", desc = "Short channel effect coeff. 1", flags = ParameterFlags(0x0) +param "dvt2" +units = "", desc = "Short channel effect coeff. 2", flags = ParameterFlags(0x0) +param "dvt0w" +units = "", desc = "Narrow Width coeff. 0", flags = ParameterFlags(0x0) +param "dvt1w" +units = "", desc = "Narrow Width effect coeff. 1", flags = ParameterFlags(0x0) +param "dvt2w" +units = "", desc = "Narrow Width effect coeff. 2", flags = ParameterFlags(0x0) +param "drout" +units = "", desc = "DIBL coefficient of output resistance", flags = ParameterFlags(0x0) +param "dsub" +units = "", desc = "DIBL coefficient in the subthreshold region", flags = ParameterFlags(0x0) +param "vth0", "vtho" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "ua" +units = "", desc = "Linear gate dependence of mobility", flags = ParameterFlags(0x0) +param "ua1" +units = "", desc = "Temperature coefficient of ua", flags = ParameterFlags(0x0) +param "ub" +units = "", desc = "Quadratic gate dependence of mobility", flags = ParameterFlags(0x0) +param "ub1" +units = "", desc = "Temperature coefficient of ub", flags = ParameterFlags(0x0) +param "uc" +units = "", desc = "Body-bias dependence of mobility", flags = ParameterFlags(0x0) +param "uc1" +units = "", desc = "Temperature coefficient of uc", flags = ParameterFlags(0x0) +param "u0" +units = "", desc = "Low-field mobility at Tnom", flags = ParameterFlags(0x0) +param "ute" +units = "", desc = "Temperature coefficient of mobility", flags = ParameterFlags(0x0) +param "voff" +units = "", desc = "Threshold voltage offset", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap capacitance per width", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap capacitance per width", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap capacitance per length", flags = ParameterFlags(0x0) +param "xpart" +units = "", desc = "Channel charge partitioning", flags = ParameterFlags(0x0) +param "elm" +units = "", desc = "Non-quasi-static Elmore Constant Parameter", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Effective Vds parameter", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Source-drain sheet resistance", flags = ParameterFlags(0x0) +param "rdsw" +units = "", desc = "Source-drain resistance per width", flags = ParameterFlags(0x0) +param "prwg" +units = "", desc = "Gate-bias effect on parasitic resistance ", flags = ParameterFlags(0x0) +param "prwb" +units = "", desc = "Body-effect on parasitic resistance ", flags = ParameterFlags(0x0) +param "prt" +units = "", desc = "Temperature coefficient of parasitic resistance ", flags = ParameterFlags(0x0) +param "eta0" +units = "", desc = "Subthreshold region DIBL coefficient", flags = ParameterFlags(0x0) +param "etab" +units = "", desc = "Subthreshold region DIBL coefficient", flags = ParameterFlags(0x0) +param "pclm" +units = "", desc = "Channel length modulation Coefficient", flags = ParameterFlags(0x0) +param "pdiblc1" +units = "", desc = "Drain-induced barrier lowering coefficient", flags = ParameterFlags(0x0) +param "pdiblc2" +units = "", desc = "Drain-induced barrier lowering coefficient", flags = ParameterFlags(0x0) +param "pdiblcb" +units = "", desc = "Body-effect on drain-induced barrier lowering", flags = ParameterFlags(0x0) +param "pscbe1" +units = "", desc = "Substrate current body-effect coefficient", flags = ParameterFlags(0x0) +param "pscbe2" +units = "", desc = "Substrate current body-effect coefficient", flags = ParameterFlags(0x0) +param "pvag" +units = "", desc = "Gate dependence of output resistance parameter", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Source/drain junction reverse saturation current density", flags = ParameterFlags(0x0) +param "jsw" +units = "", desc = "Sidewall junction reverse saturation current density", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Source/drain junction built-in potential", flags = ParameterFlags(0x0) +param "nj" +units = "", desc = "Source/drain junction emission coefficient", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Junction current temperature exponent", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Source/drain bottom junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "pbsw" +units = "", desc = "Source/drain sidewall junction capacitance built in potential", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Source/drain sidewall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "pbswg" +units = "", desc = "Source/drain (gate side) sidewall junction capacitance built in potential", flags = ParameterFlags(0x0) +param "mjswg" +units = "", desc = "Source/drain (gate side) sidewall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Source/drain bottom junction capacitance per unit area", flags = ParameterFlags(0x0) +param "vfbcv" +units = "", desc = "Flat Band Voltage parameter for capmod=0 only", flags = ParameterFlags(0x0) +param "vfb" +units = "", desc = "Flat Band Voltage", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Source/drain sidewall junction capacitance per unit periphery", flags = ParameterFlags(0x0) +param "cjswg" +units = "", desc = "Source/drain (gate side) sidewall junction capacitance per unit width", flags = ParameterFlags(0x0) +param "tpb" +units = "", desc = "Temperature coefficient of pb", flags = ParameterFlags(0x0) +param "tcj" +units = "", desc = "Temperature coefficient of cj", flags = ParameterFlags(0x0) +param "tpbsw" +units = "", desc = "Temperature coefficient of pbsw", flags = ParameterFlags(0x0) +param "tcjsw" +units = "", desc = "Temperature coefficient of cjsw", flags = ParameterFlags(0x0) +param "tpbswg" +units = "", desc = "Temperature coefficient of pbswg", flags = ParameterFlags(0x0) +param "tcjswg" +units = "", desc = "Temperature coefficient of cjswg", flags = ParameterFlags(0x0) +param "acde" +units = "", desc = "Exponential coefficient for finite charge thickness", flags = ParameterFlags(0x0) +param "moin" +units = "", desc = "Coefficient for gate-bias dependent surface potential", flags = ParameterFlags(0x0) +param "noff" +units = "", desc = "C-V turn-on/off parameter", flags = ParameterFlags(0x0) +param "voffcv" +units = "", desc = "C-V lateral-shift parameter", flags = ParameterFlags(0x0) +param "lintnoi" +units = "", desc = "lint offset for noise calculation", flags = ParameterFlags(0x0) +param "lint" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "ll" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "llc" +units = "", desc = "Length reduction parameter for CV", flags = ParameterFlags(0x0) +param "lln" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lw" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lwc" +units = "", desc = "Length reduction parameter for CV", flags = ParameterFlags(0x0) +param "lwn" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lwl" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lwlc" +units = "", desc = "Length reduction parameter for CV", flags = ParameterFlags(0x0) +param "lmin" +units = "", desc = "Minimum length for the model", flags = ParameterFlags(0x0) +param "lmax" +units = "", desc = "Maximum length for the model", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "Length correction parameter", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Width correction parameter", flags = ParameterFlags(0x0) +param "wr" +units = "", desc = "Width dependence of rds", flags = ParameterFlags(0x0) +param "wint" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "dwg" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "dwb" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wl" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wlc" +units = "", desc = "Width reduction parameter for CV", flags = ParameterFlags(0x0) +param "wln" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "ww" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wwc" +units = "", desc = "Width reduction parameter for CV", flags = ParameterFlags(0x0) +param "wwn" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wwl" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wwlc" +units = "", desc = "Width reduction parameter for CV", flags = ParameterFlags(0x0) +param "wmin" +units = "", desc = "Minimum width for the model", flags = ParameterFlags(0x0) +param "wmax" +units = "", desc = "Maximum width for the model", flags = ParameterFlags(0x0) +param "b0" +units = "", desc = "Abulk narrow width parameter", flags = ParameterFlags(0x0) +param "b1" +units = "", desc = "Abulk narrow width parameter", flags = ParameterFlags(0x0) +param "cgsl" +units = "", desc = "New C-V model parameter", flags = ParameterFlags(0x0) +param "cgdl" +units = "", desc = "New C-V model parameter", flags = ParameterFlags(0x0) +param "ckappa" +units = "", desc = "New C-V model parameter", flags = ParameterFlags(0x0) +param "cf" +units = "", desc = "Fringe capacitance parameter", flags = ParameterFlags(0x0) +param "clc" +units = "", desc = "Vdsat parameter for C-V model", flags = ParameterFlags(0x0) +param "cle" +units = "", desc = "Vdsat parameter for C-V model", flags = ParameterFlags(0x0) +param "dwc" +units = "", desc = "Delta W for C-V model", flags = ParameterFlags(0x0) +param "dlc" +units = "", desc = "Delta L for C-V model", flags = ParameterFlags(0x0) +param "hdif" +units = "", desc = "ACM Parameter: Distance Gate - contact", flags = ParameterFlags(0x0) +param "ldif" +units = "", desc = "ACM Parameter: Length of LDD Gate-Source/Drain", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "ACM Parameter: Length of LDD under Gate", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "ACM Parameter: Resistance of LDD drain side", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "ACM Parameter: Resistance of LDD source side", flags = ParameterFlags(0x0) +param "rdc" +units = "", desc = "ACM Parameter: Resistance contact drain side", flags = ParameterFlags(0x0) +param "rsc" +units = "", desc = "ACM Parameter: Resistance contact source side", flags = ParameterFlags(0x0) +param "wmlt" +units = "", desc = "ACM Parameter: Width shrink factor", flags = ParameterFlags(0x0) +param "alpha0" +units = "", desc = "substrate current model parameter", flags = ParameterFlags(0x0) +param "alpha1" +units = "", desc = "substrate current model parameter", flags = ParameterFlags(0x0) +param "beta0" +units = "", desc = "substrate current model parameter", flags = ParameterFlags(0x0) +param "ijth" +units = "", desc = "Diode limiting current", flags = ParameterFlags(0x0) +param "lcdsc" +units = "", desc = "Length dependence of cdsc", flags = ParameterFlags(0x0) +param "lcdscb" +units = "", desc = "Length dependence of cdscb", flags = ParameterFlags(0x0) +param "lcdscd" +units = "", desc = "Length dependence of cdscd", flags = ParameterFlags(0x0) +param "lcit" +units = "", desc = "Length dependence of cit", flags = ParameterFlags(0x0) +param "lnfactor" +units = "", desc = "Length dependence of nfactor", flags = ParameterFlags(0x0) +param "lxj" +units = "", desc = "Length dependence of xj", flags = ParameterFlags(0x0) +param "lvsat" +units = "", desc = "Length dependence of vsat", flags = ParameterFlags(0x0) +param "lat" +units = "", desc = "Length dependence of at", flags = ParameterFlags(0x0) +param "la0" +units = "", desc = "Length dependence of a0", flags = ParameterFlags(0x0) +param "lags" +units = "", desc = "Length dependence of ags", flags = ParameterFlags(0x0) +param "la1" +units = "", desc = "Length dependence of a1", flags = ParameterFlags(0x0) +param "la2" +units = "", desc = "Length dependence of a2", flags = ParameterFlags(0x0) +param "lketa" +units = "", desc = "Length dependence of keta", flags = ParameterFlags(0x0) +param "lnsub" +units = "", desc = "Length dependence of nsub", flags = ParameterFlags(0x0) +param "lnch" +units = "", desc = "Length dependence of nch", flags = ParameterFlags(0x0) +param "lngate" +units = "", desc = "Length dependence of ngate", flags = ParameterFlags(0x0) +param "lgamma1" +units = "", desc = "Length dependence of gamma1", flags = ParameterFlags(0x0) +param "lgamma2" +units = "", desc = "Length dependence of gamma2", flags = ParameterFlags(0x0) +param "lvbx" +units = "", desc = "Length dependence of vbx", flags = ParameterFlags(0x0) +param "lvbm" +units = "", desc = "Length dependence of vbm", flags = ParameterFlags(0x0) +param "lxt" +units = "", desc = "Length dependence of xt", flags = ParameterFlags(0x0) +param "lk1" +units = "", desc = "Length dependence of k1", flags = ParameterFlags(0x0) +param "lkt1" +units = "", desc = "Length dependence of kt1", flags = ParameterFlags(0x0) +param "lkt1l" +units = "", desc = "Length dependence of kt1l", flags = ParameterFlags(0x0) +param "lkt2" +units = "", desc = "Length dependence of kt2", flags = ParameterFlags(0x0) +param "lk2" +units = "", desc = "Length dependence of k2", flags = ParameterFlags(0x0) +param "lk3" +units = "", desc = "Length dependence of k3", flags = ParameterFlags(0x0) +param "lk3b" +units = "", desc = "Length dependence of k3b", flags = ParameterFlags(0x0) +param "lw0" +units = "", desc = "Length dependence of w0", flags = ParameterFlags(0x0) +param "lnlx" +units = "", desc = "Length dependence of nlx", flags = ParameterFlags(0x0) +param "ldvt0" +units = "", desc = "Length dependence of dvt0", flags = ParameterFlags(0x0) +param "ldvt1" +units = "", desc = "Length dependence of dvt1", flags = ParameterFlags(0x0) +param "ldvt2" +units = "", desc = "Length dependence of dvt2", flags = ParameterFlags(0x0) +param "ldvt0w" +units = "", desc = "Length dependence of dvt0w", flags = ParameterFlags(0x0) +param "ldvt1w" +units = "", desc = "Length dependence of dvt1w", flags = ParameterFlags(0x0) +param "ldvt2w" +units = "", desc = "Length dependence of dvt2w", flags = ParameterFlags(0x0) +param "ldrout" +units = "", desc = "Length dependence of drout", flags = ParameterFlags(0x0) +param "ldsub" +units = "", desc = "Length dependence of dsub", flags = ParameterFlags(0x0) +param "lvth0", "lvtho" +units = "", desc = "Length dependence of vth0", flags = ParameterFlags(0x0) +param "lua" +units = "", desc = "Length dependence of ua", flags = ParameterFlags(0x0) +param "lua1" +units = "", desc = "Length dependence of ua1", flags = ParameterFlags(0x0) +param "lub" +units = "", desc = "Length dependence of ub", flags = ParameterFlags(0x0) +param "lub1" +units = "", desc = "Length dependence of ub1", flags = ParameterFlags(0x0) +param "luc" +units = "", desc = "Length dependence of uc", flags = ParameterFlags(0x0) +param "luc1" +units = "", desc = "Length dependence of uc1", flags = ParameterFlags(0x0) +param "lu0" +units = "", desc = "Length dependence of u0", flags = ParameterFlags(0x0) +param "lute" +units = "", desc = "Length dependence of ute", flags = ParameterFlags(0x0) +param "lvoff" +units = "", desc = "Length dependence of voff", flags = ParameterFlags(0x0) +param "lelm" +units = "", desc = "Length dependence of elm", flags = ParameterFlags(0x0) +param "ldelta" +units = "", desc = "Length dependence of delta", flags = ParameterFlags(0x0) +param "lrdsw" +units = "", desc = "Length dependence of rdsw ", flags = ParameterFlags(0x0) +param "lprwg" +units = "", desc = "Length dependence of prwg ", flags = ParameterFlags(0x0) +param "lprwb" +units = "", desc = "Length dependence of prwb ", flags = ParameterFlags(0x0) +param "lprt" +units = "", desc = "Length dependence of prt ", flags = ParameterFlags(0x0) +param "leta0" +units = "", desc = "Length dependence of eta0", flags = ParameterFlags(0x0) +param "letab" +units = "", desc = "Length dependence of etab", flags = ParameterFlags(0x0) +param "lpclm" +units = "", desc = "Length dependence of pclm", flags = ParameterFlags(0x0) +param "lpdiblc1" +units = "", desc = "Length dependence of pdiblc1", flags = ParameterFlags(0x0) +param "lpdiblc2" +units = "", desc = "Length dependence of pdiblc2", flags = ParameterFlags(0x0) +param "lpdiblcb" +units = "", desc = "Length dependence of pdiblcb", flags = ParameterFlags(0x0) +param "lpscbe1" +units = "", desc = "Length dependence of pscbe1", flags = ParameterFlags(0x0) +param "lpscbe2" +units = "", desc = "Length dependence of pscbe2", flags = ParameterFlags(0x0) +param "lpvag" +units = "", desc = "Length dependence of pvag", flags = ParameterFlags(0x0) +param "lwr" +units = "", desc = "Length dependence of wr", flags = ParameterFlags(0x0) +param "ldwg" +units = "", desc = "Length dependence of dwg", flags = ParameterFlags(0x0) +param "ldwb" +units = "", desc = "Length dependence of dwb", flags = ParameterFlags(0x0) +param "lb0" +units = "", desc = "Length dependence of b0", flags = ParameterFlags(0x0) +param "lb1" +units = "", desc = "Length dependence of b1", flags = ParameterFlags(0x0) +param "lcgsl" +units = "", desc = "Length dependence of cgsl", flags = ParameterFlags(0x0) +param "lcgdl" +units = "", desc = "Length dependence of cgdl", flags = ParameterFlags(0x0) +param "lckappa" +units = "", desc = "Length dependence of ckappa", flags = ParameterFlags(0x0) +param "lcf" +units = "", desc = "Length dependence of cf", flags = ParameterFlags(0x0) +param "lclc" +units = "", desc = "Length dependence of clc", flags = ParameterFlags(0x0) +param "lcle" +units = "", desc = "Length dependence of cle", flags = ParameterFlags(0x0) +param "lalpha0" +units = "", desc = "Length dependence of alpha0", flags = ParameterFlags(0x0) +param "lalpha1" +units = "", desc = "Length dependence of alpha1", flags = ParameterFlags(0x0) +param "lbeta0" +units = "", desc = "Length dependence of beta0", flags = ParameterFlags(0x0) +param "lvfbcv" +units = "", desc = "Length dependence of vfbcv", flags = ParameterFlags(0x0) +param "lvfb" +units = "", desc = "Length dependence of vfb", flags = ParameterFlags(0x0) +param "lacde" +units = "", desc = "Length dependence of acde", flags = ParameterFlags(0x0) +param "lmoin" +units = "", desc = "Length dependence of moin", flags = ParameterFlags(0x0) +param "lnoff" +units = "", desc = "Length dependence of noff", flags = ParameterFlags(0x0) +param "lvoffcv" +units = "", desc = "Length dependence of voffcv", flags = ParameterFlags(0x0) +param "wcdsc" +units = "", desc = "Width dependence of cdsc", flags = ParameterFlags(0x0) +param "wcdscb" +units = "", desc = "Width dependence of cdscb", flags = ParameterFlags(0x0) +param "wcdscd" +units = "", desc = "Width dependence of cdscd", flags = ParameterFlags(0x0) +param "wcit" +units = "", desc = "Width dependence of cit", flags = ParameterFlags(0x0) +param "wnfactor" +units = "", desc = "Width dependence of nfactor", flags = ParameterFlags(0x0) +param "wxj" +units = "", desc = "Width dependence of xj", flags = ParameterFlags(0x0) +param "wvsat" +units = "", desc = "Width dependence of vsat", flags = ParameterFlags(0x0) +param "wat" +units = "", desc = "Width dependence of at", flags = ParameterFlags(0x0) +param "wa0" +units = "", desc = "Width dependence of a0", flags = ParameterFlags(0x0) +param "wags" +units = "", desc = "Width dependence of ags", flags = ParameterFlags(0x0) +param "wa1" +units = "", desc = "Width dependence of a1", flags = ParameterFlags(0x0) +param "wa2" +units = "", desc = "Width dependence of a2", flags = ParameterFlags(0x0) +param "wketa" +units = "", desc = "Width dependence of keta", flags = ParameterFlags(0x0) +param "wnsub" +units = "", desc = "Width dependence of nsub", flags = ParameterFlags(0x0) +param "wnch" +units = "", desc = "Width dependence of nch", flags = ParameterFlags(0x0) +param "wngate" +units = "", desc = "Width dependence of ngate", flags = ParameterFlags(0x0) +param "wgamma1" +units = "", desc = "Width dependence of gamma1", flags = ParameterFlags(0x0) +param "wgamma2" +units = "", desc = "Width dependence of gamma2", flags = ParameterFlags(0x0) +param "wvbx" +units = "", desc = "Width dependence of vbx", flags = ParameterFlags(0x0) +param "wvbm" +units = "", desc = "Width dependence of vbm", flags = ParameterFlags(0x0) +param "wxt" +units = "", desc = "Width dependence of xt", flags = ParameterFlags(0x0) +param "wk1" +units = "", desc = "Width dependence of k1", flags = ParameterFlags(0x0) +param "wkt1" +units = "", desc = "Width dependence of kt1", flags = ParameterFlags(0x0) +param "wkt1l" +units = "", desc = "Width dependence of kt1l", flags = ParameterFlags(0x0) +param "wkt2" +units = "", desc = "Width dependence of kt2", flags = ParameterFlags(0x0) +param "wk2" +units = "", desc = "Width dependence of k2", flags = ParameterFlags(0x0) +param "wk3" +units = "", desc = "Width dependence of k3", flags = ParameterFlags(0x0) +param "wk3b" +units = "", desc = "Width dependence of k3b", flags = ParameterFlags(0x0) +param "ww0" +units = "", desc = "Width dependence of w0", flags = ParameterFlags(0x0) +param "wnlx" +units = "", desc = "Width dependence of nlx", flags = ParameterFlags(0x0) +param "wdvt0" +units = "", desc = "Width dependence of dvt0", flags = ParameterFlags(0x0) +param "wdvt1" +units = "", desc = "Width dependence of dvt1", flags = ParameterFlags(0x0) +param "wdvt2" +units = "", desc = "Width dependence of dvt2", flags = ParameterFlags(0x0) +param "wdvt0w" +units = "", desc = "Width dependence of dvt0w", flags = ParameterFlags(0x0) +param "wdvt1w" +units = "", desc = "Width dependence of dvt1w", flags = ParameterFlags(0x0) +param "wdvt2w" +units = "", desc = "Width dependence of dvt2w", flags = ParameterFlags(0x0) +param "wdrout" +units = "", desc = "Width dependence of drout", flags = ParameterFlags(0x0) +param "wdsub" +units = "", desc = "Width dependence of dsub", flags = ParameterFlags(0x0) +param "wvth0", "wvtho" +units = "", desc = "Width dependence of vth0", flags = ParameterFlags(0x0) +param "wua" +units = "", desc = "Width dependence of ua", flags = ParameterFlags(0x0) +param "wua1" +units = "", desc = "Width dependence of ua1", flags = ParameterFlags(0x0) +param "wub" +units = "", desc = "Width dependence of ub", flags = ParameterFlags(0x0) +param "wub1" +units = "", desc = "Width dependence of ub1", flags = ParameterFlags(0x0) +param "wuc" +units = "", desc = "Width dependence of uc", flags = ParameterFlags(0x0) +param "wuc1" +units = "", desc = "Width dependence of uc1", flags = ParameterFlags(0x0) +param "wu0" +units = "", desc = "Width dependence of u0", flags = ParameterFlags(0x0) +param "wute" +units = "", desc = "Width dependence of ute", flags = ParameterFlags(0x0) +param "wvoff" +units = "", desc = "Width dependence of voff", flags = ParameterFlags(0x0) +param "welm" +units = "", desc = "Width dependence of elm", flags = ParameterFlags(0x0) +param "wdelta" +units = "", desc = "Width dependence of delta", flags = ParameterFlags(0x0) +param "wrdsw" +units = "", desc = "Width dependence of rdsw ", flags = ParameterFlags(0x0) +param "wprwg" +units = "", desc = "Width dependence of prwg ", flags = ParameterFlags(0x0) +param "wprwb" +units = "", desc = "Width dependence of prwb ", flags = ParameterFlags(0x0) +param "wprt" +units = "", desc = "Width dependence of prt", flags = ParameterFlags(0x0) +param "weta0" +units = "", desc = "Width dependence of eta0", flags = ParameterFlags(0x0) +param "wetab" +units = "", desc = "Width dependence of etab", flags = ParameterFlags(0x0) +param "wpclm" +units = "", desc = "Width dependence of pclm", flags = ParameterFlags(0x0) +param "wpdiblc1" +units = "", desc = "Width dependence of pdiblc1", flags = ParameterFlags(0x0) +param "wpdiblc2" +units = "", desc = "Width dependence of pdiblc2", flags = ParameterFlags(0x0) +param "wpdiblcb" +units = "", desc = "Width dependence of pdiblcb", flags = ParameterFlags(0x0) +param "wpscbe1" +units = "", desc = "Width dependence of pscbe1", flags = ParameterFlags(0x0) +param "wpscbe2" +units = "", desc = "Width dependence of pscbe2", flags = ParameterFlags(0x0) +param "wpvag" +units = "", desc = "Width dependence of pvag", flags = ParameterFlags(0x0) +param "wwr" +units = "", desc = "Width dependence of wr", flags = ParameterFlags(0x0) +param "wdwg" +units = "", desc = "Width dependence of dwg", flags = ParameterFlags(0x0) +param "wdwb" +units = "", desc = "Width dependence of dwb", flags = ParameterFlags(0x0) +param "wb0" +units = "", desc = "Width dependence of b0", flags = ParameterFlags(0x0) +param "wb1" +units = "", desc = "Width dependence of b1", flags = ParameterFlags(0x0) +param "wcgsl" +units = "", desc = "Width dependence of cgsl", flags = ParameterFlags(0x0) +param "wcgdl" +units = "", desc = "Width dependence of cgdl", flags = ParameterFlags(0x0) +param "wckappa" +units = "", desc = "Width dependence of ckappa", flags = ParameterFlags(0x0) +param "wcf" +units = "", desc = "Width dependence of cf", flags = ParameterFlags(0x0) +param "wclc" +units = "", desc = "Width dependence of clc", flags = ParameterFlags(0x0) +param "wcle" +units = "", desc = "Width dependence of cle", flags = ParameterFlags(0x0) +param "walpha0" +units = "", desc = "Width dependence of alpha0", flags = ParameterFlags(0x0) +param "walpha1" +units = "", desc = "Width dependence of alpha1", flags = ParameterFlags(0x0) +param "wbeta0" +units = "", desc = "Width dependence of beta0", flags = ParameterFlags(0x0) +param "wvfbcv" +units = "", desc = "Width dependence of vfbcv", flags = ParameterFlags(0x0) +param "wvfb" +units = "", desc = "Width dependence of vfb", flags = ParameterFlags(0x0) +param "wacde" +units = "", desc = "Width dependence of acde", flags = ParameterFlags(0x0) +param "wmoin" +units = "", desc = "Width dependence of moin", flags = ParameterFlags(0x0) +param "wnoff" +units = "", desc = "Width dependence of noff", flags = ParameterFlags(0x0) +param "wvoffcv" +units = "", desc = "Width dependence of voffcv", flags = ParameterFlags(0x0) +param "pcdsc" +units = "", desc = "Cross-term dependence of cdsc", flags = ParameterFlags(0x0) +param "pcdscb" +units = "", desc = "Cross-term dependence of cdscb", flags = ParameterFlags(0x0) +param "pcdscd" +units = "", desc = "Cross-term dependence of cdscd", flags = ParameterFlags(0x0) +param "pcit" +units = "", desc = "Cross-term dependence of cit", flags = ParameterFlags(0x0) +param "pnfactor" +units = "", desc = "Cross-term dependence of nfactor", flags = ParameterFlags(0x0) +param "pxj" +units = "", desc = "Cross-term dependence of xj", flags = ParameterFlags(0x0) +param "pvsat" +units = "", desc = "Cross-term dependence of vsat", flags = ParameterFlags(0x0) +param "pat" +units = "", desc = "Cross-term dependence of at", flags = ParameterFlags(0x0) +param "pa0" +units = "", desc = "Cross-term dependence of a0", flags = ParameterFlags(0x0) +param "pags" +units = "", desc = "Cross-term dependence of ags", flags = ParameterFlags(0x0) +param "pa1" +units = "", desc = "Cross-term dependence of a1", flags = ParameterFlags(0x0) +param "pa2" +units = "", desc = "Cross-term dependence of a2", flags = ParameterFlags(0x0) +param "pketa" +units = "", desc = "Cross-term dependence of keta", flags = ParameterFlags(0x0) +param "pnsub" +units = "", desc = "Cross-term dependence of nsub", flags = ParameterFlags(0x0) +param "pnch" +units = "", desc = "Cross-term dependence of nch", flags = ParameterFlags(0x0) +param "pngate" +units = "", desc = "Cross-term dependence of ngate", flags = ParameterFlags(0x0) +param "pgamma1" +units = "", desc = "Cross-term dependence of gamma1", flags = ParameterFlags(0x0) +param "pgamma2" +units = "", desc = "Cross-term dependence of gamma2", flags = ParameterFlags(0x0) +param "pvbx" +units = "", desc = "Cross-term dependence of vbx", flags = ParameterFlags(0x0) +param "pvbm" +units = "", desc = "Cross-term dependence of vbm", flags = ParameterFlags(0x0) +param "pxt" +units = "", desc = "Cross-term dependence of xt", flags = ParameterFlags(0x0) +param "pk1" +units = "", desc = "Cross-term dependence of k1", flags = ParameterFlags(0x0) +param "pkt1" +units = "", desc = "Cross-term dependence of kt1", flags = ParameterFlags(0x0) +param "pkt1l" +units = "", desc = "Cross-term dependence of kt1l", flags = ParameterFlags(0x0) +param "pkt2" +units = "", desc = "Cross-term dependence of kt2", flags = ParameterFlags(0x0) +param "pk2" +units = "", desc = "Cross-term dependence of k2", flags = ParameterFlags(0x0) +param "pk3" +units = "", desc = "Cross-term dependence of k3", flags = ParameterFlags(0x0) +param "pk3b" +units = "", desc = "Cross-term dependence of k3b", flags = ParameterFlags(0x0) +param "pw0" +units = "", desc = "Cross-term dependence of w0", flags = ParameterFlags(0x0) +param "pnlx" +units = "", desc = "Cross-term dependence of nlx", flags = ParameterFlags(0x0) +param "pdvt0" +units = "", desc = "Cross-term dependence of dvt0", flags = ParameterFlags(0x0) +param "pdvt1" +units = "", desc = "Cross-term dependence of dvt1", flags = ParameterFlags(0x0) +param "pdvt2" +units = "", desc = "Cross-term dependence of dvt2", flags = ParameterFlags(0x0) +param "pdvt0w" +units = "", desc = "Cross-term dependence of dvt0w", flags = ParameterFlags(0x0) +param "pdvt1w" +units = "", desc = "Cross-term dependence of dvt1w", flags = ParameterFlags(0x0) +param "pdvt2w" +units = "", desc = "Cross-term dependence of dvt2w", flags = ParameterFlags(0x0) +param "pdrout" +units = "", desc = "Cross-term dependence of drout", flags = ParameterFlags(0x0) +param "pdsub" +units = "", desc = "Cross-term dependence of dsub", flags = ParameterFlags(0x0) +param "pvth0", "pvtho" +units = "", desc = "Cross-term dependence of vth0", flags = ParameterFlags(0x0) +param "pua" +units = "", desc = "Cross-term dependence of ua", flags = ParameterFlags(0x0) +param "pua1" +units = "", desc = "Cross-term dependence of ua1", flags = ParameterFlags(0x0) +param "pub" +units = "", desc = "Cross-term dependence of ub", flags = ParameterFlags(0x0) +param "pub1" +units = "", desc = "Cross-term dependence of ub1", flags = ParameterFlags(0x0) +param "puc" +units = "", desc = "Cross-term dependence of uc", flags = ParameterFlags(0x0) +param "puc1" +units = "", desc = "Cross-term dependence of uc1", flags = ParameterFlags(0x0) +param "pu0" +units = "", desc = "Cross-term dependence of u0", flags = ParameterFlags(0x0) +param "pute" +units = "", desc = "Cross-term dependence of ute", flags = ParameterFlags(0x0) +param "pvoff" +units = "", desc = "Cross-term dependence of voff", flags = ParameterFlags(0x0) +param "pelm" +units = "", desc = "Cross-term dependence of elm", flags = ParameterFlags(0x0) +param "pdelta" +units = "", desc = "Cross-term dependence of delta", flags = ParameterFlags(0x0) +param "prdsw" +units = "", desc = "Cross-term dependence of rdsw ", flags = ParameterFlags(0x0) +param "pprwg" +units = "", desc = "Cross-term dependence of prwg ", flags = ParameterFlags(0x0) +param "pprwb" +units = "", desc = "Cross-term dependence of prwb ", flags = ParameterFlags(0x0) +param "pprt" +units = "", desc = "Cross-term dependence of prt ", flags = ParameterFlags(0x0) +param "peta0" +units = "", desc = "Cross-term dependence of eta0", flags = ParameterFlags(0x0) +param "petab" +units = "", desc = "Cross-term dependence of etab", flags = ParameterFlags(0x0) +param "ppclm" +units = "", desc = "Cross-term dependence of pclm", flags = ParameterFlags(0x0) +param "ppdiblc1" +units = "", desc = "Cross-term dependence of pdiblc1", flags = ParameterFlags(0x0) +param "ppdiblc2" +units = "", desc = "Cross-term dependence of pdiblc2", flags = ParameterFlags(0x0) +param "ppdiblcb" +units = "", desc = "Cross-term dependence of pdiblcb", flags = ParameterFlags(0x0) +param "ppscbe1" +units = "", desc = "Cross-term dependence of pscbe1", flags = ParameterFlags(0x0) +param "ppscbe2" +units = "", desc = "Cross-term dependence of pscbe2", flags = ParameterFlags(0x0) +param "ppvag" +units = "", desc = "Cross-term dependence of pvag", flags = ParameterFlags(0x0) +param "pwr" +units = "", desc = "Cross-term dependence of wr", flags = ParameterFlags(0x0) +param "pdwg" +units = "", desc = "Cross-term dependence of dwg", flags = ParameterFlags(0x0) +param "pdwb" +units = "", desc = "Cross-term dependence of dwb", flags = ParameterFlags(0x0) +param "pb0" +units = "", desc = "Cross-term dependence of b0", flags = ParameterFlags(0x0) +param "pb1" +units = "", desc = "Cross-term dependence of b1", flags = ParameterFlags(0x0) +param "pcgsl" +units = "", desc = "Cross-term dependence of cgsl", flags = ParameterFlags(0x0) +param "pcgdl" +units = "", desc = "Cross-term dependence of cgdl", flags = ParameterFlags(0x0) +param "pckappa" +units = "", desc = "Cross-term dependence of ckappa", flags = ParameterFlags(0x0) +param "pcf" +units = "", desc = "Cross-term dependence of cf", flags = ParameterFlags(0x0) +param "pclc" +units = "", desc = "Cross-term dependence of clc", flags = ParameterFlags(0x0) +param "pcle" +units = "", desc = "Cross-term dependence of cle", flags = ParameterFlags(0x0) +param "palpha0" +units = "", desc = "Cross-term dependence of alpha0", flags = ParameterFlags(0x0) +param "palpha1" +units = "", desc = "Cross-term dependence of alpha1", flags = ParameterFlags(0x0) +param "pbeta0" +units = "", desc = "Cross-term dependence of beta0", flags = ParameterFlags(0x0) +param "pvfbcv" +units = "", desc = "Cross-term dependence of vfbcv", flags = ParameterFlags(0x0) +param "pvfb" +units = "", desc = "Cross-term dependence of vfb", flags = ParameterFlags(0x0) +param "pacde" +units = "", desc = "Cross-term dependence of acde", flags = ParameterFlags(0x0) +param "pmoin" +units = "", desc = "Cross-term dependence of moin", flags = ParameterFlags(0x0) +param "pnoff" +units = "", desc = "Cross-term dependence of noff", flags = ParameterFlags(0x0) +param "pvoffcv" +units = "", desc = "Cross-term dependence of voffcv", flags = ParameterFlags(0x0) +param "noia" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "noib" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "noic" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "em" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "ef" +units = "", desc = "Flicker noise frequency exponent", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "vgs_max" +units = "", desc = "maximum voltage G-S branch", flags = ParameterFlags(0x0) +param "vgd_max" +units = "", desc = "maximum voltage G-D branch", flags = ParameterFlags(0x0) +param "vgb_max" +units = "", desc = "maximum voltage G-B branch", flags = ParameterFlags(0x0) +param "vds_max" +units = "", desc = "maximum voltage D-S branch", flags = ParameterFlags(0x0) +param "vbs_max" +units = "", desc = "maximum voltage B-S branch", flags = ParameterFlags(0x0) +param "vbd_max" +units = "", desc = "maximum voltage B-D branch", flags = ParameterFlags(0x0) +param "vgsr_max" +units = "", desc = "maximum voltage G-S branch", flags = ParameterFlags(0x0) +param "vgdr_max" +units = "", desc = "maximum voltage G-D branch", flags = ParameterFlags(0x0) +param "vgbr_max" +units = "", desc = "maximum voltage G-B branch", flags = ParameterFlags(0x0) +param "vbsr_max" +units = "", desc = "maximum voltage B-S branch", flags = ParameterFlags(0x0) +param "vbdr_max" +units = "", desc = "maximum voltage B-D branch", flags = ParameterFlags(0x0) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "q_int" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (q_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +collapsible (d_int, d) +collapsible (s_int, s) +collapsible (q_int, gnd) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "id" (d_int, s_int) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_bsim4v8.snap b/openvaf/test_data/osdi/vacask_spice_bsim4v8.snap new file mode 100644 index 000000000..b0945b9a7 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_bsim4v8.snap @@ -0,0 +1,1989 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "nf" +units = "", desc = "Number of fingers", flags = ParameterFlags(PARA_KIND_INST) +param "sa" +units = "", desc = "distance between OD edge to poly of one side ", flags = ParameterFlags(PARA_KIND_INST) +param "sb" +units = "", desc = "distance between OD edge to poly of the other side", flags = ParameterFlags(PARA_KIND_INST) +param "sd" +units = "", desc = "distance between neighbour fingers", flags = ParameterFlags(PARA_KIND_INST) +param "sca" +units = "", desc = "Integral of the first distribution function for scattered well dopant", flags = ParameterFlags(PARA_KIND_INST) +param "scb" +units = "", desc = "Integral of the second distribution function for scattered well dopant", flags = ParameterFlags(PARA_KIND_INST) +param "scc" +units = "", desc = "Integral of the third distribution function for scattered well dopant", flags = ParameterFlags(PARA_KIND_INST) +param "sc" +units = "", desc = "Distance to a single well edge ", flags = ParameterFlags(PARA_KIND_INST) +param "instance_min" +units = "", desc = "Minimize either D or S", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Number of squares in drain", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Number of squares in source", flags = ParameterFlags(PARA_KIND_INST) +param "instance_rbdb" +units = "", desc = "Body resistance", flags = ParameterFlags(PARA_KIND_INST) +param "instance_rbsb" +units = "", desc = "Body resistance", flags = ParameterFlags(PARA_KIND_INST) +param "instance_rbpb" +units = "", desc = "Body resistance", flags = ParameterFlags(PARA_KIND_INST) +param "instance_rbps" +units = "", desc = "Body resistance", flags = ParameterFlags(PARA_KIND_INST) +param "instance_rbpd" +units = "", desc = "Body resistance", flags = ParameterFlags(PARA_KIND_INST) +param "delvto", "delvt0" +units = "", desc = "Zero bias threshold voltage variation", flags = ParameterFlags(PARA_KIND_INST) +param "mulu0" +units = "", desc = "Low field mobility multiplier", flags = ParameterFlags(PARA_KIND_INST) +param "instance_xgw" +units = "", desc = "Distance from gate contact center to device edge", flags = ParameterFlags(PARA_KIND_INST) +param "instance_ngcon" +units = "", desc = "Number of gate contacts", flags = ParameterFlags(PARA_KIND_INST) +param "wnflag" +units = "", desc = "W/NF device flag for bin selection", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_trnqsmod" +units = "", desc = "Transient NQS model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_acnqsmod" +units = "", desc = "AC NQS model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_rbodymod" +units = "", desc = "Distributed body R model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_rgatemod" +units = "", desc = "Gate resistance model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_geomod" +units = "", desc = "Geometry dependent parasitics model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "instance_rgeomod" +units = "", desc = "S/D resistance and contact model selector", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "mult_i" +units = "", desc = "Variability in current", flags = ParameterFlags(PARA_KIND_INST) +param "mult_q" +units = "", desc = "Variability in charge", flags = ParameterFlags(PARA_KIND_INST) +param "mult_fn" +units = "", desc = "Variability in flicker noise", flags = ParameterFlags(PARA_KIND_INST) +param "cvchargemod" +units = "", desc = "Capacitance Charge model selector", flags = ParameterFlags(PARA_TY_INT) +param "capmod" +units = "", desc = "Capacitance model selector", flags = ParameterFlags(PARA_TY_INT) +param "diomod" +units = "", desc = "Diode IV model selector", flags = ParameterFlags(PARA_TY_INT) +param "rdsmod" +units = "", desc = "Bias-dependent S/D resistance model selector", flags = ParameterFlags(PARA_TY_INT) +param "trnqsmod" +units = "", desc = "Transient NQS model selector", flags = ParameterFlags(PARA_TY_INT) +param "acnqsmod" +units = "", desc = "AC NQS model selector", flags = ParameterFlags(PARA_TY_INT) +param "mobmod" +units = "", desc = "Mobility model selector", flags = ParameterFlags(PARA_TY_INT) +param "rbodymod" +units = "", desc = "Distributed body R model selector", flags = ParameterFlags(PARA_TY_INT) +param "rgatemod" +units = "", desc = "Gate R model selector", flags = ParameterFlags(PARA_TY_INT) +param "permod" +units = "", desc = "Pd and Ps model selector", flags = ParameterFlags(PARA_TY_INT) +param "geomod" +units = "", desc = "Geometry dependent parasitics model selector", flags = ParameterFlags(PARA_TY_INT) +param "fnoimod" +units = "", desc = "Flicker noise model selector", flags = ParameterFlags(PARA_TY_INT) +param "tnoimod" +units = "", desc = "Thermal noise model selector", flags = ParameterFlags(PARA_TY_INT) +param "mtrlmod" +units = "", desc = "parameter for non-silicon substrate or metal gate selector", flags = ParameterFlags(PARA_TY_INT) +param "mtrlcompatmod" +units = "", desc = "New Material Mod backward compatibility selector", flags = ParameterFlags(PARA_TY_INT) +param "igcmod" +units = "", desc = "Gate-to-channel Ig model selector", flags = ParameterFlags(PARA_TY_INT) +param "igbmod" +units = "", desc = "Gate-to-body Ig model selector", flags = ParameterFlags(PARA_TY_INT) +param "tempmod" +units = "", desc = "Temperature model selector", flags = ParameterFlags(PARA_TY_INT) +param "gidlmod" +units = "", desc = "parameter for GIDL selector", flags = ParameterFlags(PARA_TY_INT) +param "paramchk" +units = "", desc = "Model parameter checking selector", flags = ParameterFlags(PARA_TY_INT) +param "binunit" +units = "", desc = "Bin unit selector", flags = ParameterFlags(PARA_TY_INT) +param "version" +units = "", desc = "parameter for model version", flags = ParameterFlags(PARA_TY_STR) +param "eot" +units = "", desc = "Equivalent gate oxide thickness in meters", flags = ParameterFlags(0x0) +param "vddeot" +units = "", desc = "Voltage for extraction of Equivalent gate oxide thickness", flags = ParameterFlags(0x0) +param "tempeot" +units = "", desc = " Temperature for extraction of EOT", flags = ParameterFlags(0x0) +param "leffeot" +units = "", desc = " Effective length for extraction of EOT", flags = ParameterFlags(0x0) +param "weffeot" +units = "", desc = "Effective width for extraction of EOT", flags = ParameterFlags(0x0) +param "ados" +units = "", desc = "Charge centroid parameter", flags = ParameterFlags(0x0) +param "bdos" +units = "", desc = "Charge centroid parameter", flags = ParameterFlags(0x0) +param "toxe" +units = "", desc = "Electrical gate oxide thickness in meters", flags = ParameterFlags(0x0) +param "toxp" +units = "", desc = "Physical gate oxide thickness in meters", flags = ParameterFlags(0x0) +param "toxm" +units = "", desc = "Gate oxide thickness at which parameters are extracted", flags = ParameterFlags(0x0) +param "toxref" +units = "", desc = "Target tox value", flags = ParameterFlags(0x0) +param "dtox" +units = "", desc = "Defined as (toxe - toxp) ", flags = ParameterFlags(0x0) +param "epsrox" +units = "", desc = "Dielectric constant of the gate oxide relative to vacuum", flags = ParameterFlags(0x0) +param "cdsc" +units = "", desc = "Drain/Source and channel coupling capacitance", flags = ParameterFlags(0x0) +param "cdscb" +units = "", desc = "Body-bias dependence of cdsc", flags = ParameterFlags(0x0) +param "cdscd" +units = "", desc = "Drain-bias dependence of cdsc", flags = ParameterFlags(0x0) +param "cit" +units = "", desc = "Interface state capacitance", flags = ParameterFlags(0x0) +param "nfactor" +units = "", desc = "Subthreshold swing Coefficient", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth in meters", flags = ParameterFlags(0x0) +param "vsat" +units = "", desc = "Saturation velocity at tnom", flags = ParameterFlags(0x0) +param "at" +units = "", desc = "Temperature coefficient of vsat", flags = ParameterFlags(0x0) +param "a0" +units = "", desc = "Non-uniform depletion width effect coefficient.", flags = ParameterFlags(0x0) +param "ags" +units = "", desc = "Gate bias coefficient of Abulk.", flags = ParameterFlags(0x0) +param "a1" +units = "", desc = "Non-saturation effect coefficient", flags = ParameterFlags(0x0) +param "a2" +units = "", desc = "Non-saturation effect coefficient", flags = ParameterFlags(0x0) +param "keta" +units = "", desc = "Body-bias coefficient of non-uniform depletion width effect.", flags = ParameterFlags(0x0) +param "ketac" +units = "", desc = "Body-bias coefficient of non-uniform depletion width effect in dynamic evaluation.", flags = ParameterFlags(0x0) +param "phig" +units = "", desc = "Work function of gate", flags = ParameterFlags(0x0) +param "epsrgate" +units = "", desc = "Dielectric constant of gate relative to vacuum", flags = ParameterFlags(0x0) +param "easub" +units = "", desc = "Electron affinity of substrate", flags = ParameterFlags(0x0) +param "epsrsub" +units = "", desc = "Dielectric constant of substrate relative to vacuum", flags = ParameterFlags(0x0) +param "ni0sub" +units = "", desc = "Intrinsic carrier concentration of substrate at 300.15K", flags = ParameterFlags(0x0) +param "bg0sub" +units = "", desc = "Band-gap of substrate at T=0K", flags = ParameterFlags(0x0) +param "tbgasub" +units = "", desc = "First parameter of band-gap change due to temperature", flags = ParameterFlags(0x0) +param "tbgbsub" +units = "", desc = "Second parameter of band-gap change due to temperature", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping concentration", flags = ParameterFlags(0x0) +param "ndep" +units = "", desc = "Channel doping concentration at the depletion edge", flags = ParameterFlags(0x0) +param "nsd" +units = "", desc = "S/D doping concentration", flags = ParameterFlags(0x0) +param "phin" +units = "", desc = "Adjusting parameter for surface potential due to non-uniform vertical doping", flags = ParameterFlags(0x0) +param "ngate" +units = "", desc = "Poly-gate doping concentration", flags = ParameterFlags(0x0) +param "gamma1" +units = "", desc = "Vth body coefficient", flags = ParameterFlags(0x0) +param "gamma2" +units = "", desc = "Vth body coefficient", flags = ParameterFlags(0x0) +param "vbx" +units = "", desc = "Vth transition body Voltage", flags = ParameterFlags(0x0) +param "vbm" +units = "", desc = "Maximum body voltage", flags = ParameterFlags(0x0) +param "xt" +units = "", desc = "Doping depth", flags = ParameterFlags(0x0) +param "k1" +units = "", desc = "Bulk effect coefficient 1", flags = ParameterFlags(0x0) +param "kt1" +units = "", desc = "Temperature coefficient of Vth", flags = ParameterFlags(0x0) +param "kt1l" +units = "", desc = "Temperature coefficient of Vth", flags = ParameterFlags(0x0) +param "kt2" +units = "", desc = "Body-coefficient of kt1", flags = ParameterFlags(0x0) +param "k2" +units = "", desc = "Bulk effect coefficient 2", flags = ParameterFlags(0x0) +param "k3" +units = "", desc = "Narrow width effect coefficient", flags = ParameterFlags(0x0) +param "k3b" +units = "", desc = "Body effect coefficient of k3", flags = ParameterFlags(0x0) +param "w0" +units = "", desc = "Narrow width effect parameter", flags = ParameterFlags(0x0) +param "dvtp0" +units = "", desc = "First parameter for Vth shift due to pocket", flags = ParameterFlags(0x0) +param "dvtp1" +units = "", desc = "Second parameter for Vth shift due to pocket", flags = ParameterFlags(0x0) +param "dvtp2" +units = "", desc = "3rd parameter for Vth shift due to pocket", flags = ParameterFlags(0x0) +param "dvtp3" +units = "", desc = "4th parameter for Vth shift due to pocket", flags = ParameterFlags(0x0) +param "dvtp4" +units = "", desc = "5th parameter for Vth shift due to pocket", flags = ParameterFlags(0x0) +param "dvtp5" +units = "", desc = "6th parameter for Vth shift due to pocket", flags = ParameterFlags(0x0) +param "lpe0" +units = "", desc = "Equivalent length of pocket region at zero bias", flags = ParameterFlags(0x0) +param "lpeb" +units = "", desc = "Equivalent length of pocket region accounting for body bias", flags = ParameterFlags(0x0) +param "dvt0" +units = "", desc = "Short channel effect coeff. 0", flags = ParameterFlags(0x0) +param "dvt1" +units = "", desc = "Short channel effect coeff. 1", flags = ParameterFlags(0x0) +param "dvt2" +units = "", desc = "Short channel effect coeff. 2", flags = ParameterFlags(0x0) +param "dvt0w" +units = "", desc = "Narrow Width coeff. 0", flags = ParameterFlags(0x0) +param "dvt1w" +units = "", desc = "Narrow Width effect coeff. 1", flags = ParameterFlags(0x0) +param "dvt2w" +units = "", desc = "Narrow Width effect coeff. 2", flags = ParameterFlags(0x0) +param "drout" +units = "", desc = "DIBL coefficient of output resistance", flags = ParameterFlags(0x0) +param "dsub" +units = "", desc = "DIBL coefficient in the subthreshold region", flags = ParameterFlags(0x0) +param "vth0", "vtho" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "ua" +units = "", desc = "Linear gate dependence of mobility", flags = ParameterFlags(0x0) +param "ua1" +units = "", desc = "Temperature coefficient of ua", flags = ParameterFlags(0x0) +param "ub" +units = "", desc = "Quadratic gate dependence of mobility", flags = ParameterFlags(0x0) +param "ub1" +units = "", desc = "Temperature coefficient of ub", flags = ParameterFlags(0x0) +param "uc" +units = "", desc = "Body-bias dependence of mobility", flags = ParameterFlags(0x0) +param "uc1" +units = "", desc = "Temperature coefficient of uc", flags = ParameterFlags(0x0) +param "ud" +units = "", desc = "Coulomb scattering factor of mobility", flags = ParameterFlags(0x0) +param "ud1" +units = "", desc = "Temperature coefficient of ud", flags = ParameterFlags(0x0) +param "up" +units = "", desc = "Channel length linear factor of mobility", flags = ParameterFlags(0x0) +param "lp" +units = "", desc = "Channel length exponential factor of mobility", flags = ParameterFlags(0x0) +param "u0" +units = "", desc = "Low-field mobility at Tnom", flags = ParameterFlags(0x0) +param "eu" +units = "", desc = "Mobility exponent", flags = ParameterFlags(0x0) +param "ucs" +units = "", desc = "Colombic scattering exponent", flags = ParameterFlags(0x0) +param "ute" +units = "", desc = "Temperature coefficient of mobility", flags = ParameterFlags(0x0) +param "ucste" +units = "", desc = "Temperature coefficient of colombic mobility", flags = ParameterFlags(0x0) +param "voff" +units = "", desc = "Threshold voltage offset", flags = ParameterFlags(0x0) +param "minv" +units = "", desc = "Fitting parameter for moderate inversion in Vgsteff", flags = ParameterFlags(0x0) +param "minvcv" +units = "", desc = "Fitting parameter for moderate inversion in Vgsteffcv", flags = ParameterFlags(0x0) +param "voffl" +units = "", desc = "Length dependence parameter for Vth offset", flags = ParameterFlags(0x0) +param "voffcvl" +units = "", desc = "Length dependence parameter for Vth offset in CV", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap capacitance per width", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap capacitance per width", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap capacitance per length", flags = ParameterFlags(0x0) +param "xpart" +units = "", desc = "Channel charge partitioning", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Effective Vds parameter", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Source-drain sheet resistance", flags = ParameterFlags(0x0) +param "rdsw" +units = "", desc = "Source-drain resistance per width", flags = ParameterFlags(0x0) +param "rdswmin" +units = "", desc = "Source-drain resistance per width at high Vg", flags = ParameterFlags(0x0) +param "rsw" +units = "", desc = "Source resistance per width", flags = ParameterFlags(0x0) +param "rdw" +units = "", desc = "Drain resistance per width", flags = ParameterFlags(0x0) +param "rdwmin" +units = "", desc = "Drain resistance per width at high Vg", flags = ParameterFlags(0x0) +param "rswmin" +units = "", desc = "Source resistance per width at high Vg", flags = ParameterFlags(0x0) +param "prwg" +units = "", desc = "Gate-bias effect on parasitic resistance ", flags = ParameterFlags(0x0) +param "prwb" +units = "", desc = "Body-effect on parasitic resistance ", flags = ParameterFlags(0x0) +param "prt" +units = "", desc = "Temperature coefficient of parasitic resistance ", flags = ParameterFlags(0x0) +param "eta0" +units = "", desc = "Subthreshold region DIBL coefficient", flags = ParameterFlags(0x0) +param "etab" +units = "", desc = "Subthreshold region DIBL coefficient", flags = ParameterFlags(0x0) +param "pclm" +units = "", desc = "Channel length modulation Coefficient", flags = ParameterFlags(0x0) +param "pdiblc1" +units = "", desc = "Drain-induced barrier lowering coefficient", flags = ParameterFlags(0x0) +param "pdiblc2" +units = "", desc = "Drain-induced barrier lowering coefficient", flags = ParameterFlags(0x0) +param "pdiblcb" +units = "", desc = "Body-effect on drain-induced barrier lowering", flags = ParameterFlags(0x0) +param "fprout" +units = "", desc = "Rout degradation coefficient for pocket devices", flags = ParameterFlags(0x0) +param "pdits" +units = "", desc = "Coefficient for drain-induced Vth shifts", flags = ParameterFlags(0x0) +param "pditsl" +units = "", desc = "Length dependence of drain-induced Vth shifts", flags = ParameterFlags(0x0) +param "pditsd" +units = "", desc = "Vds dependence of drain-induced Vth shifts", flags = ParameterFlags(0x0) +param "pscbe1" +units = "", desc = "Substrate current body-effect coefficient", flags = ParameterFlags(0x0) +param "pscbe2" +units = "", desc = "Substrate current body-effect coefficient", flags = ParameterFlags(0x0) +param "pvag" +units = "", desc = "Gate dependence of output resistance parameter", flags = ParameterFlags(0x0) +param "jss" +units = "", desc = "Bottom source junction reverse saturation current density", flags = ParameterFlags(0x0) +param "jsws" +units = "", desc = "Isolation edge sidewall source junction reverse saturation current density", flags = ParameterFlags(0x0) +param "jswgs" +units = "", desc = "Gate edge source junction reverse saturation current density", flags = ParameterFlags(0x0) +param "pbs" +units = "", desc = "Source junction built-in potential", flags = ParameterFlags(0x0) +param "njs" +units = "", desc = "Source junction emission coefficient", flags = ParameterFlags(0x0) +param "xtis" +units = "", desc = "Source junction current temperature exponent", flags = ParameterFlags(0x0) +param "mjs" +units = "", desc = "Source bottom junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "pbsws" +units = "", desc = "Source sidewall junction capacitance built in potential", flags = ParameterFlags(0x0) +param "mjsws" +units = "", desc = "Source sidewall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "pbswgs" +units = "", desc = "Source (gate side) sidewall junction capacitance built in potential", flags = ParameterFlags(0x0) +param "mjswgs" +units = "", desc = "Source (gate side) sidewall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "cjs" +units = "", desc = "Source bottom junction capacitance per unit area", flags = ParameterFlags(0x0) +param "cjsws" +units = "", desc = "Source sidewall junction capacitance per unit periphery", flags = ParameterFlags(0x0) +param "cjswgs" +units = "", desc = "Source (gate side) sidewall junction capacitance per unit width", flags = ParameterFlags(0x0) +param "jsd" +units = "", desc = "Bottom drain junction reverse saturation current density", flags = ParameterFlags(0x0) +param "jswd" +units = "", desc = "Isolation edge sidewall drain junction reverse saturation current density", flags = ParameterFlags(0x0) +param "jswgd" +units = "", desc = "Gate edge drain junction reverse saturation current density", flags = ParameterFlags(0x0) +param "pbd" +units = "", desc = "Drain junction built-in potential", flags = ParameterFlags(0x0) +param "njd" +units = "", desc = "Drain junction emission coefficient", flags = ParameterFlags(0x0) +param "xtid" +units = "", desc = "Drainjunction current temperature exponent", flags = ParameterFlags(0x0) +param "mjd" +units = "", desc = "Drain bottom junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "pbswd" +units = "", desc = "Drain sidewall junction capacitance built in potential", flags = ParameterFlags(0x0) +param "mjswd" +units = "", desc = "Drain sidewall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "pbswgd" +units = "", desc = "Drain (gate side) sidewall junction capacitance built in potential", flags = ParameterFlags(0x0) +param "mjswgd" +units = "", desc = "Drain (gate side) sidewall junction capacitance grading coefficient", flags = ParameterFlags(0x0) +param "cjd" +units = "", desc = "Drain bottom junction capacitance per unit area", flags = ParameterFlags(0x0) +param "cjswd" +units = "", desc = "Drain sidewall junction capacitance per unit periphery", flags = ParameterFlags(0x0) +param "cjswgd" +units = "", desc = "Drain (gate side) sidewall junction capacitance per unit width", flags = ParameterFlags(0x0) +param "vfbcv" +units = "", desc = "Flat Band Voltage parameter for capmod=0 only", flags = ParameterFlags(0x0) +param "vfb" +units = "", desc = "Flat Band Voltage", flags = ParameterFlags(0x0) +param "tpb" +units = "", desc = "Temperature coefficient of pb", flags = ParameterFlags(0x0) +param "tcj" +units = "", desc = "Temperature coefficient of cj", flags = ParameterFlags(0x0) +param "tpbsw" +units = "", desc = "Temperature coefficient of pbsw", flags = ParameterFlags(0x0) +param "tcjsw" +units = "", desc = "Temperature coefficient of cjsw", flags = ParameterFlags(0x0) +param "tpbswg" +units = "", desc = "Temperature coefficient of pbswg", flags = ParameterFlags(0x0) +param "tcjswg" +units = "", desc = "Temperature coefficient of cjswg", flags = ParameterFlags(0x0) +param "acde" +units = "", desc = "Exponential coefficient for finite charge thickness", flags = ParameterFlags(0x0) +param "moin" +units = "", desc = "Coefficient for gate-bias dependent surface potential", flags = ParameterFlags(0x0) +param "noff" +units = "", desc = "C-V turn-on/off parameter", flags = ParameterFlags(0x0) +param "voffcv" +units = "", desc = "C-V lateral-shift parameter", flags = ParameterFlags(0x0) +param "dmcg" +units = "", desc = "Distance of Mid-Contact to Gate edge", flags = ParameterFlags(0x0) +param "dmci" +units = "", desc = "Distance of Mid-Contact to Isolation", flags = ParameterFlags(0x0) +param "dmdg" +units = "", desc = "Distance of Mid-Diffusion to Gate edge", flags = ParameterFlags(0x0) +param "dmcgt" +units = "", desc = "Distance of Mid-Contact to Gate edge in Test structures", flags = ParameterFlags(0x0) +param "xgw" +units = "", desc = "Distance from gate contact center to device edge", flags = ParameterFlags(0x0) +param "xgl" +units = "", desc = "Variation in Ldrawn", flags = ParameterFlags(0x0) +param "rshg" +units = "", desc = "Gate sheet resistance", flags = ParameterFlags(0x0) +param "ngcon" +units = "", desc = "Number of gate contacts", flags = ParameterFlags(0x0) +param "xrcrg1" +units = "", desc = "First fitting parameter the bias-dependent Rg", flags = ParameterFlags(0x0) +param "xrcrg2" +units = "", desc = "Second fitting parameter the bias-dependent Rg", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = " Velocity overshoot parameter", flags = ParameterFlags(0x0) +param "vtl" +units = "", desc = " thermal velocity", flags = ParameterFlags(0x0) +param "lc" +units = "", desc = " back scattering parameter", flags = ParameterFlags(0x0) +param "xn" +units = "", desc = " back scattering parameter", flags = ParameterFlags(0x0) +param "vfbsdoff" +units = "", desc = "S/D flatband voltage offset", flags = ParameterFlags(0x0) +param "tvfbsdoff" +units = "", desc = "Temperature parameter for vfbsdoff", flags = ParameterFlags(0x0) +param "tvoff" +units = "", desc = "Temperature parameter for voff", flags = ParameterFlags(0x0) +param "tnfactor" +units = "", desc = "Temperature parameter for nfactor", flags = ParameterFlags(0x0) +param "teta0" +units = "", desc = "Temperature parameter for eta0", flags = ParameterFlags(0x0) +param "tvoffcv" +units = "", desc = "Temperature parameter for tvoffcv", flags = ParameterFlags(0x0) +param "lintnoi" +units = "", desc = "lint offset for noise calculation", flags = ParameterFlags(0x0) +param "lint" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "ll" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "llc" +units = "", desc = "Length reduction parameter for CV", flags = ParameterFlags(0x0) +param "lln" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lw" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lwc" +units = "", desc = "Length reduction parameter for CV", flags = ParameterFlags(0x0) +param "lwn" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lwl" +units = "", desc = "Length reduction parameter", flags = ParameterFlags(0x0) +param "lwlc" +units = "", desc = "Length reduction parameter for CV", flags = ParameterFlags(0x0) +param "lmin" +units = "", desc = "Minimum length for the model", flags = ParameterFlags(0x0) +param "lmax" +units = "", desc = "Maximum length for the model", flags = ParameterFlags(0x0) +param "wr" +units = "", desc = "Width dependence of rds", flags = ParameterFlags(0x0) +param "wint" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "dwg" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "dwb" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wl" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wlc" +units = "", desc = "Width reduction parameter for CV", flags = ParameterFlags(0x0) +param "wln" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "ww" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wwc" +units = "", desc = "Width reduction parameter for CV", flags = ParameterFlags(0x0) +param "wwn" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wwl" +units = "", desc = "Width reduction parameter", flags = ParameterFlags(0x0) +param "wwlc" +units = "", desc = "Width reduction parameter for CV", flags = ParameterFlags(0x0) +param "wmin" +units = "", desc = "Minimum width for the model", flags = ParameterFlags(0x0) +param "wmax" +units = "", desc = "Maximum width for the model", flags = ParameterFlags(0x0) +param "b0" +units = "", desc = "Abulk narrow width parameter", flags = ParameterFlags(0x0) +param "b1" +units = "", desc = "Abulk narrow width parameter", flags = ParameterFlags(0x0) +param "cgsl" +units = "", desc = "New C-V model parameter", flags = ParameterFlags(0x0) +param "cgdl" +units = "", desc = "New C-V model parameter", flags = ParameterFlags(0x0) +param "ckappas" +units = "", desc = "S/G overlap C-V parameter ", flags = ParameterFlags(0x0) +param "ckappad" +units = "", desc = "D/G overlap C-V parameter", flags = ParameterFlags(0x0) +param "cf" +units = "", desc = "Fringe capacitance parameter", flags = ParameterFlags(0x0) +param "clc" +units = "", desc = "Vdsat parameter for C-V model", flags = ParameterFlags(0x0) +param "cle" +units = "", desc = "Vdsat parameter for C-V model", flags = ParameterFlags(0x0) +param "dwc" +units = "", desc = "Delta W for C-V model", flags = ParameterFlags(0x0) +param "dlc" +units = "", desc = "Delta L for C-V model", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "W offset for channel width due to mask/etch effect", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "L offset for channel length due to mask/etch effect", flags = ParameterFlags(0x0) +param "dlcig" +units = "", desc = "Delta L for Ig model", flags = ParameterFlags(0x0) +param "dlcigd" +units = "", desc = "Delta L for Ig model drain side", flags = ParameterFlags(0x0) +param "dwj" +units = "", desc = "Delta W for S/D junctions", flags = ParameterFlags(0x0) +param "alpha0" +units = "", desc = "substrate current model parameter", flags = ParameterFlags(0x0) +param "alpha1" +units = "", desc = "substrate current model parameter", flags = ParameterFlags(0x0) +param "beta0" +units = "", desc = "substrate current model parameter", flags = ParameterFlags(0x0) +param "agidl" +units = "", desc = "Pre-exponential constant for GIDL", flags = ParameterFlags(0x0) +param "bgidl" +units = "", desc = "Exponential constant for GIDL", flags = ParameterFlags(0x0) +param "cgidl" +units = "", desc = "Parameter for body-bias dependence of GIDL", flags = ParameterFlags(0x0) +param "rgidl" +units = "", desc = "GIDL vg parameter", flags = ParameterFlags(0x0) +param "kgidl" +units = "", desc = "GIDL vb parameter", flags = ParameterFlags(0x0) +param "fgidl" +units = "", desc = "GIDL vb parameter", flags = ParameterFlags(0x0) +param "egidl" +units = "", desc = "Fitting parameter for Bandbending", flags = ParameterFlags(0x0) +param "agisl" +units = "", desc = "Pre-exponential constant for GISL", flags = ParameterFlags(0x0) +param "bgisl" +units = "", desc = "Exponential constant for GISL", flags = ParameterFlags(0x0) +param "cgisl" +units = "", desc = "Parameter for body-bias dependence of GISL", flags = ParameterFlags(0x0) +param "rgisl" +units = "", desc = "GISL vg parameter", flags = ParameterFlags(0x0) +param "kgisl" +units = "", desc = "GISL vb parameter", flags = ParameterFlags(0x0) +param "fgisl" +units = "", desc = "GISL vb parameter", flags = ParameterFlags(0x0) +param "egisl" +units = "", desc = "Fitting parameter for Bandbending", flags = ParameterFlags(0x0) +param "aigc" +units = "", desc = "Parameter for Igc", flags = ParameterFlags(0x0) +param "bigc" +units = "", desc = "Parameter for Igc", flags = ParameterFlags(0x0) +param "cigc" +units = "", desc = "Parameter for Igc", flags = ParameterFlags(0x0) +param "aigsd" +units = "", desc = "Parameter for Igs,d", flags = ParameterFlags(0x0) +param "bigsd" +units = "", desc = "Parameter for Igs,d", flags = ParameterFlags(0x0) +param "cigsd" +units = "", desc = "Parameter for Igs,d", flags = ParameterFlags(0x0) +param "aigs" +units = "", desc = "Parameter for Igs", flags = ParameterFlags(0x0) +param "bigs" +units = "", desc = "Parameter for Igs", flags = ParameterFlags(0x0) +param "cigs" +units = "", desc = "Parameter for Igs", flags = ParameterFlags(0x0) +param "aigd" +units = "", desc = "Parameter for Igd", flags = ParameterFlags(0x0) +param "bigd" +units = "", desc = "Parameter for Igd", flags = ParameterFlags(0x0) +param "cigd" +units = "", desc = "Parameter for Igd", flags = ParameterFlags(0x0) +param "aigbacc" +units = "", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "bigbacc" +units = "", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "cigbacc" +units = "", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "aigbinv" +units = "", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "bigbinv" +units = "", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "cigbinv" +units = "", desc = "Parameter for Igb", flags = ParameterFlags(0x0) +param "nigc" +units = "", desc = "Parameter for Igc slope", flags = ParameterFlags(0x0) +param "nigbinv" +units = "", desc = "Parameter for Igbinv slope", flags = ParameterFlags(0x0) +param "nigbacc" +units = "", desc = "Parameter for Igbacc slope", flags = ParameterFlags(0x0) +param "ntox" +units = "", desc = "Exponent for Tox ratio", flags = ParameterFlags(0x0) +param "eigbinv" +units = "", desc = "Parameter for the Si bandgap for Igbinv", flags = ParameterFlags(0x0) +param "pigcd" +units = "", desc = "Parameter for Igc partition", flags = ParameterFlags(0x0) +param "poxedge" +units = "", desc = "Factor for the gate edge Tox", flags = ParameterFlags(0x0) +param "ijthdfwd" +units = "", desc = "Forward drain diode forward limiting current", flags = ParameterFlags(0x0) +param "ijthsfwd" +units = "", desc = "Forward source diode forward limiting current", flags = ParameterFlags(0x0) +param "ijthdrev" +units = "", desc = "Reverse drain diode forward limiting current", flags = ParameterFlags(0x0) +param "ijthsrev" +units = "", desc = "Reverse source diode forward limiting current", flags = ParameterFlags(0x0) +param "xjbvd" +units = "", desc = "Fitting parameter for drain diode breakdown current", flags = ParameterFlags(0x0) +param "xjbvs" +units = "", desc = "Fitting parameter for source diode breakdown current", flags = ParameterFlags(0x0) +param "bvd" +units = "", desc = "Drain diode breakdown voltage", flags = ParameterFlags(0x0) +param "bvs" +units = "", desc = "Source diode breakdown voltage", flags = ParameterFlags(0x0) +param "jtss" +units = "", desc = "Source bottom trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "jtsd" +units = "", desc = "Drain bottom trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "jtssws" +units = "", desc = "Source STI sidewall trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "jtsswd" +units = "", desc = "Drain STI sidewall trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "jtsswgs" +units = "", desc = "Source gate-edge sidewall trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "jtsswgd" +units = "", desc = "Drain gate-edge sidewall trap-assisted saturation current density", flags = ParameterFlags(0x0) +param "jtweff" +units = "", desc = "TAT current width dependance", flags = ParameterFlags(0x0) +param "njts" +units = "", desc = "Non-ideality factor for bottom junction", flags = ParameterFlags(0x0) +param "njtssw" +units = "", desc = "Non-ideality factor for STI sidewall junction", flags = ParameterFlags(0x0) +param "njtsswg" +units = "", desc = "Non-ideality factor for gate-edge sidewall junction", flags = ParameterFlags(0x0) +param "njtsd" +units = "", desc = "Non-ideality factor for bottom junction drain side", flags = ParameterFlags(0x0) +param "njtsswd" +units = "", desc = "Non-ideality factor for STI sidewall junction drain side", flags = ParameterFlags(0x0) +param "njtsswgd" +units = "", desc = "Non-ideality factor for gate-edge sidewall junction drain side", flags = ParameterFlags(0x0) +param "xtss" +units = "", desc = "Power dependence of JTSS on temperature", flags = ParameterFlags(0x0) +param "xtsd" +units = "", desc = "Power dependence of JTSD on temperature", flags = ParameterFlags(0x0) +param "xtssws" +units = "", desc = "Power dependence of JTSSWS on temperature", flags = ParameterFlags(0x0) +param "xtsswd" +units = "", desc = "Power dependence of JTSSWD on temperature", flags = ParameterFlags(0x0) +param "xtsswgs" +units = "", desc = "Power dependence of JTSSWGS on temperature", flags = ParameterFlags(0x0) +param "xtsswgd" +units = "", desc = "Power dependence of JTSSWGD on temperature", flags = ParameterFlags(0x0) +param "tnjts" +units = "", desc = "Temperature coefficient for NJTS", flags = ParameterFlags(0x0) +param "tnjtssw" +units = "", desc = "Temperature coefficient for NJTSSW", flags = ParameterFlags(0x0) +param "tnjtsswg" +units = "", desc = "Temperature coefficient for NJTSSWG", flags = ParameterFlags(0x0) +param "tnjtsd" +units = "", desc = "Temperature coefficient for NJTSD", flags = ParameterFlags(0x0) +param "tnjtsswd" +units = "", desc = "Temperature coefficient for NJTSSWD", flags = ParameterFlags(0x0) +param "tnjtsswgd" +units = "", desc = "Temperature coefficient for NJTSSWGD", flags = ParameterFlags(0x0) +param "vtss" +units = "", desc = "Source bottom trap-assisted voltage dependent parameter", flags = ParameterFlags(0x0) +param "vtsd" +units = "", desc = "Drain bottom trap-assisted voltage dependent parameter", flags = ParameterFlags(0x0) +param "vtssws" +units = "", desc = "Source STI sidewall trap-assisted voltage dependent parameter", flags = ParameterFlags(0x0) +param "vtsswd" +units = "", desc = "Drain STI sidewall trap-assisted voltage dependent parameter", flags = ParameterFlags(0x0) +param "vtsswgs" +units = "", desc = "Source gate-edge sidewall trap-assisted voltage dependent parameter", flags = ParameterFlags(0x0) +param "vtsswgd" +units = "", desc = "Drain gate-edge sidewall trap-assisted voltage dependent parameter", flags = ParameterFlags(0x0) +param "gbmin" +units = "", desc = "Minimum body conductance", flags = ParameterFlags(0x0) +param "rbdb" +units = "", desc = "Resistance between bNode and dbNode", flags = ParameterFlags(0x0) +param "rbpb" +units = "", desc = "Resistance between bNodePrime and bNode", flags = ParameterFlags(0x0) +param "rbsb" +units = "", desc = "Resistance between bNode and sbNode", flags = ParameterFlags(0x0) +param "rbps" +units = "", desc = "Resistance between bNodePrime and sbNode", flags = ParameterFlags(0x0) +param "rbpd" +units = "", desc = "Resistance between bNodePrime and bNode", flags = ParameterFlags(0x0) +param "rbps0" +units = "", desc = "Body resistance RBPS scaling", flags = ParameterFlags(0x0) +param "rbpsl" +units = "", desc = "Body resistance RBPS L scaling", flags = ParameterFlags(0x0) +param "rbpsw" +units = "", desc = "Body resistance RBPS W scaling", flags = ParameterFlags(0x0) +param "rbpsnf" +units = "", desc = "Body resistance RBPS NF scaling", flags = ParameterFlags(0x0) +param "rbpd0" +units = "", desc = "Body resistance RBPD scaling", flags = ParameterFlags(0x0) +param "rbpdl" +units = "", desc = "Body resistance RBPD L scaling", flags = ParameterFlags(0x0) +param "rbpdw" +units = "", desc = "Body resistance RBPD W scaling", flags = ParameterFlags(0x0) +param "rbpdnf" +units = "", desc = "Body resistance RBPD NF scaling", flags = ParameterFlags(0x0) +param "rbpbx0" +units = "", desc = "Body resistance RBPBX scaling", flags = ParameterFlags(0x0) +param "rbpbxl" +units = "", desc = "Body resistance RBPBX L scaling", flags = ParameterFlags(0x0) +param "rbpbxw" +units = "", desc = "Body resistance RBPBX W scaling", flags = ParameterFlags(0x0) +param "rbpbxnf" +units = "", desc = "Body resistance RBPBX NF scaling", flags = ParameterFlags(0x0) +param "rbpby0" +units = "", desc = "Body resistance RBPBY scaling", flags = ParameterFlags(0x0) +param "rbpbyl" +units = "", desc = "Body resistance RBPBY L scaling", flags = ParameterFlags(0x0) +param "rbpbyw" +units = "", desc = "Body resistance RBPBY W scaling", flags = ParameterFlags(0x0) +param "rbpbynf" +units = "", desc = "Body resistance RBPBY NF scaling", flags = ParameterFlags(0x0) +param "rbsbx0" +units = "", desc = "Body resistance RBSBX scaling", flags = ParameterFlags(0x0) +param "rbsby0" +units = "", desc = "Body resistance RBSBY scaling", flags = ParameterFlags(0x0) +param "rbdbx0" +units = "", desc = "Body resistance RBDBX scaling", flags = ParameterFlags(0x0) +param "rbdby0" +units = "", desc = "Body resistance RBDBY scaling", flags = ParameterFlags(0x0) +param "rbsdbxl" +units = "", desc = "Body resistance RBSDBX L scaling", flags = ParameterFlags(0x0) +param "rbsdbxw" +units = "", desc = "Body resistance RBSDBX W scaling", flags = ParameterFlags(0x0) +param "rbsdbxnf" +units = "", desc = "Body resistance RBSDBX NF scaling", flags = ParameterFlags(0x0) +param "rbsdbyl" +units = "", desc = "Body resistance RBSDBY L scaling", flags = ParameterFlags(0x0) +param "rbsdbyw" +units = "", desc = "Body resistance RBSDBY W scaling", flags = ParameterFlags(0x0) +param "rbsdbynf" +units = "", desc = "Body resistance RBSDBY NF scaling", flags = ParameterFlags(0x0) +param "lcdsc" +units = "", desc = "Length dependence of cdsc", flags = ParameterFlags(0x0) +param "lcdscb" +units = "", desc = "Length dependence of cdscb", flags = ParameterFlags(0x0) +param "lcdscd" +units = "", desc = "Length dependence of cdscd", flags = ParameterFlags(0x0) +param "lcit" +units = "", desc = "Length dependence of cit", flags = ParameterFlags(0x0) +param "lnfactor" +units = "", desc = "Length dependence of nfactor", flags = ParameterFlags(0x0) +param "lxj" +units = "", desc = "Length dependence of xj", flags = ParameterFlags(0x0) +param "lvsat" +units = "", desc = "Length dependence of vsat", flags = ParameterFlags(0x0) +param "lat" +units = "", desc = "Length dependence of at", flags = ParameterFlags(0x0) +param "la0" +units = "", desc = "Length dependence of a0", flags = ParameterFlags(0x0) +param "lags" +units = "", desc = "Length dependence of ags", flags = ParameterFlags(0x0) +param "la1" +units = "", desc = "Length dependence of a1", flags = ParameterFlags(0x0) +param "la2" +units = "", desc = "Length dependence of a2", flags = ParameterFlags(0x0) +param "lketa" +units = "", desc = "Length dependence of keta", flags = ParameterFlags(0x0) +param "lketac" +units = "", desc = "Length dependence of ketac", flags = ParameterFlags(0x0) +param "lnsub" +units = "", desc = "Length dependence of nsub", flags = ParameterFlags(0x0) +param "lndep" +units = "", desc = "Length dependence of ndep", flags = ParameterFlags(0x0) +param "lnsd" +units = "", desc = "Length dependence of nsd", flags = ParameterFlags(0x0) +param "lphin" +units = "", desc = "Length dependence of phin", flags = ParameterFlags(0x0) +param "lngate" +units = "", desc = "Length dependence of ngate", flags = ParameterFlags(0x0) +param "lgamma1" +units = "", desc = "Length dependence of gamma1", flags = ParameterFlags(0x0) +param "lgamma2" +units = "", desc = "Length dependence of gamma2", flags = ParameterFlags(0x0) +param "lvbx" +units = "", desc = "Length dependence of vbx", flags = ParameterFlags(0x0) +param "lvbm" +units = "", desc = "Length dependence of vbm", flags = ParameterFlags(0x0) +param "lxt" +units = "", desc = "Length dependence of xt", flags = ParameterFlags(0x0) +param "lk1" +units = "", desc = "Length dependence of k1", flags = ParameterFlags(0x0) +param "lkt1" +units = "", desc = "Length dependence of kt1", flags = ParameterFlags(0x0) +param "lkt1l" +units = "", desc = "Length dependence of kt1l", flags = ParameterFlags(0x0) +param "lkt2" +units = "", desc = "Length dependence of kt2", flags = ParameterFlags(0x0) +param "lk2" +units = "", desc = "Length dependence of k2", flags = ParameterFlags(0x0) +param "lk3" +units = "", desc = "Length dependence of k3", flags = ParameterFlags(0x0) +param "lk3b" +units = "", desc = "Length dependence of k3b", flags = ParameterFlags(0x0) +param "lw0" +units = "", desc = "Length dependence of w0", flags = ParameterFlags(0x0) +param "ldvtp0" +units = "", desc = "Length dependence of dvtp0", flags = ParameterFlags(0x0) +param "ldvtp1" +units = "", desc = "Length dependence of dvtp1", flags = ParameterFlags(0x0) +param "ldvtp2" +units = "", desc = "Length dependence of dvtp2", flags = ParameterFlags(0x0) +param "ldvtp3" +units = "", desc = "Length dependence of dvtp3", flags = ParameterFlags(0x0) +param "ldvtp4" +units = "", desc = "Length dependence of dvtp4", flags = ParameterFlags(0x0) +param "ldvtp5" +units = "", desc = "Length dependence of dvtp5", flags = ParameterFlags(0x0) +param "llpe0" +units = "", desc = "Length dependence of lpe0", flags = ParameterFlags(0x0) +param "llpeb" +units = "", desc = "Length dependence of lpeb", flags = ParameterFlags(0x0) +param "ldvt0" +units = "", desc = "Length dependence of dvt0", flags = ParameterFlags(0x0) +param "ldvt1" +units = "", desc = "Length dependence of dvt1", flags = ParameterFlags(0x0) +param "ldvt2" +units = "", desc = "Length dependence of dvt2", flags = ParameterFlags(0x0) +param "ldvt0w" +units = "", desc = "Length dependence of dvt0w", flags = ParameterFlags(0x0) +param "ldvt1w" +units = "", desc = "Length dependence of dvt1w", flags = ParameterFlags(0x0) +param "ldvt2w" +units = "", desc = "Length dependence of dvt2w", flags = ParameterFlags(0x0) +param "ldrout" +units = "", desc = "Length dependence of drout", flags = ParameterFlags(0x0) +param "ldsub" +units = "", desc = "Length dependence of dsub", flags = ParameterFlags(0x0) +param "lvth0", "lvtho" +units = "", desc = "Length dependence of vto", flags = ParameterFlags(0x0) +param "lua" +units = "", desc = "Length dependence of ua", flags = ParameterFlags(0x0) +param "lua1" +units = "", desc = "Length dependence of ua1", flags = ParameterFlags(0x0) +param "lub" +units = "", desc = "Length dependence of ub", flags = ParameterFlags(0x0) +param "lub1" +units = "", desc = "Length dependence of ub1", flags = ParameterFlags(0x0) +param "luc" +units = "", desc = "Length dependence of uc", flags = ParameterFlags(0x0) +param "luc1" +units = "", desc = "Length dependence of uc1", flags = ParameterFlags(0x0) +param "lud" +units = "", desc = "Length dependence of ud", flags = ParameterFlags(0x0) +param "lud1" +units = "", desc = "Length dependence of ud1", flags = ParameterFlags(0x0) +param "lup" +units = "", desc = "Length dependence of up", flags = ParameterFlags(0x0) +param "llp" +units = "", desc = "Length dependence of lp", flags = ParameterFlags(0x0) +param "lu0" +units = "", desc = "Length dependence of u0", flags = ParameterFlags(0x0) +param "lute" +units = "", desc = "Length dependence of ute", flags = ParameterFlags(0x0) +param "lucste" +units = "", desc = "Length dependence of ucste", flags = ParameterFlags(0x0) +param "lvoff" +units = "", desc = "Length dependence of voff", flags = ParameterFlags(0x0) +param "lminv" +units = "", desc = "Length dependence of minv", flags = ParameterFlags(0x0) +param "lminvcv" +units = "", desc = "Length dependence of minvcv", flags = ParameterFlags(0x0) +param "ldelta" +units = "", desc = "Length dependence of delta", flags = ParameterFlags(0x0) +param "lrdsw" +units = "", desc = "Length dependence of rdsw ", flags = ParameterFlags(0x0) +param "lrsw" +units = "", desc = "Length dependence of rsw", flags = ParameterFlags(0x0) +param "lrdw" +units = "", desc = "Length dependence of rdw", flags = ParameterFlags(0x0) +param "lprwg" +units = "", desc = "Length dependence of prwg ", flags = ParameterFlags(0x0) +param "lprwb" +units = "", desc = "Length dependence of prwb ", flags = ParameterFlags(0x0) +param "lprt" +units = "", desc = "Length dependence of prt ", flags = ParameterFlags(0x0) +param "leta0" +units = "", desc = "Length dependence of eta0", flags = ParameterFlags(0x0) +param "letab" +units = "", desc = "Length dependence of etab", flags = ParameterFlags(0x0) +param "lpclm" +units = "", desc = "Length dependence of pclm", flags = ParameterFlags(0x0) +param "lpdiblc1" +units = "", desc = "Length dependence of pdiblc1", flags = ParameterFlags(0x0) +param "lpdiblc2" +units = "", desc = "Length dependence of pdiblc2", flags = ParameterFlags(0x0) +param "lpdiblcb" +units = "", desc = "Length dependence of pdiblcb", flags = ParameterFlags(0x0) +param "lfprout" +units = "", desc = "Length dependence of pdiblcb", flags = ParameterFlags(0x0) +param "lpdits" +units = "", desc = "Length dependence of pdits", flags = ParameterFlags(0x0) +param "lpditsd" +units = "", desc = "Length dependence of pditsd", flags = ParameterFlags(0x0) +param "lpscbe1" +units = "", desc = "Length dependence of pscbe1", flags = ParameterFlags(0x0) +param "lpscbe2" +units = "", desc = "Length dependence of pscbe2", flags = ParameterFlags(0x0) +param "lpvag" +units = "", desc = "Length dependence of pvag", flags = ParameterFlags(0x0) +param "lwr" +units = "", desc = "Length dependence of wr", flags = ParameterFlags(0x0) +param "ldwg" +units = "", desc = "Length dependence of dwg", flags = ParameterFlags(0x0) +param "ldwb" +units = "", desc = "Length dependence of dwb", flags = ParameterFlags(0x0) +param "lb0" +units = "", desc = "Length dependence of b0", flags = ParameterFlags(0x0) +param "lb1" +units = "", desc = "Length dependence of b1", flags = ParameterFlags(0x0) +param "lcgsl" +units = "", desc = "Length dependence of cgsl", flags = ParameterFlags(0x0) +param "lcgdl" +units = "", desc = "Length dependence of cgdl", flags = ParameterFlags(0x0) +param "lckappas" +units = "", desc = "Length dependence of ckappas", flags = ParameterFlags(0x0) +param "lckappad" +units = "", desc = "Length dependence of ckappad", flags = ParameterFlags(0x0) +param "lcf" +units = "", desc = "Length dependence of cf", flags = ParameterFlags(0x0) +param "lclc" +units = "", desc = "Length dependence of clc", flags = ParameterFlags(0x0) +param "lcle" +units = "", desc = "Length dependence of cle", flags = ParameterFlags(0x0) +param "lalpha0" +units = "", desc = "Length dependence of alpha0", flags = ParameterFlags(0x0) +param "lalpha1" +units = "", desc = "Length dependence of alpha1", flags = ParameterFlags(0x0) +param "lbeta0" +units = "", desc = "Length dependence of beta0", flags = ParameterFlags(0x0) +param "lagidl" +units = "", desc = "Length dependence of agidl", flags = ParameterFlags(0x0) +param "lbgidl" +units = "", desc = "Length dependence of bgidl", flags = ParameterFlags(0x0) +param "lcgidl" +units = "", desc = "Length dependence of cgidl", flags = ParameterFlags(0x0) +param "lrgidl" +units = "", desc = "Length dependence of rgidl", flags = ParameterFlags(0x0) +param "lkgidl" +units = "", desc = "Length dependence of kgidl", flags = ParameterFlags(0x0) +param "lfgidl" +units = "", desc = "Length dependence of fgidl", flags = ParameterFlags(0x0) +param "legidl" +units = "", desc = "Length dependence of egidl", flags = ParameterFlags(0x0) +param "lagisl" +units = "", desc = "Length dependence of agisl", flags = ParameterFlags(0x0) +param "lbgisl" +units = "", desc = "Length dependence of bgisl", flags = ParameterFlags(0x0) +param "lcgisl" +units = "", desc = "Length dependence of cgisl", flags = ParameterFlags(0x0) +param "lrgisl" +units = "", desc = "Length dependence of rgisl", flags = ParameterFlags(0x0) +param "lkgisl" +units = "", desc = "Length dependence of kgisl", flags = ParameterFlags(0x0) +param "lfgisl" +units = "", desc = "Length dependence of fgisl", flags = ParameterFlags(0x0) +param "legisl" +units = "", desc = "Length dependence of egisl", flags = ParameterFlags(0x0) +param "laigc" +units = "", desc = "Length dependence of aigc", flags = ParameterFlags(0x0) +param "lbigc" +units = "", desc = "Length dependence of bigc", flags = ParameterFlags(0x0) +param "lcigc" +units = "", desc = "Length dependence of cigc", flags = ParameterFlags(0x0) +param "laigsd" +units = "", desc = "Length dependence of aigsd", flags = ParameterFlags(0x0) +param "lbigsd" +units = "", desc = "Length dependence of bigsd", flags = ParameterFlags(0x0) +param "lcigsd" +units = "", desc = "Length dependence of cigsd", flags = ParameterFlags(0x0) +param "laigs" +units = "", desc = "Length dependence of aigs", flags = ParameterFlags(0x0) +param "lbigs" +units = "", desc = "Length dependence of bigs", flags = ParameterFlags(0x0) +param "lcigs" +units = "", desc = "Length dependence of cigs", flags = ParameterFlags(0x0) +param "laigd" +units = "", desc = "Length dependence of aigd", flags = ParameterFlags(0x0) +param "lbigd" +units = "", desc = "Length dependence of bigd", flags = ParameterFlags(0x0) +param "lcigd" +units = "", desc = "Length dependence of cigd", flags = ParameterFlags(0x0) +param "laigbacc" +units = "", desc = "Length dependence of aigbacc", flags = ParameterFlags(0x0) +param "lbigbacc" +units = "", desc = "Length dependence of bigbacc", flags = ParameterFlags(0x0) +param "lcigbacc" +units = "", desc = "Length dependence of cigbacc", flags = ParameterFlags(0x0) +param "laigbinv" +units = "", desc = "Length dependence of aigbinv", flags = ParameterFlags(0x0) +param "lbigbinv" +units = "", desc = "Length dependence of bigbinv", flags = ParameterFlags(0x0) +param "lcigbinv" +units = "", desc = "Length dependence of cigbinv", flags = ParameterFlags(0x0) +param "lnigc" +units = "", desc = "Length dependence of nigc", flags = ParameterFlags(0x0) +param "lnigbinv" +units = "", desc = "Length dependence of nigbinv", flags = ParameterFlags(0x0) +param "lnigbacc" +units = "", desc = "Length dependence of nigbacc", flags = ParameterFlags(0x0) +param "lntox" +units = "", desc = "Length dependence of ntox", flags = ParameterFlags(0x0) +param "leigbinv" +units = "", desc = "Length dependence for eigbinv", flags = ParameterFlags(0x0) +param "lpigcd" +units = "", desc = "Length dependence for pigcd", flags = ParameterFlags(0x0) +param "lpoxedge" +units = "", desc = "Length dependence for poxedge", flags = ParameterFlags(0x0) +param "lvfbcv" +units = "", desc = "Length dependence of vfbcv", flags = ParameterFlags(0x0) +param "lvfb" +units = "", desc = "Length dependence of vfb", flags = ParameterFlags(0x0) +param "lacde" +units = "", desc = "Length dependence of acde", flags = ParameterFlags(0x0) +param "lmoin" +units = "", desc = "Length dependence of moin", flags = ParameterFlags(0x0) +param "lnoff" +units = "", desc = "Length dependence of noff", flags = ParameterFlags(0x0) +param "lvoffcv" +units = "", desc = "Length dependence of voffcv", flags = ParameterFlags(0x0) +param "lxrcrg1" +units = "", desc = "Length dependence of xrcrg1", flags = ParameterFlags(0x0) +param "lxrcrg2" +units = "", desc = "Length dependence of xrcrg2", flags = ParameterFlags(0x0) +param "llambda" +units = "", desc = "Length dependence of lambda", flags = ParameterFlags(0x0) +param "lvtl" +units = "", desc = " Length dependence of vtl", flags = ParameterFlags(0x0) +param "lxn" +units = "", desc = " Length dependence of xn", flags = ParameterFlags(0x0) +param "leu" +units = "", desc = " Length dependence of eu", flags = ParameterFlags(0x0) +param "lucs" +units = "", desc = "Length dependence of lucs", flags = ParameterFlags(0x0) +param "lvfbsdoff" +units = "", desc = "Length dependence of vfbsdoff", flags = ParameterFlags(0x0) +param "ltvfbsdoff" +units = "", desc = "Length dependence of tvfbsdoff", flags = ParameterFlags(0x0) +param "ltvoff" +units = "", desc = "Length dependence of tvoff", flags = ParameterFlags(0x0) +param "ltnfactor" +units = "", desc = "Length dependence of tnfactor", flags = ParameterFlags(0x0) +param "lteta0" +units = "", desc = "Length dependence of teta0", flags = ParameterFlags(0x0) +param "ltvoffcv" +units = "", desc = "Length dependence of tvoffcv", flags = ParameterFlags(0x0) +param "wcdsc" +units = "", desc = "Width dependence of cdsc", flags = ParameterFlags(0x0) +param "wcdscb" +units = "", desc = "Width dependence of cdscb", flags = ParameterFlags(0x0) +param "wcdscd" +units = "", desc = "Width dependence of cdscd", flags = ParameterFlags(0x0) +param "wcit" +units = "", desc = "Width dependence of cit", flags = ParameterFlags(0x0) +param "wnfactor" +units = "", desc = "Width dependence of nfactor", flags = ParameterFlags(0x0) +param "wxj" +units = "", desc = "Width dependence of xj", flags = ParameterFlags(0x0) +param "wvsat" +units = "", desc = "Width dependence of vsat", flags = ParameterFlags(0x0) +param "wat" +units = "", desc = "Width dependence of at", flags = ParameterFlags(0x0) +param "wa0" +units = "", desc = "Width dependence of a0", flags = ParameterFlags(0x0) +param "wags" +units = "", desc = "Width dependence of ags", flags = ParameterFlags(0x0) +param "wa1" +units = "", desc = "Width dependence of a1", flags = ParameterFlags(0x0) +param "wa2" +units = "", desc = "Width dependence of a2", flags = ParameterFlags(0x0) +param "wketa" +units = "", desc = "Width dependence of keta", flags = ParameterFlags(0x0) +param "wketac" +units = "", desc = "Width dependence of ketac", flags = ParameterFlags(0x0) +param "wnsub" +units = "", desc = "Width dependence of nsub", flags = ParameterFlags(0x0) +param "wndep" +units = "", desc = "Width dependence of ndep", flags = ParameterFlags(0x0) +param "wnsd" +units = "", desc = "Width dependence of nsd", flags = ParameterFlags(0x0) +param "wphin" +units = "", desc = "Width dependence of phin", flags = ParameterFlags(0x0) +param "wngate" +units = "", desc = "Width dependence of ngate", flags = ParameterFlags(0x0) +param "wgamma1" +units = "", desc = "Width dependence of gamma1", flags = ParameterFlags(0x0) +param "wgamma2" +units = "", desc = "Width dependence of gamma2", flags = ParameterFlags(0x0) +param "wvbx" +units = "", desc = "Width dependence of vbx", flags = ParameterFlags(0x0) +param "wvbm" +units = "", desc = "Width dependence of vbm", flags = ParameterFlags(0x0) +param "wxt" +units = "", desc = "Width dependence of xt", flags = ParameterFlags(0x0) +param "wk1" +units = "", desc = "Width dependence of k1", flags = ParameterFlags(0x0) +param "wkt1" +units = "", desc = "Width dependence of kt1", flags = ParameterFlags(0x0) +param "wkt1l" +units = "", desc = "Width dependence of kt1l", flags = ParameterFlags(0x0) +param "wkt2" +units = "", desc = "Width dependence of kt2", flags = ParameterFlags(0x0) +param "wk2" +units = "", desc = "Width dependence of k2", flags = ParameterFlags(0x0) +param "wk3" +units = "", desc = "Width dependence of k3", flags = ParameterFlags(0x0) +param "wk3b" +units = "", desc = "Width dependence of k3b", flags = ParameterFlags(0x0) +param "ww0" +units = "", desc = "Width dependence of w0", flags = ParameterFlags(0x0) +param "wdvtp0" +units = "", desc = "Width dependence of dvtp0", flags = ParameterFlags(0x0) +param "wdvtp1" +units = "", desc = "Width dependence of dvtp1", flags = ParameterFlags(0x0) +param "wdvtp2" +units = "", desc = "Width dependence of dvtp2", flags = ParameterFlags(0x0) +param "wdvtp3" +units = "", desc = "Width dependence of dvtp3", flags = ParameterFlags(0x0) +param "wdvtp4" +units = "", desc = "Width dependence of dvtp4", flags = ParameterFlags(0x0) +param "wdvtp5" +units = "", desc = "Width dependence of dvtp5", flags = ParameterFlags(0x0) +param "wlpe0" +units = "", desc = "Width dependence of lpe0", flags = ParameterFlags(0x0) +param "wlpeb" +units = "", desc = "Width dependence of lpeb", flags = ParameterFlags(0x0) +param "wdvt0" +units = "", desc = "Width dependence of dvt0", flags = ParameterFlags(0x0) +param "wdvt1" +units = "", desc = "Width dependence of dvt1", flags = ParameterFlags(0x0) +param "wdvt2" +units = "", desc = "Width dependence of dvt2", flags = ParameterFlags(0x0) +param "wdvt0w" +units = "", desc = "Width dependence of dvt0w", flags = ParameterFlags(0x0) +param "wdvt1w" +units = "", desc = "Width dependence of dvt1w", flags = ParameterFlags(0x0) +param "wdvt2w" +units = "", desc = "Width dependence of dvt2w", flags = ParameterFlags(0x0) +param "wdrout" +units = "", desc = "Width dependence of drout", flags = ParameterFlags(0x0) +param "wdsub" +units = "", desc = "Width dependence of dsub", flags = ParameterFlags(0x0) +param "wvth0", "wvtho" +units = "", desc = "Width dependence of vto", flags = ParameterFlags(0x0) +param "wua" +units = "", desc = "Width dependence of ua", flags = ParameterFlags(0x0) +param "wua1" +units = "", desc = "Width dependence of ua1", flags = ParameterFlags(0x0) +param "wub" +units = "", desc = "Width dependence of ub", flags = ParameterFlags(0x0) +param "wub1" +units = "", desc = "Width dependence of ub1", flags = ParameterFlags(0x0) +param "wuc" +units = "", desc = "Width dependence of uc", flags = ParameterFlags(0x0) +param "wuc1" +units = "", desc = "Width dependence of uc1", flags = ParameterFlags(0x0) +param "wud" +units = "", desc = "Width dependence of ud", flags = ParameterFlags(0x0) +param "wud1" +units = "", desc = "Width dependence of ud1", flags = ParameterFlags(0x0) +param "wup" +units = "", desc = "Width dependence of up", flags = ParameterFlags(0x0) +param "wlp" +units = "", desc = "Width dependence of lp", flags = ParameterFlags(0x0) +param "wu0" +units = "", desc = "Width dependence of u0", flags = ParameterFlags(0x0) +param "wute" +units = "", desc = "Width dependence of ute", flags = ParameterFlags(0x0) +param "wucste" +units = "", desc = "Width dependence of ucste", flags = ParameterFlags(0x0) +param "wvoff" +units = "", desc = "Width dependence of voff", flags = ParameterFlags(0x0) +param "wminv" +units = "", desc = "Width dependence of minv", flags = ParameterFlags(0x0) +param "wminvcv" +units = "", desc = "Width dependence of minvcv", flags = ParameterFlags(0x0) +param "wdelta" +units = "", desc = "Width dependence of delta", flags = ParameterFlags(0x0) +param "wrdsw" +units = "", desc = "Width dependence of rdsw ", flags = ParameterFlags(0x0) +param "wrsw" +units = "", desc = "Width dependence of rsw", flags = ParameterFlags(0x0) +param "wrdw" +units = "", desc = "Width dependence of rdw", flags = ParameterFlags(0x0) +param "wprwg" +units = "", desc = "Width dependence of prwg ", flags = ParameterFlags(0x0) +param "wprwb" +units = "", desc = "Width dependence of prwb ", flags = ParameterFlags(0x0) +param "wprt" +units = "", desc = "Width dependence of prt", flags = ParameterFlags(0x0) +param "weta0" +units = "", desc = "Width dependence of eta0", flags = ParameterFlags(0x0) +param "wetab" +units = "", desc = "Width dependence of etab", flags = ParameterFlags(0x0) +param "wpclm" +units = "", desc = "Width dependence of pclm", flags = ParameterFlags(0x0) +param "wpdiblc1" +units = "", desc = "Width dependence of pdiblc1", flags = ParameterFlags(0x0) +param "wpdiblc2" +units = "", desc = "Width dependence of pdiblc2", flags = ParameterFlags(0x0) +param "wpdiblcb" +units = "", desc = "Width dependence of pdiblcb", flags = ParameterFlags(0x0) +param "wfprout" +units = "", desc = "Width dependence of pdiblcb", flags = ParameterFlags(0x0) +param "wpdits" +units = "", desc = "Width dependence of pdits", flags = ParameterFlags(0x0) +param "wpditsd" +units = "", desc = "Width dependence of pditsd", flags = ParameterFlags(0x0) +param "wpscbe1" +units = "", desc = "Width dependence of pscbe1", flags = ParameterFlags(0x0) +param "wpscbe2" +units = "", desc = "Width dependence of pscbe2", flags = ParameterFlags(0x0) +param "wpvag" +units = "", desc = "Width dependence of pvag", flags = ParameterFlags(0x0) +param "wwr" +units = "", desc = "Width dependence of wr", flags = ParameterFlags(0x0) +param "wdwg" +units = "", desc = "Width dependence of dwg", flags = ParameterFlags(0x0) +param "wdwb" +units = "", desc = "Width dependence of dwb", flags = ParameterFlags(0x0) +param "wb0" +units = "", desc = "Width dependence of b0", flags = ParameterFlags(0x0) +param "wb1" +units = "", desc = "Width dependence of b1", flags = ParameterFlags(0x0) +param "wcgsl" +units = "", desc = "Width dependence of cgsl", flags = ParameterFlags(0x0) +param "wcgdl" +units = "", desc = "Width dependence of cgdl", flags = ParameterFlags(0x0) +param "wckappas" +units = "", desc = "Width dependence of ckappas", flags = ParameterFlags(0x0) +param "wckappad" +units = "", desc = "Width dependence of ckappad", flags = ParameterFlags(0x0) +param "wcf" +units = "", desc = "Width dependence of cf", flags = ParameterFlags(0x0) +param "wclc" +units = "", desc = "Width dependence of clc", flags = ParameterFlags(0x0) +param "wcle" +units = "", desc = "Width dependence of cle", flags = ParameterFlags(0x0) +param "walpha0" +units = "", desc = "Width dependence of alpha0", flags = ParameterFlags(0x0) +param "walpha1" +units = "", desc = "Width dependence of alpha1", flags = ParameterFlags(0x0) +param "wbeta0" +units = "", desc = "Width dependence of beta0", flags = ParameterFlags(0x0) +param "wagidl" +units = "", desc = "Width dependence of agidl", flags = ParameterFlags(0x0) +param "wbgidl" +units = "", desc = "Width dependence of bgidl", flags = ParameterFlags(0x0) +param "wcgidl" +units = "", desc = "Width dependence of cgidl", flags = ParameterFlags(0x0) +param "wrgidl" +units = "", desc = "Width dependence of rgidl", flags = ParameterFlags(0x0) +param "wkgidl" +units = "", desc = "Width dependence of kgidl", flags = ParameterFlags(0x0) +param "wfgidl" +units = "", desc = "Width dependence of fgidl", flags = ParameterFlags(0x0) +param "wegidl" +units = "", desc = "Width dependence of egidl", flags = ParameterFlags(0x0) +param "wagisl" +units = "", desc = "Width dependence of agisl", flags = ParameterFlags(0x0) +param "wbgisl" +units = "", desc = "Width dependence of bgisl", flags = ParameterFlags(0x0) +param "wcgisl" +units = "", desc = "Width dependence of cgisl", flags = ParameterFlags(0x0) +param "wrgisl" +units = "", desc = "Width dependence of rgisl", flags = ParameterFlags(0x0) +param "wkgisl" +units = "", desc = "Width dependence of kgisl", flags = ParameterFlags(0x0) +param "wfgisl" +units = "", desc = "Width dependence of fgisl", flags = ParameterFlags(0x0) +param "wegisl" +units = "", desc = "Width dependence of egisl", flags = ParameterFlags(0x0) +param "waigc" +units = "", desc = "Width dependence of aigc", flags = ParameterFlags(0x0) +param "wbigc" +units = "", desc = "Width dependence of bigc", flags = ParameterFlags(0x0) +param "wcigc" +units = "", desc = "Width dependence of cigc", flags = ParameterFlags(0x0) +param "waigsd" +units = "", desc = "Width dependence of aigsd", flags = ParameterFlags(0x0) +param "wbigsd" +units = "", desc = "Width dependence of bigsd", flags = ParameterFlags(0x0) +param "wcigsd" +units = "", desc = "Width dependence of cigsd", flags = ParameterFlags(0x0) +param "waigs" +units = "", desc = "Width dependence of aigs", flags = ParameterFlags(0x0) +param "wbigs" +units = "", desc = "Width dependence of bigs", flags = ParameterFlags(0x0) +param "wcigs" +units = "", desc = "Width dependence of cigs", flags = ParameterFlags(0x0) +param "waigd" +units = "", desc = "Width dependence of aigd", flags = ParameterFlags(0x0) +param "wbigd" +units = "", desc = "Width dependence of bigd", flags = ParameterFlags(0x0) +param "wcigd" +units = "", desc = "Width dependence of cigd", flags = ParameterFlags(0x0) +param "waigbacc" +units = "", desc = "Width dependence of aigbacc", flags = ParameterFlags(0x0) +param "wbigbacc" +units = "", desc = "Width dependence of bigbacc", flags = ParameterFlags(0x0) +param "wcigbacc" +units = "", desc = "Width dependence of cigbacc", flags = ParameterFlags(0x0) +param "waigbinv" +units = "", desc = "Width dependence of aigbinv", flags = ParameterFlags(0x0) +param "wbigbinv" +units = "", desc = "Width dependence of bigbinv", flags = ParameterFlags(0x0) +param "wcigbinv" +units = "", desc = "Width dependence of cigbinv", flags = ParameterFlags(0x0) +param "wnigc" +units = "", desc = "Width dependence of nigc", flags = ParameterFlags(0x0) +param "wnigbinv" +units = "", desc = "Width dependence of nigbinv", flags = ParameterFlags(0x0) +param "wnigbacc" +units = "", desc = "Width dependence of nigbacc", flags = ParameterFlags(0x0) +param "wntox" +units = "", desc = "Width dependence of ntox", flags = ParameterFlags(0x0) +param "weigbinv" +units = "", desc = "Width dependence for eigbinv", flags = ParameterFlags(0x0) +param "wpigcd" +units = "", desc = "Width dependence for pigcd", flags = ParameterFlags(0x0) +param "wpoxedge" +units = "", desc = "Width dependence for poxedge", flags = ParameterFlags(0x0) +param "wvfbcv" +units = "", desc = "Width dependence of vfbcv", flags = ParameterFlags(0x0) +param "wvfb" +units = "", desc = "Width dependence of vfb", flags = ParameterFlags(0x0) +param "wacde" +units = "", desc = "Width dependence of acde", flags = ParameterFlags(0x0) +param "wmoin" +units = "", desc = "Width dependence of moin", flags = ParameterFlags(0x0) +param "wnoff" +units = "", desc = "Width dependence of noff", flags = ParameterFlags(0x0) +param "wvoffcv" +units = "", desc = "Width dependence of voffcv", flags = ParameterFlags(0x0) +param "wxrcrg1" +units = "", desc = "Width dependence of xrcrg1", flags = ParameterFlags(0x0) +param "wxrcrg2" +units = "", desc = "Width dependence of xrcrg2", flags = ParameterFlags(0x0) +param "wlambda" +units = "", desc = "Width dependence of lambda", flags = ParameterFlags(0x0) +param "wvtl" +units = "", desc = "Width dependence of vtl", flags = ParameterFlags(0x0) +param "wxn" +units = "", desc = "Width dependence of xn", flags = ParameterFlags(0x0) +param "weu" +units = "", desc = "Width dependence of eu", flags = ParameterFlags(0x0) +param "wucs" +units = "", desc = "Width dependence of ucs", flags = ParameterFlags(0x0) +param "wvfbsdoff" +units = "", desc = "Width dependence of vfbsdoff", flags = ParameterFlags(0x0) +param "wtvfbsdoff" +units = "", desc = "Width dependence of tvfbsdoff", flags = ParameterFlags(0x0) +param "wtvoff" +units = "", desc = "Width dependence of tvoff", flags = ParameterFlags(0x0) +param "wtnfactor" +units = "", desc = "Width dependence of tnfactor", flags = ParameterFlags(0x0) +param "wteta0" +units = "", desc = "Width dependence of teta0", flags = ParameterFlags(0x0) +param "wtvoffcv" +units = "", desc = "Width dependence of tvoffcv", flags = ParameterFlags(0x0) +param "pcdsc" +units = "", desc = "Cross-term dependence of cdsc", flags = ParameterFlags(0x0) +param "pcdscb" +units = "", desc = "Cross-term dependence of cdscb", flags = ParameterFlags(0x0) +param "pcdscd" +units = "", desc = "Cross-term dependence of cdscd", flags = ParameterFlags(0x0) +param "pcit" +units = "", desc = "Cross-term dependence of cit", flags = ParameterFlags(0x0) +param "pnfactor" +units = "", desc = "Cross-term dependence of nfactor", flags = ParameterFlags(0x0) +param "pxj" +units = "", desc = "Cross-term dependence of xj", flags = ParameterFlags(0x0) +param "pvsat" +units = "", desc = "Cross-term dependence of vsat", flags = ParameterFlags(0x0) +param "pat" +units = "", desc = "Cross-term dependence of at", flags = ParameterFlags(0x0) +param "pa0" +units = "", desc = "Cross-term dependence of a0", flags = ParameterFlags(0x0) +param "pags" +units = "", desc = "Cross-term dependence of ags", flags = ParameterFlags(0x0) +param "pa1" +units = "", desc = "Cross-term dependence of a1", flags = ParameterFlags(0x0) +param "pa2" +units = "", desc = "Cross-term dependence of a2", flags = ParameterFlags(0x0) +param "pketa" +units = "", desc = "Cross-term dependence of keta", flags = ParameterFlags(0x0) +param "pketac" +units = "", desc = "Cross-term dependence of ketac", flags = ParameterFlags(0x0) +param "pnsub" +units = "", desc = "Cross-term dependence of nsub", flags = ParameterFlags(0x0) +param "pndep" +units = "", desc = "Cross-term dependence of ndep", flags = ParameterFlags(0x0) +param "pnsd" +units = "", desc = "Cross-term dependence of nsd", flags = ParameterFlags(0x0) +param "pphin" +units = "", desc = "Cross-term dependence of phin", flags = ParameterFlags(0x0) +param "pngate" +units = "", desc = "Cross-term dependence of ngate", flags = ParameterFlags(0x0) +param "pgamma1" +units = "", desc = "Cross-term dependence of gamma1", flags = ParameterFlags(0x0) +param "pgamma2" +units = "", desc = "Cross-term dependence of gamma2", flags = ParameterFlags(0x0) +param "pvbx" +units = "", desc = "Cross-term dependence of vbx", flags = ParameterFlags(0x0) +param "pvbm" +units = "", desc = "Cross-term dependence of vbm", flags = ParameterFlags(0x0) +param "pxt" +units = "", desc = "Cross-term dependence of xt", flags = ParameterFlags(0x0) +param "pk1" +units = "", desc = "Cross-term dependence of k1", flags = ParameterFlags(0x0) +param "pkt1" +units = "", desc = "Cross-term dependence of kt1", flags = ParameterFlags(0x0) +param "pkt1l" +units = "", desc = "Cross-term dependence of kt1l", flags = ParameterFlags(0x0) +param "pkt2" +units = "", desc = "Cross-term dependence of kt2", flags = ParameterFlags(0x0) +param "pk2" +units = "", desc = "Cross-term dependence of k2", flags = ParameterFlags(0x0) +param "pk3" +units = "", desc = "Cross-term dependence of k3", flags = ParameterFlags(0x0) +param "pk3b" +units = "", desc = "Cross-term dependence of k3b", flags = ParameterFlags(0x0) +param "pw0" +units = "", desc = "Cross-term dependence of w0", flags = ParameterFlags(0x0) +param "pdvtp0" +units = "", desc = "Cross-term dependence of dvtp0", flags = ParameterFlags(0x0) +param "pdvtp1" +units = "", desc = "Cross-term dependence of dvtp1", flags = ParameterFlags(0x0) +param "pdvtp2" +units = "", desc = "Cross-term dependence of dvtp2", flags = ParameterFlags(0x0) +param "pdvtp3" +units = "", desc = "Cross-term dependence of dvtp3", flags = ParameterFlags(0x0) +param "pdvtp4" +units = "", desc = "Cross-term dependence of dvtp4", flags = ParameterFlags(0x0) +param "pdvtp5" +units = "", desc = "Cross-term dependence of dvtp5", flags = ParameterFlags(0x0) +param "plpe0" +units = "", desc = "Cross-term dependence of lpe0", flags = ParameterFlags(0x0) +param "plpeb" +units = "", desc = "Cross-term dependence of lpeb", flags = ParameterFlags(0x0) +param "pdvt0" +units = "", desc = "Cross-term dependence of dvt0", flags = ParameterFlags(0x0) +param "pdvt1" +units = "", desc = "Cross-term dependence of dvt1", flags = ParameterFlags(0x0) +param "pdvt2" +units = "", desc = "Cross-term dependence of dvt2", flags = ParameterFlags(0x0) +param "pdvt0w" +units = "", desc = "Cross-term dependence of dvt0w", flags = ParameterFlags(0x0) +param "pdvt1w" +units = "", desc = "Cross-term dependence of dvt1w", flags = ParameterFlags(0x0) +param "pdvt2w" +units = "", desc = "Cross-term dependence of dvt2w", flags = ParameterFlags(0x0) +param "pdrout" +units = "", desc = "Cross-term dependence of drout", flags = ParameterFlags(0x0) +param "pdsub" +units = "", desc = "Cross-term dependence of dsub", flags = ParameterFlags(0x0) +param "pvth0", "pvtho" +units = "", desc = "Cross-term dependence of vto", flags = ParameterFlags(0x0) +param "pua" +units = "", desc = "Cross-term dependence of ua", flags = ParameterFlags(0x0) +param "pua1" +units = "", desc = "Cross-term dependence of ua1", flags = ParameterFlags(0x0) +param "pub" +units = "", desc = "Cross-term dependence of ub", flags = ParameterFlags(0x0) +param "pub1" +units = "", desc = "Cross-term dependence of ub1", flags = ParameterFlags(0x0) +param "puc" +units = "", desc = "Cross-term dependence of uc", flags = ParameterFlags(0x0) +param "puc1" +units = "", desc = "Cross-term dependence of uc1", flags = ParameterFlags(0x0) +param "pud" +units = "", desc = "Cross-term dependence of ud", flags = ParameterFlags(0x0) +param "pud1" +units = "", desc = "Cross-term dependence of ud1", flags = ParameterFlags(0x0) +param "pup" +units = "", desc = "Cross-term dependence of up", flags = ParameterFlags(0x0) +param "plp" +units = "", desc = "Cross-term dependence of lp", flags = ParameterFlags(0x0) +param "pu0" +units = "", desc = "Cross-term dependence of u0", flags = ParameterFlags(0x0) +param "pute" +units = "", desc = "Cross-term dependence of ute", flags = ParameterFlags(0x0) +param "pucste" +units = "", desc = "Cross-term dependence of ucste", flags = ParameterFlags(0x0) +param "pvoff" +units = "", desc = "Cross-term dependence of voff", flags = ParameterFlags(0x0) +param "pminv" +units = "", desc = "Cross-term dependence of minv", flags = ParameterFlags(0x0) +param "pminvcv" +units = "", desc = "Cross-term dependence of minvcv", flags = ParameterFlags(0x0) +param "pdelta" +units = "", desc = "Cross-term dependence of delta", flags = ParameterFlags(0x0) +param "prdsw" +units = "", desc = "Cross-term dependence of rdsw ", flags = ParameterFlags(0x0) +param "prsw" +units = "", desc = "Cross-term dependence of rsw", flags = ParameterFlags(0x0) +param "prdw" +units = "", desc = "Cross-term dependence of rdw", flags = ParameterFlags(0x0) +param "pprwg" +units = "", desc = "Cross-term dependence of prwg ", flags = ParameterFlags(0x0) +param "pprwb" +units = "", desc = "Cross-term dependence of prwb ", flags = ParameterFlags(0x0) +param "pprt" +units = "", desc = "Cross-term dependence of prt ", flags = ParameterFlags(0x0) +param "peta0" +units = "", desc = "Cross-term dependence of eta0", flags = ParameterFlags(0x0) +param "petab" +units = "", desc = "Cross-term dependence of etab", flags = ParameterFlags(0x0) +param "ppclm" +units = "", desc = "Cross-term dependence of pclm", flags = ParameterFlags(0x0) +param "ppdiblc1" +units = "", desc = "Cross-term dependence of pdiblc1", flags = ParameterFlags(0x0) +param "ppdiblc2" +units = "", desc = "Cross-term dependence of pdiblc2", flags = ParameterFlags(0x0) +param "ppdiblcb" +units = "", desc = "Cross-term dependence of pdiblcb", flags = ParameterFlags(0x0) +param "pfprout" +units = "", desc = "Cross-term dependence of pdiblcb", flags = ParameterFlags(0x0) +param "ppdits" +units = "", desc = "Cross-term dependence of pdits", flags = ParameterFlags(0x0) +param "ppditsd" +units = "", desc = "Cross-term dependence of pditsd", flags = ParameterFlags(0x0) +param "ppscbe1" +units = "", desc = "Cross-term dependence of pscbe1", flags = ParameterFlags(0x0) +param "ppscbe2" +units = "", desc = "Cross-term dependence of pscbe2", flags = ParameterFlags(0x0) +param "ppvag" +units = "", desc = "Cross-term dependence of pvag", flags = ParameterFlags(0x0) +param "pwr" +units = "", desc = "Cross-term dependence of wr", flags = ParameterFlags(0x0) +param "pdwg" +units = "", desc = "Cross-term dependence of dwg", flags = ParameterFlags(0x0) +param "pdwb" +units = "", desc = "Cross-term dependence of dwb", flags = ParameterFlags(0x0) +param "pb0" +units = "", desc = "Cross-term dependence of b0", flags = ParameterFlags(0x0) +param "pb1" +units = "", desc = "Cross-term dependence of b1", flags = ParameterFlags(0x0) +param "pcgsl" +units = "", desc = "Cross-term dependence of cgsl", flags = ParameterFlags(0x0) +param "pcgdl" +units = "", desc = "Cross-term dependence of cgdl", flags = ParameterFlags(0x0) +param "pckappas" +units = "", desc = "Cross-term dependence of ckappas", flags = ParameterFlags(0x0) +param "pckappad" +units = "", desc = "Cross-term dependence of ckappad", flags = ParameterFlags(0x0) +param "pcf" +units = "", desc = "Cross-term dependence of cf", flags = ParameterFlags(0x0) +param "pclc" +units = "", desc = "Cross-term dependence of clc", flags = ParameterFlags(0x0) +param "pcle" +units = "", desc = "Cross-term dependence of cle", flags = ParameterFlags(0x0) +param "palpha0" +units = "", desc = "Cross-term dependence of alpha0", flags = ParameterFlags(0x0) +param "palpha1" +units = "", desc = "Cross-term dependence of alpha1", flags = ParameterFlags(0x0) +param "pbeta0" +units = "", desc = "Cross-term dependence of beta0", flags = ParameterFlags(0x0) +param "pagidl" +units = "", desc = "Cross-term dependence of agidl", flags = ParameterFlags(0x0) +param "pbgidl" +units = "", desc = "Cross-term dependence of bgidl", flags = ParameterFlags(0x0) +param "pcgidl" +units = "", desc = "Cross-term dependence of cgidl", flags = ParameterFlags(0x0) +param "prgidl" +units = "", desc = "Cross-term dependence of rgidl", flags = ParameterFlags(0x0) +param "pkgidl" +units = "", desc = "Cross-term dependence of kgidl", flags = ParameterFlags(0x0) +param "pfgidl" +units = "", desc = "Cross-term dependence of fgidl", flags = ParameterFlags(0x0) +param "pegidl" +units = "", desc = "Cross-term dependence of egidl", flags = ParameterFlags(0x0) +param "pagisl" +units = "", desc = "Cross-term dependence of agisl", flags = ParameterFlags(0x0) +param "pbgisl" +units = "", desc = "Cross-term dependence of bgisl", flags = ParameterFlags(0x0) +param "pcgisl" +units = "", desc = "Cross-term dependence of cgisl", flags = ParameterFlags(0x0) +param "pegisl" +units = "", desc = "Cross-term dependence of egisl", flags = ParameterFlags(0x0) +param "prgisl" +units = "", desc = "Cross-term dependence of rgisl", flags = ParameterFlags(0x0) +param "pkgisl" +units = "", desc = "Cross-term dependence of kgisl", flags = ParameterFlags(0x0) +param "pfgisl" +units = "", desc = "Cross-term dependence of fgisl", flags = ParameterFlags(0x0) +param "paigc" +units = "", desc = "Cross-term dependence of aigc", flags = ParameterFlags(0x0) +param "pbigc" +units = "", desc = "Cross-term dependence of bigc", flags = ParameterFlags(0x0) +param "pcigc" +units = "", desc = "Cross-term dependence of cigc", flags = ParameterFlags(0x0) +param "paigsd" +units = "", desc = "Cross-term dependence of aigsd", flags = ParameterFlags(0x0) +param "pbigsd" +units = "", desc = "Cross-term dependence of bigsd", flags = ParameterFlags(0x0) +param "pcigsd" +units = "", desc = "Cross-term dependence of cigsd", flags = ParameterFlags(0x0) +param "paigs" +units = "", desc = "Cross-term dependence of aigs", flags = ParameterFlags(0x0) +param "pbigs" +units = "", desc = "Cross-term dependence of bigs", flags = ParameterFlags(0x0) +param "pcigs" +units = "", desc = "Cross-term dependence of cigs", flags = ParameterFlags(0x0) +param "paigd" +units = "", desc = "Cross-term dependence of aigd", flags = ParameterFlags(0x0) +param "pbigd" +units = "", desc = "Cross-term dependence of bigd", flags = ParameterFlags(0x0) +param "pcigd" +units = "", desc = "Cross-term dependence of cigd", flags = ParameterFlags(0x0) +param "paigbacc" +units = "", desc = "Cross-term dependence of aigbacc", flags = ParameterFlags(0x0) +param "pbigbacc" +units = "", desc = "Cross-term dependence of bigbacc", flags = ParameterFlags(0x0) +param "pcigbacc" +units = "", desc = "Cross-term dependence of cigbacc", flags = ParameterFlags(0x0) +param "paigbinv" +units = "", desc = "Cross-term dependence of aigbinv", flags = ParameterFlags(0x0) +param "pbigbinv" +units = "", desc = "Cross-term dependence of bigbinv", flags = ParameterFlags(0x0) +param "pcigbinv" +units = "", desc = "Cross-term dependence of cigbinv", flags = ParameterFlags(0x0) +param "pnigc" +units = "", desc = "Cross-term dependence of nigc", flags = ParameterFlags(0x0) +param "pnigbinv" +units = "", desc = "Cross-term dependence of nigbinv", flags = ParameterFlags(0x0) +param "pnigbacc" +units = "", desc = "Cross-term dependence of nigbacc", flags = ParameterFlags(0x0) +param "pntox" +units = "", desc = "Cross-term dependence of ntox", flags = ParameterFlags(0x0) +param "peigbinv" +units = "", desc = "Cross-term dependence for eigbinv", flags = ParameterFlags(0x0) +param "ppigcd" +units = "", desc = "Cross-term dependence for pigcd", flags = ParameterFlags(0x0) +param "ppoxedge" +units = "", desc = "Cross-term dependence for poxedge", flags = ParameterFlags(0x0) +param "pvfbcv" +units = "", desc = "Cross-term dependence of vfbcv", flags = ParameterFlags(0x0) +param "pvfb" +units = "", desc = "Cross-term dependence of vfb", flags = ParameterFlags(0x0) +param "pacde" +units = "", desc = "Cross-term dependence of acde", flags = ParameterFlags(0x0) +param "pmoin" +units = "", desc = "Cross-term dependence of moin", flags = ParameterFlags(0x0) +param "pnoff" +units = "", desc = "Cross-term dependence of noff", flags = ParameterFlags(0x0) +param "pvoffcv" +units = "", desc = "Cross-term dependence of voffcv", flags = ParameterFlags(0x0) +param "pxrcrg1" +units = "", desc = "Cross-term dependence of xrcrg1", flags = ParameterFlags(0x0) +param "pxrcrg2" +units = "", desc = "Cross-term dependence of xrcrg2", flags = ParameterFlags(0x0) +param "plambda" +units = "", desc = "Cross-term dependence of lambda", flags = ParameterFlags(0x0) +param "pvtl" +units = "", desc = "Cross-term dependence of vtl", flags = ParameterFlags(0x0) +param "pxn" +units = "", desc = "Cross-term dependence of xn", flags = ParameterFlags(0x0) +param "peu" +units = "", desc = "Cross-term dependence of eu", flags = ParameterFlags(0x0) +param "pucs" +units = "", desc = "Cross-term dependence of ucs", flags = ParameterFlags(0x0) +param "pvfbsdoff" +units = "", desc = "Cross-term dependence of vfbsdoff", flags = ParameterFlags(0x0) +param "ptvfbsdoff" +units = "", desc = "Cross-term dependence of tvfbsdoff", flags = ParameterFlags(0x0) +param "ptvoff" +units = "", desc = "Cross-term dependence of tvoff", flags = ParameterFlags(0x0) +param "ptnfactor" +units = "", desc = "Cross-term dependence of tnfactor", flags = ParameterFlags(0x0) +param "pteta0" +units = "", desc = "Cross-term dependence of teta0", flags = ParameterFlags(0x0) +param "ptvoffcv" +units = "", desc = "Cross-term dependence of tvoffcv", flags = ParameterFlags(0x0) +param "saref" +units = "", desc = "Reference distance between OD edge to poly of one side", flags = ParameterFlags(0x0) +param "sbref" +units = "", desc = "Reference distance between OD edge to poly of the other side", flags = ParameterFlags(0x0) +param "wlod" +units = "", desc = "Width parameter for stress effect", flags = ParameterFlags(0x0) +param "ku0" +units = "", desc = "Mobility degradation/enhancement coefficient for LOD", flags = ParameterFlags(0x0) +param "kvsat" +units = "", desc = "Saturation velocity degradation/enhancement parameter for LOD", flags = ParameterFlags(0x0) +param "kvth0" +units = "", desc = "Threshold degradation/enhancement parameter for LOD", flags = ParameterFlags(0x0) +param "tku0" +units = "", desc = "Temperature coefficient of KU0", flags = ParameterFlags(0x0) +param "llodku0" +units = "", desc = "Length parameter for u0 LOD effect", flags = ParameterFlags(0x0) +param "wlodku0" +units = "", desc = "Width parameter for u0 LOD effect", flags = ParameterFlags(0x0) +param "llodvth" +units = "", desc = "Length parameter for vth LOD effect", flags = ParameterFlags(0x0) +param "wlodvth" +units = "", desc = "Width parameter for vth LOD effect", flags = ParameterFlags(0x0) +param "lku0" +units = "", desc = "Length dependence of ku0", flags = ParameterFlags(0x0) +param "wku0" +units = "", desc = "Width dependence of ku0", flags = ParameterFlags(0x0) +param "pku0" +units = "", desc = "Cross-term dependence of ku0", flags = ParameterFlags(0x0) +param "lkvth0" +units = "", desc = "Length dependence of kvth0", flags = ParameterFlags(0x0) +param "wkvth0" +units = "", desc = "Width dependence of kvth0", flags = ParameterFlags(0x0) +param "pkvth0" +units = "", desc = "Cross-term dependence of kvth0", flags = ParameterFlags(0x0) +param "stk2" +units = "", desc = "K2 shift factor related to stress effect on vth", flags = ParameterFlags(0x0) +param "lodk2" +units = "", desc = "K2 shift modification factor for stress effect", flags = ParameterFlags(0x0) +param "steta0" +units = "", desc = "eta0 shift factor related to stress effect on vth", flags = ParameterFlags(0x0) +param "lodeta0" +units = "", desc = "eta0 shift modification factor for stress effect", flags = ParameterFlags(0x0) +param "web" +units = "", desc = "Coefficient for SCB", flags = ParameterFlags(0x0) +param "wec" +units = "", desc = "Coefficient for SCC", flags = ParameterFlags(0x0) +param "kvth0we" +units = "", desc = "Threshold shift factor for well proximity effect", flags = ParameterFlags(0x0) +param "k2we" +units = "", desc = " K2 shift factor for well proximity effect ", flags = ParameterFlags(0x0) +param "ku0we" +units = "", desc = " Mobility degradation factor for well proximity effect ", flags = ParameterFlags(0x0) +param "scref" +units = "", desc = " Reference distance to calculate SCA, SCB and SCC", flags = ParameterFlags(0x0) +param "wpemod" +units = "", desc = " Flag for WPE model (WPEMOD=1 to activate this model) ", flags = ParameterFlags(0x0) +param "lkvth0we" +units = "", desc = "Length dependence of kvth0we", flags = ParameterFlags(0x0) +param "lk2we" +units = "", desc = " Length dependence of k2we ", flags = ParameterFlags(0x0) +param "lku0we" +units = "", desc = " Length dependence of ku0we ", flags = ParameterFlags(0x0) +param "wkvth0we" +units = "", desc = "Width dependence of kvth0we", flags = ParameterFlags(0x0) +param "wk2we" +units = "", desc = " Width dependence of k2we ", flags = ParameterFlags(0x0) +param "wku0we" +units = "", desc = " Width dependence of ku0we ", flags = ParameterFlags(0x0) +param "pkvth0we" +units = "", desc = "Cross-term dependence of kvth0we", flags = ParameterFlags(0x0) +param "pk2we" +units = "", desc = " Cross-term dependence of k2we ", flags = ParameterFlags(0x0) +param "pku0we" +units = "", desc = " Cross-term dependence of ku0we ", flags = ParameterFlags(0x0) +param "noia" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "noib" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "noic" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "tnoia" +units = "", desc = "Thermal noise parameter", flags = ParameterFlags(0x0) +param "tnoib" +units = "", desc = "Thermal noise parameter", flags = ParameterFlags(0x0) +param "tnoic" +units = "", desc = "Thermal noise parameter", flags = ParameterFlags(0x0) +param "rnoia" +units = "", desc = "Thermal noise coefficient", flags = ParameterFlags(0x0) +param "rnoib" +units = "", desc = "Thermal noise coefficient", flags = ParameterFlags(0x0) +param "rnoic" +units = "", desc = "Thermal noise coefficient", flags = ParameterFlags(0x0) +param "gidlclamp" +units = "", desc = "gidl clamp value", flags = ParameterFlags(0x0) +param "idovvds" +units = "", desc = "noise clamping limit parameter", flags = ParameterFlags(0x0) +param "ntnoi" +units = "", desc = "Thermal noise parameter", flags = ParameterFlags(0x0) +param "em" +units = "", desc = "Flicker noise parameter", flags = ParameterFlags(0x0) +param "ef" +units = "", desc = "Flicker noise frequency exponent", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "vgs_max" +units = "", desc = "maximum voltage G-S branch", flags = ParameterFlags(0x0) +param "vgd_max" +units = "", desc = "maximum voltage G-D branch", flags = ParameterFlags(0x0) +param "vgb_max" +units = "", desc = "maximum voltage G-B branch", flags = ParameterFlags(0x0) +param "vds_max" +units = "", desc = "maximum voltage D-S branch", flags = ParameterFlags(0x0) +param "vbs_max" +units = "", desc = "maximum voltage B-S branch", flags = ParameterFlags(0x0) +param "vbd_max" +units = "", desc = "maximum voltage B-D branch", flags = ParameterFlags(0x0) +param "vgsr_max" +units = "", desc = "maximum voltage G-S branch", flags = ParameterFlags(0x0) +param "vgdr_max" +units = "", desc = "maximum voltage G-D branch", flags = ParameterFlags(0x0) +param "vgbr_max" +units = "", desc = "maximum voltage G-B branch", flags = ParameterFlags(0x0) +param "vbsr_max" +units = "", desc = "maximum voltage B-S branch", flags = ParameterFlags(0x0) +param "vbdr_max" +units = "", desc = "maximum voltage B-D branch", flags = ParameterFlags(0x0) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "g_int" units = "V", runits = "A" +node "gmid_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "b_int" units = "V", runits = "A" +node "db_int" units = "V", runits = "A" +node "sb_int" units = "V", runits = "A" +node "q_int" units = "V", runits = "A" +node "noise_int" units = "V", runits = "A" +node(flow) "flow(noise_br_c)" units = "A", runits = "A" +node(flow) "flow(noise_br_i)" units = "A", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, gmid_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, db_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, sb_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, gmid_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, db_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, flow(noise_br_c)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, flow(noise_br_i)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g_int, gmid_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, flow(noise_br_c)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gmid_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (gmid_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gmid_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gmid_int, gmid_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gmid_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (gmid_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, gmid_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, db_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (s_int, sb_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, flow(noise_br_c)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, flow(noise_br_i)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, gmid_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, db_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, sb_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (db_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (db_int, db_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sb_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sb_int, sb_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (q_int, q_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (noise_int, noise_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (noise_int, flow(noise_br_c)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (noise_int, flow(noise_br_i)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(noise_br_c), d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (flow(noise_br_c), g_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (flow(noise_br_c), s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (flow(noise_br_c), b_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (flow(noise_br_c), noise_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (flow(noise_br_c), flow(noise_br_c)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(noise_br_i), flow(noise_br_i)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +collapsible (g_int, g) +collapsible (gmid_int, g) +collapsible (sb_int, b) +collapsible (b_int, sb_int) +collapsible (db_int, b_int) +collapsible (q_int, gnd) +collapsible (noise_int, gnd) +collapsible (flow(noise_br_c), gnd) +collapsible (flow(noise_br_i), gnd) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "rg" (g_int, g) +noise "rg" (gmid_int, g) +noise "rbsb" (sb_int, b) +noise "rbps" (b_int, sb_int) +noise "rbpd" (db_int, b_int) +noise "rbdb" (b, db_int) +noise "rbpb" (b, b_int) +noise "igb" (g_int, b_int) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +noise "igs" (g_int, s_int) +noise "igd" (g_int, d_int) +noise "corl" (flow(noise_br_i), gnd) +9 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_capacitor.snap b/openvaf/test_data/osdi/vacask_spice_capacitor.snap new file mode 100644 index 000000000..5871af584 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_capacitor.snap @@ -0,0 +1,58 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "capacitance", "cap", "c" +units = "", desc = "Device capacitance", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference from the rest of the circuit", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Device width", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Device length", flags = ParameterFlags(PARA_KIND_INST) +param "tc1" +units = "", desc = "First order temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "tc2" +units = "", desc = "Second order temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "bv_max" +units = "", desc = "maximum voltage over capacitance", flags = ParameterFlags(PARA_KIND_INST) +param "scale" +units = "", desc = "Scale factor", flags = ParameterFlags(PARA_KIND_INST) +param "model_cap" +units = "", desc = "Model capacitance", flags = ParameterFlags(0x0) +param "cj", "cox" +units = "", desc = "Bottom Capacitance per area", flags = ParameterFlags(0x0) +param "cjsw", "capsw" +units = "", desc = "Sidewall capacitance per meter", flags = ParameterFlags(0x0) +param "defw", "model_w" +units = "", desc = "Default width", flags = ParameterFlags(0x0) +param "defl", "model_l" +units = "", desc = "Default length", flags = ParameterFlags(0x0) +param "narrow" +units = "", desc = "width correction factor", flags = ParameterFlags(0x0) +param "short" +units = "", desc = "length correction factor", flags = ParameterFlags(0x0) +param "del" +units = "", desc = "length and width correction factor", flags = ParameterFlags(0x0) +param "model_tc1" +units = "", desc = "First order temp. coefficient", flags = ParameterFlags(0x0) +param "model_tc2" +units = "", desc = "Second order temp. coefficient", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "di" +units = "", desc = "Relative dielectric constant", flags = ParameterFlags(0x0) +param "thick" +units = "", desc = "Insulator thickness", flags = ParameterFlags(0x0) +param "model_bv_max" +units = "", desc = "maximum voltage over capacitance", flags = ParameterFlags(0x0) + +2 terminals +node "pos" units = "V", runits = "A" +node "neg" units = "V", runits = "A" +jacobian (pos, pos) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (pos, neg) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (neg, pos) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (neg, neg) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_diode.snap b/openvaf/test_data/osdi/vacask_spice_diode.snap new file mode 100644 index 000000000..93ee2e523 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_diode.snap @@ -0,0 +1,172 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance delta temperature", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "pj", "perim" +units = "", desc = "Perimeter factor", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Diode width", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Diode length", flags = ParameterFlags(PARA_KIND_INST) +param "lm" +units = "", desc = "Length of metal capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "lp" +units = "", desc = "Length of polysilicon capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "wm" +units = "", desc = "Width of metal capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "wp" +units = "", desc = "Width of polysilicon capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "level" +units = "", desc = "Diode level selector", flags = ParameterFlags(PARA_TY_INT) +param "is", "js" +units = "", desc = "Saturation current", flags = ParameterFlags(0x0) +param "jsw", "isw" +units = "", desc = "Sidewall Saturation current", flags = ParameterFlags(0x0) +param "tnom", "tref" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Ohmic resistance", flags = ParameterFlags(0x0) +param "trs", "trs1" +units = "", desc = "Ohmic resistance 1st order temp. coeff.", flags = ParameterFlags(0x0) +param "trs2" +units = "", desc = "Ohmic resistance 2nd order temp. coeff.", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "Emission Coefficient", flags = ParameterFlags(0x0) +param "ns" +units = "", desc = "Sidewall emission Coefficient", flags = ParameterFlags(0x0) +param "tt" +units = "", desc = "Transit Time", flags = ParameterFlags(0x0) +param "ttt1" +units = "", desc = "Transit Time 1st order temp. coeff.", flags = ParameterFlags(0x0) +param "ttt2" +units = "", desc = "Transit Time 2nd order temp. coeff.", flags = ParameterFlags(0x0) +param "cjo", "cj0", "cj" +units = "", desc = "Junction capacitance", flags = ParameterFlags(0x0) +param "vj", "pb" +units = "", desc = "Junction potential", flags = ParameterFlags(0x0) +param "m", "mj" +units = "", desc = "Grading coefficient", flags = ParameterFlags(0x0) +param "tm1" +units = "", desc = "Grading coefficient 1st temp. coeff.", flags = ParameterFlags(0x0) +param "tm2" +units = "", desc = "Grading coefficient 2nd temp. coeff.", flags = ParameterFlags(0x0) +param "cjp", "cjsw" +units = "", desc = "Sidewall junction capacitance", flags = ParameterFlags(0x0) +param "php", "vjsw" +units = "", desc = "Sidewall junction potential", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Sidewall Grading coefficient", flags = ParameterFlags(0x0) +param "ikf", "ik" +units = "", desc = "Forward Knee current", flags = ParameterFlags(0x0) +param "ikr" +units = "", desc = "Reverse Knee current", flags = ParameterFlags(0x0) +param "nbv", "nz" +units = "", desc = "Breakdown Emission Coefficient", flags = ParameterFlags(0x0) +param "model_area" +units = "", desc = "Area factor", flags = ParameterFlags(0x0) +param "model_pj" +units = "", desc = "Perimeter factor", flags = ParameterFlags(0x0) +param "tlev" +units = "", desc = "Diode temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "tlevc" +units = "", desc = "Diode temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "eg" +units = "", desc = "Activation energy", flags = ParameterFlags(0x0) +param "gap1" +units = "", desc = "First bandgap correction factor", flags = ParameterFlags(0x0) +param "gap2" +units = "", desc = "Second bandgap correction factor", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Saturation current temperature exp.", flags = ParameterFlags(0x0) +param "cta", "ctc" +units = "", desc = "Area junction temperature coefficient", flags = ParameterFlags(0x0) +param "ctp" +units = "", desc = "Perimeter junction capacitance temperature coefficient", flags = ParameterFlags(0x0) +param "tpb", "tvj" +units = "", desc = "Area junction potential temperature coefficient", flags = ParameterFlags(0x0) +param "tphp" +units = "", desc = "Perimeter junction potential temperature coefficient", flags = ParameterFlags(0x0) +param "jtun" +units = "", desc = "Tunneling saturation current", flags = ParameterFlags(0x0) +param "jtunsw" +units = "", desc = "Tunneling sidewall saturation current", flags = ParameterFlags(0x0) +param "ntun" +units = "", desc = "Tunneling emission coefficient", flags = ParameterFlags(0x0) +param "xtitun" +units = "", desc = "Tunneling saturation current exponential", flags = ParameterFlags(0x0) +param "keg" +units = "", desc = "EG correction factor for tunneling", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "flicker noise exponent", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parameter", flags = ParameterFlags(0x0) +param "fcs" +units = "", desc = "Forward bias sidewall junction fit parameter", flags = ParameterFlags(0x0) +param "bv", "vb", "vrb", "var" +units = "", desc = "Reverse breakdown voltage", flags = ParameterFlags(0x0) +param "ibv", "ib" +units = "", desc = "Current at reverse breakdown voltage", flags = ParameterFlags(0x0) +param "tcv", "tbv1" +units = "", desc = "Reverse breakdown voltage temperature coefficient", flags = ParameterFlags(0x0) +param "isr" +units = "", desc = "Recombination saturation current", flags = ParameterFlags(0x0) +param "nr" +units = "", desc = "Recombination current emission coefficient", flags = ParameterFlags(0x0) +param "fv_max" +units = "", desc = "maximum voltage in forward direction", flags = ParameterFlags(0x0) +param "bv_max" +units = "", desc = "maximum voltage in reverse direction", flags = ParameterFlags(0x0) +param "id_max" +units = "", desc = "maximum current", flags = ParameterFlags(0x0) +param "te_max" +units = "", desc = "temperature", flags = ParameterFlags(0x0) +param "pd_max" +units = "", desc = "maximum power dissipation", flags = ParameterFlags(0x0) +param "model_lm" +units = "", desc = "Length of metal capacitor (level=3)", flags = ParameterFlags(0x0) +param "model_lp" +units = "", desc = "Length of polysilicon capacitor (level=3)", flags = ParameterFlags(0x0) +param "model_wm" +units = "", desc = "Width of metal capacitor (level=3)", flags = ParameterFlags(0x0) +param "model_wp" +units = "", desc = "Width of polysilicon capacitor (level=3)", flags = ParameterFlags(0x0) +param "xom" +units = "", desc = "Thickness of the metal to bulk oxide (level=3)", flags = ParameterFlags(0x0) +param "xoi" +units = "", desc = "Thickness of the polysilicon to bulk oxide (level=3)", flags = ParameterFlags(0x0) +param "xm" +units = "", desc = "Masking and etching effects in metal (level=3)", flags = ParameterFlags(0x0) +param "xp" +units = "", desc = "Masking and etching effects in polysilicon (level=3)", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Masking and etching effects (level=3)", flags = ParameterFlags(0x0) + +2 terminals +node "a" units = "V", runits = "A" +node "c" units = "V", runits = "A" +node "a_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +jacobian (a, a) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a, a_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, a_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a_int, a) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a_int, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a_int, a_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, c) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, a_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (a_int, a) +noise "rs" (a_int, a) +noise "id" (a_int, c) +noise "flicker" (a_int, c) +1 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_inductor.snap b/openvaf/test_data/osdi/vacask_spice_inductor.snap new file mode 100644 index 000000000..79fff6435 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_inductor.snap @@ -0,0 +1,46 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "inductance", "l" +units = "", desc = "Inductance of inductor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference with the rest of the circuit", flags = ParameterFlags(PARA_KIND_INST) +param "tc1" +units = "", desc = "First order temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "tc2" +units = "", desc = "Second order temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "scale" +units = "", desc = "Scale factor", flags = ParameterFlags(PARA_KIND_INST) +param "nt" +units = "", desc = "Number of turns", flags = ParameterFlags(PARA_KIND_INST) +param "ind" +units = "", desc = "Model inductance", flags = ParameterFlags(0x0) +param "model_tc1" +units = "", desc = "First order temp. coefficient", flags = ParameterFlags(0x0) +param "model_tc2" +units = "", desc = "Second order temp. coefficient", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "csect" +units = "", desc = "Inductor cross section", flags = ParameterFlags(0x0) +param "dia" +units = "", desc = "Inductor diameter", flags = ParameterFlags(0x0) +param "length" +units = "", desc = "Inductor length", flags = ParameterFlags(0x0) +param "model_nt" +units = "", desc = "Model number of turns", flags = ParameterFlags(0x0) +param "mu" +units = "", desc = "Relative magnetic permeability", flags = ParameterFlags(0x0) + +2 terminals +node "pos" units = "V", runits = "A" +node "neg" units = "V", runits = "A" +node(flow) "flow(br)" units = "A", runits = "V" +jacobian (pos, flow(br)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (neg, flow(br)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br), pos) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br), neg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(br), flow(br)) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_jfet1.snap b/openvaf/test_data/osdi/vacask_spice_jfet1.snap new file mode 100644 index 000000000..d05cc94b3 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_jfet1.snap @@ -0,0 +1,92 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vt0", "vto" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "beta" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation param.", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "G-S junction capactance", flags = ParameterFlags(0x0) +param "cgd" +units = "", desc = "G-D junction cap", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Gate junction potential", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Gate junction saturation current", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "Emission Coefficient for gate-drain and gate-source diodes", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parm.", flags = ParameterFlags(0x0) +param "b" +units = "", desc = "Doping tail parameter", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "parameter measurement temperature", flags = ParameterFlags(0x0) +param "tcv" +units = "", desc = "Threshold voltage temperature coefficient", flags = ParameterFlags(0x0) +param "vtotc" +units = "", desc = "Threshold voltage temperature coefficient alternative", flags = ParameterFlags(0x0) +param "bex" +units = "", desc = "Mobility temperature exponent", flags = ParameterFlags(0x0) +param "betatce" +units = "", desc = "Mobility temperature exponent alternative", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Gate junction saturation current temperature exponent", flags = ParameterFlags(0x0) +param "eg" +units = "", desc = "Bandgap voltage", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker Noise Coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker Noise Exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise equation selector", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel noise coefficient", flags = ParameterFlags(0x0) + +3 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (s_int, s) +collapsible (d_int, d) +noise "rs" (s_int, s) +noise "rd" (d_int, d) +noise "flicker" (d_int, s_int) +noise "id" (d_int, s_int) +2 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_jfet2.snap b/openvaf/test_data/osdi/vacask_spice_jfet2.snap new file mode 100644 index 000000000..ed4b0ae36 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_jfet2.snap @@ -0,0 +1,163 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "acgam" +units = "", desc = "", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker Noise Exponent", flags = ParameterFlags(0x0) +param "beta" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "cds" +units = "", desc = "D-S junction capacitance", flags = ParameterFlags(0x0) +param "cgd" +units = "", desc = "G-D junction capacitance", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "G-S junction capacitance", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "coef of thermal current reduction", flags = ParameterFlags(0x0) +param "hfeta" +units = "", desc = "drain feedback modulation", flags = ParameterFlags(0x0) +param "hfe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hfe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hfg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hfg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mvst" +units = "", desc = "modulation index for subtreshold current", flags = ParameterFlags(0x0) +param "mxi" +units = "", desc = "saturation potential modulation parameter", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parm.", flags = ParameterFlags(0x0) +param "ibd" +units = "", desc = "Breakdown current of diode jnc", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Gate junction saturation current", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker Noise Coefficient", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation param.", flags = ParameterFlags(0x0) +param "lfgam" +units = "", desc = "drain feedback parameter", flags = ParameterFlags(0x0) +param "lfg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "gate junction ideality factor", flags = ParameterFlags(0x0) +param "p" +units = "", desc = "Power law (triode region)", flags = ParameterFlags(0x0) +param "vbi", "pb" +units = "", desc = "Gate junction potential", flags = ParameterFlags(0x0) +param "q" +units = "", desc = "Power Law (Saturated region)", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "taud" +units = "", desc = "Thermal relaxation time", flags = ParameterFlags(0x0) +param "taug" +units = "", desc = "Drain feedback relaxation time", flags = ParameterFlags(0x0) +param "vbd" +units = "", desc = "Breakdown potential of diode jnc", flags = ParameterFlags(0x0) +param "ver" +units = "", desc = "version number of PS model", flags = ParameterFlags(0x0) +param "vst" +units = "", desc = "Crit Poten subthreshold conductn", flags = ParameterFlags(0x0) +param "vt0", "vto" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "xc" +units = "", desc = "amount of cap. red at pinch-off", flags = ParameterFlags(0x0) +param "xi" +units = "", desc = "velocity saturation index", flags = ParameterFlags(0x0) +param "z" +units = "", desc = "rate of velocity saturation", flags = ParameterFlags(0x0) +param "hfgam" +units = "", desc = "high freq drain feedback parm", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "parameter measurement temperature", flags = ParameterFlags(0x0) + +3 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "vgs_avg" units = "V", runits = "A" +node "vgd_avg" units = "V", runits = "A" +node "p_avg" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, p_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, p_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (vgd_avg, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgd_avg, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgd_avg, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgd_avg, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (p_avg, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, p_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (s_int, s) +collapsible (d_int, d) +collapsible (vgs_avg, gnd) +collapsible (vgd_avg, gnd) +collapsible (p_avg, gnd) +noise "rs" (s_int, s) +noise "rd" (d_int, d) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +2 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_mes1.snap b/openvaf/test_data/osdi/vacask_spice_mes1.snap new file mode 100644 index 000000000..24008dd21 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_mes1.snap @@ -0,0 +1,76 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vt0", "vto" +units = "", desc = "Pinch-off voltage", flags = ParameterFlags(0x0) +param "alpha" +units = "", desc = "Saturation voltage parameter", flags = ParameterFlags(0x0) +param "beta" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation parm.", flags = ParameterFlags(0x0) +param "b" +units = "", desc = "Doping tail extending parameter", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "G-S junction capacitance", flags = ParameterFlags(0x0) +param "cgd" +units = "", desc = "G-D junction capacitance", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Gate junction potential", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Junction saturation current", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parm.", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) + +3 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (s_int, s) +collapsible (d_int, d) +noise "rs" (s_int, s) +noise "rd" (d_int, d) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +2 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_mos1.snap b/openvaf/test_data/osdi/vacask_spice_mos1.snap new file mode 100644 index 000000000..cd836aeda --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_mos1.snap @@ -0,0 +1,159 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel shot noise coefficient", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_mos2.snap b/openvaf/test_data/osdi/vacask_spice_mos2.snap new file mode 100644 index 000000000..b37634e10 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_mos2.snap @@ -0,0 +1,173 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Width effect on threshold", flags = ParameterFlags(0x0) +param "uexp" +units = "", desc = "Crit. field exp for mob. deg.", flags = ParameterFlags(0x0) +param "ucrit" +units = "", desc = "Crit. field for mob. degradation", flags = ParameterFlags(0x0) +param "vmax" +units = "", desc = "Maximum carrier drift velocity", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth", flags = ParameterFlags(0x0) +param "neff" +units = "", desc = "Total channel charge coeff.", flags = ParameterFlags(0x0) +param "nfs" +units = "", desc = "Fast surface state density", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel shot noise coefficient", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_mos3.snap b/openvaf/test_data/osdi/vacask_spice_mos3.snap new file mode 100644 index 000000000..754eeb283 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_mos3.snap @@ -0,0 +1,179 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "Length mask adjustment", flags = ParameterFlags(0x0) +param "wd" +units = "", desc = "Width Narrowing (Diffusion)", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Width mask adjustment", flags = ParameterFlags(0x0) +param "delvto", "delvt0" +units = "", desc = "Threshold voltage Adjust", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "vmax" +units = "", desc = "Maximum carrier drift velocity", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth", flags = ParameterFlags(0x0) +param "nfs" +units = "", desc = "Fast surface state density", flags = ParameterFlags(0x0) +param "eta" +units = "", desc = "Vds dependence of threshold voltage", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Width effect on threshold", flags = ParameterFlags(0x0) +param "theta" +units = "", desc = "Vgs dependence on mobility", flags = ParameterFlags(0x0) +param "kappa" +units = "", desc = "Kappa", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel shot noise coefficient", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_mos6.snap b/openvaf/test_data/osdi/vacask_spice_mos6.snap new file mode 100644 index 000000000..f164840f4 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_mos6.snap @@ -0,0 +1,175 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kv" +units = "", desc = "Saturation voltage factor", flags = ParameterFlags(0x0) +param "nv" +units = "", desc = "Saturation voltage coeff.", flags = ParameterFlags(0x0) +param "kc" +units = "", desc = "Saturation current factor", flags = ParameterFlags(0x0) +param "nc" +units = "", desc = "Saturation current coeff.", flags = ParameterFlags(0x0) +param "nvth" +units = "", desc = "Threshold voltage coeff.", flags = ParameterFlags(0x0) +param "ps_mod" +units = "", desc = "Sat. current modification par.", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "gamma1" +units = "", desc = "Bulk threshold parameter 1", flags = ParameterFlags(0x0) +param "sigma" +units = "", desc = "Static feedback effect par.", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation param.", flags = ParameterFlags(0x0) +param "lambda0" +units = "", desc = "Channel length modulation param. 0", flags = ParameterFlags(0x0) +param "lambda1" +units = "", desc = "Channel length modulation param. 1", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_mos9.snap b/openvaf/test_data/osdi/vacask_spice_mos9.snap new file mode 100644 index 000000000..c06620775 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_mos9.snap @@ -0,0 +1,175 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance operating temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "Length mask adjustment", flags = ParameterFlags(0x0) +param "wd" +units = "", desc = "Width Narrowing (Diffusion)", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Width mask adjustment", flags = ParameterFlags(0x0) +param "delvto", "delvt0" +units = "", desc = "Threshold voltage Adjust", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "vmax" +units = "", desc = "Maximum carrier drift velocity", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth", flags = ParameterFlags(0x0) +param "nfs" +units = "", desc = "Fast surface state density", flags = ParameterFlags(0x0) +param "eta" +units = "", desc = "Vds dependence of threshold voltage", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Width effect on threshold", flags = ParameterFlags(0x0) +param "theta" +units = "", desc = "Vgs dependence on mobility", flags = ParameterFlags(0x0) +param "kappa" +units = "", desc = "Kappa", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_resistor.snap b/openvaf/test_data/osdi/vacask_spice_resistor.snap new file mode 100644 index 000000000..e076c6df9 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_resistor.snap @@ -0,0 +1,68 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "resistance", "r" +units = "", desc = "Resistance", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference with the rest of the circuit", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "tc", "tc1" +units = "", desc = "First order temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "tc2" +units = "", desc = "Second order temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "tce" +units = "", desc = "exponential temp. coefficient", flags = ParameterFlags(PARA_KIND_INST) +param "bv_max" +units = "", desc = "maximum voltage over resistor", flags = ParameterFlags(PARA_KIND_INST) +param "scale" +units = "", desc = "Scale factor", flags = ParameterFlags(PARA_KIND_INST) +param "noisy", "noise" +units = "", desc = "Resistor generate noise", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "narrow", "dw" +units = "", desc = "Narrowing of resistor", flags = ParameterFlags(0x0) +param "short", "dlr" +units = "", desc = "Shortening of resistor", flags = ParameterFlags(0x0) +param "model_tc1", "tc1r" +units = "", desc = "First order temp. coefficient", flags = ParameterFlags(0x0) +param "model_tc2", "tc2r" +units = "", desc = "Second order temp. coefficient", flags = ParameterFlags(0x0) +param "model_tce" +units = "", desc = "exponential temp. coefficient", flags = ParameterFlags(0x0) +param "defw", "model_w" +units = "", desc = "Default device width", flags = ParameterFlags(0x0) +param "model_l" +units = "", desc = "Default device length", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "model_r", "res" +units = "", desc = "Resistor model default value", flags = ParameterFlags(0x0) +param "model_bv_max" +units = "", desc = "maximum voltage over resistor", flags = ParameterFlags(0x0) +param "lf" +units = "", desc = "noise area length exponent", flags = ParameterFlags(0x0) +param "wf" +units = "", desc = "noise area width exponent", flags = ParameterFlags(0x0) +param "ef" +units = "", desc = "noise frequency exponent", flags = ParameterFlags(0x0) + +2 terminals +node "pos" units = "V", runits = "A" +node "neg" units = "V", runits = "A" +jacobian (pos, pos) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (pos, neg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (neg, pos) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (neg, neg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +noise "thermal" (pos, neg) +noise "flicker" (pos, neg) +0 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_bjt.snap b/openvaf/test_data/osdi/vacask_spice_sn_bjt.snap new file mode 100644 index 000000000..952c400f6 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_bjt.snap @@ -0,0 +1,330 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "(Emitter) Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "areab" +units = "", desc = "Base area factor", flags = ParameterFlags(PARA_KIND_INST) +param "areac" +units = "", desc = "Collector area factor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "instance temperature delta from circuit", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "subs" +units = "", desc = "vertical (1) or lateral (-1)", flags = ParameterFlags(PARA_TY_INT) +param "tnom", "tref" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Saturation Current", flags = ParameterFlags(0x0) +param "ibe" +units = "", desc = "Base-Emitter saturation Current", flags = ParameterFlags(0x0) +param "ibc" +units = "", desc = "Base-Collector saturation Current", flags = ParameterFlags(0x0) +param "bf" +units = "", desc = "Ideal forward beta", flags = ParameterFlags(0x0) +param "nf" +units = "", desc = "Forward emission coefficient", flags = ParameterFlags(0x0) +param "vaf", "va" +units = "", desc = "Forward Early voltage", flags = ParameterFlags(0x0) +param "ikf", "ik" +units = "", desc = "Forward beta roll-off corner current", flags = ParameterFlags(0x0) +param "ise", "c2" +units = "", desc = "B-E leakage saturation current", flags = ParameterFlags(0x0) +param "ne" +units = "", desc = "B-E leakage emission coefficient", flags = ParameterFlags(0x0) +param "br" +units = "", desc = "Ideal reverse beta", flags = ParameterFlags(0x0) +param "nr" +units = "", desc = "Reverse emission coefficient", flags = ParameterFlags(0x0) +param "var", "vb" +units = "", desc = "Reverse Early voltage", flags = ParameterFlags(0x0) +param "ikr" +units = "", desc = "reverse beta roll-off corner current", flags = ParameterFlags(0x0) +param "isc", "c4" +units = "", desc = "B-C leakage saturation current", flags = ParameterFlags(0x0) +param "nc" +units = "", desc = "B-C leakage emission coefficient", flags = ParameterFlags(0x0) +param "rb" +units = "", desc = "Zero bias base resistance", flags = ParameterFlags(0x0) +param "irb" +units = "", desc = "Current for base resistance=(rb+rbm)/2", flags = ParameterFlags(0x0) +param "rbm" +units = "", desc = "Minimum base resistance", flags = ParameterFlags(0x0) +param "re" +units = "", desc = "Emitter resistance", flags = ParameterFlags(0x0) +param "rc" +units = "", desc = "Collector resistance", flags = ParameterFlags(0x0) +param "cje" +units = "", desc = "Zero bias B-E depletion capacitance", flags = ParameterFlags(0x0) +param "vje", "pe" +units = "", desc = "B-E built in potential", flags = ParameterFlags(0x0) +param "mje", "me" +units = "", desc = "B-E junction grading coefficient", flags = ParameterFlags(0x0) +param "tf" +units = "", desc = "Ideal forward transit time", flags = ParameterFlags(0x0) +param "xtf" +units = "", desc = "Coefficient for bias dependence of TF", flags = ParameterFlags(0x0) +param "vtf" +units = "", desc = "Voltage giving VBC dependence of TF", flags = ParameterFlags(0x0) +param "itf" +units = "", desc = "High current dependence of TF", flags = ParameterFlags(0x0) +param "ptf" +units = "", desc = "Excess phase", flags = ParameterFlags(0x0) +param "cjc" +units = "", desc = "Zero bias B-C depletion capacitance", flags = ParameterFlags(0x0) +param "vjc", "pc" +units = "", desc = "B-C built in potential", flags = ParameterFlags(0x0) +param "mjc", "mc" +units = "", desc = "B-C junction grading coefficient", flags = ParameterFlags(0x0) +param "xcjc" +units = "", desc = "Fraction of B-C cap to internal base", flags = ParameterFlags(0x0) +param "tr" +units = "", desc = "Ideal reverse transit time", flags = ParameterFlags(0x0) +param "cjs", "csub", "ccs" +units = "", desc = "Zero bias Substrate capacitance", flags = ParameterFlags(0x0) +param "vjs", "ps" +units = "", desc = "Substrate junction built in potential", flags = ParameterFlags(0x0) +param "mjs", "ms" +units = "", desc = "Substrate junction grading coefficient", flags = ParameterFlags(0x0) +param "xtb" +units = "", desc = "Forward and reverse beta temp. exp.", flags = ParameterFlags(0x0) +param "eg" +units = "", desc = "Energy gap for IS temp. dependency", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Temp. exponent for IS", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parameter", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker Noise Coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker Noise Exponent", flags = ParameterFlags(0x0) +param "iss" +units = "", desc = "Substrate Jct. Saturation Current", flags = ParameterFlags(0x0) +param "ns" +units = "", desc = "Substrate current emission coefficient", flags = ParameterFlags(0x0) +param "rco" +units = "", desc = "Intrinsic coll. resistance", flags = ParameterFlags(0x0) +param "vo" +units = "", desc = "Epi drift saturation voltage", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Epi doping parameter", flags = ParameterFlags(0x0) +param "qco" +units = "", desc = "Epi Charge parameter", flags = ParameterFlags(0x0) +param "tlev" +units = "", desc = "Temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "tlevc" +units = "", desc = "Temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "tbf1" +units = "", desc = "BF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tbf2" +units = "", desc = "BF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tbr1" +units = "", desc = "BR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tbr2" +units = "", desc = "BR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tikf1" +units = "", desc = "IKF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tikf2" +units = "", desc = "IKF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tikr1" +units = "", desc = "IKR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tikr2" +units = "", desc = "IKR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tirb1" +units = "", desc = "IRB 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tirb2" +units = "", desc = "IRB 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tnc1" +units = "", desc = "NC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tnc2" +units = "", desc = "NC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tne1" +units = "", desc = "NE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tne2" +units = "", desc = "NE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tnf1" +units = "", desc = "NF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tnf2" +units = "", desc = "NF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tnr1" +units = "", desc = "NR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tnr2" +units = "", desc = "NR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "trb1", "trb" +units = "", desc = "RB 1. temperature coefficient", flags = ParameterFlags(0x0) +param "trb2" +units = "", desc = "RB 2. temperature coefficient", flags = ParameterFlags(0x0) +param "trc1", "trc" +units = "", desc = "RC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "trc2" +units = "", desc = "RC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tre1", "tre" +units = "", desc = "RE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tre2" +units = "", desc = "RE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "trm1" +units = "", desc = "RBM 1. temperature coefficient", flags = ParameterFlags(0x0) +param "trm2" +units = "", desc = "RBM 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tvaf1" +units = "", desc = "VAF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tvaf2" +units = "", desc = "VAF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tvar1" +units = "", desc = "VAR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tvar2" +units = "", desc = "VAR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "ctc" +units = "", desc = "CJC temperature coefficient", flags = ParameterFlags(0x0) +param "cte" +units = "", desc = "CJE temperature coefficient", flags = ParameterFlags(0x0) +param "cts" +units = "", desc = "CJS temperature coefficient", flags = ParameterFlags(0x0) +param "tvjc" +units = "", desc = "VJC temperature coefficient", flags = ParameterFlags(0x0) +param "tvje" +units = "", desc = "VJE temperature coefficient", flags = ParameterFlags(0x0) +param "tvjs" +units = "", desc = "VJS temperature coefficient", flags = ParameterFlags(0x0) +param "titf1" +units = "", desc = "ITF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "titf2" +units = "", desc = "ITF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "ttf1" +units = "", desc = "TF 1. temperature coefficient", flags = ParameterFlags(0x0) +param "ttf2" +units = "", desc = "TF 2. temperature coefficient", flags = ParameterFlags(0x0) +param "ttr1" +units = "", desc = "TR 1. temperature coefficient", flags = ParameterFlags(0x0) +param "ttr2" +units = "", desc = "TR 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tmje1" +units = "", desc = "MJE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tmje2" +units = "", desc = "MJE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjc1" +units = "", desc = "MJC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjc2" +units = "", desc = "MJC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjs1" +units = "", desc = "MJS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tmjs2" +units = "", desc = "MJS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tns1" +units = "", desc = "NS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tns2" +units = "", desc = "NS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "nkf", "nk" +units = "", desc = "NKF High current beta rolloff exponent", flags = ParameterFlags(0x0) +param "tis1" +units = "", desc = "IS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tis2" +units = "", desc = "IS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tise1" +units = "", desc = "ISE 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tise2" +units = "", desc = "ISE 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tisc1" +units = "", desc = "ISC 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tisc2" +units = "", desc = "ISC 2. temperature coefficient", flags = ParameterFlags(0x0) +param "tiss1" +units = "", desc = "ISS 1. temperature coefficient", flags = ParameterFlags(0x0) +param "tiss2" +units = "", desc = "ISS 2. temperature coefficient", flags = ParameterFlags(0x0) +param "quasimod" +units = "", desc = "Temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "vg" +units = "", desc = "Energy gap for QS temp. dependency", flags = ParameterFlags(0x0) +param "cn" +units = "", desc = "Temperature exponent of RCI", flags = ParameterFlags(0x0) +param "d" +units = "", desc = "Temperature exponent of VO", flags = ParameterFlags(0x0) +param "vbe_max" +units = "", desc = "maximum voltage B-E junction", flags = ParameterFlags(0x0) +param "vbc_max" +units = "", desc = "maximum voltage B-C junction", flags = ParameterFlags(0x0) +param "vce_max" +units = "", desc = "maximum voltage C-E branch", flags = ParameterFlags(0x0) +param "pd_max" +units = "", desc = "maximum device power dissipation", flags = ParameterFlags(0x0) +param "ic_max" +units = "", desc = "maximum collector current", flags = ParameterFlags(0x0) +param "ib_max" +units = "", desc = "maximum base current", flags = ParameterFlags(0x0) +param "te_max" +units = "", desc = "maximum temperature", flags = ParameterFlags(0x0) +param "rth0" +units = "", desc = "thermal resistance juntion to ambient", flags = ParameterFlags(0x0) + +4 terminals +node "c" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "e" units = "V", runits = "A" +node "sub" units = "V", runits = "A" +node "cx_int" units = "V", runits = "A" +node "c_int" units = "V", runits = "A" +node "b_int" units = "V", runits = "A" +node "e_int" units = "V", runits = "A" +node "sub_con" units = "V", runits = "A" +node "xf1" units = "V", runits = "A" +node "xf2" units = "V", runits = "A" +jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, cx_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sub, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sub, sub_con) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (cx_int, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (cx_int, cx_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (cx_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (cx_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c_int, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (c_int, cx_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c_int, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c_int, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b_int, cx_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (b_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (b_int, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, e) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (e_int, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e_int, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e_int, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (e_int, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (sub_con, sub) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (sub_con, sub_con) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (xf1, c_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, b_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, e_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf1, xf1) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (xf1, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, xf1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (xf2, xf2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +collapsible (cx_int, c) +collapsible (c_int, cx_int) +collapsible (b_int, b) +collapsible (e_int, e) +collapsible (sub_con, b_int) +collapsible (sub_con, c_int) +collapsible (sub, gnd) +collapsible (xf1, gnd) +collapsible (xf2, gnd) +noise "rc" (cx_int, c) +noise "rb" (b_int, b) +noise "re" (e_int, e) +noise "ic" (c_int, e_int) +noise "ib" (b_int, e_int) +noise "flicker" (b_int, e_int) +3 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_diode.snap b/openvaf/test_data/osdi/vacask_spice_sn_diode.snap new file mode 100644 index 000000000..6c6c09826 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_diode.snap @@ -0,0 +1,166 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance delta temperature", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "pj", "perim" +units = "", desc = "Perimeter factor", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Diode width", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Diode length", flags = ParameterFlags(PARA_KIND_INST) +param "lm" +units = "", desc = "Length of metal capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "lp" +units = "", desc = "Length of polysilicon capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "wm" +units = "", desc = "Width of metal capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "wp" +units = "", desc = "Width of polysilicon capacitor (level=3)", flags = ParameterFlags(PARA_KIND_INST) +param "level" +units = "", desc = "Diode level selector", flags = ParameterFlags(PARA_TY_INT) +param "is", "js" +units = "", desc = "Saturation current", flags = ParameterFlags(0x0) +param "jsw", "isw" +units = "", desc = "Sidewall Saturation current", flags = ParameterFlags(0x0) +param "tnom", "tref" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Ohmic resistance", flags = ParameterFlags(0x0) +param "trs", "trs1" +units = "", desc = "Ohmic resistance 1st order temp. coeff.", flags = ParameterFlags(0x0) +param "trs2" +units = "", desc = "Ohmic resistance 2nd order temp. coeff.", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "Emission Coefficient", flags = ParameterFlags(0x0) +param "ns" +units = "", desc = "Sidewall emission Coefficient", flags = ParameterFlags(0x0) +param "tt" +units = "", desc = "Transit Time", flags = ParameterFlags(0x0) +param "ttt1" +units = "", desc = "Transit Time 1st order temp. coeff.", flags = ParameterFlags(0x0) +param "ttt2" +units = "", desc = "Transit Time 2nd order temp. coeff.", flags = ParameterFlags(0x0) +param "cjo", "cj0", "cj" +units = "", desc = "Junction capacitance", flags = ParameterFlags(0x0) +param "vj", "pb" +units = "", desc = "Junction potential", flags = ParameterFlags(0x0) +param "m", "mj" +units = "", desc = "Grading coefficient", flags = ParameterFlags(0x0) +param "tm1" +units = "", desc = "Grading coefficient 1st temp. coeff.", flags = ParameterFlags(0x0) +param "tm2" +units = "", desc = "Grading coefficient 2nd temp. coeff.", flags = ParameterFlags(0x0) +param "cjp", "cjsw" +units = "", desc = "Sidewall junction capacitance", flags = ParameterFlags(0x0) +param "php", "vjsw" +units = "", desc = "Sidewall junction potential", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Sidewall Grading coefficient", flags = ParameterFlags(0x0) +param "ikf", "ik" +units = "", desc = "Forward Knee current", flags = ParameterFlags(0x0) +param "ikr" +units = "", desc = "Reverse Knee current", flags = ParameterFlags(0x0) +param "nbv", "nz" +units = "", desc = "Breakdown Emission Coefficient", flags = ParameterFlags(0x0) +param "model_area" +units = "", desc = "Area factor", flags = ParameterFlags(0x0) +param "model_pj" +units = "", desc = "Perimeter factor", flags = ParameterFlags(0x0) +param "tlev" +units = "", desc = "Diode temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "tlevc" +units = "", desc = "Diode temperature equation selector", flags = ParameterFlags(PARA_TY_INT) +param "eg" +units = "", desc = "Activation energy", flags = ParameterFlags(0x0) +param "gap1" +units = "", desc = "First bandgap correction factor", flags = ParameterFlags(0x0) +param "gap2" +units = "", desc = "Second bandgap correction factor", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Saturation current temperature exp.", flags = ParameterFlags(0x0) +param "cta", "ctc" +units = "", desc = "Area junction temperature coefficient", flags = ParameterFlags(0x0) +param "ctp" +units = "", desc = "Perimeter junction capacitance temperature coefficient", flags = ParameterFlags(0x0) +param "tpb", "tvj" +units = "", desc = "Area junction potential temperature coefficient", flags = ParameterFlags(0x0) +param "tphp" +units = "", desc = "Perimeter junction potential temperature coefficient", flags = ParameterFlags(0x0) +param "jtun" +units = "", desc = "Tunneling saturation current", flags = ParameterFlags(0x0) +param "jtunsw" +units = "", desc = "Tunneling sidewall saturation current", flags = ParameterFlags(0x0) +param "ntun" +units = "", desc = "Tunneling emission coefficient", flags = ParameterFlags(0x0) +param "xtitun" +units = "", desc = "Tunneling saturation current exponential", flags = ParameterFlags(0x0) +param "keg" +units = "", desc = "EG correction factor for tunneling", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "flicker noise exponent", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parameter", flags = ParameterFlags(0x0) +param "fcs" +units = "", desc = "Forward bias sidewall junction fit parameter", flags = ParameterFlags(0x0) +param "bv", "vb", "vrb", "var" +units = "", desc = "Reverse breakdown voltage", flags = ParameterFlags(0x0) +param "ibv", "ib" +units = "", desc = "Current at reverse breakdown voltage", flags = ParameterFlags(0x0) +param "tcv", "tbv1" +units = "", desc = "Reverse breakdown voltage temperature coefficient", flags = ParameterFlags(0x0) +param "isr" +units = "", desc = "Recombination saturation current", flags = ParameterFlags(0x0) +param "nr" +units = "", desc = "Recombination current emission coefficient", flags = ParameterFlags(0x0) +param "fv_max" +units = "", desc = "maximum voltage in forward direction", flags = ParameterFlags(0x0) +param "bv_max" +units = "", desc = "maximum voltage in reverse direction", flags = ParameterFlags(0x0) +param "id_max" +units = "", desc = "maximum current", flags = ParameterFlags(0x0) +param "te_max" +units = "", desc = "temperature", flags = ParameterFlags(0x0) +param "pd_max" +units = "", desc = "maximum power dissipation", flags = ParameterFlags(0x0) +param "model_lm" +units = "", desc = "Length of metal capacitor (level=3)", flags = ParameterFlags(0x0) +param "model_lp" +units = "", desc = "Length of polysilicon capacitor (level=3)", flags = ParameterFlags(0x0) +param "model_wm" +units = "", desc = "Width of metal capacitor (level=3)", flags = ParameterFlags(0x0) +param "model_wp" +units = "", desc = "Width of polysilicon capacitor (level=3)", flags = ParameterFlags(0x0) +param "xom" +units = "", desc = "Thickness of the metal to bulk oxide (level=3)", flags = ParameterFlags(0x0) +param "xoi" +units = "", desc = "Thickness of the polysilicon to bulk oxide (level=3)", flags = ParameterFlags(0x0) +param "xm" +units = "", desc = "Masking and etching effects in metal (level=3)", flags = ParameterFlags(0x0) +param "xp" +units = "", desc = "Masking and etching effects in polysilicon (level=3)", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Masking and etching effects (level=3)", flags = ParameterFlags(0x0) + +2 terminals +node "a" units = "V", runits = "A" +node "c" units = "V", runits = "A" +node "a_int" units = "V", runits = "A" +jacobian (a, a) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a, a_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (c, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (c, a_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (a_int, a) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (a_int, c) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (a_int, a_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +collapsible (a_int, a) +noise "rs" (a_int, a) +noise "id" (a_int, c) +noise "flicker" (a_int, c) +1 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_jfet1.snap b/openvaf/test_data/osdi/vacask_spice_sn_jfet1.snap new file mode 100644 index 000000000..935fe2437 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_jfet1.snap @@ -0,0 +1,86 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vt0", "vto" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "beta" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation param.", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "G-S junction capactance", flags = ParameterFlags(0x0) +param "cgd" +units = "", desc = "G-D junction cap", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Gate junction potential", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Gate junction saturation current", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "Emission Coefficient for gate-drain and gate-source diodes", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parm.", flags = ParameterFlags(0x0) +param "b" +units = "", desc = "Doping tail parameter", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "parameter measurement temperature", flags = ParameterFlags(0x0) +param "tcv" +units = "", desc = "Threshold voltage temperature coefficient", flags = ParameterFlags(0x0) +param "vtotc" +units = "", desc = "Threshold voltage temperature coefficient alternative", flags = ParameterFlags(0x0) +param "bex" +units = "", desc = "Mobility temperature exponent", flags = ParameterFlags(0x0) +param "betatce" +units = "", desc = "Mobility temperature exponent alternative", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Gate junction saturation current temperature exponent", flags = ParameterFlags(0x0) +param "eg" +units = "", desc = "Bandgap voltage", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker Noise Coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker Noise Exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise equation selector", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel noise coefficient", flags = ParameterFlags(0x0) + +3 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +collapsible (s_int, s) +collapsible (d_int, d) +noise "rs" (s_int, s) +noise "rd" (d_int, d) +noise "flicker" (d_int, s_int) +noise "id" (d_int, s_int) +2 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_jfet2.snap b/openvaf/test_data/osdi/vacask_spice_sn_jfet2.snap new file mode 100644 index 000000000..0b538e397 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_jfet2.snap @@ -0,0 +1,156 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "acgam" +units = "", desc = "", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker Noise Exponent", flags = ParameterFlags(0x0) +param "beta" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "cds" +units = "", desc = "D-S junction capacitance", flags = ParameterFlags(0x0) +param "cgd" +units = "", desc = "G-D junction capacitance", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "G-S junction capacitance", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "coef of thermal current reduction", flags = ParameterFlags(0x0) +param "hfeta" +units = "", desc = "drain feedback modulation", flags = ParameterFlags(0x0) +param "hfe1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hfe2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hfg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "hfg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "mvst" +units = "", desc = "modulation index for subtreshold current", flags = ParameterFlags(0x0) +param "mxi" +units = "", desc = "saturation potential modulation parameter", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parm.", flags = ParameterFlags(0x0) +param "ibd" +units = "", desc = "Breakdown current of diode jnc", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Gate junction saturation current", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker Noise Coefficient", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation param.", flags = ParameterFlags(0x0) +param "lfgam" +units = "", desc = "drain feedback parameter", flags = ParameterFlags(0x0) +param "lfg1" +units = "", desc = "", flags = ParameterFlags(0x0) +param "lfg2" +units = "", desc = "", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "gate junction ideality factor", flags = ParameterFlags(0x0) +param "p" +units = "", desc = "Power law (triode region)", flags = ParameterFlags(0x0) +param "vbi", "pb" +units = "", desc = "Gate junction potential", flags = ParameterFlags(0x0) +param "q" +units = "", desc = "Power Law (Saturated region)", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "taud" +units = "", desc = "Thermal relaxation time", flags = ParameterFlags(0x0) +param "taug" +units = "", desc = "Drain feedback relaxation time", flags = ParameterFlags(0x0) +param "vbd" +units = "", desc = "Breakdown potential of diode jnc", flags = ParameterFlags(0x0) +param "ver" +units = "", desc = "version number of PS model", flags = ParameterFlags(0x0) +param "vst" +units = "", desc = "Crit Poten subthreshold conductn", flags = ParameterFlags(0x0) +param "vt0", "vto" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "xc" +units = "", desc = "amount of cap. red at pinch-off", flags = ParameterFlags(0x0) +param "xi" +units = "", desc = "velocity saturation index", flags = ParameterFlags(0x0) +param "z" +units = "", desc = "rate of velocity saturation", flags = ParameterFlags(0x0) +param "hfgam" +units = "", desc = "high freq drain feedback parm", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "parameter measurement temperature", flags = ParameterFlags(0x0) + +3 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "vgs_avg" units = "V", runits = "A" +node "vgd_avg" units = "V", runits = "A" +node "p_avg" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d_int, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, p_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (s_int, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, p_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgs_avg, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (vgd_avg, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgd_avg, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgd_avg, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (vgd_avg, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (p_avg, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, vgs_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, vgd_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (p_avg, p_avg) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (s_int, s) +collapsible (d_int, d) +collapsible (vgs_avg, gnd) +collapsible (vgd_avg, gnd) +collapsible (p_avg, gnd) +noise "rs" (s_int, s) +noise "rd" (d_int, d) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +2 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_mes1.snap b/openvaf/test_data/osdi/vacask_spice_sn_mes1.snap new file mode 100644 index 000000000..24008dd21 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_mes1.snap @@ -0,0 +1,76 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "area" +units = "", desc = "Area factor", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "N-type (1) or P-type (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vt0", "vto" +units = "", desc = "Pinch-off voltage", flags = ParameterFlags(0x0) +param "alpha" +units = "", desc = "Saturation voltage parameter", flags = ParameterFlags(0x0) +param "beta" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation parm.", flags = ParameterFlags(0x0) +param "b" +units = "", desc = "Doping tail extending parameter", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "G-S junction capacitance", flags = ParameterFlags(0x0) +param "cgd" +units = "", desc = "G-D junction capacitance", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Gate junction potential", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Junction saturation current", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias junction fit parm.", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) + +3 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (s_int, s) +collapsible (d_int, d) +noise "rs" (s_int, s) +noise "rd" (d_int, d) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +2 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_mos1.snap b/openvaf/test_data/osdi/vacask_spice_sn_mos1.snap new file mode 100644 index 000000000..cd836aeda --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_mos1.snap @@ -0,0 +1,159 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel shot noise coefficient", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_mos2.snap b/openvaf/test_data/osdi/vacask_spice_sn_mos2.snap new file mode 100644 index 000000000..b37634e10 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_mos2.snap @@ -0,0 +1,173 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Width effect on threshold", flags = ParameterFlags(0x0) +param "uexp" +units = "", desc = "Crit. field exp for mob. deg.", flags = ParameterFlags(0x0) +param "ucrit" +units = "", desc = "Crit. field for mob. degradation", flags = ParameterFlags(0x0) +param "vmax" +units = "", desc = "Maximum carrier drift velocity", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth", flags = ParameterFlags(0x0) +param "neff" +units = "", desc = "Total channel charge coeff.", flags = ParameterFlags(0x0) +param "nfs" +units = "", desc = "Fast surface state density", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel shot noise coefficient", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_mos3.snap b/openvaf/test_data/osdi/vacask_spice_sn_mos3.snap new file mode 100644 index 000000000..754eeb283 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_mos3.snap @@ -0,0 +1,179 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "Length mask adjustment", flags = ParameterFlags(0x0) +param "wd" +units = "", desc = "Width Narrowing (Diffusion)", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Width mask adjustment", flags = ParameterFlags(0x0) +param "delvto", "delvt0" +units = "", desc = "Threshold voltage Adjust", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "vmax" +units = "", desc = "Maximum carrier drift velocity", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth", flags = ParameterFlags(0x0) +param "nfs" +units = "", desc = "Fast surface state density", flags = ParameterFlags(0x0) +param "eta" +units = "", desc = "Vds dependence of threshold voltage", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Width effect on threshold", flags = ParameterFlags(0x0) +param "theta" +units = "", desc = "Vgs dependence on mobility", flags = ParameterFlags(0x0) +param "kappa" +units = "", desc = "Kappa", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "gdsnoi" +units = "", desc = "Channel shot noise coefficient", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_mos6.snap b/openvaf/test_data/osdi/vacask_spice_sn_mos6.snap new file mode 100644 index 000000000..f164840f4 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_mos6.snap @@ -0,0 +1,175 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kv" +units = "", desc = "Saturation voltage factor", flags = ParameterFlags(0x0) +param "nv" +units = "", desc = "Saturation voltage coeff.", flags = ParameterFlags(0x0) +param "kc" +units = "", desc = "Saturation current factor", flags = ParameterFlags(0x0) +param "nc" +units = "", desc = "Saturation current coeff.", flags = ParameterFlags(0x0) +param "nvth" +units = "", desc = "Threshold voltage coeff.", flags = ParameterFlags(0x0) +param "ps_mod" +units = "", desc = "Sat. current modification par.", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "gamma1" +units = "", desc = "Bulk threshold parameter 1", flags = ParameterFlags(0x0) +param "sigma" +units = "", desc = "Static feedback effect par.", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation param.", flags = ParameterFlags(0x0) +param "lambda0" +units = "", desc = "Channel length modulation param. 0", flags = ParameterFlags(0x0) +param "lambda1" +units = "", desc = "Channel length modulation param. 1", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "nlev" +units = "", desc = "Noise model selection", flags = ParameterFlags(PARA_TY_INT) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_sn_mos9.snap b/openvaf/test_data/osdi/vacask_spice_sn_mos9.snap new file mode 100644 index 000000000..c06620775 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_sn_mos9.snap @@ -0,0 +1,175 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "l" +units = "", desc = "Length", flags = ParameterFlags(PARA_KIND_INST) +param "w" +units = "", desc = "Width", flags = ParameterFlags(PARA_KIND_INST) +param "ad" +units = "", desc = "Drain area", flags = ParameterFlags(PARA_KIND_INST) +param "as" +units = "", desc = "Source area", flags = ParameterFlags(PARA_KIND_INST) +param "pd" +units = "", desc = "Drain perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "ps" +units = "", desc = "Source perimeter", flags = ParameterFlags(PARA_KIND_INST) +param "nrd" +units = "", desc = "Drain squares", flags = ParameterFlags(PARA_KIND_INST) +param "nrs" +units = "", desc = "Source squares", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance operating temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance operating temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vt0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "gamma" +units = "", desc = "Bulk threshold parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "cbd" +units = "", desc = "B-D junction capacitance", flags = ParameterFlags(0x0) +param "cbs" +units = "", desc = "B-S junction capacitance", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Bulk junction sat. current", flags = ParameterFlags(0x0) +param "pb" +units = "", desc = "Bulk junction potential", flags = ParameterFlags(0x0) +param "cgso" +units = "", desc = "Gate-source overlap cap.", flags = ParameterFlags(0x0) +param "cgdo" +units = "", desc = "Gate-drain overlap cap.", flags = ParameterFlags(0x0) +param "cgbo" +units = "", desc = "Gate-bulk overlap cap.", flags = ParameterFlags(0x0) +param "rsh" +units = "", desc = "Sheet resistance", flags = ParameterFlags(0x0) +param "cj" +units = "", desc = "Bottom junction cap per area", flags = ParameterFlags(0x0) +param "mj" +units = "", desc = "Bottom grading coefficient", flags = ParameterFlags(0x0) +param "cjsw" +units = "", desc = "Side junction cap per area", flags = ParameterFlags(0x0) +param "mjsw" +units = "", desc = "Side grading coefficient", flags = ParameterFlags(0x0) +param "js" +units = "", desc = "Bulk jct. sat. current density", flags = ParameterFlags(0x0) +param "tox" +units = "", desc = "Oxide thickness", flags = ParameterFlags(0x0) +param "ld" +units = "", desc = "Lateral diffusion", flags = ParameterFlags(0x0) +param "xl" +units = "", desc = "Length mask adjustment", flags = ParameterFlags(0x0) +param "wd" +units = "", desc = "Width Narrowing (Diffusion)", flags = ParameterFlags(0x0) +param "xw" +units = "", desc = "Width mask adjustment", flags = ParameterFlags(0x0) +param "delvto", "delvt0" +units = "", desc = "Threshold voltage Adjust", flags = ParameterFlags(0x0) +param "u0", "uo" +units = "", desc = "Surface mobility", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Forward bias jct. fit parm.", flags = ParameterFlags(0x0) +param "nsub" +units = "", desc = "Substrate doping", flags = ParameterFlags(0x0) +param "tpg" +units = "", desc = "Gate type", flags = ParameterFlags(PARA_TY_INT) +param "nss" +units = "", desc = "Surface state density", flags = ParameterFlags(0x0) +param "vmax" +units = "", desc = "Maximum carrier drift velocity", flags = ParameterFlags(0x0) +param "xj" +units = "", desc = "Junction depth", flags = ParameterFlags(0x0) +param "nfs" +units = "", desc = "Fast surface state density", flags = ParameterFlags(0x0) +param "eta" +units = "", desc = "Vds dependence of threshold voltage", flags = ParameterFlags(0x0) +param "delta" +units = "", desc = "Width effect on threshold", flags = ParameterFlags(0x0) +param "theta" +units = "", desc = "Vgs dependence on mobility", flags = ParameterFlags(0x0) +param "kappa" +units = "", desc = "Kappa", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) + +4 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "b" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +node "implicit_equation_2" units = "", runits = "" +node "implicit_equation_3" units = "", runits = "" +node "implicit_equation_4" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (b, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, b) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_2, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_2, implicit_equation_2) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_3, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_3, implicit_equation_3) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_4, g) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, b) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_4, implicit_equation_4) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (s_int, s) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vacask_spice_vdmos.snap b/openvaf/test_data/osdi/vacask_spice_vdmos.snap new file mode 100644 index 000000000..7752c7e20 --- /dev/null +++ b/openvaf/test_data/osdi/vacask_spice_vdmos.snap @@ -0,0 +1,221 @@ +param "$mfactor" +units = "", desc = "Multiplier (Verilog-A $mfactor)", flags = ParameterFlags(PARA_KIND_INST) +param "temp" +units = "", desc = "Instance temperature", flags = ParameterFlags(PARA_KIND_INST) +param "dtemp" +units = "", desc = "Instance temperature difference", flags = ParameterFlags(PARA_KIND_INST) +param "thermal_enabled" +units = "", desc = "Thermal model switch on/off", flags = ParameterFlags(PARA_TY_INT | PARA_KIND_INST) +param "type" +units = "", desc = "NMOS (1) or PMOS (-1)", flags = ParameterFlags(PARA_TY_INT) +param "vto", "vth0" +units = "", desc = "Threshold voltage", flags = ParameterFlags(0x0) +param "kp" +units = "", desc = "Transconductance parameter", flags = ParameterFlags(0x0) +param "phi" +units = "", desc = "Surface potential", flags = ParameterFlags(0x0) +param "lambda" +units = "", desc = "Channel length modulation", flags = ParameterFlags(0x0) +param "theta" +units = "", desc = "Vgs dependence on mobility", flags = ParameterFlags(0x0) +param "rd" +units = "", desc = "Drain ohmic resistance", flags = ParameterFlags(0x0) +param "rs" +units = "", desc = "Source ohmic resistance", flags = ParameterFlags(0x0) +param "rg" +units = "", desc = "Gate ohmic resistance", flags = ParameterFlags(0x0) +param "tnom" +units = "", desc = "Parameter measurement temperature", flags = ParameterFlags(0x0) +param "kf" +units = "", desc = "Flicker noise coefficient", flags = ParameterFlags(0x0) +param "af" +units = "", desc = "Flicker noise exponent", flags = ParameterFlags(0x0) +param "vdmos" +units = "", desc = "DMOS transistor", flags = ParameterFlags(0x0) +param "rq" +units = "", desc = "Quasi saturation resistance fitting parameter", flags = ParameterFlags(0x0) +param "vq" +units = "", desc = "Quasi saturation voltage fitting parameter", flags = ParameterFlags(0x0) +param "mtriode" +units = "", desc = "Conductance multiplier in triode region", flags = ParameterFlags(0x0) +param "tcvth", "vtotc" +units = "", desc = "Linear Vth0 temperature coefficient", flags = ParameterFlags(0x0) +param "mu", "bex" +units = "", desc = "Exponent of gain temperature dependency", flags = ParameterFlags(0x0) +param "texp0" +units = "", desc = "Drain resistance rd0 temperature exponent", flags = ParameterFlags(0x0) +param "texp1" +units = "", desc = "Drain resistance rd1 temperature exponent", flags = ParameterFlags(0x0) +param "trd1" +units = "", desc = "Drain resistance linear temperature coefficient", flags = ParameterFlags(0x0) +param "trd2" +units = "", desc = "Drain resistance quadratic temperature coefficient", flags = ParameterFlags(0x0) +param "trg1" +units = "", desc = "Gate resistance linear temperature coefficient", flags = ParameterFlags(0x0) +param "trg2" +units = "", desc = "Gate resistance quadratic temperature coefficient", flags = ParameterFlags(0x0) +param "trs1" +units = "", desc = "Source resistance linear temperature coefficient", flags = ParameterFlags(0x0) +param "trs2" +units = "", desc = "Source resistance quadratic temperature coefficient", flags = ParameterFlags(0x0) +param "trb1" +units = "", desc = "Body resistance linear temperature coefficient", flags = ParameterFlags(0x0) +param "trb2" +units = "", desc = "Body resistance quadratic temperature coefficient", flags = ParameterFlags(0x0) +param "subshift" +units = "", desc = "Shift of weak inversion plot on the vgs axis", flags = ParameterFlags(0x0) +param "ksubthres" +units = "", desc = "Slope of weak inversion log current versus vgs", flags = ParameterFlags(0x0) +param "tksubthres1" +units = "", desc = "Linear temperature coefficient of ksubthres", flags = ParameterFlags(0x0) +param "tksubthres2" +units = "", desc = "Quadratic temperature coefficient of ksubthres", flags = ParameterFlags(0x0) +param "bv" +units = "", desc = "Vds breakdown voltage", flags = ParameterFlags(0x0) +param "ibv" +units = "", desc = "Current at Vds=bv", flags = ParameterFlags(0x0) +param "nbv" +units = "", desc = "Vds breakdown emission coefficient", flags = ParameterFlags(0x0) +param "rds" +units = "", desc = "Drain-source shunt resistance", flags = ParameterFlags(0x0) +param "rb" +units = "", desc = "Body diode ohmic resistance", flags = ParameterFlags(0x0) +param "n" +units = "", desc = "Body diode emission coefficient", flags = ParameterFlags(0x0) +param "tt" +units = "", desc = "Body diode transit time", flags = ParameterFlags(0x0) +param "eg" +units = "", desc = "Body diode activation energy for temperature effect on Is", flags = ParameterFlags(0x0) +param "xti" +units = "", desc = "Body diode saturation current temperature exponent", flags = ParameterFlags(0x0) +param "is" +units = "", desc = "Body diode saturation current", flags = ParameterFlags(0x0) +param "vj" +units = "", desc = "Body diode junction potential", flags = ParameterFlags(0x0) +param "cjo" +units = "", desc = "Zero-bias body diode junction capacitance", flags = ParameterFlags(0x0) +param "m" +units = "", desc = "Body diode grading coefficient", flags = ParameterFlags(0x0) +param "fc" +units = "", desc = "Body diode coefficient for forward-bias depletion capacitance formula", flags = ParameterFlags(0x0) +param "cgdmin" +units = "", desc = "Minimum non-linear G-D capacitance", flags = ParameterFlags(0x0) +param "cgdmax" +units = "", desc = "Maximum non-linear G-D capacitance", flags = ParameterFlags(0x0) +param "a" +units = "", desc = "Non-linear Cgd capacitance parameter", flags = ParameterFlags(0x0) +param "cgs" +units = "", desc = "Gate-source capacitance", flags = ParameterFlags(0x0) +param "rthjc" +units = "", desc = "Self-heating thermal resistance, junction-to-case", flags = ParameterFlags(0x0) +param "rthca" +units = "", desc = "Self-heating thermal resistance, case-to-ambient", flags = ParameterFlags(0x0) +param "cthj" +units = "", desc = "Self-heating thermal capacitance", flags = ParameterFlags(0x0) +param "vgs_max" +units = "", desc = "maximum voltage G-S branch", flags = ParameterFlags(0x0) +param "vgd_max" +units = "", desc = "maximum voltage G-D branch", flags = ParameterFlags(0x0) +param "vds_max" +units = "", desc = "maximum voltage D-S branch", flags = ParameterFlags(0x0) +param "vgsr_max" +units = "", desc = "maximum voltage G-S branch", flags = ParameterFlags(0x0) +param "vgdr_max" +units = "", desc = "maximum voltage G-D branch", flags = ParameterFlags(0x0) +param "pd_max" +units = "", desc = "maximum device power dissipation", flags = ParameterFlags(0x0) +param "id_max" +units = "", desc = "maximum drain/source current", flags = ParameterFlags(0x0) +param "idr_max" +units = "", desc = "maximum drain/source reverse current", flags = ParameterFlags(0x0) +param "te_max" +units = "", desc = "maximum temperature", flags = ParameterFlags(0x0) +param "rth_ext" +units = "", desc = "thermal resistance case to ambient, incl. heat sink", flags = ParameterFlags(0x0) +param "derating" +units = "", desc = "thermal derating for power", flags = ParameterFlags(0x0) + +5 terminals +node "d" units = "V", runits = "A" +node "g" units = "V", runits = "A" +node "s" units = "V", runits = "A" +node "t" units = "V", runits = "A" +node "tc" units = "V", runits = "A" +node "d_int" units = "V", runits = "A" +node "g_int" units = "V", runits = "A" +node "s_int" units = "V", runits = "A" +node "bd_int" units = "V", runits = "A" +node "t_int" units = "V", runits = "A" +node(flow) "flow(tbr)" units = "A", runits = "V" +node "implicit_equation_0" units = "", runits = "" +node "implicit_equation_1" units = "", runits = "" +jacobian (d, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (d, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d, bd_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (g, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s, bd_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t, tc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tc, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tc, tc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (tc, t_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (d_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, g) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (g_int, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, d_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, g_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, s_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (s_int, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bd_int, d) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bd_int, s) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (bd_int, t) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (bd_int, bd_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT) +jacobian (t_int, tc) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t_int, t_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (t_int, flow(tbr)) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (flow(tbr), t_int) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_0, g_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_0, implicit_equation_0) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (implicit_equation_1, d_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, g_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, s_int) JacobianFlags(JACOBIAN_ENTRY_REACT | JACOBIAN_ENTRY_RESIST_CONST) +jacobian (implicit_equation_1, implicit_equation_1) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_RESIST_CONST | JACOBIAN_ENTRY_REACT_CONST) +collapsible (d_int, d) +collapsible (g_int, g) +collapsible (s_int, s) +collapsible (bd_int, s) +collapsible (t, gnd) +collapsible (tc, gnd) +noise "rd" (d_int, d) +noise "rs" (s_int, s) +noise "id" (d_int, s_int) +noise "flicker" (d_int, s_int) +4 states +has bound_step false diff --git a/openvaf/test_data/osdi/vccs.snap b/openvaf/test_data/osdi/vccs.snap index 7851eb07a..c09e98688 100644 --- a/openvaf/test_data/osdi/vccs.snap +++ b/openvaf/test_data/osdi/vccs.snap @@ -8,27 +8,21 @@ param "Rout" units = "Ohm", desc = "output Resistance", flags = ParameterFlags(0x0) 4 terminals -node "Inp" units = "V", runits = "" -residual 192 4294967295 4294967295 4294967295 -node "Inm" units = "V", runits = "" -residual 200 4294967295 4294967295 4294967295 -node "Outp" units = "V", runits = "" -residual 208 4294967295 4294967295 4294967295 -node "Outm" units = "V", runits = "" -residual 216 4294967295 4294967295 4294967295 -jacobian (Inp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Inm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outp, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 -jacobian (Outm, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) react_ptr = 4294967295 +node "Inp" units = "V", runits = "A" +node "Inm" units = "V", runits = "A" +node "Outp" units = "V", runits = "A" +node "Outm" units = "V", runits = "A" +jacobian (Inp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Inm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outp, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Inp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Inm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Outp) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) +jacobian (Outm, Outm) JacobianFlags(JACOBIAN_ENTRY_RESIST | JACOBIAN_ENTRY_REACT_CONST) 0 states has bound_step false -instance size 224 -model size 40 diff --git a/openvaf/test_data/ui/analog_in_cond.log b/openvaf/test_data/ui/analog_in_cond.log new file mode 100644 index 000000000..539257e70 --- /dev/null +++ b/openvaf/test_data/ui/analog_in_cond.log @@ -0,0 +1,36 @@ +error: analog operator 'limexp' is not allowed in conditions + --> /analog_in_cond.va:24:27 + | +22 | if (v_internal > 0) begin + | ---------- help: this condition is not a constant +23 | // Error: limexp in conditional +24 | temp_factor = limexp(v_internal / vth); + | ^^^^^^^^^^^^^^^^^^^^^^^^ not allowed here + | + = help: analog operators are only allowed in non-conditional behaviour + = help: only constant and analysis functions are allowed in conditions + +error: analog operator 'ddt' is not allowed in conditions + --> /analog_in_cond.va:31:26 + | +29 | if (use_limexp > 0.5) begin + | ---------- help: this condition is not a constant +30 | // Error: ddt in conditional +31 | i_internal = ddt(v_internal); + | ^^^^^^^^^^^^^^^ not allowed here + | + = help: analog operators are only allowed in non-conditional behaviour + = help: only constant and analysis functions are allowed in conditions + +error: analog operator 'idt' is not allowed in conditions + --> /analog_in_cond.va:37:30 + | +34 | case (use_limexp) + | ---------- help: this condition is not a constant + . +37 | v_internal = idt(i_internal); + | ^^^^^^^^^^^^^^^ not allowed here + | + = help: analog operators are only allowed in non-conditional behaviour + = help: only constant and analysis functions are allowed in conditions + diff --git a/openvaf/test_data/ui/analog_in_cond.va b/openvaf/test_data/ui/analog_in_cond.va new file mode 100644 index 000000000..f1d4daae4 --- /dev/null +++ b/openvaf/test_data/ui/analog_in_cond.va @@ -0,0 +1,46 @@ +`include "disciplines.va" + +module analog_in_cond(a, c); + inout a, c; + electrical a, c; + real v_internal, i_internal, temp_factor; + real use_limexp; + parameter real vth = 0.026; + parameter real is = 1e-14; + + analog begin + use_limexp = 1.0; + v_internal = V(a, c); + + // This is valid: analog operators in analog block + temp_factor = limexp(v_internal / vth); + i_internal = is * temp_factor; + + // These should produce errors without --allow-analog-in-cond flag: + // Analog operators (limexp, ddt, idt) in signal-dependent conditionals + + if (v_internal > 0) begin + // Error: limexp in conditional + temp_factor = limexp(v_internal / vth); + end else begin + temp_factor = 1.0; + end + + if (use_limexp > 0.5) begin + // Error: ddt in conditional + i_internal = ddt(v_internal); + end + + case (use_limexp) + 1.0: begin + // Error: idt in conditional (case statement) + v_internal = idt(i_internal); + end + default: begin + v_internal = 0.0; + end + endcase + + I(a, c) <+ i_internal; + end +endmodule diff --git a/openvaf/test_data/ui_allow_analog_cond/diode_with_conditionals.va b/openvaf/test_data/ui_allow_analog_cond/diode_with_conditionals.va new file mode 100644 index 000000000..57c124441 --- /dev/null +++ b/openvaf/test_data/ui_allow_analog_cond/diode_with_conditionals.va @@ -0,0 +1,66 @@ +`include "disciplines.va" + +// Test case for --allow-analog-in-cond flag +// This model uses analog operators (limexp, ddt, idt) inside conditionals +// which is non-standard Verilog-A but required by some foundry models +module diode_with_conditionals(anode, cathode); + inout anode, cathode; + electrical anode, cathode; + + parameter real is = 1e-14; // Saturation current + parameter real vth = 0.026; // Thermal voltage + parameter real n = 1.0; // Ideality factor + parameter real cj0 = 1e-12; // Junction capacitance + parameter real use_dynamic = 1; // Enable dynamic behavior + parameter real use_smooth = 1; // Enable smoothing + parameter real temp_coeff = 0.0; // Temperature coefficient + + real v_diode, i_static, i_dynamic, q_charge; + real temp_factor, smooth_factor; + + analog begin + v_diode = V(anode, cathode); + + // Signal-dependent conditional with limexp (smoothing function) + // This pattern is common in foundry models + if (use_smooth > 0.5) begin + // Use limexp for smooth exponential to avoid numerical issues + temp_factor = limexp(v_diode / (n * vth)); + i_static = is * (temp_factor - 1.0); + end else begin + // Use regular exponential + i_static = is * (exp(v_diode / (n * vth)) - 1.0); + end + + // Dynamic behavior with conditional ddt/idt + if (use_dynamic > 0.5) begin + // Time-derivative for capacitive current + q_charge = cj0 * v_diode; + i_dynamic = ddt(q_charge); + end else begin + i_dynamic = 0.0; + end + + // Temperature-dependent behavior using idt in conditional + if (temp_coeff > 0.0) begin + // Integrate temperature effect + smooth_factor = idt(temp_coeff * i_static); + end else begin + smooth_factor = 0.0; + end + + // Case statement with analog operator + case (use_smooth) + 1.0: begin + // Another limexp usage in case block + temp_factor = limexp(-v_diode / vth); + end + default: begin + temp_factor = 1.0; + end + endcase + + // Total current contribution + I(anode, cathode) <+ i_static + i_dynamic + smooth_factor; + end +endmodule diff --git a/openvaf/vfs/Cargo.toml b/openvaf/vfs/Cargo.toml index cac615bac..405ad174a 100644 --- a/openvaf/vfs/Cargo.toml +++ b/openvaf/vfs/Cargo.toml @@ -13,7 +13,7 @@ doctest = false paths = {path="../../lib/paths",version="0.0.0"} indexmap = "2.0" -ahash = "0.8" +rustc-hash = "2.0" encoding_rs = "0.8" chardetng = "0.1" diff --git a/openvaf/vfs/src/path_interner.rs b/openvaf/vfs/src/path_interner.rs index 027cd8bf1..c7409e582 100644 --- a/openvaf/vfs/src/path_interner.rs +++ b/openvaf/vfs/src/path_interner.rs @@ -2,14 +2,17 @@ //! no longer exist -- the assumption is total size of paths we ever look at is //! not too big. +use std::hash::BuildHasherDefault; + use indexmap::IndexSet; +use rustc_hash::FxHasher; use crate::{FileId, VfsPath}; /// Structure to map between [`VfsPath`] and [`FileId`]. #[derive(Default, Debug)] pub(crate) struct PathInterner { - map: IndexSet, + map: IndexSet>, } impl PathInterner { diff --git a/rustfmt.toml b/rustfmt.toml index b264203f7..87d4a2723 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -2,5 +2,5 @@ use_small_heuristics = "Max" newline_style = "unix" use_field_init_shorthand = true -imports_granularity = "Module" -group_imports = "StdExternalCrate" +# imports_granularity = "Module" +# group_imports = "StdExternalCrate" diff --git a/sourcegen/src/hir_builtins.rs b/sourcegen/src/hir_builtins.rs index 686f228b7..79e5637bd 100644 --- a/sourcegen/src/hir_builtins.rs +++ b/sourcegen/src/hir_builtins.rs @@ -292,18 +292,20 @@ fn generate_builtins() { } } - pub fn insert_builtin_scope(dst: &mut IndexMap){ + pub fn insert_builtin_scope(dst: &mut IndexMap>){ #(dst.insert(#kw_types::#kws,BuiltIn::#variants.into());)* } - pub fn insert_module_builtin_scope(dst: &mut IndexMap){ + pub fn insert_module_builtin_scope(dst: &mut IndexMap>){ #(dst.insert(sysfun::#params,ParamSysFun::#params.into());)* } }; - let header = "use ahash::RandomState; + let header = "use std::hash::BuildHasherDefault; + use indexmap::IndexMap; + use rustc_hash::FxHasher; use syntax::name::{kw, sysfun, Name}; use crate::nameres::ScopeDefItem; diff --git a/verilogae/verilogae/Cargo.toml b/verilogae/verilogae/Cargo.toml index a15f4ae77..9d549db8d 100644 --- a/verilogae/verilogae/Cargo.toml +++ b/verilogae/verilogae/Cargo.toml @@ -10,6 +10,13 @@ doctest = false crate-type = ["lib", "cdylib"] name = "verilogae" +[features] +# No default - user must specify --features llvm18/llvm19/llvm20/llvm21 +llvm18 = ["dep:llvm-sys-181", "mir_llvm/llvm18"] +llvm19 = ["dep:llvm-sys-191", "mir_llvm/llvm19"] +llvm20 = ["dep:llvm-sys-201", "mir_llvm/llvm20"] +llvm21 = ["dep:llvm-sys-211", "mir_llvm/llvm21"] + [dependencies] syntax = { version = "0.0.0", path = "../../openvaf/syntax" } @@ -18,12 +25,15 @@ hir_lower = { version = "0.0.0", path = "../../openvaf/hir_lower" } hir = { version = "0.0.0", path = "../../openvaf/hir" } mir = { version = "0.0.0", path = "../../openvaf/mir" } -mir_llvm = { version = "0.0.0", path = "../../openvaf/mir_llvm" } +mir_llvm = { version = "0.0.0", path = "../../openvaf/mir_llvm", default-features = false } mir_opt = { version = "0.0.0", path = "../../openvaf/mir_opt" } mir_autodiff = { version = "0.0.0", path = "../../openvaf/mir_autodiff" } #llvm = { version = "0.0.0", path = "../../openvaf/llvm" } -llvm-sys = "181.1.1" +llvm-sys-181 = { package = "llvm-sys", version = "181.2.0", optional = true } +llvm-sys-191 = { package = "llvm-sys", version = "191.0.0", optional = true } +llvm-sys-201 = { package = "llvm-sys", version = "201.0.1", optional = true } +llvm-sys-211 = { package = "llvm-sys", version = "211.0.0", optional = true } target = { version = "0.0.0", path = "../../openvaf/target" } linker = { version = "0.0.0", path = "../../openvaf/linker" } diff --git a/verilogae/verilogae/src/compiler_db.rs b/verilogae/verilogae/src/compiler_db.rs index 543768cf9..5782b3fdd 100644 --- a/verilogae/verilogae/src/compiler_db.rs +++ b/verilogae/verilogae/src/compiler_db.rs @@ -9,7 +9,8 @@ use basedb::{BaseDB, FileId, VfsPath}; use camino::Utf8Path; pub use hir::CompilationDB; use hir::{ - Branch, BranchKind, Module, Node, Parameter, PathResolveError, ScopeDef, Type, Variable, + Branch, BranchKind, CompilationOpts, Module, Node, Parameter, PathResolveError, ScopeDef, Type, + Variable, }; use hir_lower::CurrentKind; use indexmap::IndexMap; @@ -46,6 +47,7 @@ pub(crate) fn new(root_file: &Utf8Path, opts: &Opts) -> Result { opts.include_dirs().map(|path| path.map(VfsPath::from)), opts.macro_flags(), lints, + &CompilationOpts::default(), ) } diff --git a/verilogae/verilogae/src/lib.rs b/verilogae/verilogae/src/lib.rs index 1bb8cb254..e47099699 100644 --- a/verilogae/verilogae/src/lib.rs +++ b/verilogae/verilogae/src/lib.rs @@ -1,3 +1,13 @@ +// Re-export the correct llvm-sys version based on feature flags +#[cfg(feature = "llvm18")] +extern crate llvm_sys_181 as llvm_sys; +#[cfg(feature = "llvm19")] +extern crate llvm_sys_191 as llvm_sys; +#[cfg(feature = "llvm20")] +extern crate llvm_sys_201 as llvm_sys; +#[cfg(feature = "llvm21")] +extern crate llvm_sys_211 as llvm_sys; + use std::fs; use std::io::Write; use std::time::Instant; diff --git a/verilogae/verilogae_ffi/Cargo.toml b/verilogae/verilogae_ffi/Cargo.toml index 78bc20c3b..11e00785b 100644 --- a/verilogae/verilogae_ffi/Cargo.toml +++ b/verilogae/verilogae_ffi/Cargo.toml @@ -13,8 +13,13 @@ doctest = false [dependencies] -verilogae = { version = "1.0.0", path = "../verilogae", optional = true } +verilogae = { version = "1.0.0", path = "../verilogae", optional = true, default-features = false } [features] default = ["static"] +# No default LLVM - user must specify --features llvm18/llvm19/llvm20/llvm21 static = ["verilogae"] +llvm18 = ["verilogae?/llvm18"] +llvm19 = ["verilogae?/llvm19"] +llvm20 = ["verilogae?/llvm20"] +llvm21 = ["verilogae?/llvm21"] diff --git a/verilogae/verilogae_py/Cargo.toml b/verilogae/verilogae_py/Cargo.toml index 50b54f409..17d515ed1 100644 --- a/verilogae/verilogae_py/Cargo.toml +++ b/verilogae/verilogae_py/Cargo.toml @@ -26,4 +26,9 @@ pyo3-build-config = { version = "0.19", features = ["resolve-config"] } [features] default = ["static"] +# No default LLVM - user must specify --features llvm18/llvm19/llvm20/llvm21 static = ["verilogae_ffi/static"] +llvm18 = ["verilogae_ffi/llvm18"] +llvm19 = ["verilogae_ffi/llvm19"] +llvm20 = ["verilogae_ffi/llvm20"] +llvm21 = ["verilogae_ffi/llvm21"] diff --git a/xtask/src/flags.rs b/xtask/src/flags.rs index 8ddfe3ad4..5ad8f257c 100644 --- a/xtask/src/flags.rs +++ b/xtask/src/flags.rs @@ -3,6 +3,22 @@ xflags::xflags! { /// Run custom build command. cmd xtask { + /// Build OpenVAF with automatic LLVM detection on macOS + cmd cargo-build { + /// Build in release mode + optional --release + /// Additional arguments to pass to cargo build + repeated args: String + } + + /// Run tests with automatic LLVM detection on macOS + cmd cargo-test { + /// Run tests in release mode + optional --release + /// Additional arguments to pass to cargo test + repeated args: String + } + cmd verilogae{ cmd build{ optional --force @@ -34,10 +50,26 @@ pub struct Xtask { #[derive(Debug)] pub enum XtaskCmd { + CargoBuild(CargoBuild), + CargoTest(CargoTest), Verilogae(Verilogae), GenMsvcrt(GenMsvcrt), } +#[derive(Debug)] +pub struct CargoBuild { + pub args: Vec, + + pub release: bool, +} + +#[derive(Debug)] +pub struct CargoTest { + pub args: Vec, + + pub release: bool, +} + #[derive(Debug)] pub struct Verilogae { pub subcommand: VerilogaeCmd, diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 065ee6803..114b889a7 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -15,7 +15,7 @@ use std::env; use std::path::{Path, PathBuf}; use anyhow::Result; -use xshell::Shell; +use xshell::{cmd, Shell}; // mod cache; mod msvcrt; @@ -26,11 +26,86 @@ fn main() -> Result<()> { let flags = flags::Xtask::from_env()?; match flags.subcommand { + flags::XtaskCmd::CargoBuild(cmd) => cmd.run(&sh), + flags::XtaskCmd::CargoTest(cmd) => cmd.run(&sh), flags::XtaskCmd::Verilogae(cmd) => cmd.run(&mut sh), flags::XtaskCmd::GenMsvcrt(cmd) => cmd.run(&sh), } } +impl flags::CargoBuild { + fn run(&self, sh: &Shell) -> Result<()> { + run_cargo_command(sh, "build", self.release, &self.args) + } +} + +impl flags::CargoTest { + fn run(&self, sh: &Shell) -> Result<()> { + run_cargo_command(sh, "test", self.release, &self.args) + } +} + +fn run_cargo_command( + sh: &Shell, + subcommand: &str, + release: bool, + extra_args: &[String], +) -> Result<()> { + // Auto-detect LLVM on macOS via Homebrew + let llvm_prefix = detect_llvm_prefix(); + + let mut envs: Vec<(&str, String)> = Vec::new(); + + if let Some(prefix) = &llvm_prefix { + eprintln!("Auto-detected LLVM 18 at: {}", prefix); + envs.push(("LLVM_SYS_181_PREFIX", prefix.clone())); + } + + let mut args = Vec::new(); + if release { + args.push("--release".to_string()); + } + args.extend(extra_args.iter().cloned()); + + let mut command = cmd!(sh, "cargo {subcommand} {args...}"); + for (key, value) in envs { + command = command.env(key, value); + } + + command.run()?; + Ok(()) +} + +/// Detect LLVM 18 prefix on macOS via Homebrew. +/// Returns None on non-macOS or if HOMEBREW_PREFIX is not set. +fn detect_llvm_prefix() -> Option { + // Only attempt detection on macOS + if !cfg!(target_os = "macos") { + return None; + } + + // Check if user already set LLVM_SYS_181_PREFIX + if env::var("LLVM_SYS_181_PREFIX").is_ok() { + eprintln!("Using existing LLVM_SYS_181_PREFIX from environment"); + return None; + } + + // Try to get HOMEBREW_PREFIX + let homebrew_prefix = env::var("HOMEBREW_PREFIX").ok()?; + + let llvm_path = format!("{}/opt/llvm@18", homebrew_prefix); + let llvm_bin = format!("{}/bin/llvm-config", llvm_path); + + // Verify LLVM is actually installed there + if Path::new(&llvm_bin).exists() { + Some(llvm_path) + } else { + eprintln!("Note: HOMEBREW_PREFIX is set but llvm@18 not found at {}", llvm_path); + eprintln!("Install with: brew install llvm@18"); + None + } +} + fn project_root() -> PathBuf { Path::new( &env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| env!("CARGO_MANIFEST_DIR").to_owned()),