ARM Cores

ARM Processor Cores

Almost every ASIC you will ever work on has an ARM core in it somewhere — running firmware, handling the boot chain, managing the control plane. This page covers the core families, what they actually cost you in silicon, and what you have to integrate around them.

!!! abstract "The gate-count question, answered properly"

ARM **does not publish gate counts.** Its datasheets publish **area in mm², at a named library, track height, threshold-voltage flavor, process node, and PVT corner** — bracketed between a *minimum configuration* and a *feature-rich / typical configuration*.

That's not evasion. It's the only honest way to state it, because a gate count for a configurable soft core is a range, not a number.

So this page does it the right way round: **ARM's published area first, then a derived gate estimate** using a NAND2 cell area representative of each library class. The method is calibrated against ARM's own figure and shown below, so you can redo it for your library.

1. Why ARM Shows Up in Every ASIC

ARM sells no chips. It licenses IP — and the licensing model is why it's ubiquitous.

Delivery model What you get Trade-off
Soft IP (RTL) Synthesizable Verilog. You configure, synthesize, and place-and-route it in your flow, on your node. Maximum flexibility, portable across foundries. You own PPA closure — and you can miss.
Hard macro / POP Processor Optimization Pack: a physical implementation kit tuned to a specific foundry node and library, with reference floorplans and constraints. Much lower risk of missing frequency. Locks you to that node.
Architecture license The right to build your own core implementing the ARM ISA. What Apple, Qualcomm (Nuvia), and Ampere do. Enormous engineering cost.
Flexible Access Evaluate and design against a broad IP catalog; pay at manufacture. How most small teams start.

The reason this matters to you as an ASIC designer: the core is usually not where your design risk lives. ARM has closed timing on that RTL a thousand times. Your risk is in the fabric, the clock/reset architecture, the CDC around it, and the memory subsystem you bolt on.


2. The Three Profiles

Everything ARM makes falls into one of three profiles. This is the most load-bearing fact on the page.

┌──────────────┬──────────────────┬─────────────────┬────────────────────┐
│              │   A-PROFILE      │   R-PROFILE     │    M-PROFILE       │
│              │   (Application)  │   (Real-time)   │  (Microcontroller) │
├──────────────┼──────────────────┼─────────────────┼────────────────────┤
│ Runs         │ Linux, Android   │ RTOS, bare metal│ RTOS, bare metal   │
│ Memory       │ MMU (virtual mem)│ MPU (+ optional │ MPU (no virtual    │
│              │                  │  MMU on R82)    │  memory, ever)     │
│ Design goal  │ Throughput       │ Determinism +   │ Area, power,       │
│              │                  │  fault tolerance│  interrupt latency │
│ Caches       │ L1 + L2 (+ L3)   │ L1 + TCM        │ Optional / TCM     │
│ Pipeline     │ Deep, OoO on the │ In-order or     │ 2–6 stage in-order │
│              │  big ones        │  modest OoO     │  (M7 dual-issue)   │
│ Safety       │ Some ASIL support│ Lockstep, ECC,  │ Some (M7, M33)     │
│              │                  │  ASIL-D         │                    │
│ Typical use  │ Phone, server,   │ Storage ctrl,   │ Sensor, IoT node,  │
│              │  set-top, SoC AP │  automotive,    │  power mgmt, PMU   │
│              │                  │  modem, 5G      │                    │
└──────────────┴──────────────────┴─────────────────┴────────────────────┘

  The MMU is the dividing line. If it can run Linux, it's A-profile.

!!! tip "Relevant to your storage work"

**SSD controllers are the R-profile's home turf.** An enterprise NVMe controller typically runs several **Cortex-R5 / R8 / R52** cores for the FTL, media management, and host interface — because the FTL needs bounded, deterministic latency and can't tolerate MMU/TLB-miss jitter. Many designs add a **Cortex-A53/A55** for the management plane (telemetry, secure boot, firmware update) and small **Cortex-M** cores for power sequencing.

The firmware doing the reclaim bookkeeping on the FDP page is almost certainly running on an R-profile core.

3. Method: From ARM's Area to a Gate Estimate

The conversion

$$\text{Gate equivalents} = \frac{\text{Area}\ (\mu m^2)}{\text{NAND2 cell area}\ (\mu m^2)}$$

A "gate" in the industry sense is a NAND2 equivalent — total cell area normalized to the area of one 2-input NAND. So all you need is the NAND2 area for the library ARM quoted.

NAND2 reference areas

Representative NAND2 cell areas for the library classes appearing in ARM's Cortex-M datasheets:

Library class NAND2 area Notes
90LP, 7-track, RVt (Arm SC7) 2.50 µm²
65LP, 8-track, RVt 1.55 µm² Taller cells partly offset the node shrink
40LP, 9-track, RVt (Arm SC9) 0.61 µm²
28HPM, 9-track, HVt 0.32 µm²
16nm-class, 9-track ~0.10 µm² Least reliable of the set — treat as indicative

!!! success "Calibration check — the method validates itself"

ARM separately states the Cortex-M0 minimum configuration is **~12k gates**. Running that core's published areas through the table above:

| Node | ARM's area | ÷ NAND2 | **Derived** |
|---|---|---|---|
| 90LP | 0.0303 mm² = 30,300 µm² | ÷ 2.50 | **12.1k gates** |
| 40LP | 0.0073 mm² = 7,300 µm² | ÷ 0.61 | **12.0k gates** |

Two independent nodes, two independent library classes, and both land on **12k** — matching ARM's own published figure. The method works, and the NAND2 areas above are sound enough to apply to the rest of the family.

!!! warning "Where it drifts: the 28HPM column"

You'll notice below that gate counts derived from the **28HPM** area run systematically **~25–30% higher** than the same core at 90/65/40 nm. That's real, and it's worth understanding rather than hiding:

- **HVt cells** (high threshold voltage) are used at 28HPM in ARM's table, and the library/track mix differs.
- More aggressive synthesis at the smaller node means **more buffering and upsizing** to hit timing — the tool spends area to make frequency.
- My 28HPM NAND2 figure carries more uncertainty than the 90/40 ones.

Treat the 90/65/40 columns as the reliable estimate and 28HPM as the upper bound. **The spread itself is the lesson: the "gate count" of a core is a property of the implementation, not of the RTL.**

4. Cortex-M — Area and Derived Gates

ARM's published area (verbatim)

=== "Cortex-M0"

**Armv6-M · 3-stage · 0.87 DMIPS/MHz · 2.25 CoreMark/MHz**

| Configuration | 90LP (SC7 RVT, SS 1.08 V, 125 °C) | 40LP (SC9 RVT C50, SS 0.99 V, 125 °C) |
|---|---|---|
| **Minimum** | 0.0303 mm² · 12.5 µW/MHz | 0.0073 mm² · 5.1 µW/MHz |
| **Typical** | 0.0604 mm² · 16.6 µW/MHz | 0.0155 mm² · 6.7 µW/MHz |
| *Max freq (typical)* | 268 MHz | 280 MHz |

<small>**Minimum** = 1 IRQ, small multiplier, no debug, no WIC, 0 breakpoints, 0 watchpoints<br>
**Typical** = 32 IRQ, fast multiplier, debug, SysTick, WIC (34 lines), 4 breakpoints, 2 watchpoints</small>

=== "Cortex-M0+"

**Armv6-M · 2-stage · 0.95 DMIPS/MHz · 2.39 CoreMark/MHz**

| Configuration | 90LP (SC7 RVT, SS 1.08 V, 125 °C) | 40LP (SC9 RVT C50, SS 0.99 V, 125 °C) |
|---|---|---|
| **Minimum** | 0.0275 mm² · 9.36 µW/MHz | 0.0066 mm² · 3.8 µW/MHz |
| **Typical** | 0.0576 mm² · 13.04 µW/MHz | 0.0141 mm² · 5.5 µW/MHz |
| *Max freq (typical)* | 567 MHz | 297 MHz |

Note the M0+ is **smaller and lower-power than the M0 at every point** — the 2-stage pipeline is a pure win on both axes. There is essentially no reason to choose M0 over M0+ in a new design.

=== "Cortex-M3"

**Armv7-M · 3-stage · 1.25 DMIPS/MHz · 3.34 CoreMark/MHz**

| Configuration | 90LP (7T RVt) | 65LP (8T RVt) | 40LP (9T RVt) | 28HPM (9T HVt) |
|---|---|---|---|---|
| **Minimum** | 0.091 mm² · 31.18 µW/MHz | 0.060 mm² · 24.04 | 0.024 mm² · 11.39 | 0.016 mm² · 8.11 |
| **Feature Rich** | 0.219 mm² · 35.33 µW/MHz | 0.127 mm² · 31.28 | 0.051 mm² · 13.24 | 0.036 mm² · 9.02 |
| *Max freq* | — | — | 248 MHz | 891 MHz |

<small>**Minimum** = no MPU, 1 IRQ, no trace, no debug, no WIC, no bit-banding<br>
**Feature Rich** = MPU, 32 IRQ, trace level 2, debug level 3, WIC (67 lines)</small>

=== "Cortex-M4"

**Armv7E-M · 3-stage + branch speculation · 1.25 DMIPS/MHz · 3.42 CoreMark/MHz**

| Configuration | 90LP (7T RVt) | 65LP (8T RVt) | 40LP (9T RVt) | 28HPM (9T HVt) |
|---|---|---|---|---|
| **Minimum** (no FPU) | 0.119 mm² · 32.82 µW/MHz | 0.076 mm² · 26.40 | 0.028 mm² · 12.26 | 0.020 mm² · 8.47 |
| **Feature Rich** (FPU) | 0.304 mm² · 41.47 µW/MHz | 0.201 mm² · 35.54 | 0.082 mm² · 15.48 | 0.053 mm² · 11.20 |
| *Max freq* | — | — | 223 MHz | 822 MHz |

<small>**Feature Rich** = MPU, 64 IRQ, trace level 2, debug level 3, WIC, **FPU present**</small>

=== "Cortex-M7"

**Armv7E-M · 6-stage dual-issue superscalar · 2.14 DMIPS/MHz · 5.01 CoreMark/MHz**

ARM quotes the M7 **split into core and memory** — because at this size the caches/TCMs are a separate, dominant line item. Typical configuration = 32 KB I/D cache with ECC.

| Configuration | ~40nm-class (RVT 9T) | ~28nm-class (SVT 9T) | ~16nm-class (SVT) |
|---|---|---|---|
| **Typical — core** | 0.213 mm² · 72.2 µW/MHz | 0.108 mm² · 41.4 | 0.055 mm² · 26 |
| **Typical — memory** | 0.261 mm² · 46 µW/MHz | 0.127 mm² · 15.8 | 0.092 mm² · 16 |
| *Max freq* | 400 MHz | 1.1 GHz | 1.4 GHz |

!!! danger "Look at the memory row"

    **The memory is bigger than the core.** 0.261 mm² of SRAM against 0.213 mm² of logic. This is the exact moment where "gate count" starts to lose meaning — and it only gets worse going up into Cortex-A, where caches utterly dominate.

    It also means: **quote M7 area with the cache config attached or the number is meaningless.**

Derived gate estimates

Applying the NAND2 table to ARM's areas:

Core Config 90LP 65LP 40LP 28HPM Headline estimate
Cortex-M0 Minimum 12.1k — 12.0k — ~12k
Cortex-M0 Typical 24.2k — 25.4k — ~25k
Cortex-M0+ Minimum 11.0k — 10.8k — ~11k
Cortex-M0+ Typical 23.0k — 23.1k — ~23k
Cortex-M3 Minimum 36.4k 38.7k 39.3k 50.0k ~37–40k
Cortex-M3 Feature Rich 87.6k 81.9k 83.6k 112.5k ~85k
Cortex-M4 Minimum (no FPU) 47.6k 49.0k 45.9k 62.5k ~47k
Cortex-M4 Feature Rich (FPU) 121.6k 129.7k 134.4k 165.6k ~130k
Cortex-M7 Typical, core only — — 349k 338k ~340k (+ SRAM)

Headline estimate uses the 90/65/40 nm columns, which agree within a few percent. The 28HPM column runs high for the reasons above and is best read as an upper bound.

The shape of the curve

This is the thing worth carrying in your head:

GATE COUNT, minimum config, normalized to Cortex-M0:

  Cortex-M0+   11k   ████                         0.9x   ← smallest
  Cortex-M0    12k   ████                         1.0x   (baseline)
  Cortex-M3    38k   ██████████████               3.2x
  Cortex-M4    47k   █████████████████            3.9x
                                                          (+DSP over M3)

FULLY CONFIGURED (the number that actually lands in your netlist):

  Cortex-M0+   23k   ████                         1.9x
  Cortex-M0    25k   █████                        2.1x
  Cortex-M3    85k   █████████████████            7.1x
  Cortex-M4   130k   ██████████████████████████  10.8x   (with FPU)
  Cortex-M7   340k   ████████████████...          28x    (core only —
                                                          SRAM is extra
                                                          and is BIGGER)

TWO THINGS TO NOTICE:

  1. Configuration costs MORE than architecture at the low end.
     A fully-configured M0 (25k) is 2x a minimum M0 (12k).
     Debug + trace + 32 IRQs is not free — it roughly DOUBLES the core.

  2. The FPU is expensive.
     M4 min (no FPU) = 47k.  M4 feature-rich (with FPU) = 130k.
     Some of that is debug/trace, but the FPU is a large chunk of it.
     If you don't need single-precision float, don't pay for it.

!!! tip "The number to quote in a design review"

If someone asks "how big is a Cortex-M4?", the correct answer is a question: **"In what configuration, on what node, at what frequency?"**

If they insist on one number: **~50k gates without FPU, ~130k with FPU and full debug/trace.** Then immediately add that you'll confirm it by synthesizing the RTL in your own library, because that is the only number that will ever be true.

5. Cortex-M Feature Matrix

Core ISA Pipeline DMIPS/MHz CoreMark/MHz FPU DSP TrustZone HW Div Est. gates (full)
Cortex-M0 Armv6-M 3-stage 0.87 2.25 — — — — ~25k
Cortex-M0+ Armv6-M 2-stage 0.95 2.39 — — — — ~23k
Cortex-M1 Armv6-M 3-stage 0.8 — — — — — FPGA — sized in LUTs
Cortex-M23 Armv8-M Baseline 2-stage 0.98 — — — Option ✓ ~90k†
Cortex-M3 Armv7-M 3-stage 1.25 3.34 — — — ✓ ~85k
Cortex-M4 Armv7E-M 3-stage 1.25 3.42 SP option ✓ — ✓ ~130k (FPU)
Cortex-M33 Armv8-M Mainline 3-stage ~1.5 ~4.0 SP option Option Option ✓ ~150k†
Cortex-M35P Armv8-M Mainline 3-stage ~1.5 — SP option Option Option ✓ —
Cortex-M55 Armv8.1-M — ~1.6 ~4.4 HP/SP/DP ✓ Option ✓ —
Cortex-M7 Armv7E-M 6-stage dual-issue 2.14 5.01 SP/DP option ✓ — ✓ ~340k + SRAM
Cortex-M85 Armv8.1-M — — — ✓ ✓ Option ✓ —

Bold gate figures are derived from ARM's published area above. † marked figures are third-party estimates — ARM doesn't publish comparable area tables for these cores, so treat them as much softer.

Notable additions:

  • M35P = M33 + physical tamper resistance (anti-DPA, anti-fault-injection).
  • M55 / M85 = Helium (M-profile Vector Extension) — SIMD for on-device ML inference.
  • M23 = "M0+ with TrustZone." M33 = "M4 with TrustZone" (and AHB5, 480 IRQs, coprocessor interface).

6. Cortex-R — Real-Time Profile

Determinism over throughput. TCMs instead of (or alongside) caches, because a cache miss is a latency you cannot bound. Lockstep and ECC for functional safety.

Core ISA Key features Safety Typical use
Cortex-R5 Armv7-R Dual-core lockstep, TCM, ECC, low interrupt latency ASIL-D capable SSD/storage controllers, automotive, modem
Cortex-R8 Armv7-R Up to 4 cores, higher perf, TCM + caches ASIL-D capable Enterprise SSD controllers, 5G modem
Cortex-R52 Armv8-R Hardware virtualization (EL2 hypervisor), strong isolation ASIL-D Automotive domain controllers, mixed-criticality
Cortex-R52+ Armv8-R R52, higher performance ASIL-D Same, higher tier
Cortex-R82 Armv8-R 64-bit First 64-bit R-profile. Optional MMU — can run Linux. ASIL-D Computational storage, high-end SSD controllers

!!! tip "Why Cortex-R82 matters for storage"

R82 is the first R-profile core with an **optional MMU**, so one core can run a deterministic RTOS *and* a Linux application environment. For **computational storage** — running user workloads on the drive itself — that's the enabling feature. It's the core to know if SSD controllers are your target.

The R-profile pattern: TCM, not cache

CACHE (A-profile / general purpose)
  - Hardware-managed, transparent
  - Hit: fast.  Miss: 100+ cycles, and you don't know when
  - Great average throughput, UNBOUNDED worst case

TIGHTLY-COUPLED MEMORY (R-profile, and M7)
  - Explicit address range. SRAM adjacent to the core.
  - ALWAYS single-cycle. No miss. No eviction. No surprise.
  - Firmware puts the ISR, the hot FTL path, the critical loop here.
  - YOU manage what lives there. That's the cost.

  ITCM = instruction TCM.   DTCM = data TCM.

Why an SSD controller cares:  a 99.99th-percentile latency SLA cannot be
met by a core that might take a 200-cycle cache miss in the middle of an
FTL lookup. Put the lookup in DTCM and the jitter disappears.

7. Cortex-A and Neoverse — Application Profile

!!! danger "Gate count is meaningless here — and now you can see why"

Look back at the Cortex-M7 numbers: at 40nm, the core is 0.213 mm² and the *memory* is 0.261 mm². Memory already exceeds logic at the top of the M-profile.

An A-profile core is far worse: L1 I/D caches, L2, TLBs, branch-prediction tables, and often a shared L3/SLC. **Most of the transistors aren't logic gates at all.** Quoting "gates" for a Cortex-A78 tells you nothing. The industry quotes **mm² at a node with a stated cache configuration**, or it quotes nothing.

This is the complete answer to "how many gates?" — it has a clean answer for Cortex-M, a degrading answer for M7, and no meaningful answer for Cortex-A.
Core Year ISA Pipeline Position
Cortex-A5 / A7 2009–11 Armv7-A In-order Legacy little cores
Cortex-A9 2007 Armv7-A Out-of-order The classic 32-bit AP
Cortex-A53 2012 Armv8-A In-order, 8-stage The workhorse. Still everywhere: set-top, networking, SSD mgmt plane
Cortex-A55 2017 Armv8.2-A In-order A53 successor, DynamIQ
Cortex-A510 / A520 2021–23 Armv9-A In-order Current LITTLE
Cortex-A72 / A73 2015–16 Armv8-A OoO Mid/big of their era
Cortex-A76 / A78 2018–20 Armv8.2-A OoO big cores
Cortex-A7xx 2021+ Armv9-A OoO Current middle
Cortex-X series 2020+ Armv8/9-A Wide OoO Max performance, area be damned

Neoverse — the infrastructure line

Core Target Notes
Neoverse E1 Throughput / edge SMT, efficiency-focused
Neoverse N1 Cloud / scale-out AWS Graviton2. The one that proved ARM in the datacenter.
Neoverse N2 Cloud Armv9, SVE2
Neoverse V1 HPC Wide vectors (SVE), Graviton3
Neoverse V2 HPC / AI NVIDIA Grace

Why an ASIC designer cares: Neoverse ships with CMN (Coherent Mesh Network). If you're building a many-core SoC, the mesh and its coherency protocol are a far larger integration problem than the cores.


8. What You Actually Have to Integrate

The core is the easy part. This is the work.

  • AMBA — the bus


    • AHB / AHB5 — Cortex-M. Simple. AHB5 adds TrustZone signalling.
    • APB — peripherals. Low-bandwidth, dead simple.
    • AXI4 — the workhorse. Five independent channels, bursts, out-of-order via IDs.
    • ACE / ACE-Lite — AXI + cache coherency. ACE-Lite for I/O-coherent masters.
    • CHI — coherent hub interface, used by Neoverse/CMN. Packet-based, scalable.

    Getting AXI ID/ordering rules wrong is a top-tier integration bug.

  • CoreSight — debug and trace


    DAP, ETM/ETB, ITM, CTI, funnels, replicators.

    Easy to under-budget — and the area tables above prove it. Going from minimum to feature-rich roughly doubles a Cortex-M0 and more than doubles an M3. Much of that delta is debug and trace. Plus the trace port needs real pins.

  • GIC — interrupt controller


    A- and R-profile use the Generic Interrupt Controller (GICv3/v4): distributor + redistributor + CPU interface.

    M-profile uses the much simpler NVIC, built into the core.

  • Memory subsystem


    • MMU (A-profile): page tables, TLBs, virtual memory.
    • MPU (R/M): region-based protection, no translation, no TLB miss.
    • TCM (R / M7): deterministic single-cycle SRAM.
    • Cache coherency: if more than one master touches the same data, this is your hardest problem.
  • Clock, reset, power


    Multiple clock domains around the core (core, bus, debug, always-on) means CDC. Reset sequencing across power domains. WIC + SRPG if you power-gate the core in deep sleep.

    This is where your actual bugs will be. See the CDC page.

  • Security


    TrustZone partitions the world into Secure / Non-secure. On A-profile that's EL3 + a Secure Monitor; on Armv8-M it's the SAU/IDAU and secure-state stacking.

    The security attribute must propagate through the entire fabric — AHB5/AXI carry an NS bit. One mis-attributed peripheral defeats the whole scheme.


9. Choosing a Core

Do you need to run Linux / a rich OS?
│
├─ YES ──► A-profile.  Cortex-A53/A55 if area & power matter (still the
│          most-shipped 64-bit core). A7xx / X if you need speed.
│          Neoverse if it's infrastructure / scale-out.
│          → You now own an MMU, cache coherency, and a GIC.
│
└─ NO
   │
   ├─ Hard real-time determinism, functional safety, or lockstep?
   │  (storage controller, automotive, modem)
   │  │
   │  └─ YES ──► R-profile.  R5 for classic embedded control.
   │             R8 for more throughput. R52 for a hypervisor.
   │             R82 for 64-bit / optional MMU (→ computational storage).
   │
   └─ Area/power-critical, deeply embedded, no OS or small RTOS?
      │
      └─ M-profile.
         │
         ├─ Absolute smallest (~11k gates min)      ──► M0+
         ├─ Smallest WITH TrustZone                 ──► M23
         ├─ General purpose, no DSP (~85k full)     ──► M3
         ├─ DSP / motor control / audio (~130k+FPU) ──► M4
         ├─ DSP + TrustZone                         ──► M33
         ├─ Physical attack resistance              ──► M35P
         ├─ ML inference at the edge (Helium)       ──► M55 / M85
         └─ Max M-profile performance (~340k+SRAM)  ──► M7 (or M85)

10. Study Checklist

The area/gate question

  • [ ] Explain why ARM publishes mm² at a stated library/node/corner rather than gate counts
  • [ ] Convert an area to a gate estimate: gates = area(µm²) ÷ NAND2 area(µm²)
  • [ ] Reproduce the calibration: Cortex-M0 min config → ~12k gates from both 90LP and 40LP
  • [ ] Explain why the 28HPM-derived counts run ~25–30% high
  • [ ] Explain why gate count degrades in meaning for M7 and collapses entirely for Cortex-A
  • [ ] State the two lessons from the gate curve: configuration ≈ doubles the core, and the FPU is expensive

Numbers worth knowing cold

  • [ ] Cortex-M0 min ≈ 12k, full ≈ 25k
  • [ ] Cortex-M3 min ≈ 38k, full ≈ 85k
  • [ ] Cortex-M4 min ≈ 47k, full with FPU ≈ 130k
  • [ ] Cortex-M7 core ≈ 340k — and its SRAM is larger than its logic

Fundamentals

  • [ ] Name the three profiles and the one feature separating A from R/M (the MMU)
  • [ ] Explain why storage controllers use R-profile, not A-profile
  • [ ] Explain TCM vs. cache and why determinism forces the choice
  • [ ] State what makes Cortex-R82 significant (64-bit, optional MMU → computational storage)
  • [ ] Explain what M0+ changed vs. M0 — and why it's smaller and faster and lower power

Integration

  • [ ] Name the AMBA protocols and which core family uses each
  • [ ] Distinguish AXI, ACE-Lite, and ACE
  • [ ] Explain NVIC vs. GIC and which profile uses which
  • [ ] Explain MMU vs. MPU vs. TCM
  • [ ] Explain how TrustZone's security attribute must propagate through the fabric

References

Primary sources — every area, power, and frequency figure on this page

These are the datasheets the §4 tables are transcribed from. If you only bookmark one thing, bookmark these.

Feature matrix

Product and TRM landing pages

Standards

  • AMBA Specifications — AHB5, AXI4, ACE, CHI (developer.arm.com → AMBA)

!!! note "Reproducing the gate estimates"

Every gate figure here is `ARM's published area ÷ NAND2 cell area` using the reference table in §3. Swap in the NAND2 area from **your** library's databook and rerun it — that's the number that will actually hold in your netlist.

The calibration to check your NAND2 assumption against: **Cortex-M0 minimum config must come out at ~12k gates**, which is the figure ARM states independently. If your arithmetic doesn't reproduce that, your NAND2 area is wrong.
Contact

Have an Idea?
Let's Build It.

Whether you're a startup with a hardware concept, an established company needing deep design help, or an enthusiast with a wild project — we want to hear about it.

LocationBoulder, Colorado