Skip to content

ooyang0325/orcad-placement

v0.11.0

Windows-only Cadence PCB missions with native images and bundled expertise. Exact visually bound placement, library LOAD and revision SAVE proposals dispatch autonomously.

OrCAD placement agent

A local, bounded placement-access prototype for classic OrCAD X PCB Editor / Allegro X PCB Editor 25.1 on Windows.

Install in your coding client

Installation and marketplace instructions cover Codex, Claude Code, GitHub Copilot CLI/app, and direct VS Code MCP configuration. The repository includes portable and Claude-compatible plugin manifests, marketplace catalogs, shared skills, and a standard local MCP server.

From a trusted checkout, use an existing Python 3.12+ interpreter:

& 'C:\path\to\Python3\python.exe' -I -X utf8 scripts\install.py --client all

This prepares a versioned environment and non-overwriting client snippets; it does not edit client settings or install/license Cadence. Marketplace bootstrapping additionally needs the Windows py launcher. Portable installs allow autonomous placement, library loading and revision saves from exact visually bound proposals by default. No interactive approval or opt-in flag is required; native state, asset verification and single-use dispatch checks remain.

Development is gated by the milestones. The synthetic fixture and native read-only bridge are working in PCB Editor 25.1 S050. Exact one-use proposal dispatch and guarded native apply/save handlers are implemented, but live mutation, rollback, Undo, and saved-revision acceptance still require dedicated native validation. doctor alone does not establish a licensed connection.

Development setup

Use a separate Python 3.12+ installation. Do not replace Cadence's runtime or legacy Python installations. See setup.

& '<absolute-path-to-python3.exe>' -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
.\.venv\Scripts\python.exe -m orcad_placement_agent doctor
.\.venv\Scripts\python.exe -m orcad_placement_agent stage-probe
.\.venv\Scripts\python.exe -m unittest discover -s tests -v

Intended access boundary

The stage command copies the complete containing design folder, preserving project files and libraries under design-data alongside an isolated editable working.brd. Use --design-root for a larger project tree or --board-only to copy just the board. File copying does not implicitly load libraries or change editor settings.

Read-only inspection, placement planning, and proposal preparation do not move components or save the board. After independent review, the agent can autonomously dispatch an exact visually bound proposal once.

The controller sends bounded requests to a small SKILL adapter in a dedicated visible editor holding a disposable board copy. Every change will remain bound to its exact target pose and current board state. Apply and save remain separate operations. Placement APPLY dispatches autonomously; library LOAD and revision SAVE now also dispatch autonomously from their own proposals.

Version 0.10.0 adds pcb_placement_intake to route an attached mission into missing-library preparation or full placement planning, and pcb_read_proposal to return an exact proposal's archived PNG directly to the reviewer/executor. The continuous mission driver continues supported handoffs without asking the user to relay proposals or say "continue". Editor setup remains separate from these typed MCP operations. Unsupported native geometry and missing image capability remain blockers. Version 0.11.0 extends native readback to full-span drilled/slotted padstacks, embedded flash/shape support, reference/pin labels and non-copper package arcs. Drill envelopes and complete signatures are preserved; placed pad paths are normalized from board coordinates to pin-local half-DBUs before comparison. Fine-grid planning uses disclosed sampled seeds plus exact grid-snapped contact candidates when full lattice enumeration is too large. The actual 46-component board now passes full read-only intake and complete target planning. Native placement/rollback and saved end-to-end acceptance remain distinct checkpoints.

Arbitrary production boards, raw schematic/netlist import, arbitrary library acquisition, routing, Presto, headless execution, remote access, and arbitrary SKILL evaluation remain outside the supported native boundary.

The experimental placement mission workflow adds concrete all-component planning, native initial-placement handling and separate autonomous revision-save dispatch for explicitly staged managed-board-v1 designs. It starts with a known imported logical inventory and embedded simple SMT footprints, including zero physically placed components. Native acceptance of this new model remains pending; Python/fake-editor tests are not that proof.

Nonrectangular outlines are checked as complete simple contours, including concave notches and bounded circular-arc approximation. Both native gates and planning reject footprint crossings; the outline's bounding rectangle is not treated as usable board area. Other footprint, routing and native-model limitations still apply.

Group-aware constraints preserve flat room/net groups, named physical/spacing/same-net sets, and ROOM assignments instead of requiring users to delete them. Missing package definitions remain an explicit library-preparation blocker until separately resolved; group support does not silently import footprints.

Version 0.9.0 introduced library setup for all-unplaced managed-board-v1 designs with known logical inventory. The operator uses attach --library-setup; pcb_inspect_libraries and pcb_prepare_library_load inspect and prepare exact missing definitions from a bounded, verified staged PSM/PAD/FSM/SSM cache. The executor now dispatches the exact proposal through pcb_load_libraries without elicitation; recover with pcb_library_load_status, never a replay. Loading is non-atomic and in memory only: partial/uncertain outcomes are possible. It is not import, refresh of existing definitions, placement, Save, persistence or global configuration. Full pcb_inspect must separately pass the supported placement-geometry gates. Native library-load acceptance is pending.

The supplied doc manuals and pcb_design_book references remain local-only. Do not commit them, vendor libraries, or native working board files. The user-supplied design directory also remains local-only.

stage-probe copies the trusted read-only SKILL probe to a fresh user-local directory and prints manual loading instructions. It does not start Cadence, create a board, or establish live access by itself.

Development history

Use Git commits for implementation history, with checkpoints after coherent changes. The source-board fingerprint and proposal digest are safety checks: they detect source changes and bind dispatch to exact content. They are not a version-control system or a substitute for Git.

stage, attach, snapshot, and reconcile implement the read-only bridge; propose prepares the exact reviewed pose without changing the board. The initial native model accepts only the original self-contained synthetic fixture. A supplied real board can be read using the separate probe, but is explicitly rejected by the placement adapter rather than treated as safe. apply and save remain experimental until M3/M4 native acceptance is completed.

Built-in PCB expertise

The package ships 36 original guidance cards covering signal/routing, power/thermal, and placement/manufacturing. Agents retrieve complete principles, required inputs, actionable checks, tradeoffs and limits immediately: no books, PDF index, model training or extra knowledge setup required. Bibliography records development-time synthesis from selected source sections, not runtime book access. Raw books and copied extracts are not distributed.

Reference search and rule lookup work through MCP, the app tools and CLI. Local PDFs remain optional enrichment; only their extraction requires .[knowledge]. Retrieval makes no network/model calls.

PCB expert agents

The agent workflow provides PCB placement orchestrator above PCB placement planner, PCB layout reviewer, and PCB placement executor. They use bundled expertise, distinguish board facts from assumptions, and cite stable rule IDs (or optional PDF excerpts actually read). All can inspect the bound Cadence image through bounded tools; none has unrestricted shell or file-edit access.

Start with the installed reference tools and your design inputs; a packet is optional. To create one without starting Cadence or calling a model:

.\.venv\Scripts\python.exe -m orcad_placement_agent agent-context `
    --goal "Review decoupling placement and return paths" `
    --topic decoupling --topic return-paths

If using a packet, give its printed path to the planner, then the same packet and its response to the reviewer. The executor can autonomously submit an exact visually grounded proposal through the bounded execution workflow. No implicit Save is performed; exact Save proposals and the selected native model's limits remain.

For a full mission, select PCB placement orchestrator or invoke the portable pcb-placement-orchestrate skill. It manages intake, functional floorplanning, dependency-ordered batches, independent review, execution handoffs and routing-aware completion gates. It now uses an executable mission engine, not just role handoffs: pcb_plan_placement, pcb_prepare_next_placement, and pcb_placement_status. The default fixture model stays unchanged. The explicit managed model implements initial placement under its restricted geometry/library conditions. Raw empty-design import remains an intake blocker. Missing definitions may use the separate approved setup workflow; unresolved libraries and unsupported geometry still block placement. Native end-to-end acceptance is not yet complete. No empty inventory is reported complete and no routing or electrical certification is implied.

Portable clients

The optional local MCP interface exposes the bounded tools to other MCP-capable clients. Install .[integrations] from this trusted repository and use an isolated Python command; do not install an unrelated similarly named package from a registry. Wheels include the original native runtime assets, not the local books or board files.