# xsim_run.tcl - Vivado xsim compilation and simulation script for poly_arith_sync # # Compiles poly_arith_sync RTL + dependencies + testbench and runs simulation. # Run from the project root: ~/Dev/mlkem/ # # Prerequisites: # source /opt/Xilinx/Vivado/2019.2/settings64.sh # # Usage examples: # # Step-by-step (from Tcl): # xsim -runall xsim_run.tcl # # # Or via Vivado batch mode: # vivado -mode batch -source xsim_run.tcl # # # Or manually: # xvlog -sv sync_rtl/common/pipeline_reg.v sync_rtl/poly_arith/poly_arith_sync.v sync_rtl/poly_arith/TB/tb_poly_arith_xsim.v # xelab tb_poly_arith_xsim -s tb_poly_arith_xsim # xsim tb_poly_arith_xsim -R # ================================================================ # Configuration # ================================================================ set RTL_DIR sync_rtl set DUT_DIR sync_rtl/poly_arith set TB_DIR sync_rtl/poly_arith/TB # ================================================================ # Step 1: Compile all source files (xvlog) # ================================================================ puts "=== Compiling RTL sources for poly_arith_sync ===" # Common dependency (pipeline register) xvlog -sv -include_dirs . ${RTL_DIR}/common/pipeline_reg.v # DUT (poly_arith_sync) — uses `include "sync_rtl/common/defines.vh" xvlog -sv -include_dirs . ${DUT_DIR}/poly_arith_sync.v # ================================================================ # Step 2: Compile testbench # ================================================================ puts "=== Compiling testbench ===" xvlog -sv ${TB_DIR}/tb_poly_arith_xsim.v # ================================================================ # Step 3: Elaborate snapshot (xelab) # ================================================================ puts "=== Elaborating snapshot ===" xelab tb_poly_arith_xsim -s tb_poly_arith_xsim # ================================================================ # Step 4: Run simulation # ================================================================ puts "=== Running poly_arith_sync XSIM test ===" xsim tb_poly_arith_xsim -R puts "" puts "=== Simulation complete ==="