CHIP DESIGN · COURSE

EDA Automation & Reproducible ASIC Flows

Build an ASIC workflow that another engineer can reconstruct from an empty workspace. Begin with Linux process and filesystem state, manifests, hashes, permissions, and atomic artifacts. Make shell argument, pipeline, timeout, signal, and cleanup behavior exact; validate Python configuration, units, missing values, and versioned report grammars; and control EDA databases safely through Tcl objects, collections, cardinality assertions, messages, options, and checkpoints. Then express semantic dependencies, content-addressed caching, resource-aware parallelism, and deterministic merges. Lock tools and host assumptions while respecting commercial licenses and proprietary PDK/IP boundaries. Design CI tiers, flaky-test handling, digest-bound approvals, policy, normalized evidence, and exact waivers. Finally, complete one independently reconstructed RTL-to-signoff teaching flow with cross-layer failure injection and an honest boundary before foundry or production claims.

Before this course: Completed RTL Design with SystemVerilog; Functional Verification; Static Timing, CDC & Constraints; Physical Design, Power & Signal Integrity; and Tapeout, Yield & Silicon Bring-up. Requires basic Linux and Python use. Exercises use open or synthetic tools and PDK-shaped teaching data; lawful commercial tools, proprietary PDKs, IP, foundry acceptance, masks, fabricated silicon, production test, and product qualification are not supplied.

COURSE FACTSStage, chapters, units, prerequisite, and outcome
Chapter 1

A reproducible run is a claim about state, not a copied directory

Objective: For “A reproducible run is a claim about state, not a copied directory,” which frozen inputs determine the result, what is the first independently observable claim, and which mutation proves the check is alive?

Reproduction means a declared environment transforms the same frozen logical inputs into equivalent declared outputs while exposing every permitted nondeterministic field. This lesson uses the route “build the smallest observable case.” Begin with a hand-checkable instance before invoking automation: name the state that enters the step, the transformation that is permitted, the observation that must change, and the evidence that would falsify the claim. The unit objective is Establish the operating-system, filesystem, process, and manifest model needed to reproduce a hardware result instead of remembering a GUI session. Every shortcut must therefore be evaluated by whether it preserves reproducibility, diagnosability, and the identity of the design claim.

Treat A reproducible run is a claim about state, not a copied directory as an executable interface with declared inputs, outputs, status, side effects, resource limits, and ownership. Separate control-plane success from design evidence: a process can exit zero while consuming the wrong revision, skipping work, reusing stale output, suppressing a violation, or publishing an incomplete artifact. Copying yesterday’s reports beside today’s netlist can produce a complete-looking release whose evidence refers to two candidates. The learner must identify the first divergence and repair the dependency, not merely rerun until a dashboard becomes green.

Two runs are equivalent only after volatile timestamps, paths, seeds, host names, and ordering are either fixed or normalized by a reviewed rule. This invariant is accepted only for the named candidate and declared environment; any changed input invalidates every dependent result until reconstruction proves otherwise.

Hash source, constraints, configuration, tool identity, and environment before execution. First freeze the candidate and predict the expected observation without reading a generated summary.

Compare semantic netlist structure separately from volatile report metadata. Then execute the smallest transformation, retaining raw standard output, standard error, exit status, generated files, and resource use.

Document and test one normalization rule for the timestamp field. Finally reconcile the observation with the invariant, inject the named failure, and verify that the expected consumer refuses the corrupted or stale state.

Run a tiny synthesis twice; both reports say 42 cells, but output hashes differ because one embeds a timestamp. Before revealing the trace, predict the exact command or state transition, expected exit and artifact status, first checker that should react, and minimum safe recovery.

  1. Hash source, constraints, configuration, tool identity, and environment before execution.
  2. Compare semantic netlist structure separately from volatile report metadata.
  3. Document and test one normalization rule for the timestamp field.

Result: The semantic artifact reproduces only after the allowed timestamp difference is explicit and all other identities match. Accept the result only after a clean second execution reproduces the decisive artifact and a targeted mutation fails at the predicted boundary.