Skip to content

Verification Hub · Unified verification & certificates

Orchestrates connectivity/legality/formal/DRC/STA checks and issues machine-readable certificates for what was verified. Upstream changes auto-invalidate related certificates.

Agent Service · D0/DRAFT · Wave 0 Planned · D0 iEDA.ai L4
verify — bundle — certificate
# orchestrate & certify verification
$ verify.bundle("post-route", risk="high")
[bundle] DRC + LVS + STA + Formal
[cert] post-route/v3 → SIGNED
→ upstream change invalidates cert
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model

Core capabilities

1. Validator Registry

Register all validators and capability declarations: each declares domain (connectivity/legality/formal/DRC/LVS/STA), stage (post-synth/post-place/post-route/signoff), coverage (full/partial/sampled), and cost.

2. Bundle Orchestration

Orchestrate verification bundles by risk. Low-risk changes (e.g., hold buffer fix) trigger light bundle (local DRC + STA); high-risk (e.g., re-place) trigger full (DRC+LVS+STA+Formal). Validators in a bundle run in parallel.

3. Certificate

Machine-readable verification certificates (JSON): checks passed, conditions (corner/mode), input design hash, validator version, issue time. Digitally signed; downstream flows (e.g., tape-out gate) accept valid certificates only.

4. Invalidation

Upstream changes auto-invalidate certificates via iDB design_hash: any netlist/layout/timing change yields a new hash; certificates bound to the old hash mark invalidated. Selective re-verify supported.

5. Gate Integration

Links with Evaluation (Gate 12): Gate defines required certificates (e.g., tape-out needs DRC+LVS+STA); Verification Hub reports current status. Missing or invalid certificates block the gate.

Agent calling patterns

from ieda.agent import VerificationHub, VerifyBundle

hub = VerificationHub()

# Register validator
hub.register(
    name="iSTA-verify",
    domain="STA",
    stage="post-route",
    coverage="full",
    cost_estimate="medium"
)

# Orchestrate verification bundle
bundle = hub.bundle(
    stage="post-route",
    risk="high",
    design_hash=current_idb.design_hash
)
# bundle.validators: [DRC, LVS, STA, Formal]

# Run verification
result = hub.verify(bundle)
# result.certificate: {
#   "id": "cert-post-route-v3",
#   "design_hash": "abc123",
#   "checks_passed": ["DRC", "LVS", "STA", "Formal"],
#   "conditions": {"corner": "wc_cmax"},
#   "signed_by": "verification-hub/v2.1"
# }

# Auto-invalidate on upstream change
hub.invalidate(design_hash="abc123")  # mark cert expired

Input / output contract

DirectionFieldTypeDescription
InputstagestrFlow stage (post-synth/post-place/post-route/signoff)
InputriskstrRisk level determining bundle scope (low/medium/high)
Inputdesign_hashstrCurrent design state hash
Inputrequired_checkslist[str]Required checks (optional, override bundle defaults)
OutputbundleVerifyBundleOrchestrated validator list and execution order
OutputcertificateCertificateSigned verification certificate (JSON + digital signature)
Outputstatus_mapdictLatest certificate status per stage