asic design

Advanced Flash Controller Interface

The advanced NAND Flash controller (advanced Flash controller interface – AFCI) is a register level interface that allows software and hardware state machines the ability to communicate with a nonvolatile memory subsystem. The command communication, data movement, and status information are accomplished with a minimal number of non–cacheable read/writes. This is important to maximize throughput and minimize impact of register read/writes to platform software.

Command information is managed utilizing a command submission and completion queue architecture which uses doorbell registers in the controller register set to communicate that a new command has been populated in the command queue. This queue is a circular buffer which can be as small as a depth of 2 and as large as a depth of 65536. This flexibility is important to manage system platform trade-offs of performance with system complexity.

Administrative commands are communicated using a secondary command submission and completion queue. This allows for two completely separate masters to issue command information to the controller. The intention here is to allow for the main data command information to use the command submission queue, and administrative/maintenance commands to be issued using the administrative queue. The arbitration scheme between the admin queue and the command queue can be set by system software.

AFCI Applications

  • Embedded applications requiring communication with NAND arrays
  • Solid State Disk (SSD) controllers
  • Any system requiring communication with persistent storage


AFCI Features

  • Multi-Port architecture allows connecting up to 32 NAND devices (128 total ChipEnables)
  • Separate administrative and I/O queues for flexible datapath management
  • Maximum of one register write per command submission/ completion
  • Industry standard bus interface (AXI-4) master used for command fetching, command completion, and data movement
  • Support for 64k commands per command queue
  • Independent R/W channels allow data movement from system to NAND and NAND to system concurrently
  • Actively maintains a command per CE for maximum throughput to/from the NAND
  • Automatic training sequence performed on a per-chip-enable basis.
  • Firmware selectable taps for quick speed change via Set Features command
  • Selectable BCH-ECC correction capabilities based on NAND selection
  • Supports ONFI 3.2 Compliant (NVDDR Modes-05) MLC and SLC NAND and Toggle 2.0
  • Optional: AES-XTS 128 or 256 bit encryption
  • The AES-XTS algorithm is FIPS-197 certified


Provided with Advanced Flash Controller Interface (AFCI)
Comprehensive User Documentation
Design File Formats:
Constraints Files:
ModelSim verification model
Instantiation Templates:
Reference Designs & Application Notes:
Synthesis and place and route scripts
Additional Items:
Simulation Script, Sample Vectors, Sample Testbench, Reference Design
Simulation Tool Used:
ModelSim 10.3 or newer
The purchased core is delivered and warranted against defects for 6 months from delivery. Phone and email technical support is included for 6 months from the delivery date.
Other simulators are available. Please contact IntelliProp for more information.


AFCI Support
IntelliProp’s NAND Flash controller (AFCI) is available for integration into FPGA or ASIC devices. Please contact IntelliProp for specific device support.

Advanced Flash Controller Interface Core
NAND Flash Controller Block Diagram


AFCI Functional Description
The NAND Flash controller is designed around a scalable port architecture which allows for parallel communication across a multitude of NAND devices. Each NAND port can be connected to one or more NAND Targets. The parallelized port architecture allows scalable capacity and performance to meet a wide variety of applications.

The is based on a paired Submission and Completion queue mechanism. The AFCI submission queue is a circular buffer where the producer of commands is either software or a hardware state machine external to the AFCI controller. The consumer of commands is the AFCI submission state machine. New command entries are reported to the AFCI submission state machine by a single, non-cacheable write to the AFCI controller registers. The command producer can arm as many commands as there is space in the command queue with a single register write.

The NAND Flash controller supports AES-XTS with an option for 128 or 256 bit encryption levels and is capable of data throughput that supports greater than 20 Gbps speeds. The encryption algorithm on the NAND Flash controller is FIPS-197 certified.

Click here to request a AFCI (IPP-BL157A-ZM) datasheet...>

asic verification tools