# ===========================================================================
# General .gitignore for Xilinx Vivado / Vitis / SDK Projects
# Works for ANY project folder following standard Xilinx directory structure
#
# Directory naming convention: <ProjectName>.<suffix>/
#   e.g., Debug_FW.cache/, Debug_FW.gen/, Debug_FW.hw/, Debug_FW.runs/,
#         Debug_FW.sim/, Debug_FW.srcs/, Debug_FW.ip_user_files/
#   e.g., Debug_FW.sdk/ (SDK workspace, different structure)
# ===========================================================================
#
# PRESERVED (committed):
#   - Source files (.v, .vhdl, .bd, .xdc, .c, .h, .ld)
#   - Project/workspace config files (.xpr, .project, .cproject)
#   - IP configuration (.xci)
#   - Generated HDL sources (in .gen/ but NOT sim/)
#   - BSP files (system.mss, platform.tcl, etc.)
#   - Output files (.xsa, .bit, .elf)
#   - Hardware platform files (.hdf, ps7_init.*)
#
# IGNORED (build artifacts, workspace state, caches):
# ===========================================================================

# ----- Vivado Cache -----
# Directory: <ProjectName>.cache/ - regenerated by Vivado
*.cache/

# ----- Logs -----
*.log

# ----- Vivado Generated Sources -----
# Directory: <ProjectName>.gen/ - keep HDL, ignore sim files
*.gen/*/ip/*/sim/
*.gen/*/ip/*/sim_tlm/

# ----- Vivado IP User Files -----
# Directory: <ProjectName>.ip_user_files/ - keep mem_init, ignore sim scripts and bd
*.ip_user_files/sim_scripts/
*.ip_user_files/bd/

# ----- Vivado Simulation -----
# Directory: <ProjectName>.sim/
*.sim/

# ----- Vivado Runs (synthesis & implementation outputs) -----
# Directory: <ProjectName>.runs/ - keep run control scripts, ignore outputs
*.runs/synth_1/*.log
*.runs/synth_1/*.jou
*.runs/synth_1/*.vds
*.runs/synth_1/*.rpt
*.runs/synth_1/*.pb
*.runs/synth_1/*.dcp
*.runs/synth_1/*.bin
*.runs/synth_1/*.bit
*.runs/synth_1/.Xil/
*.runs/synth_1/__synthesis_is_complete__
*.runs/impl_1/*.log
*.runs/impl_1/*.jou
*.runs/impl_1/*.vdi
*.runs/impl_1/*.rpt
*.runs/impl_1/*.rpx
*.runs/impl_1/*.pb
*.runs/impl_1/*.dcp
*.runs/impl_1/*.bin
*.runs/impl_1/*.bit
*.runs/impl_1/*.ltx
*.runs/impl_1/*.wdf
*.runs/impl_1/.Xil/
*.runs/impl_1/*.tmp
*.runs/impl_1/*.hwdef
*.runs/impl_1/*.json
*.runs/impl_1/*.hw
*.runs/impl_1/*.bd
*.runs/impl_1/*.dat
*.runs/impl_1/*.csv
*.runs/impl_1/*.xml
*.runs/impl_1/*.h5
*.runs/impl_1/*.lpx
*.runs/impl_1/*.spn
*.runs/impl_1/*.spnx
*.runs/impl_1/*.xdci
*.runs/impl_1/*.lck
*.runs/impl_1/*.dmp
*.runs/impl_1/*.mcs
*.runs/impl_1/*.bit.bif
*.runs/impl_1/*.bin.bif
*.runs/impl_1/*.mcs.bif
# Keep run control files
!*.runs/impl_1/gen_run.xml
!*.runs/impl_1/rundef.js
!*.runs/impl_1/runme.sh
!*.runs/impl_1/runme.bat
!*.runs/synth_1/gen_run.xml
!*.runs/synth_1/rundef.js
!*.runs/synth_1/runme.sh
!*.runs/synth_1/runme.bat
!*.runs/.jobs/
!*.runs/.jobs/vrs_config_*.xml

# ----- SDK Workspace (Vivado SDK) -----
# Directory: <ProjectName>.sdk/ - different structure (no dot before "sdk")
# Keep: .project, .cproject, sources, BSP, hw_platform configs
# Ignore: workspace metadata, build outputs, logs
*.sdk/.metadata/
*.sdk/.sdk/
*.sdk/RemoteSystemsTempFiles/
*.sdk/SDK.log
*.sdk/webtalk/
*.sdk/*/Debug/
*.sdk/*/Release/
*.sdk/*/bootimage/
*.sdk/*_hw_platform_*/system_wrapper.bit
*.sdk/*_hw_platform_*/system_*.bit

# ----- General Build Artifacts -----
*.swp
*~
*.bak
*.tmp
*.pyc
__pycache__/
*.o
*.a
*.so
*.dll

# ----- OS Files -----
.DS_Store
Thumbs.db
desktop.ini

# ----- Eclipse / Vitis workspace metadata (regenerated on open) -----
.metadata/

# ----- Vitis workspace build artifacts (regenerated) -----
**/export/
**/tempdsa/
**/RemoteSystemsTempFiles/

# ----- IDE / Editor temporary files -----
*.swo
*.orig
*.rej
