Skip to content

Settings

bwintermann edited this page Mar 4, 2026 · 10 revisions

While we make an effort to provide a no-hassle works-out-of-the-box FINN+ experience, it might still be beneficial to read this page to get an overview of how FINN+ is configured.

Settings

FINN+ checks the following locations in order to find a file named settings.yaml:

  • (If defined) Path given in the environment variable FINN_SETTINGS
  • The directory where FINN is installed (formerly FINN_ROOT). This is useful for having multiple development versions with different settings
  • ~/.finn/
  • ~/.config/

If you don't have a settings file, FINN+ will prompt you to create one with a built-in wizard. If you really want to skip this and use the defaults, pass --accept-defaults. If you want to run the wizard again, use

finn wizard settings 
# or
finn settings create

To quickly show which settings file is being read, and to what its contents resolve, use

finn settings show

To edit the settings manually, you can also run

finn settings edit

which will open the resolved settings file in your editor of choice.

Dependencies

FINN+ has certain dependencies that cannot be installed using Poetry / Python package management. For those dependencies, we have a separate system. FINN+ will read a definition file that contains all dependencies it needs (as well as commit numbers and some other options). This file is by default located in finn/external_dependencies.yaml but can be configured by overwriting the finn_deps_definitions setting or the FINN_DEPS_DEFINITIONS environment variable. Relative paths are resolved relative to the FINN+ root directory.

To resolve the destination of the dependencies, FINN+ checks the dependency directory in this order:

  • Command line parameter given to finn. If available, this is chosen
  • (If defined) Path given in the environment variable FINN_DEPS
  • Value loaded from the key finn_deps if found in settings.yaml
  • The fallback path coded into finn itself: ./finn_deps

Note

If a relative path is given, it is searched for from the location where FINN itself is located.

Warning

Beware that if you have a small HOME directory, you should not place the dependencies in your home directory, since the dependency directory can become quite large.

To inspect the currently used dependencies, run

finn deps show

And, as with the settings, to edit them simply run

finn deps edit

The updated dependency definitions will take effect when you next execute a build flow or run

finn deps update

manually.

Location of the build files directory

FINN produces a large amount of files while running. The location where these are stored is resolved in this order:

  • Command line parameter given to finn. If available, this is chosen
  • (If defined) Path given in the environment variable FINN_BUILD_DIR
  • If defined in settings.yaml, it is read from the key finn_build_dir
  • If no other command is given, the build files get stored in a directory called FINN_TMP in the same directory as the build flow file

Note

If the given path is relative, it is searched for from the location of the build file.

Defaults

If you started FINN+ with default settings, the following default values will be used:

Key Default
automatic_dependency_updates True
deps_git_timeout 100
num_default_workers 75% of available cores
finn_build_dir ./FINN_TMP
finn_deps ./finn_deps
finn_deps_definitions ./external_dependencies.yaml

Skipping dependency updates

When running several hundred flows in parallel, you may not want them to update all dependencies always. You might also just not have internet, and don't want to wait for the git timeout. In this case you can pass --skip-dep-update / -s to skip this. Although not recommended, you can also make this permanent by setting

automatic_dependency_updates: false

in your settings.yaml file. In this case you then need to update manually using finn deps update.

Restart from a given step

If you kept your FINN_BUILD_DIR complete and used saved_intermediate_models: true, you can make changes to the config and can start from an already reached step. Either set start_step and stop_step in your config, or simply pass --start and/or --stop to finn. If the field in your config is not set, this will overwrite it and execute the specified steps. A common flow is to execute the flow until one of the last steps is reached and then use --start to quickly iterate a certain step in the middle of the flow without having to do the slow steps again (like for example IPGen).

FINN Configuration

FINN is configured through a number of environment variables. By transitioning to FINN+, some of them were renamed or deleted, and some new ones created and some moved to the new settings.yaml file:

Caution

Table is work in progress!

FINN FINN+ Comment
FINN_BUILD_DIR FINN_BUILD_DIR Path to place generated files during a build
- FINN_DEPS Path to place non-Python dependencies
- FINN_DEPS_DEFINITIONS Path to the dependency definition file
- FINN_RTLLIB, FINN_NOTEBOOKS, FINN_QNN_DATA, FINN_TESTS, ... Paths to FINN components
FINN_ROOT FINN_ROOT (deprecated) Was deprecated and replaced by the custom variables for reasons related to packaging
FINN_SKIP_DEB_REPOS AUTOMATIC_DEPENDENCY_UPDATES (Settings only, default: True) Determines whether dependencies are updated before launching FINN itself
- FINN_SETTINGS Where settings.yaml is located. If not given, is resolved in the order specified in Configuration
FINN_HOST_BUILD_DIR -
FINN_XILINX_PATH, FINN_XILINX_VERSION XILINX_VIVADO, XILINX_VIITS, XILINX_HLS Paths to the Xilinx tools. XILINX_VIVADO etc. are made available automatically, if the tools are sourced in your environment.
FINN_DOCKER_* -
FINN_SINGULARITY -
NUM_DEFAULT_WORKERS NUM_DEFAULT_WORKERS Variable is the same, but in FINN+, if not given, is automatically calculated to be 75% of the core count returned by Pythons psutil package, instead of being hardcoded to 4

Clone this wiki locally