Skill: Architecture Evaluation
Invocation
- If invoked by a user presenting a design task: immediately spawn the
digital-chip-design-agents:architecture-orchestrator agent and pass the full
user request and any available context. Do not execute stages directly.
- If invoked by the
architecture-orchestrator mid-flow: do not spawn a new
agent. Treat this file as read-only — return the requested stage rules,
sign-off criteria, or loop-back guidance to the calling orchestrator.
Spawning the orchestrator from within an active orchestrator run causes recursive
delegation and must never happen.
Pre-run Context
Before executing or advising on any stage, read the following files if they exist:
memory/architecture/knowledge.md — known failure patterns, successful tool flags, PDK/tool quirks.
Incorporate its guidance into every stage decision. If absent, proceed without it.
memory/architecture/run_state.md — current run identity (run_id, design_name, tool,
last_stage). Use this to resume correctly after interruption. If absent, a new run
is starting; the orchestrator will create this file before the first stage.
This pre-run read applies whether this skill is loaded by a user or called by the
orchestrator mid-flow. It ensures the fix database is consulted before any diagnosis step.
Purpose
Guide the full microarchitecture evaluation process from product specification
through to a signed-off microarchitecture document ready for RTL handoff. Covers
specification decomposition, candidate architecture exploration, performance and
PPA modelling, risk assessment, and sign-off.
Supported EDA Tools
Open-Source
- gem5 (
gem5) — full-system micro-architectural simulator for performance modelling
- McPAT (
mcpat) — processor power, area, and timing estimator
- CACTI (
cacti) — SRAM/cache power and area estimator
- Python estimation scripts (
python3 estimate.py) — custom PPA models
Proprietary
- Synopsys Platform Architect — IP-level performance and power exploration
- ARM Performance Models — cycle-accurate ARM subsystem models
- Cadence Virtual System Platform (VSP) — SoC-level virtual prototyping
Stage: spec_analysis
Domain Rules
- Classify every requirement: functional, performance, power, area, interface, safety/security
- Identify under-specified areas and flag as open questions for the product team
- Map each use case to required hardware blocks (datapath, control, memory, IO)
- Extract all interface requirements with protocols (AXI, PCIe, USB, Ethernet, etc.)
- Identify safety/security requirements (ISO 26262, FIPS, CC) if applicable
- Assign priority: Must-Have / Should-Have / Nice-to-Have
- Produce a structured requirements document before any architecture work begins
QoR Metrics to Evaluate
- Requirements coverage: 100% of spec sections mapped to at least one requirement
- Ambiguity count: all unresolved items captured in open questions list
- Interface completeness: all external interfaces named with protocol and bandwidth
Common Issues & Fixes
| Issue |
Fix |
| Spec section not mapped |
Add to open questions; do not assume |
| Interface bandwidth unspecified |
Request from product team before proceeding |
| Conflicting requirements |
Flag as blocker; request resolution |
Output Required
- Structured requirements document (JSON or Markdown)
- Interface list with protocols and bandwidths
- Open questions list
Stage: arch_exploration
Domain Rules
- Generate minimum 3 candidate architectures: conservative, balanced, aggressive
- Evaluate pipeline depth trade-offs (deeper = higher frequency, more area/power)
- Evaluate parallelism: SIMD, superscalar, spatial unrolling — with area/power cost
- Cache/memory hierarchy: size, associativity, latency vs area trade-off per use case
- Interconnect topology: bus, crossbar, NoC — evaluate bandwidth vs complexity
- Consider IP reuse: identify hard macros or licensed IPs before designing custom
- Document all assumptions for each candidate explicitly
- Produce a trade-off matrix comparing all candidates
Trade-off Matrix Template
| Candidate |
Freq Target |
Area Est. |
Power Est. |
Risk |
Notes |
| Option A |
1GHz |
3mm² |
300mW |
Low |
... |
| Option B |
2GHz |
6mm² |
700mW |
High |
... |
QoR Metrics to Evaluate
- Minimum 3 candidates explored with distinct trade-off profiles
- Each candidate: performance estimate within 20% of target
- Single recommended candidate with clear quantitative justification
Output Required
- Trade-off matrix with all candidates
- Recommended candidate with quantitative justification
- Assumptions and risk summary per candidate
Stage: perf_modelling
Domain Rules
- Use analytical models (Amdahl, Roofline) for initial estimates
- Build TLM/SystemC or Python models for complex pipelines
- Model all bottlenecks: compute, memory bandwidth, IO throughput
- Sweep key parameters: clock frequency, parallelism, cache size
- Validate with representative workloads from the use-case list
- Include best/typical/worst-case scenarios
- Flag any model assumption that has not been validated
QoR Metrics to Evaluate
- Throughput: meets or exceeds target by ≥ 10% margin
- Latency: meets target at worst-case workload
- Memory bandwidth: does not exceed DRAM/SRAM ceiling
- Model confidence: HIGH / MEDIUM / LOW
Output Required
- Performance model (script or spreadsheet)
- Throughput/latency results per use case
- Sensitivity analysis
- Comparison table: modelled vs target
Stage: power_area_estimation
Domain Rules
- Area: use technology library scaling data (gates/mm² at target node)
- Dynamic power: P = α × C × V² × f (get activity factor from use cases)
- Leakage: estimate from library characterisation at target Vt mix
- Memory area: use SRAM compiler estimates for given depth × width
- IO pad area: per pad ring design rules
- Apply 15–20% margin — RTL is never minimal
- Flag immediately if any estimate exceeds 80% of budget
Clock Gating Opportunity Analysis
Perform this analysis using the activity factors already collected for dynamic power:
For each identified clock domain, record its activity factor α derived from the
use-case workload sweep (gem5 simulation or analytical model).
Classify each domain using thresholds from design_state.constraints.power.activity_factors (defaults: {"default": 0.15, "high": 0.40}):
- α <
activity_factors.default (default: 0.15) — **high gating opportunity**: clock gating will save > 30% dynamic power
for that domain; flag as a must-have RTL requirement.
activity_factors.default ≤ α < activity_factors.high (defaults: 0.15–0.40) — moderate gating opportunity: clock gating recommended;
flag as should-have RTL requirement.
- α ≥
activity_factors.high (default: 0.40) — always-active: no gating benefit; document as always-on.
Produce a clock_power_budget table (one row per domain):
| Domain |
Frequency |
α (activity) |
Est. Clock Power (mW) |
Gating Class |
| core |
1 GHz |
0.08 |
45 |
high |
| dsp |
500 MHz |
0.55 |
30 |
always-on |
McPAT clocking component already models clock network power — ensure the
frequency-sweep input reflects per-domain frequencies, not a single global clock.
Include the clock_power_budget table in the hand-off package to RTL design.
The RTL agent will use it to target ICG (Integrated Clock Gate) insertion.
Supported Tools for Clock/Power Analysis
| Tool |
Type |
Use |
| McPAT |
Open-source |
Clock network + dynamic/leakage power (already in flow) |
| gem5 |
Open-source |
Workload activity factor extraction (already in flow) |
| CACTI |
Open-source |
Memory clock power estimate (already in flow) |
| Yosys + ABC |
Open-source |
Post-synth switching activity cross-check (optional) |
| Synopsys PrimePower |
Proprietary |
RTL-level power sign-off (optional) |
| Cadence Joules RTL |
Proprietary |
RTL power analysis (optional) |
QoR Metrics to Evaluate
- Area estimate: < 80% of
design_state.constraints.area.area_um2 budget (required constraint — see architecture-orchestrator Behaviour Rule 9)
- Dynamic power: < 80% of
design_state.constraints.power.power_mw budget (required constraint)
- Leakage: <
design_state.constraints.power.leakage_pct_max% of total estimated power (default: 15%)
- Clock-gating coverage: ≥
design_state.constraints.power.gating_coverage_pct_min% of register-bank bits in high-opportunity domains (default: 60%)
(measured using planned register-map estimates from the microarchitecture specification;
mark estimate confidence as HIGH if register counts are frozen, MEDIUM if approximate,
LOW if based on scaling from similar designs)
- Confidence: HIGH / MEDIUM / LOW
Output Required
- Area breakdown by block
- Power breakdown: dynamic, leakage, per domain
- Margin analysis vs targets
clock_power_budget table (domain → frequency, activity factor, estimated clock power mW, gating class)
Stage: risk_assessment
Domain Rules
- Risk categories: schedule, technical feasibility, IP availability, tool support,
verification complexity, power closure, manufacturing yield
- Score every risk: Probability (1–5) × Impact (1–5) = Risk Score
- Risk score ≥ 15: classified HIGH — must have mitigation plan before sign-off
- IP risks: verify availability, licensing timeline, silicon-proven status
- Tool risks: verify EDA tool certification for chosen technology node
- Verification risks: flag if testbench complexity > 6 months estimated effort
- Every risk must have an assigned owner
QoR Metrics to Evaluate
- No unmitigated HIGH risks at sign-off
- All risks: assigned owner and mitigation plan
- Schedule risk assessed vs team capacity
Output Required
- Risk register (ID, description, score, mitigation, owner)
- Top 5 risks for management review
Stage: arch_signoff
Sign-off Checklist
Output Required
- Signed-off microarchitecture document
- Final trade-off decision record
- RTL design guidelines
- Hand-off package
Constraint Validation
See plugins/meta/skills/pipeline-orchestration/SKILL.md §Constraints Schema for the authoritative schema and stage-entry validation rule.
Required at entry (spec_analysis) — hard-fail if missing:
constraints.clock.clk_mhz — target frequency
constraints.area.area_um2 — area budget
constraints.power.power_mw — power budget
Optional (schema defaults apply when absent):
constraints.power.leakage_pct_max (default: 15%) — leakage threshold
constraints.power.gating_coverage_pct_min (default: 60%) — ICG coverage target
constraints.power.activity_factors (defaults: {default: 0.15, high: 0.40}) — domain classification thresholds
Memory
Write on stage completion
After each stage completes (regardless of whether an orchestrator session is active),
write or overwrite one JSON record in memory/architecture/experiences.jsonl keyed by
run_id. This ensures data is persisted even if the flow is interrupted or called
without full orchestrator context.
Use run_id = architecture_<YYYYMMDD>_<HHMMSS> (set once at flow start; reuse on each
stage update). Set signoff_achieved: false until the final sign-off stage completes.
Run state (write before first stage, update after each stage)
Write memory/architecture/run_state.md as the first action before launching any tool:
run_id: architecture_<YYYYMMDD>_<HHMMSS>
design_name: <design>
tool: <primary tool>
start_time: <ISO-8601>
last_stage: null
Update last_stage to the completed stage name only after each stage finishes successfully. This file lets wakeup-loop prompts
and resumed sessions identify the correct run without relying on in-memory state.
Create the file and parent directories if they do not exist.
Optional: claude-mem index
If mcp__plugin_ecc_memory__add_observations is available in this session, emit each
applied fix as an observation to entity chip-design-architecture-fixes after writing to
experiences.jsonl. Skip silently if the tool is absent — JSONL is the canonical record.
1---2name: architecture3description: Microarchitecture exploration, PPA estimation, risk assessment, and architecture sign-off for digital chip design. Use when evaluating design candidates, estimating power/area/performance, assessing technical risk, or producing a microarchitecture document for handoff to RTL design.4license: MIT5---67# Skill: Architecture Evaluation89## Invocation1011- **If invoked by a user** presenting a design task: immediately spawn the12 `digital-chip-design-agents:architecture-orchestrator` agent and pass the full13 user request and any available context. Do not execute stages directly.14- **If invoked by the `architecture-orchestrator` mid-flow**: do not spawn a new15 agent. Treat this file as read-only — return the requested stage rules,16 sign-off criteria, or loop-back guidance to the calling orchestrator.1718Spawning the orchestrator from within an active orchestrator run causes recursive19delegation and must never happen.2021## Pre-run Context2223Before executing or advising on **any** stage, read the following files if they exist:24251. `memory/architecture/knowledge.md` — known failure patterns, successful tool flags, PDK/tool quirks.26 Incorporate its guidance into every stage decision. If absent, proceed without it.272. `memory/architecture/run_state.md` — current run identity (`run_id`, `design_name`, `tool`,28 `last_stage`). Use this to resume correctly after interruption. If absent, a new run29 is starting; the orchestrator will create this file before the first stage.3031This pre-run read applies whether this skill is loaded by a user or called by the32orchestrator mid-flow. It ensures the fix database is consulted before any diagnosis step.3334## Purpose35Guide the full microarchitecture evaluation process from product specification36through to a signed-off microarchitecture document ready for RTL handoff. Covers37specification decomposition, candidate architecture exploration, performance and38PPA modelling, risk assessment, and sign-off.3940---4142## Supported EDA Tools4344### Open-Source45- **gem5** (`gem5`) — full-system micro-architectural simulator for performance modelling46- **McPAT** (`mcpat`) — processor power, area, and timing estimator47- **CACTI** (`cacti`) — SRAM/cache power and area estimator48- **Python estimation scripts** (`python3 estimate.py`) — custom PPA models4950### Proprietary51- **Synopsys Platform Architect** — IP-level performance and power exploration52- **ARM Performance Models** — cycle-accurate ARM subsystem models53- **Cadence Virtual System Platform (VSP)** — SoC-level virtual prototyping5455---5657## Stage: spec_analysis5859### Domain Rules601. Classify every requirement: functional, performance, power, area, interface, safety/security612. Identify under-specified areas and flag as open questions for the product team623. Map each use case to required hardware blocks (datapath, control, memory, IO)634. Extract all interface requirements with protocols (AXI, PCIe, USB, Ethernet, etc.)645. Identify safety/security requirements (ISO 26262, FIPS, CC) if applicable656. Assign priority: Must-Have / Should-Have / Nice-to-Have667. Produce a structured requirements document before any architecture work begins6768### QoR Metrics to Evaluate69- Requirements coverage: 100% of spec sections mapped to at least one requirement70- Ambiguity count: all unresolved items captured in open questions list71- Interface completeness: all external interfaces named with protocol and bandwidth7273### Common Issues & Fixes74| Issue | Fix |75|-------|-----|76| Spec section not mapped | Add to open questions; do not assume |77| Interface bandwidth unspecified | Request from product team before proceeding |78| Conflicting requirements | Flag as blocker; request resolution |7980### Output Required81- Structured requirements document (JSON or Markdown)82- Interface list with protocols and bandwidths83- Open questions list8485---8687## Stage: arch_exploration8889### Domain Rules901. Generate minimum 3 candidate architectures: conservative, balanced, aggressive912. Evaluate pipeline depth trade-offs (deeper = higher frequency, more area/power)923. Evaluate parallelism: SIMD, superscalar, spatial unrolling — with area/power cost934. Cache/memory hierarchy: size, associativity, latency vs area trade-off per use case945. Interconnect topology: bus, crossbar, NoC — evaluate bandwidth vs complexity956. Consider IP reuse: identify hard macros or licensed IPs before designing custom967. Document all assumptions for each candidate explicitly978. Produce a trade-off matrix comparing all candidates9899### Trade-off Matrix Template100| Candidate | Freq Target | Area Est. | Power Est. | Risk | Notes |101|-----------|-------------|-----------|------------|-------|-------|102| Option A | 1GHz | 3mm² | 300mW | Low | ... |103| Option B | 2GHz | 6mm² | 700mW | High | ... |104105### QoR Metrics to Evaluate106- Minimum 3 candidates explored with distinct trade-off profiles107- Each candidate: performance estimate within 20% of target108- Single recommended candidate with clear quantitative justification109110### Output Required111- Trade-off matrix with all candidates112- Recommended candidate with quantitative justification113- Assumptions and risk summary per candidate114115---116117## Stage: perf_modelling118119### Domain Rules1201. Use analytical models (Amdahl, Roofline) for initial estimates1212. Build TLM/SystemC or Python models for complex pipelines1223. Model all bottlenecks: compute, memory bandwidth, IO throughput1234. Sweep key parameters: clock frequency, parallelism, cache size1245. Validate with representative workloads from the use-case list1256. Include best/typical/worst-case scenarios1267. Flag any model assumption that has not been validated127128### QoR Metrics to Evaluate129- Throughput: meets or exceeds target by ≥ 10% margin130- Latency: meets target at worst-case workload131- Memory bandwidth: does not exceed DRAM/SRAM ceiling132- Model confidence: HIGH / MEDIUM / LOW133134### Output Required135- Performance model (script or spreadsheet)136- Throughput/latency results per use case137- Sensitivity analysis138- Comparison table: modelled vs target139140---141142## Stage: power_area_estimation143144### Domain Rules1451. Area: use technology library scaling data (gates/mm² at target node)1462. Dynamic power: P = α × C × V² × f (get activity factor from use cases)1473. Leakage: estimate from library characterisation at target Vt mix1484. Memory area: use SRAM compiler estimates for given depth × width1495. IO pad area: per pad ring design rules1506. Apply 15–20% margin — RTL is never minimal1517. Flag immediately if any estimate exceeds 80% of budget152153### Clock Gating Opportunity Analysis154Perform this analysis using the activity factors already collected for dynamic power:1551561. For each identified clock domain, record its activity factor α derived from the157 use-case workload sweep (gem5 simulation or analytical model).1582. Classify each domain using thresholds from `design_state.constraints.power.activity_factors` (defaults: `{"default": 0.15, "high": 0.40}`):159 - α < `activity_factors.default` (default: 0.15) — **high gating opportunity**: clock gating will save > 30% dynamic power160 for that domain; flag as a must-have RTL requirement.161 - `activity_factors.default` ≤ α < `activity_factors.high` (defaults: 0.15–0.40) — **moderate gating opportunity**: clock gating recommended;162 flag as should-have RTL requirement.163 - α ≥ `activity_factors.high` (default: 0.40) — **always-active**: no gating benefit; document as always-on.1643. Produce a `clock_power_budget` table (one row per domain):165166 | Domain | Frequency | α (activity) | Est. Clock Power (mW) | Gating Class |167 |--------|-----------|-------------|----------------------|--------------|168 | core | 1 GHz | 0.08 | 45 | high |169 | dsp | 500 MHz | 0.55 | 30 | always-on |1701714. McPAT `clocking` component already models clock network power — ensure the172 frequency-sweep input reflects per-domain frequencies, not a single global clock.1735. Include the `clock_power_budget` table in the hand-off package to RTL design.174 The RTL agent will use it to target ICG (Integrated Clock Gate) insertion.175176### Supported Tools for Clock/Power Analysis177| Tool | Type | Use |178|------|------|-----|179| McPAT | Open-source | Clock network + dynamic/leakage power (already in flow) |180| gem5 | Open-source | Workload activity factor extraction (already in flow) |181| CACTI | Open-source | Memory clock power estimate (already in flow) |182| Yosys + ABC | Open-source | Post-synth switching activity cross-check (optional) |183| Synopsys PrimePower | Proprietary | RTL-level power sign-off (optional) |184| Cadence Joules RTL | Proprietary | RTL power analysis (optional) |185186### QoR Metrics to Evaluate187- Area estimate: < 80% of `design_state.constraints.area.area_um2` budget (required constraint — see architecture-orchestrator Behaviour Rule 9)188- Dynamic power: < 80% of `design_state.constraints.power.power_mw` budget (required constraint)189- Leakage: < `design_state.constraints.power.leakage_pct_max`% of total estimated power (default: 15%)190- Clock-gating coverage: ≥ `design_state.constraints.power.gating_coverage_pct_min`% of register-bank bits in high-opportunity domains (default: 60%)191 (measured using planned register-map estimates from the microarchitecture specification;192 mark estimate confidence as HIGH if register counts are frozen, MEDIUM if approximate,193 LOW if based on scaling from similar designs)194- Confidence: HIGH / MEDIUM / LOW195196### Output Required197- Area breakdown by block198- Power breakdown: dynamic, leakage, per domain199- Margin analysis vs targets200- `clock_power_budget` table (domain → frequency, activity factor, estimated clock power mW, gating class)201202---203204## Stage: risk_assessment205206### Domain Rules2071. Risk categories: schedule, technical feasibility, IP availability, tool support,208 verification complexity, power closure, manufacturing yield2092. Score every risk: Probability (1–5) × Impact (1–5) = Risk Score2103. Risk score ≥ 15: classified HIGH — must have mitigation plan before sign-off2114. IP risks: verify availability, licensing timeline, silicon-proven status2125. Tool risks: verify EDA tool certification for chosen technology node2136. Verification risks: flag if testbench complexity > 6 months estimated effort2147. Every risk must have an assigned owner215216### QoR Metrics to Evaluate217- No unmitigated HIGH risks at sign-off218- All risks: assigned owner and mitigation plan219- Schedule risk assessed vs team capacity220221### Output Required222- Risk register (ID, description, score, mitigation, owner)223- Top 5 risks for management review224225---226227## Stage: arch_signoff228229### Sign-off Checklist230- [ ] All Must-Have requirements addressed231- [ ] Performance targets met in model (≥ 10% margin)232- [ ] Power and area within budget (< 80% of `design_state.constraints.area.area_um2` / `power.power_mw`)233- [ ] All HIGH risks have mitigation plans and owners234- [ ] Interface specifications complete and agreed235- [ ] Memory map defined236- [ ] Clock domains identified; CDC strategy agreed237- [ ] Reset strategy defined238- [ ] DFT strategy agreed239- [ ] Verification strategy agreed240- [ ] RTL coding guidelines documented241- [ ] `clock_power_budget` table produced; gating class assigned per domain242- [ ] Clock-gating coverage ≥ `design_state.constraints.power.gating_coverage_pct_min`% of register bits in high-opportunity domains (default: 60%)243- [ ] Hand-off package complete for RTL team (includes `clock_power_budget` table)244245### Output Required246- Signed-off microarchitecture document247- Final trade-off decision record248- RTL design guidelines249- Hand-off package250251---252253## Constraint Validation254255See `plugins/meta/skills/pipeline-orchestration/SKILL.md` §Constraints Schema for the authoritative schema and stage-entry validation rule.256257**Required at entry (`spec_analysis`) — hard-fail if missing:**258- `constraints.clock.clk_mhz` — target frequency259- `constraints.area.area_um2` — area budget260- `constraints.power.power_mw` — power budget261262**Optional (schema defaults apply when absent):**263- `constraints.power.leakage_pct_max` (default: 15%) — leakage threshold264- `constraints.power.gating_coverage_pct_min` (default: 60%) — ICG coverage target265- `constraints.power.activity_factors` (defaults: `{default: 0.15, high: 0.40}`) — domain classification thresholds266267---268269## Memory270271### Write on stage completion272After each stage completes (regardless of whether an orchestrator session is active),273write or overwrite one JSON record in `memory/architecture/experiences.jsonl` keyed by274`run_id`. This ensures data is persisted even if the flow is interrupted or called275without full orchestrator context.276277Use `run_id` = `architecture_<YYYYMMDD>_<HHMMSS>` (set once at flow start; reuse on each278stage update). Set `signoff_achieved: false` until the final sign-off stage completes.279### Run state (write before first stage, update after each stage)280Write `memory/architecture/run_state.md` as the **first action** before launching any tool:281```markdown282run_id: architecture_<YYYYMMDD>_<HHMMSS>283design_name: <design>284tool: <primary tool>285start_time: <ISO-8601>286last_stage: null287```288Update `last_stage` to the completed stage name only after each stage finishes successfully. This file lets wakeup-loop prompts289and resumed sessions identify the correct run without relying on in-memory state.290Create the file and parent directories if they do not exist.291292### Optional: claude-mem index293If `mcp__plugin_ecc_memory__add_observations` is available in this session, emit each294applied fix as an observation to entity `chip-design-architecture-fixes` after writing to295`experiences.jsonl`. Skip silently if the tool is absent — JSONL is the canonical record.