Assess synthesis and inference
Skill simra-tech/OpenADA/skills/assess-synthesis-and-inference
Assess ASIC synthesis, technology mapping, and inferred hardware with backend-independent OpenADA evidence. Use when reviewing whether RTL produced a complete Liberty-mapped netlist, investigating unexpected register, latch, memory, arithmetic, or mux structures, comparing controlled synthesis experiments, or deciding whether a netlist is trustworthy enough for static timing without confusing successful mapping with functional equivalence or specification closure.From its SKILL.md
npx -y skills add simra-tech/OpenADA --skill assess-synthesis-and-inferenceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 19 stars19 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.5 KB, as published. Nobody here has run it
Assess Synthesis and Inference
Turn one frozen RTL configuration into reviewable mapped-netlist evidence. Use
$openada:openada for semantic operations and normalized results. Keep native
invocation mechanics below the contract and keep the RTL, Liberty, technology
maps, constraints, and retained netlist authoritative.
Separate the claims
Use these exact layers:
- Review strict lint through
openada.operation/rtl.lint/v1alpha1andopenada.assertion/rtl.lint.clean/v1alpha1when cleanliness is required. - Produce mapping evidence through
openada.operation/logic.synthesize/v1alpha1andopenada.assertion/synthesized-netlist.valid/v1alpha1. - Treat timing as a later, separate
openada.operation/timing.analyze/v1alpha1result.
A synthesis pass establishes a fresh, structurally validated, fully Liberty-mapped netlist under the recorded policy. It does not establish RTL-to- netlist equivalence, simulation behavior, CDC/RDC safety, DFT readiness, clock-tree feasibility, routed timing, power, area-target satisfaction, or silicon correctness. Keep each absent primitive not evaluated.
Freeze a reproducible synthesis manifest
Record:
- repository revision, ordered RTL sources, conservatively captured include dependencies, unresolved-literal-include disclosure, and hashes;
- top, frontend, declared language dialect/revision, include directories, defines, generated sources, and black-box assumptions;
- exact Liberty and technology-map identities and hashes, selected PVT corner, cell exclusions, and library units;
- mapping policy, flattening policy, undefined-value policy, delay target and native constraint file when supplied;
- upstream lint/structural envelope paths, artifact hashes, and statuses;
- selected operation/feature, implementation and native product/version, evidence directory, result-envelope path, and expected output roles.
Do not substitute a convenient Liberty, corner, macro model, technology map, or top. The current result envelope has no general request or result correlation field, and the v1alpha1 synthesis surface has no module-parameter override. Do not invent an identifier or silently use default parameters when the intended configuration requires an override. Do not compare runs with different ordered sources, captured dependencies, defines, or policies as if they were the same experiment. If a required file or design-intent choice is ambiguous, ask one focused question and stop.
Inspect and preflight the semantic capability
Require:
openada.operation/logic.synthesize/v1alpha1openada.assertion/synthesized-netlist.valid/v1alpha1openada.feature/synthesis.asic-liberty/v1alpha1
Inspect the installed closed schema before constructing the request:
openada profile show openada.operation/logic.synthesize/v1alpha1
openada doctor --project-root /absolute/project \
--assertion asic-netlist-synthesized
Preflight does not inspect RTL or prove mapping. If the operation, feature, implementation, frontend, or tool is unavailable, report not evaluated — capability unavailable. Do not replace it with a raw synthesis script.
Pass the RTL gate
Require an explicitly reviewed source configuration, stable captured source and dependency hashes, and a successful structural result before using a mapped netlist for downstream decisions. Also require strict lint pass when the project's readiness definition requires diagnostic cleanliness.
Include capture is conservative rather than exact conditional-preprocessor
closure. Review data.unresolved_literal_includes against the declared defines;
label that determination source inspection. If a possibly active dependency
cannot be bound, or the intended configuration needs an unsupported parameter
override, keep synthesis readiness not evaluated.
A warning-only strict lint failure may motivate a diagnostic synthesis only when the user explicitly accepts that limited purpose. It cannot be waived into RTL readiness or synthesis closure. Stop on lint errors, unknown lint, unknown structural evidence, unresolved top/configuration, or an unexplained black box.
Invoke synthesis through the intent
Use only the semantic command and declared options. For example:
openada synthesize rtl/pkg.sv rtl/top.sv \
--top top \
--liberty pdk/cells.lib \
--frontend slang \
--language 1800-2017 \
--include-dir rtl/include \
--define ASIC \
--techmap pdk/cells_latch.v \
--dont-use 'CLKGATE_*' \
--abc-delay-target-ns 2.2 \
--output-dir evidence/synthesis
Include only options present in the frozen manifest. Supply an ABC constraint file only when its role, units, and provenance are understood. Never tune a target repeatedly and report only the favorable run.
Use --language yosys-sv with the built-in verilog frontend. Treat it as a
tool dialect, not an IEEE edition. The 1800-2017 and 1800-2023 selectors
are valid only with --frontend slang; they request that language edition but
do not certify tool or design conformance to IEEE 1800.
Read execution.status separately from engineering.status. Validate the
operation and assertion profile IDs in data.protocol, implementation and tool
version, data.abc_tool path/version/bytes/SHA-256,
data.abc_tool_identity_stable, the closed data.environment_policy, bound
source/dependency records, unresolved-include disclosure,
mapping policy, artifact freshness and hashes, and bounded diagnostics before
using statistics or the mapped netlist.
Scoped preflight inspects the primary synthesis connector. The synthesis result is
the authoritative external-ABC gate: abc.missing, abc.unusable, or
abc.changed means the mapping assertion was not established. When a project
pins non-default tool locations, bind both explicitly with --tool-path yosys=/absolute/yosys-bin --tool-path abc=/absolute/yosys-abc; do not let ambient
PATH select the mapper.
Route the contract result:
| Result | Meaning | Action |
|---|---|---|
engineering pass | The retained output is a complete validated Liberty-mapped netlist under the frozen policy | Review inference/mapping evidence; pass the exact artifact to timing if needed |
engineering fail | Complete evidence proves a recognized elaboration, synthesis, or mapping failure | Diagnose the first causal failure; do not use partial output |
engineering unknown | Execution, capture, dependency, statistics, JSON, mapping, or provenance evidence is incomplete | Stop all netlist, area, and timing-readiness claims; repair and rerun |
| invalid request | Inputs or policy are malformed, missing, or unsafe | Correct the manifest without weakening intent |
| unavailable/timeout/invocation failure | No synthesis assertion was established | Restore the same capability and rerun |
Review inference and mapping like a senior designer
For a passing result, separate contract facts from design review. Treat
normalized inference_stats, mapped stats, mapping_complete,
unmapped_cell_types, Yosys/ABC identity and environment policy, mapping
policy, and input/artifact hashes as normalized
evidence. Reconcile at least:
- process and memory counts before and after mapping;
- sequential cell count and area;
- cell histogram, total area, sequential area, and cells excluded by policy;
- unexpected internal or Liberty-absent cell types and whether the mapping completeness assertion is actually true.
Then read the authoritative RTL and retained mapped netlist/structure only as
source/artifact inspection. Use that inspection to compare intended versus
realized latch, register, memory, arithmetic, mux, priority, decode, constant
propagation, state-removal, and interface structure. Do not present those
review findings as normalized facts when they are absent from data. Label a
causal explanation inferred until a focused semantic check or controlled
experiment supports it.
Treat these as structural observations, not proof of behavioral equivalence. The v1alpha1 mapping policy explicitly sets undefined values to zero before technology mapping; record that choice and flag any reset, safety, or X-propagation argument that depends on four-state behavior. An absent internal/unmapped cell is necessary for this mapping assertion but does not prove that an intended SRAM, multiplier, clock gate, or other macro was inferred correctly. Compare against explicit architectural expectations; label unexplained differences inferred risk and propose a focused check.
Do not turn an area or cell-count observation into a specification pass. This release has no typed synthesis-statistics specification evaluator. Do not derive power from area or timing from a synthesis delay target.
When a separate formal-equivalence flow is available, bind it to the exact RTL
configuration and mapped-netlist hash rather than treating synthesis success
as equivalence. Use the same functional PDK and macro abstractions on both
sides. A PDK preprocessing error, a missing formal plugin, an unresolved
blackbox SAT model, or a name-based partition with an undriven synthetic alias
is a harness unknown, not inequivalence. Preserve those retries. If Liberty
functional import is used, record every ignored missing function; keep macros
as identical blackboxes only when their behavior is intentionally outside the
proof. Convert top-level tri-state cells with an explicit formal policy and
retain its mutual-exclusion assertions. Claim a pass only from a terminal
assertion reporting every constructed equivalence point proven and zero
unproven; bounded setup or partial point counts are not enough.
Control experiments and handoff
Change one variable per experiment: RTL structure, inference template, technology map, exclusion policy, delay target, or constraint file. Preserve the source/configuration diff and every result. Compare statistics only when all other manifest fields and library identities match; otherwise report the pair as non-comparable.
Hand off only the complete passing synthesis result envelope, the exact mapped-
netlist artifact and hash, and the exact Liberty/constraint identities. Use
$openada:assess-asic-timing for constraint-bound timing. If the RTL or mapping
policy changes, invalidate the timing result and rerun synthesis first.
Stop boundaries
Stop before using any netlist when mapping evidence is fail or unknown, any artifact binding is missing, a possibly active dependency is unresolved, or unexpected black boxes/unmapped cells remain. Stop before claiming functional preservation without a separate equivalence capability. Stop before declaring area, power, timing, DFT, or physical closure without their explicit contracts and project limits. Do not modify RTL, constraints, libraries, or maps without separate authorization.
Report
Return the frozen synthesis manifest; upstream gate statuses; execution and
engineering statuses; operation, assertion, feature, implementation and native
version; input and artifact hashes; inference/mapped statistics; mapping
completeness; findings labeled normalized evidence/source-artifact
inspection/inferred; unsupported claims; comparability limits; and one smallest
next experiment. Finish with signoff: not claimed.