################################################################################
########################## Basic Directory Structure ###########################
################################################################################

# everything
*

# exclude the directory structure
!/adi_library/
!/adi_library/**/*
!/common/
!/common/**/*
!/custom_ips/
!/custom_ips/**/*
!/modules/
!/modules/**/
!/projects/
!/projects/**/
!/.gitattributes
!/.gitignore
!/README.md


################################################################################
############################### Vivado Specific ################################
################################################################################

# exclude
.metadata
*.cache/
*.gen/
*.hw/
*.ip_user_files/
*.sim/

# include board preset tcl (be careful about the path)
!/projects/*/*.tcl

# source: include everything
!**/*.srcs/**/*

# runs: exclude everything but design run results
*.runs/**/*
!**/*.runs/impl_*/*.bit
!**/*.runs/impl_*/*.ltx

# xpr: needed for recreating design
!*.xpr

# xsa (Xilinx support archive): include for ps
!/projects/*/*/*.xsa

# project documents
!/projects/*/*/*.md


################################################################################
################################ Vitis Specific ################################
################################################################################

# include sdk directory and everything in it
!/projects/*/*/vitis*/
!/projects/*/*/vitis*/**
/projects/*/*/vitis*/.analytics
/projects/*/*/vitis*/**/logs/

# exclude some obscure hidden SDK folders
/projects/*/*/vitis*/.metadata/
/projects/*/*/vitis*/.sdk/
/projects/*/*/vitis*/RemoteSystemsTempFiles/
/projects/*/*/vitis*/webtalk/

# hw_platform: exclude the entire hw_platform folder, as everything can be
# generated from the .hdf file. Make sure to include the bitstream in the .hdf
# file when exporting from Vivado!
/projects/*/*/vitis*/*_hw_platform_*/

# BSP: only keep `.cproject`, `.project`, `.sdkproject`, `.system.mss` and
# Makefile, ps lib files are regenerated automatically
/projects/*/*/vitis*/*_bsp/*
!/projects/*/*/vitis*/*_bsp/*.cproject
!/projects/*/*/vitis*/*_bsp/*.project
!/projects/*/*/vitis*/*_bsp/*.sdkproject
!/projects/*/*/vitis*/*_bsp/system.mss
!/projects/*/*/vitis*/*_bsp/Makefile

# Application: ignored file patterns, exclude Debug & Release folders
/projects/*/*/vitis*/**/*.o
/projects/*/*/vitis*/**/*.d
/projects/*/*/vitis*/**/*.a
/projects/*/*/vitis*/**/Debug/
/projects/*/*/vitis*/**/Release/


################################################################################
############################ Vivado & Vitis Common #############################
################################################################################

# folders (and all of their contents) that should always be ignored, anywhere
# in the repo
.Xil/

# file patterns that should always be ignored (journal files, log files, dump
# files that are created upon Vivado/SDK errors)
*.jou
*.log
*.backup.jou
*.backup.log
*.upgrade_log
*.dmp
*.debug
vivado_pid*
*~

# vivado workspace files
xsim.dir/
xvlog.pb
