mirror of
https://github.com/The-OpenROAD-Project/OpenROAD.git
synced 2026-06-02 01:08:34 +08:00
Add project-specific AI agent guidance files that work across Claude Code, Codex, and Gemini CLI. Includes 5 critical rules (sta/ protection, clang-format exclusions, DCO compliance, submodule hygiene, upstream bug tracing) and 4 sub-guides for build, testing, CI, and coding patterns. Relocate triage-issue skill to .agents/skills/ (cross-tool) with .claude/skills symlink for backwards compatibility. Add .gemini/commands/triage-issue.toml for Gemini CLI support. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
778 B
778 B
OpenROAD Build Pitfalls
Debug vs Release Build Behavior Differences
When tests pass locally (Debug) but fail in CI (Release), check for:
- Uninitialized members: Debug zero-initializes memory; Release leaves garbage
- nullptr through custom hashers: e.g.,
PinIdHash::operator()(nullptr)segfaults in Release only - Subnormal float values: Uninitialized floats may be zero in Debug but subnormal in Release
Shared Library RPATH vs LD_LIBRARY_PATH
External tool binaries (e.g., kepler-formal) have RPATH baked in pointing to the original install location. After rebuilding a dependency, you must either cmake --install to the RPATH location or use LD_PRELOAD/patchelf. Setting LD_LIBRARY_PATH alone may be insufficient if RPATH takes precedence.