Compiling Models for Custom Synaptics SoCs

This explains how to compile models for custom Synaptics SoCs using the Torq compiler.

NSS Subsystem Overview

The NSS (NPU Sub System) in Synaptics SoCs consists of the following components:

  • LRAM: Fast local memory for data storage and processing.

  • DMA: Direct Memory Access block, capable of reading and writing data between system memory and LRAM.

  • SLICE: Data processing blocks that read, process, and write back data to LRAM.

You can configure the LRAM size and the number of slices at model compilation time to test custom hardware configurations.

Custom Hardware Configuration

To compile a model for a custom hardware configuration, use the following options:

$ torq-compile ... --torq-hw=custom --torq-hw-custom=<LRAM>,<slices>,<tiling_memory>
  • <LRAM>: Size of LRAM (integer)

  • <slices>: Number of SLICE blocks (integer)

  • <tiling_memory>: Tiling memory size in kilobytes (kb)

    Tiling memory: specifies the available memory for tiling operations. When an operation’s memory requirement exceeds the LRAM value, the compiler will automatically tile the operation to fit within the specified tiling memory.

Example Configurations

Configuration 1

  • LRAM: 512

  • Slices: 2

  • Tiling memory: specify as needed
    Compile with:

    $ torq-compile ... --torq-hw=custom --torq-hw-custom=512,2,400
    

Configuration 2

  • LRAM: 256

  • Slices: 1

  • Tiling memory: specify as needed
    Compile with:

    $ torq-compile ... --torq-hw=custom --torq-hw-custom=256,1,200
    

Note: When compiling models with a 256 LRAM configuration, stability may vary due to the need for very small tile sizes. Support for this configuration is still under development. Full compatibility is not guaranteed in this release. For a more representative configuration, you can compile with 512 size of LRAM and keep the rest of the configuration the same.