Implementation Guide

This guide is intended for developers who want to extend FINN by adding new operators, transformation passes, or analysis passes.

If you’re new to FINN development, we recommend:

  1. Reading the Concepts documentation to understand FINN’s core concepts (IR, ModelWrapper, transformations)

  2. Reviewing the Developer documentation guide for contribution workflow

  3. Consulting the PYTHON_STYLE_GUIDE.md and HDL_STYLE_GUIDE.md for coding standards

Getting Started

Adding a new hardware layer:

  1. Start with CustomOp Class Hierarchy to understand the CustomOp class hierarchy

  2. See Implementing HLS Variants for HLS code generation or Implementing RTL Variants for RTL code generation

  3. See SpecializeLayers: HLS vs RTL Selection to add selection logic for HLS vs RTL

Adding transformation or analysis passes: