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
      • What IP-XACT Describes
      • Generating the Top from One Description
      • Reviewing Generated Output
    • 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 NanoSoC14
Loading lesson

←IP-XACT and Automated Assembly
  1. Topics
  2. SoC Design
  3. Memory Maps and Address Decode
  4. IP-XACT and Automated Assembly
  5. What IP-XACT Describes
On this page

    Part 3 of 14, lesson 21 of 26Part 3 of 14/Memory Maps and Address Decode/Lesson 21 of 26All levels

    What IP-XACT Describes

    Components, bus interfaces, memory maps and designs: the standard description at a conceptual level.

    Why it matters

    Integration breaks at the seams between teams, and the seams are descriptions: a block arrives with a port list in a spreadsheet, a register map in a document and parameters in an email, and the integrator becomes the fourth, lossy transcription. A standard, machine-readable description removes the transcription. IP-XACT exists so that a component can describe itself once, precisely, in a form both people and generators can read. Knowing what it carries, and just as importantly what it does not, is what lets an integrator demand the right deliverable.

    The core idea

    A component description names the block and its view of itself: its bus interfaces, each declaring a protocol role such as master or slave and mapping the interface's logical ports onto the module's physical ports; its plain ports that are not part of a bus; its parameters with defaults; and its memory maps, the address blocks and registers reachable through a slave interface, with base addresses, ranges, widths and access types. That last part should look familiar: it is the register table from the register topic, in standard form. A design description then assembles components: it lists instances of components, connects their bus interfaces and ports, assigns parameters per instance, and describes the address map of the whole assembly by assigning each slave interface a base in a shared address space. Access is declared per field (read-write, read-only, write-only and so on), and write-1-to-clear is a modified-write-value on the field, not an access type of the register. The slave's base address is not in the component at all: the component only knows offsets inside its own address block, and the base is assigned in the design description, where the master's address space maps the slave interface. The fragment below is illustrative generic format in that spirit, trimmed to the DMA's register interface.

    Diagram
    # not-run: format fragment, not executable here
    component: nano_dma
      busInterface regs (slave, APB-style):
        portMap: paddr -> paddr, psel -> psel, penable -> penable,
                 pwrite -> pwrite, pwdata -> pwdata, prdata -> prdata,
                 pready -> pready, pslverr -> pslverr
      memoryMap regs:
        addressBlock: base 0x0, range 0x100, width 32
          register CTRL  offset 0x00 width 32 access read-write
          register STATUS offset 0x04 width 32
            field BUSY bits [0:0] access read-only
            field DONE bits [1:1] access read-write, modifiedWriteValue oneToClear
            field ERR  bits [2:2] access read-write, modifiedWriteValue oneToClear
          register LEN   offset 0x08 width 32 access read-write
          register KEY   offset 0x0C width 32 access read-write
          register COUNT offset 0x10 width 32 access read-only

    What the format does not carry matters as much. It describes structure and addressing, not behaviour: the DMA's rule that LEN writes are ignored while BUSY, or that every CTRL write stores IRQ_EN, lives in the RTL and in prose documentation, not in any structural description. It describes intent, not correctness: a component can describe a register that its RTL does not implement, and only cross-checks against the RTL and the register model catch that. And it does not assemble itself: a generator consumes the design description and emits wiring, decode and collateral, which is the next lesson. Treat the description as the single source for facts it can express, and keep a written list of the facts it cannot.

    What the review looks for

    • Every delivered block has a component description whose port maps match its RTL port list, checked mechanically.

    • Register maps in descriptions match the register tables block for block, offset for offset, generated or compared in the build.

    • The facts the format cannot express (behavioural rules, timing, clock and reset intent) are listed explicitly as separate deliverables, not assumed covered.

    Verify and debug

    Cross-check one component end to end: pick the DMA, walk its port map against the module ports, its register block against the register table, and its parameters against the instantiation. Any mismatch is a description bug, and it is cheap exactly because it is found before generation. If a block cannot produce a description, that is itself the finding: its facts exist only in somebody's head or inbox.

    Believing the description because it is standard. A well-formed description of the wrong ports assembles beautifully into a wrong chip; the format guarantees consistency of the copies, not truth of the source. Verify the source against the RTL once, then let generation protect it forever.

    If asked what IP-XACT is for, answer: one machine-readable self-description per block, so wiring, decode, headers and documents are generated from facts stated once. Then name its limit unprompted: structure and addressing, not behaviour.

    Check yourself Which NanoSoC fact about the DMA can a component description not express, and where must it live instead?

    That LEN and KEY writes are silently ignored while BUSY (and that CTRL stores IRQ_EN on every write). Structural descriptions carry ports, maps and parameters only; behavioural rules live in the RTL, the register documentation and the errata-style driver rules.

    Related topics

    • Next: Generating the Top from One Description

    • Generating Decode from a Map Table

    Previous

    63 / 289

    Next: Generating the Top from One Description

    Up next

    Up nextGenerating the Top from One Description

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • Reviewing Generated Output