From 17c8f2d68b50bdfed78d279f03de7bee09269549 Mon Sep 17 00:00:00 2001 From: Jeremy Shen Date: Thu, 11 Jun 2026 15:33:54 +0800 Subject: [PATCH] refactor: replace all config.vitis_path with config.xilinx_path across codebase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affected files: - flash_programmer.py (2 call sites) — get_program_flash_path - bitstream_programmer.py (3 get_xsct_path + 1 get_vivado_path call sites) Also: removed duplicate _get_vivado_path() (now uses shared one from vitis_checker) Also: removed unused shutil import - reboot_manager.py (1 call site) — get_xsct_path All now use getattr(config, 'xilinx_path', '') consistently. The only remaining 'config.vitis_path' reference is in vitis_checker.py's check_vitis() itself (safe legacy fallback for old configs). --- src/bitstream_programmer.py | 45 +++++-------------------------------- src/flash_programmer.py | 6 ++--- src/reboot_manager.py | 3 +-- 3 files changed, 9 insertions(+), 45 deletions(-) diff --git a/src/bitstream_programmer.py b/src/bitstream_programmer.py index 04d7bbc..b672a09 100644 --- a/src/bitstream_programmer.py +++ b/src/bitstream_programmer.py @@ -11,14 +11,13 @@ Compatible with Xilinx 2018.3 — 2023.2. from __future__ import annotations import os -import shutil import subprocess from dataclasses import dataclass from pathlib import Path from typing import Callable from config_manager import Config -from vitis_checker import get_xsct_path +from vitis_checker import get_xsct_path, get_vivado_path # ── Types ─────────────────────────────────────────────────────────── @@ -38,35 +37,6 @@ ProgressCallback = Callable[[str, str], None] | None # ── Helpers ───────────────────────────────────────────────────────── -def _get_vivado_path(vitis_path: str) -> str | None: - """Find the Vivado executable. - - Uses shutil.which() for PATH resolution, then common install paths. - - Args: - vitis_path: Optional Vitis installation directory. - - Returns: - Path to vivado executable, or None. - """ - found = shutil.which("vivado") - if found: - return found - if vitis_path: - candidate = Path(vitis_path) / "bin" / "vivado" - if candidate.is_file(): - return str(candidate) - common = [ - "/data/xilinx/Vivado/2023.2/bin/vivado", - "/opt/xilinx/bin/vivado", - os.path.expanduser("~/Xilinx/Vivado/2023.2/bin/vivado"), - ] - for p in common: - if os.path.isfile(p): - return p - return None - - def _find_ps7_init_tcl(config: Config) -> str: """Find the ps7_init.tcl file for PS initialization. @@ -167,16 +137,15 @@ def program_bitstream( # Try xsct first (preferred) xsct = get_xsct_path( - vitis_path=config.vitis_path if hasattr(config, 'vitis_path') else "", - xilinx_root=config.xilinx_path if hasattr(config, 'xilinx_path') else "", + xilinx_root=getattr(config, "xilinx_path", ""), ) if xsct: timeout = config.step_timeouts.get("bitstream", 60) return _program_with_xsct(xsct, bit_path, callback, ps7_tcl, timeout) # Fallback to Vivado - vivado = _get_vivado_path( - config.vitis_path if hasattr(config, 'vitis_path') else "" + vivado = get_vivado_path( + xilinx_root=getattr(config, "xilinx_path", ""), ) if vivado: return _program_with_vivado(vivado, bit_path, callback) @@ -364,8 +333,7 @@ def run_elf( callback("start", f"Running ELF: {elf_path.name}...") xsct = get_xsct_path( - vitis_path=config.vitis_path if hasattr(config, 'vitis_path') else "", - xilinx_root=config.xilinx_path if hasattr(config, 'xilinx_path') else "", + xilinx_root=getattr(config, "xilinx_path", ""), ) if not xsct: return BitstreamResult( @@ -579,8 +547,7 @@ def full_bitstream_program( message=f"FSBL not found: {fsbl_path or '(not configured)'}")] xsct = get_xsct_path( - vitis_path=config.vitis_path if hasattr(config, 'vitis_path') else "", - xilinx_root=config.xilinx_path if hasattr(config, 'xilinx_path') else "", + xilinx_root=getattr(config, "xilinx_path", ""), ) if not xsct: return [BitstreamResult(step="bitstream", success=False, diff --git a/src/flash_programmer.py b/src/flash_programmer.py index 455f304..8740f10 100644 --- a/src/flash_programmer.py +++ b/src/flash_programmer.py @@ -113,8 +113,7 @@ def wipe_flash( FlashResult with status. """ flash_tool = get_program_flash_path( - vitis_path=config.vitis_path if hasattr(config, 'vitis_path') else "", - xilinx_root=config.xilinx_path if hasattr(config, 'xilinx_path') else "", + xilinx_root=getattr(config, "xilinx_path", ""), ) if not flash_tool: return FlashResult( @@ -229,8 +228,7 @@ def program_flash_bin( ) flash_tool = get_program_flash_path( - vitis_path=config.vitis_path if hasattr(config, 'vitis_path') else "", - xilinx_root=config.xilinx_path if hasattr(config, 'xilinx_path') else "", + xilinx_root=getattr(config, "xilinx_path", ""), ) if not flash_tool: return FlashResult( diff --git a/src/reboot_manager.py b/src/reboot_manager.py index 3259fae..d30e3a2 100644 --- a/src/reboot_manager.py +++ b/src/reboot_manager.py @@ -186,8 +186,7 @@ def reboot_via_jtag( from vitis_checker import get_xsct_path xsct = get_xsct_path( - vitis_path=config.vitis_path if hasattr(config, 'vitis_path') else "", - xilinx_root=config.xilinx_path if hasattr(config, 'xilinx_path') else "", + xilinx_root=getattr(config, "xilinx_path", ""), ) if not xsct: return RebootResult(