build_and_program.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import tempfile
  2. import time
  3. import pickle
  4. import pandas as pd
  5. import threading
  6. import datetime
  7. from imc_utils.pps_e36311a import PPS_E36311A
  8. from imc_utils.smu_b2902a import SMU_B2902A
  9. from imc_utils.build_config.cortex_m33 import BuildConfigM33
  10. from imc_utils.build_config.test_env import TestEnv
  11. from imc_utils.serial_watch import SerialWatcher
  12. from imc_utils.oscilloscope_dsox1204a import DSOX1204A
  13. import imc_utils.serial_device
  14. WORKSPACE_ROOT = "/home/ybkim/workspace/imc/imc_freertos_app_m33"
  15. NVM_RESET_BIN = f"{WORKSPACE_ROOT}/imc/utils/nvm_reset.elf"
  16. OPENOCD_SCRIPT = f"{WORKSPACE_ROOT}/imc_freertos_app_m33.cfg"
  17. def main():
  18. volt = 3.3
  19. smu = SMU_B2902A(voltage=volt)
  20. benchmark = "vrefint_expr"
  21. config = BuildConfigM33()
  22. config.insert_compiler_checkpoints = False
  23. config.enable_extension = True
  24. config.use_checkpoint_pass_counter = False
  25. config.use_checkpoint_voltage_check = False
  26. config.bench_infinite_loop = True
  27. config.print_recovery_message = False
  28. config.split_loop = False
  29. config.enable_static_loop_pass_count = False
  30. config.enable_adaptive_loop_pass_count = False
  31. config.print_stats = False
  32. config.custom_unroll = False
  33. config.loop_opt_debug = False
  34. config.bench_name = benchmark
  35. smu.set_current_limit(0.1)
  36. smu.power_on()
  37. env = TestEnv(WORKSPACE_ROOT, NVM_RESET_BIN, OPENOCD_SCRIPT)
  38. with tempfile.TemporaryDirectory() as build_dir:
  39. binary = env.build_binary(config, build_dir)
  40. env.clear_nvm_and_load_binary(binary, resume=True)
  41. smu.power_off()
  42. if __name__ == "__main__":
  43. main()