Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
d42b821
rel 3.0
jjcherry56 Jan 4, 2026
4fbe16e
ApiChanges
jjcherry56 Jan 4, 2026
e5ee0fd
fmt
jjcherry56 Jan 5, 2026
5314489
rebase
jjcherry56 Jan 13, 2026
24f9ee3
Merge branch 'master' into rel_3.0
jjcherry56 Jan 15, 2026
be56ead
SearchPred0 not thru timing checks
jjcherry56 Jan 15, 2026
fc8d7fa
Sta::isConstant
jjcherry56 Jan 15, 2026
1da3e24
Merge branch 'master' into rel_3.0
jjcherry56 Jan 17, 2026
b04ffe7
LibertyBuilder::makeRegLatchArcs null ref resolves #368
jjcherry56 Jan 21, 2026
cb8dde1
tcl [empty_model net_iterator] resolves @367
jjcherry56 Jan 21, 2026
7c15c64
Sta::networkChanges/deleteParasitics crash resolves #369, #370
jjcherry56 Jan 21, 2026
2f9bd75
error include msg id
jjcherry56 Jan 23, 2026
db01a21
Merge branch 'master' into rel_3.0
jjcherry56 Jan 23, 2026
b8c6b56
Merge branch 'master' into rel_3.0
jjcherry56 Jan 28, 2026
74f756c
merge
jjcherry56 Jan 28, 2026
5605979
Sta::netorkChangedNonSdc resolves #372
jjcherry56 Jan 29, 2026
98bffa3
Merge branch 'master' into rel_3.0
jjcherry56 Jan 30, 2026
0ae888b
Merge branch 'master' into rel_3.0
jjcherry56 Feb 3, 2026
78f5794
cursor coding-standards
jjcherry56 Feb 3, 2026
98d0f56
enable LTO
jjcherry56 Feb 3, 2026
c7f4bb3
Merge branch 'master' into rel_3.0
jjcherry56 Feb 5, 2026
33e480a
liberty memory management
jjcherry56 Feb 5, 2026
7cb71fe
liberty memory management
jjcherry56 Feb 5, 2026
4823a4e
Merge branch 'master' into rel_3.0
jjcherry56 Feb 11, 2026
4689eec
clang-format
jjcherry56 Feb 11, 2026
4c157f4
InternalPower::related_pg_port string->port
jjcherry56 Feb 11, 2026
b92db09
Merge branch 'master' into rel_3.0
jjcherry56 Feb 11, 2026
52b49f8
centos docker
jjcherry56 Feb 11, 2026
8925c98
Merge branch 'master' into rel_3.0
jjcherry56 Feb 12, 2026
bb23f15
Sdc::deleteDeratingFactors resolves #381
jjcherry56 Feb 13, 2026
54a3cc0
revert bb23f157
jjcherry56 Feb 13, 2026
aca993e
Sta::clearNonSdc clear sim resolves #382
jjcherry56 Feb 17, 2026
d19d99d
init Parasitics::coupling_cap_factor_ resolves #383
jjcherry56 Feb 17, 2026
b69645e
make_scene missing mode error resolves #384
jjcherry56 Feb 24, 2026
795c190
ClkLatency::findClkDelays unclocked regs resolves #385
jjcherry56 Feb 24, 2026
79ebc34
report_path -path_group w/-default resolves openroad issue #9439
jjcherry56 Feb 25, 2026
d1bfb1d
define_scene use filename or library name resolves #386
jjcherry56 Feb 25, 2026
f0c9971
Expose 'TimingType' from `TimingArc`. (#380)
rocallahan Feb 25, 2026
a2cd40f
fix: Revert "Expose 'TimingType' from `TimingArc`. (#380)" (#390)
kazutoiris Feb 26, 2026
95d5ebb
test/helpers.tcl
jjcherry56 Feb 26, 2026
a47a8dd
Add GitHub Action for CI and fix broken testcases (#391)
kazutoiris Feb 27, 2026
c010a0f
liberty reader rewrite
jjcherry56 Feb 28, 2026
d31372e
regression sta_dir
jjcherry56 Feb 28, 2026
a6425a3
FindMessages criticalError
jjcherry56 Feb 28, 2026
cd21c43
rm LibertyPort::clkTreeDelays, clockTreePathDelays
jjcherry56 Feb 28, 2026
e76f54a
rm TokenParser
jjcherry56 Feb 28, 2026
0f8d7cf
mv StdStringSeq defs to StringUtil.hh
jjcherry56 Feb 28, 2026
94b8fd8
dcalc threshold adjustment
jjcherry56 Mar 2, 2026
741bf4d
rm using std::
jjcherry56 Mar 2, 2026
e054499
report_arrival requires not needed
jjcherry56 Mar 2, 2026
f89fcbf
tcl sta::is_ideal_clock
jjcherry56 Mar 3, 2026
6f4cdcf
tcl sta::is_ideal_clock
jjcherry56 Mar 3, 2026
73e1a39
rm unused Sta::report functions
jjcherry56 Mar 3, 2026
eb0446d
Write verilog escape (#394)
dsengupta0628 Mar 3, 2026
62cd210
back edge->to is a root resolves #395
jjcherry56 Mar 3, 2026
8ed837d
relevelize latch EN->Q
jjcherry56 Mar 5, 2026
f1e5587
rapidus liberty latch D->Q/EN->Q matching
jjcherry56 Mar 6, 2026
d8c0e92
RiseFall use shortName instead of to_string
jjcherry56 Mar 6, 2026
12c811a
latch en=1 tags
jjcherry56 Mar 7, 2026
ad1cb85
doc
jjcherry56 Mar 7, 2026
bbe31b0
comment
jjcherry56 Mar 7, 2026
60f6e59
rm PwrActivityOrigin::defaulted
jjcherry56 Mar 7, 2026
b5b0c66
power activity doc resolves #192
jjcherry56 Mar 7, 2026
ef924bb
fmt
jjcherry56 Mar 7, 2026
3b61817
sdc:isConstrained for clk latency pin
jjcherry56 Mar 8, 2026
274637c
liberty attributes after cells resolves #400
jjcherry56 Mar 8, 2026
a419f0a
LibertyPortPair calls
jjcherry56 Mar 8, 2026
fe0e3d0
const
jjcherry56 Mar 8, 2026
c7ba405
comment
jjcherry56 Mar 8, 2026
c2c40f7
DmpAlg
jjcherry56 Mar 8, 2026
48511e0
override
jjcherry56 Mar 8, 2026
c7d4867
include/sta/WriteSdc.hh -> sdc/WriteSdc.hh
jjcherry56 Mar 8, 2026
bf8a61f
PinPair
jjcherry56 Mar 8, 2026
d7905a3
delay_calcs use std::string
jjcherry56 Mar 8, 2026
ab99512
spef reader use std::string
jjcherry56 Mar 8, 2026
8bd938d
CheckError use std::string
jjcherry56 Mar 8, 2026
0c36caa
rm StdString
jjcherry56 Mar 8, 2026
a179791
Use & for StdStringSeq args
jjcherry56 Mar 8, 2026
7e7ab96
rm StdString
jjcherry56 Mar 8, 2026
4f54079
rm StringSet
jjcherry56 Mar 8, 2026
859982b
StdStringSeq -> StringSeq
jjcherry56 Mar 8, 2026
28d94b8
StdStringSet -> StringSet
jjcherry56 Mar 8, 2026
d99cdd1
Sta::makeCheckTiming
jjcherry56 Mar 8, 2026
28b9401
const
jjcherry56 Mar 8, 2026
9b2bdf8
PathGroup::name std::string
jjcherry56 Mar 8, 2026
f1b33ed
PathGroup use BoundedHeap
jjcherry56 Mar 9, 2026
129d007
override
jjcherry56 Mar 10, 2026
0850e97
readLibraryAttributes only call when non-empty library
jjcherry56 Mar 10, 2026
2c1024a
path end leak
jjcherry56 Mar 10, 2026
2ada1ce
delete_all_memory mem use after delete
jjcherry56 Mar 10, 2026
6280635
liberty statetable ref test_cell ports resolves #276
jjcherry56 Mar 10, 2026
fbe9da3
Fix for OpenSTA issue 398 and OpenROAD issue 9454 with regression (#401)
dsengupta0628 Mar 10, 2026
83d08b5
verilog reader use override
jjcherry56 Mar 10, 2026
981f44d
update copyright
jjcherry56 Mar 10, 2026
7668e43
rm deprecated functions
jjcherry56 Mar 10, 2026
0703d8e
README
jjcherry56 Mar 11, 2026
00ee6a1
liberty max_transition warning resolves #403
jjcherry56 Mar 11, 2026
818596f
LumpedCapDelayCalc::makeResult resolves #403
jjcherry56 Mar 12, 2026
0a5b95a
CcsCeffDelayCalc::loadDelaySlew
jjcherry56 Mar 13, 2026
d6e7b42
lvf squish
jjcherry56 Mar 13, 2026
464d404
PathGroup revert f1b33edd9
jjcherry56 Mar 15, 2026
fbd1710
PathEnd::copy use copy constructors
jjcherry56 Mar 15, 2026
5fbd2a1
Graph::slew/arcDelay rm static
jjcherry56 Mar 16, 2026
134b547
use std::format squash
jjcherry56 Mar 15, 2026
5a1b4cb
sta::format
jjcherry56 Mar 15, 2026
61b2a4b
indent
jjcherry56 Mar 16, 2026
90df0cf
LibertyScanner includes
jjcherry56 Mar 18, 2026
464bc3a
Report use string instead of string_view
jjcherry56 Mar 18, 2026
0b491ce
Delay float coercion for non-ssta applications
jjcherry56 Mar 18, 2026
73c2cca
delayAsString
jjcherry56 Mar 18, 2026
07c7eeb
Report::warn etc virtuals
jjcherry56 Mar 20, 2026
2ed1c2c
report json
jjcherry56 Mar 20, 2026
d90bf7d
rename Report virtuals to warnMsg etc
jjcherry56 Mar 20, 2026
bacb61f
regression -j
jjcherry56 Mar 21, 2026
420519c
write_path_spice
jjcherry56 Mar 21, 2026
7b02810
regression usage
jjcherry56 Mar 22, 2026
ed19ed8
power fmt
jjcherry56 Mar 23, 2026
04f4528
ccs ceff pocv
jjcherry56 Mar 23, 2026
3ec34c5
Only install fmt if std::format is not available
jjcherry56 Mar 24, 2026
f4048cd
read_saif ref missing instance resolves #406
jjcherry56 Mar 24, 2026
c387621
StaConfig.hh pass HAVE_CXX_STD_FORMAT
jjcherry56 Mar 24, 2026
d233581
Make `wire_load_tree_` default to unknown so we can detect when it's …
rocallahan Mar 24, 2026
b9e439f
delay calc clip delay to 0.0 resolves #405
jjcherry56 Mar 25, 2026
6742692
string squash
jjcherry56 Mar 29, 2026
ad80dd5
cmake show swig version
jjcherry56 Mar 29, 2026
614385f
Liberty unnecessary move
jjcherry56 Mar 29, 2026
1806e4a
StaTclTypes %include "std_string_view.i"
jjcherry56 Mar 29, 2026
3d0b34e
ReportPath::reportLine
jjcherry56 Mar 29, 2026
725a6e5
require cmake 3.16
jjcherry56 Mar 29, 2026
5aa56bc
cmake swig
jjcherry56 Mar 29, 2026
46472e0
regresssion update failures/diffs
jjcherry56 Mar 29, 2026
538db62
filter_objects via Akash Levy resolves #399
jjcherry56 Mar 30, 2026
5955958
findScaleFactorType, findScaleFactorPvt string_view
jjcherry56 Mar 30, 2026
1d4b516
GraphDelayCalc::findInputArcDelay thread issue
jjcherry56 Mar 31, 2026
9eb9edb
GateTableModel::gateDelay do not clip delays
jjcherry56 Mar 31, 2026
8c1ebce
GraphDelayCalc::findInputDriverDelay rm finishDrvrPin
jjcherry56 Mar 31, 2026
638ffa5
cleanup
jjcherry56 Mar 31, 2026
70659c2
PathVisitor::visitFaninPaths filter check edges
jjcherry56 Apr 1, 2026
4180288
Add string_view header and sort includes in ContainerHelpers.hh (#413)
mikesinouye Apr 2, 2026
e8218f2
Tcl 9 compatibility changes (#414)
hzeller Apr 3, 2026
a5921d1
util/StringUtil.cc: feature-test std::from_chars (#415)
donn Apr 3, 2026
f873c65
Library/Cell name/filename args string_view
jjcherry56 Apr 3, 2026
5d40134
ArnoldiDelayCalc rcmodel
jjcherry56 Apr 3, 2026
e04f36b
GraphDelayCalc::findInputArcDelay rm Slew
jjcherry56 Apr 3, 2026
6bb888b
stringFloat comment
jjcherry56 Apr 3, 2026
2f85fdf
Dmp cleanup
jjcherry56 Apr 3, 2026
fe23c45
regression.tcl
jjcherry56 Apr 3, 2026
aedddce
DMP use std::array
jjcherry56 Apr 4, 2026
84150e9
prima ceff
jjcherry56 Apr 4, 2026
e3d1bb0
Network [[nodiscard]]
jjcherry56 Apr 4, 2026
d6e826e
save_ok hook
jjcherry56 Apr 4, 2026
548b665
get_* -filter allow true/false, '.' in glob pattern resolves #416
jjcherry56 Apr 4, 2026
645f266
report_dcalc prima resolves #418
jjcherry56 Apr 7, 2026
c887b2e
Bias pin handling (#409)
dsengupta0628 Apr 7, 2026
b136ba3
PrimaDelayCalc::reportGateDelay resolves #418
jjcherry56 Apr 9, 2026
d6268da
Consider multi-bit flops as having sequentials. (#419)
mikesinouye Apr 10, 2026
53f53e4
CmakeLists
jjcherry56 Apr 10, 2026
6ef92c5
LibertyPort::less
jjcherry56 Apr 10, 2026
094aa1a
VerilogNamespace use string_view
jjcherry56 Apr 10, 2026
0a8a86d
FilterObjects use string_view
jjcherry56 Apr 10, 2026
63efee6
tidy round1
jjcherry56 Apr 13, 2026
21848bc
clang tidy
jjcherry56 Apr 15, 2026
134cf2c
tidy
jjcherry56 Apr 16, 2026
b20a938
Machine.cc
jjcherry56 Apr 16, 2026
49d0ba2
github workflow retention
jjcherry56 Apr 16, 2026
12c5987
prima non-ccs report dcalc resolves #418
jjcherry56 Apr 16, 2026
6e7ec45
rm extra swig module dcls
jjcherry56 Apr 16, 2026
6bcf7b8
rm unnecessary sta:: in tcl
jjcherry56 Apr 16, 2026
e629909
report_check_types $422
jjcherry56 Apr 16, 2026
7838986
Clock embed sequence members
jjcherry56 Apr 17, 2026
53a1552
timing_arc full_name
jjcherry56 Apr 17, 2026
48febcf
stringFloat
jjcherry56 Apr 17, 2026
668cfb2
makeSceneMap rm dup warnings
jjcherry56 Apr 18, 2026
6c9af4a
LibertyPort::less
jjcherry56 Apr 18, 2026
c671b26
tidy
jjcherry56 Apr 20, 2026
daeb850
cursor
jjcherry56 Apr 21, 2026
d8c56f1
Make defineProperty take handler by const& and clean up std::moves (#…
calewis Apr 21, 2026
ee5021d
Add missing headers <cstdlib> and <cerrno> to StringUtil.cc for strto…
calewis Apr 21, 2026
c8b9ffb
tidy
jjcherry56 Apr 21, 2026
f9643fb
set_pocv_mode warn if no lvf libs
jjcherry56 Apr 22, 2026
1edf439
spef allow illegal unquoted !'s
jjcherry56 Apr 22, 2026
f361dd6
spice args
jjcherry56 Apr 23, 2026
a1c3077
message ids
jjcherry56 Apr 24, 2026
d4c13bb
delays wrt clks refactor
jjcherry56 Apr 24, 2026
7a236c3
flatten Clock::uncertainties
jjcherry56 Apr 25, 2026
24ada4b
Scene::liberty_ use array
jjcherry56 Apr 25, 2026
f3f6085
leak
jjcherry56 Apr 25, 2026
1eb2e9b
untabify
jjcherry56 Apr 25, 2026
c44a7a7
Merge remote-tracking branch 'upstream/master'
donn May 21, 2026
cf758cb
Merge remote-tracking branch 'silimate/main' into merge_upstream
donn May 22, 2026
0129c8e
chore: clean up remnant printf-style debugPrints
donn May 22, 2026
0a8180d
fix: filter boolean property normalization
donn May 25, 2026
2989368
ci: bump to macOS 15 to fix broken test
donn May 26, 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
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ AllowAllParametersOfDeclarationOnNextLine: false
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: TopLevel
BinPackArguments: false
BinPackArguments: true
# fails
BinPackParameters: AlwaysOnePerLine
BraceWrapping:
Expand All @@ -22,7 +22,7 @@ BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
# fails if all initializers fit on one line
BreakConstructorInitializers: AfterColon
ColumnLimit: 90
ColumnLimit: 85
# fails
ConstructorInitializerIndentWidth: 2
IncludeBlocks: Preserve
Expand Down
82 changes: 82 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
Checks: >
clang-diagnostic-*,
clang-analyzer-*,
-clang-analyzer-core.NonNullParamChecker,
-clang-analyzer-core.CallAndMessage,
-clang-analyzer-core.uninitialized.UndefReturn,
-clang-analyzer-cplusplus.NewDeleteLeaks,
-clang-analyzer-optin.performance.Padding,
readability-*,
-readability-identifier-naming,
-readability-braces-around-statements,
-readability-convert-member-functions-to-static,
-readability-else-after-return,
-readability-function-cognitive-complexity,
-readability-inconsistent-ifelse-braces,
-readability-identifier-length,
-readability-implicit-bool-conversion,
-readability-isolate-declaration,
-readability-magic-numbers,
-readability-make-member-function-const,
-readability-math-missing-parentheses,
-readability-named-parameter,
-readability-qualified-auto,
-readability-redundant-access-specifiers,
-readability-simplify-boolean-expr,
-readability-static-definition-in-anonymous-namespace,
-readability-suspicious-call-argument,
-readability-uppercase-literal-suffix,
-readability-use-anyofallof,
google-*,
-google-readability-avoid-underscore-in-googletest-name,
-google-readability-braces-around-statements,
-google-readability-casting,
-google-readability-todo,
-google-runtime-references,
-google-explicit-constructor,
performance-*,
-performance-enum-size,
bugprone-*,
-bugprone-branch-clone,
-bugprone-easily-swappable-parameters,
-bugprone-exception-escape,
-bugprone-macro-parentheses,
-bugprone-move-forwarding-reference,
-bugprone-narrowing-conversions,
-bugprone-suspicious-missing-comma,
-bugprone-throwing-static-initialization,
modernize-*,
-modernize-avoid-bind,
-modernize-avoid-c-arrays,
-modernize-concat-nested-namespaces,
-modernize-macro-to-enum,
-modernize-pass-by-value,
-modernize-raw-string-literal,
-modernize-return-braced-init-list,
-modernize-use-auto,
-modernize-use-nodiscard,
-modernize-use-trailing-return-type,
-modernize-use-transparent-functors,
misc-*,
-misc-const-correctness,
-misc-multiple-inheritance,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-redundant-expression,
-misc-unused-parameters,
-misc-use-anonymous-namespace,
-misc-use-internal-linkage,
-misc-include-cleaner

# Only report diagnostics in headers under this tree (app/, include/sta/, build-generated
# headers, etc.).
# Excludes system and third-party paths such as /opt/local/include.
HeaderFilterRegex: '.*/(app|cmake|dcalc|graph|liberty|network|parasitics|power|sdc|sdf|search|spice|tcl|util|verilog|include/sta|build/include/sta)/.*'

# util/gzstream.hh
# util/FlexDisableRegister.hh
# Bison-generated parser headers (build/{Liberty,Verilog,...}Parse.hh)
# Homebrew and MacPorts third-party headers.
ExcludeHeaderFilterRegex: '(^/opt/(homebrew|local)/.*)|((.*/)?(gzstream\.hh|FlexDisableRegister\.hh|(Liberty|Verilog|Sdf|Spef|Saif|LibExpr)Parse\.hh)$)'
SystemHeaders: false
FormatStyle: none
59 changes: 59 additions & 0 deletions .cursor/rules/cpp-coding-standards.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
description: C++ coding standards and formatting for OpenSTA
globs: ["**/*.cc", "**/*.hh", "**/*.h"]
alwaysApply: false
---

# C++ Coding Standards

## Line Width

- **Keep lines under 90 characters** to match `.clang-format` (ColumnLimit: 90).
- Break long lines at logical points: after commas, before operators, after opening parens.

## Naming Conventions

- **Classes**: Upper camel case (`ClassName`)
- **Member functions**: Lower camel case (`memberFunction`)
- **Member variables**: Snake case with trailing underscore (`member_variable_`)
- **Functions**: Lower camel case (`functionName`)
- **Variables**: Snake case

## Code Style

- Use `#pragma once` for header guards.
- Return type on the line before the function name; arguments on separate lines when long.
- No braces for single-line if/for; use braces for multi-line bodies.
- Prefer `std::string` over `char*` for string members.
- Prefer pass-by-value and move for sink parameters (parameters that get stored).

## File Extensions

- C++ source: `.cc`
- C++ headers: `.hh`

## Include order

Sort `#include` lines **lexicographically by the path inside** `<>`
or `""` (case-sensitive). Separate **groups** with a single blank line.

### Translation units (`*.cc`)

1. **Primary header(s)** for this file only:
- `#include "Stem.hh"` where `Stem` matches the basename of the `.cc` file (e.g. `Foo.cc` → `Foo.hh`).
- If the file uses a paired private header, include `#include "StemPvt.hh"` **immediately after** `Stem.hh` (e.g. `MakeTimingModel.cc` → `MakeTimingModel.hh` then `MakeTimingModelPvt.hh`).
- Do **not** pull in other headers just because their names share a prefix with `Stem` (e.g. `SearchClass.hh` is not a “primary” include for `Search.cc`; it belongs in the project group below).

2. **System / standard library** headers: `#include <...>` lines, sorted alphabetically.

3. **All other project** headers: `#include "..."` lines, sorted alphabetically (including `search/Crpr.hh`-style paths and includes from `liberty/`, etc.).

If a **comment or special block** intentionally splits the include list (e.g. a third-party note before `#include "cudd.h"`), keep that structure; sort only within each contiguous run of `#include` lines unless merging groups is clearly safe.

### Headers (`*.hh`)

After `#pragma once` (and the file’s license block, if present):

1. **System** `#include <...>` lines, sorted alphabetically.

2. **Project** `#include "..."` lines, sorted alphabetically.
43 changes: 43 additions & 0 deletions .cursor/rules/cpp-indentation.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
description: C++ function call indentation for OpenSTA
globs: ["**/*.cc", "**/*.hh", "**/*.h"]
alwaysApply: false
---

# C++ Function Call Indentation

## Short Calls — Single Line

When arguments fit within the column limit (90 chars), keep them on one line:

```cpp
// ✅ GOOD
adjusted_data_arrival = delaySum(required, data_shift_to_enable_clk, this);

// ❌ BAD
adjusted_data_arrival = delaySum(required,
data_shift_to_enable_clk,
this);
```

## Nested Function Calls — Align Under Inner Call

When breaking nested calls across lines:
- Indent continuation lines of the inner call under its first argument (align with content after `innerFunc(`).
- Place remaining outer arguments on the same line as the inner call's closing `)`, indented under the outer function.

```cpp
// ✅ GOOD
required = delayDiff(delaySum(max_delay,
search_->clkPathArrival(disable_path),
this),
margin, this);

// ❌ BAD
required = delayDiff(
delaySum(max_delay,
search_->clkPathArrival(disable_path),
this),
margin,
this);
```
13 changes: 13 additions & 0 deletions .cursor/rules/opensta-tests.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
description: Where OpenSTA regression tests live (pvt/test vs public test/)
alwaysApply: true
---

# OpenSTA tests and regression

- **Primary suite:** Most regression tests, Tcl drivers, and golden `.ok` files live under **`pvt/test/`** (private / separate repo, often opened as a second workspace root alongside `master`).
- **Public subset:** **`test/`** at the OpenSTA repo root holds a smaller set of tests shipped with the public tree (e.g. `test/regression`, `*.tcl`, `*.ok` there).

When searching for a test name, regression lists, or updating goldens, **check `pvt/test` first**, then `test/`.

Typical driver: `pvt/test/regression` (or `test/regression` for the public list). Built `sta` binary is usually `master/build/sta` relative to the main checkout.
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: "daily"
55 changes: 55 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: CI

on:
push:
pull_request:

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true

- name: Set up dependencies
run: |
sudo apt-get update && sudo apt-get install -y flex libfl-dev bison tcl-dev tcl-tclreadline libeigen3-dev ninja-build

- name: Set up cudd-3.0.0
run: |
wget https://github.com/oscc-ip/artifact/releases/download/cudd-3.0.0/build.tar.gz
mkdir -p cudd
tar -zxvf build.tar.gz -Ccudd

- name: Build
run: |
mkdir build
cd build
cmake .. -G Ninja -DCUDD_DIR=$(pwd)/../cudd -DCMAKE_INSTALL_PREFIX=$(pwd)/install -DCMAKE_BUILD_TYPE=Release
cmake --build . --target all -- -j $(nproc)
cmake --install .
tar -zcvf build.tar.gz -Cinstall .

- name: Test
run: |
cd test
./regression

- name: Upload Artifacts
uses: actions/upload-artifact@v7
if: ${{ !cancelled() }}
with:
name: artifact
path: |
build/install/*
retention-days: 1

- name: Upload Test Result
uses: actions/upload-artifact@v7
if: ${{ !cancelled() }}
with:
name: result
path: |
test/results/*
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
docker run --entrypoint /bin/bash --tty --rm sta-${{ matrix.os }} -c "cd /OpenSTA/test && (./regression || (cat results/diffs && exit 1)) || (./regression -collections || (cat results/diffs && exit 1))"

macos:
runs-on: [macos-14]
runs-on: [macos-15]
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
Expand Down
Loading
Loading