Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4fa5e18
Add bounded SPEF import and extracted timing support
gaochangw Oct 23, 2026
9137ff0
Model extracted RC with effective capacitance and nonlinear slew
gaochangw Oct 23, 2026
c66e7f6
Check pulse widths, periods and design rules; bind SPEF per corner
gaochangw Oct 23, 2026
0fe57c4
Release version 0.4.0 with signoff checks
gaochangw Oct 23, 2026
0924966
Bound hold-fix and limit-row memory
gaochangw Oct 23, 2026
f6087e4
Report limit checks honestly, check pin pulse attributes, honour --co…
gaochangw Oct 23, 2026
d1f61e6
Add selectable pulse rules, fix latch required times and SPEF update …
gaochangw Oct 23, 2026
697aad4
Check design rules on constant nets, scope clock limits, count unconn…
gaochangw Oct 24, 2026
ff8453b
Carry transitions through arcs that logic values disable, time latche…
gaochangw Oct 24, 2026
78ea7cc
Keep held resets live, follow clock gate pins, stop arrivals at const…
gaochangw Oct 24, 2026
25b0201
Converge the shared crates with the suite's synthesis tool (0.4.1)
gaochangw Oct 24, 2026
ebc7037
Lump nearly resistance-free pi loads, take the driver resistance at 1…
gaochangw Oct 24, 2026
268ad9a
State the measured parity and the remaining high-resistance residual …
gaochangw Oct 24, 2026
6af9936
Keep shared text tool-neutral and make the full netlist reader's budg…
gaochangw Oct 24, 2026
06b1c9f
Merge the shared-crate convergence (0.4.1) into the signoff checks
gaochangw Oct 24, 2026
bdeec7e
Take the effective capacitance from one Newton correction and drive w…
gaochangw Oct 24, 2026
26bd6eb
feat(sta): time extracted RC networks with resistor loops and unconne…
gaochangw Oct 24, 2026
455c43c
State the reference's driver-transition steps and keep the model cont…
gaochangw Oct 24, 2026
9bfafdc
refactor: use the canonical RustEDA foundation
gaochangw Oct 25, 2026
70411ea
test: preserve SPEF topology safety across what-if candidates
gaochangw Oct 25, 2026
dd8ade8
docs: record SPEF candidate safety coverage
gaochangw Oct 25, 2026
a48f97d
docs: unify branding and pin the public RustEDA foundation
gaochangw Oct 25, 2026
9cb94c1
docs: keep the shared wordmarks legible on light backgrounds
gaochangw Oct 25, 2026
20f645e
docs: publish 0.4.3 timing progress and responsive RustEDA artwork
gaochangw Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
[alias]
xtask = "run --package xtask --quiet --"

[net]
git-fetch-with-cli = true
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@
# Documentation tooling caches.
__pycache__/
*.py[cod]

AGENTS.md

agents.md

HANDOFF.md
345 changes: 345 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

23 changes: 20 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ RustSTA is one of the tools of RustEDA, a suite of electronic design automation
share their core crates and a disk workspace. This file holds the rules that every change follows:
the eight engineering rules of RustEDA, the rules of this repository, ownership and hand-over
between work items, and the checks to run before sending a change. The phases of the suite and
their work items are in the [roadmap](docs/roadmap.md).
their work items are in the [scope](https://lab-emi.github.io/RustEDA/verification/).

Instruction files for coding agents, such as `AGENTS.md`, stay local and are never committed; this
file is the tracked statement of the rules.
Expand Down Expand Up @@ -212,7 +212,7 @@ words that the rules keep out.

### Dependencies

- Dependencies come from crates.io only, are pinned to exact versions (`=x.y.z`) in the root
- Third-party dependencies come from crates.io only, are pinned to exact versions (`=x.y.z`) in the root
`[workspace.dependencies]`, and must pass `cargo deny check`.
- The pins follow a list that the RustEDA tools share. A third-party crate that is not on it is
not added in a change; propose it with a justification first.
Expand All @@ -237,7 +237,7 @@ words that the rules keep out.

## Ownership and hand-over

Work is divided into work items (see the [roadmap](docs/roadmap.md)), each with its
Work is divided into work items (see the [scope](https://lab-emi.github.io/RustEDA/verification/)), each with its
specification, its acceptance criteria and the paths it owns.

- Every path has exactly one owner at a time. A work item edits only the paths it owns. An edit
Expand Down Expand Up @@ -306,3 +306,20 @@ reuse lint
- The body explains what changed and why, in terms of specifications and tests.
- Contributions are accepted under the Developer Certificate of Origin: sign off every commit
(`git commit -s`).


### Canonical first-party foundation (2026-10-25)

The four shared library implementations and the workspace CLI implementation are owned by
lab-emi/RustEDA-Common, the public first-party foundation. Workspace dependencies and Cargo.lock
pin one exact revision over HTTPS; no GitHub credentials are required. The local rusteda-cli package is a
product adapter and retains its package version in command output and revision history.

This supersedes the legacy requirement to copy shared implementation files between tool
repositories, and is the sole first-party exception to the crates.io-only source policy.
Third-party package versions, licenses and source restrictions are unchanged. Shared specification
and automation manifests still require deliberate updates. Canonical core tests run in the
foundation repository; product adapters and engines retain their local tests.

Cross-repository validation uses the pinned foundation source. The historical public main
branch retains its existing build policy until a reviewed migration is merged.
79 changes: 74 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 9 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ resolver = "3"
members = ["crates/*/*", "xtask"]

[workspace.package]
version = "0.1.0"
version = "0.4.3"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
Expand All @@ -12,11 +12,12 @@ authors = ["RustSTA contributors"]
repository = "https://github.com/lab-emi/RustSTA"

[workspace.dependencies]
rusteda-core = { path = "crates/core/rusteda-core" }
rusteda-workspace = { path = "crates/core/rusteda-workspace" }
rusteda-compute = { path = "crates/core/rusteda-compute" }
rusteda-formats = { path = "crates/formats/rusteda-formats" }
rusteda-core = { git = "https://github.com/lab-emi/RustEDA-Common.git", rev = "c96ef1520ab08b40e48ed7643002b5c06ad13e07" }
rusteda-workspace = { git = "https://github.com/lab-emi/RustEDA-Common.git", rev = "c96ef1520ab08b40e48ed7643002b5c06ad13e07" }
rusteda-compute = { git = "https://github.com/lab-emi/RustEDA-Common.git", rev = "c96ef1520ab08b40e48ed7643002b5c06ad13e07" }
rusteda-formats = { git = "https://github.com/lab-emi/RustEDA-Common.git", rev = "c96ef1520ab08b40e48ed7643002b5c06ad13e07" }
rusteda-cli = { path = "crates/apps/rusteda-cli" }
rusteda-cli-shared = { package = "rusteda-cli-common", git = "https://github.com/lab-emi/RustEDA-Common.git", rev = "c96ef1520ab08b40e48ed7643002b5c06ad13e07" }
ruststa = { path = "crates/engines/ruststa" }
ruststa-check = { path = "crates/verify/ruststa-check" }
ruststa-fixtures = { path = "crates/verify/ruststa-fixtures" }
Expand All @@ -28,13 +29,16 @@ crossterm = { version = "=0.29.0", default-features = false, features = ["window
serde = { version = "=1.0.228", features = ["derive"] }
# float_roundtrip: the decimal text of a stored f64 parses back to the same value.
serde_json = { version = "=1.0.149", features = ["float_roundtrip"] }
flate2 = { version = "=1.1.10", default-features = false, features = ["rust_backend"] }
libc = "=0.2.189"
thiserror = "=2.0.18"
rayon = "=1.12.0"
rustc-hash = "=2.1.2"
# Plain-record views of the frozen netlist tables and the compute task interface.
bytemuck = { version = "=1.25.2", features = ["derive"] }
memmap2 = "=0.9.11"
xxhash-rust = { version = "=0.8.19", default-features = false, features = ["xxh3"] }
smallvec = { version = "=1.16.2", default-features = false }
# The CUDA driver and NVRTC libraries are loaded at run time: builds need no CUDA toolkit.
cudarc = { version = "=0.19.10", default-features = false, features = ["std", "driver", "nvrtc", "fallback-dynamic-loading", "cuda-version-from-build-system", "fallback-latest"] }

Expand Down
Loading