Build with ATOM/APIO - configuration for revision control


Related to my question about how Atom/Apio choose which files to build, I’m also wondering if there is a way to configure the build process so that it does not use a flat directory structure. IMHO, flat directories are messy because you have you source code mixed in with the tool chain’s output files, and the latter have to be ignored (by name or extension) in your revision control system.

Is there any way to change the build process so that output files are placed in subdirectories?

Failing that, is there a definitive list of files/extensions generated by Atom/Apio that can be included in a .gitignore (or similar) file?


You can achieve a lot of the effects you want by adding a custom SConstruct file.

For example, see Atom/apio tutorial for how to use Verilog files in subdirectories.

I usually put:


in .gitignore, but you may get away with hardware.bin, hardware.asc, hardware.blif.

I usually also include:

*.rpt (Use by icetime)
*.json (use by nextpnr-ice40, which the current apio doesn’t use)
*.vcd (used by simulation)

You probably also want to exclude:


If you are using a SoC (like the picosoc example) and building firmware, you might want to exclude:


but that project is built by a Unix Makefile, not apio.


Thanks very much! Perfect tips!