Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • The NanoSoC Tour
  • Reading Path
  • SoC Glossary10
  • SoC Metrics Reference
  • SoC Cheatsheet
  • What SoC Integration Is12
  • Architecture and Budgets21
  • Memory Maps and Address Decode26
    • Designing the Address Map
    • Implementing Address Decode
    • Decode Errors and Default Slaves
    • Register Maps and Banks
    • Security and Privilege Regions
    • The Software View and the Hardware-Software Contract
    • IP-XACT and Automated Assembly
    • Memory-Map Verification
  • Interconnect and Bus Fabrics26
  • Clock and Reset Architecture24
  • Power Architecture21
  • Interrupts, DMA and Peripherals15
  • Memories, Boot and Security21
  • IP Integration and Handoff21
  • Top-Level Verification and Bring-up21
  • Package, Pads and I/O18
  • Chip Signoff and Tapeout18
  • SoC Interview Prep16
  • Capstone: Integrate NanoSoC19
Loading lesson

←SoC Design
  1. Topics
  2. SoC Design
  3. Memory Maps and Address Decode

Part 3 of 14Part 3 of 14/Memory Maps and Address DecodeAll levels

Memory Maps and Address Decode

The address map as a contract between hardware and software: regions, alignment, decode, and what answers when nothing matches.

  • 8topics
  • 26lessons

Every address a program touches is a promise the hardware must keep: this range holds memory, that range holds registers, anything else is an error. The address map is that promise written down, and the decode logic is the hardware that keeps it, cycle by cycle. On NanoSoC the map fits on one table — a 16 KB boot ROM, two 64 KB SRAMs, seven peripheral slots and four holes — but it already contains every classic integration problem: windows that must be power-of-two sized and aligned, a DMA whose 8-bit address port repeats sixteen times inside its 4 KB slot, three regions where nothing answers, and one reserved hole where the wrong kind of nothing answers. This section teaches the map as an integrator owns it: as a contract with software that has to be checked by a script, generated into RTL and headers from one source, and defended at integration review.

Topic

What it covers

After it you can...

Designing the Address Map

Regions, attributes, alignment, holes, aliases and growth planning on the NanoSoC map

Read the NanoSoC map table, justify every base and size, and run the overlap and alignment checker.

Implementing Address Decode

Decode equations, two-level decode, generating decode from a map table, decode timing

Write the NanoSoC decode from the map table, generate matching RTL and headers, and cost a pipelined select.

Decode Errors and Default Slaves

DECERR versus SLVERR versus PSLVERR, default-slave design, and debugging hangs and mismatches

Predict the exact response for any NanoSoC address, design a default slave that cannot hang, and localise a decode bug.

Register Maps and Banks

Register block design, specification checking, banking across blocks and the classic register bugs

Design a register block, check its specification with a script, and avoid W1C and busy-write traps.

Security and Privilege Regions

Secure versus non-secure regions, where the filters live, and testing the access-control matrix

State who may touch what, place both NanoSoC filters, and prove the test matrix complete.

The Software View and the Hardware-Software Contract

Generated headers, access rules for drivers, and the errata process

Ship headers software can trust, state the driver rules, and record a bug as an erratum.

IP-XACT and Automated Assembly

Standard component descriptions and generating the top level from one source

Describe a block once and generate wiring, decode and headers that agree.

Memory-Map Verification

Sweeps, reset and access-type checks, alias probing, and regression hooks

Verify the map against its model and freeze the planted bugs into permanent tests.

Suggested order: top to bottom. Design the map first, because decode is just the map turned into gates; then implement the decode, because the error policy only makes sense once you know which decoder answers each hole; then the errors and responders. Register maps, security regions and the software contract follow, because each reads the map at a finer grain; automated assembly and verification close the section by generating and then proving the whole thing. Readers who already own a map can start at the second topic, and readers chasing a specific hang can start at the third and follow the links back. For the generic theory behind maps and decoding see Address Maps and Decoding; for the block-level decoder view see Address Decode.

Check yourself Why is the address map called a contract rather than a diagram?

Because software is built against it: link addresses, driver base pointers and headers all assume it. Changing the map after software exists breaks that build, so the map constrains both sides and has an owner and a version.

Be ready to draw the NanoSoC map from memory with bases, sizes and the three response kinds, then explain which level of decode answers each hole.

Related topics

  • Up: SoC Design course hub

  • NanoSoC Tour

  • Glossary

  • Protocol First Principles: Address Maps and Decoding

PreviousNext: Budget Governance

Up next

Up nextBudget Governance

Sign in to save progress

Practice this lessonPrevious lessonReport an error

See also

  • How to Use This Course
  • The NanoSoC Tour
  • Reading Path