从命令行进行硬件仿真调试 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文
Hardware Emulation(硬件仿真)构建完成(包括 AI 引擎 graph、PL 区域内核以及 PS 应用)后,您即可使用以下步骤来调试系统设计。此进程利用 Vitis IDE 从命令行启动调试环境。
  • 使用 launch_hw_emu.sh 脚本启动 QEMU 仿真器环境,该脚本是在 --package 进程期间生成的。
  • 在独立调试模式下使用 vitis -debug 选项启动 Vitis IDE。
  • 配置调试环境以连接至系统内的 PS 和 AI 引擎域。
  1. 对于 AI 引擎平台,系统仿真所需的文件由 --package 命令来定义,包括仿真脚本。要启动仿真环境,请从构建目录中使用以下命令:
    ./emulation/launch_hw_emu.sh -pid-file emulation.pid -no-reboot \
    -add-env ENABLE_RDWR_DEBUG=true -add-env RDWR_DEBUG_PORT=10100 -forward-port 1440 1534

    其中:

    • ./emulation 是封装进程的输出目录,如 封装 中所述,其中还包含 launch_hw_emu.sh 脚本。
    • -add-env RDWR_DEBUG_PORT=${aie_mem_sock_port} 定义了用于与 AI 引擎域进行通信的端口。在前述示例中,此端口为 10100。
    • -forward-port ${linux_tcf_agent_port} 1534 定义了 Linux TCF 代理的端口。在前述示例中,此端口默认为 1440。
    提示: 任何空闲端口均可用于以上命令模板中的 aie_mem_sock_portlinux_tcf_agent_port。但这些端口都是必需端口,用于分别启用 AI 引擎应用和 Linux 应用调试。

    此命令可启动仿真器,然后等待至 QEMU 内 Linux 完成启动为止。QEMU shell 会显示 QEMU 启动和 Linux 启动进程的转录文本。当显示 qemu% 提示时,即表示此进程已完成。至此您已准备就绪,可以继续下一步。

  2. 在第二个终端窗口中,使用以下命令启动 XRT 服务器应用:
    xrt_server -I300 -S -s tcp::4352

    其中:

    • -I300 定义了空闲超时,如果经此超时后无响应,服务器就会退出。
    • -S 以 JSON 格式指定打印服务器属性为stdout
    • -s tcp::${xrt_server_port} 定义了监听协议和端口的代理。在前述示例中,此端口为 4352,但可采用任意空闲端口。
  3. 创建名为 aie_app_debug.tcl 的 Tcl 脚本以设置 AI 引擎调试环境:
    #Set up the required environment
    # The aie_mem_socket and xrt_server ports must match what was specified in earlier commands. 
    set aie_work_dir "<AIE_Project>/Work"
    set aie_mem_sock_port "10100"
    set xrt_server_port "4352"
    set app_name "aie_graph"
    
    #Echo the environment setup
    puts "Vitis install: $XILINX_VITIS"
    puts "Application: $app_name, Work Directory: $aie_work_dir"
    puts "XRT Server Port: $xrt_server_port, AIE Port: $aie_mem_sock_port"
    
    #Set up AIE Debug environment
    set source_tcl_cmd "source $XILINX_VITIS/scripts/vitis/util/aie_debug_init.tcl"
    puts "$source_tcl_cmd"
    eval $source_tcl_cmd
    
    ##run the command to connect and display debug targets
    set aie_debug_cmd "init_aie_debug -work-dir $aie_work_dir -url tcp::$xrt_server_port \
    -memsock-url localhost:$aie_mem_sock_port -sim-type memserver -name $app_name -full-program"
    puts "$aie_debug_cmd"
    eval $aie_debug_cmd
    注释: 此脚本需设置$XILINX_VITIS环境变量。
  4. 当 QEMU 环境和xrt_server均正常启动并运行后,您可在第三个终端窗口中以独立调试模式启动 Vitis IDE
    vitis -debug -flow embedded_accel -target hw_emu -exe ./ps_app \
    -program-args ${xcl_bin_dir}/binary_container_1.xclbin -port 1440

    其中:

    vitis -debug
    以独立调试模式启动 Vitis IDE。
    -flow embedded_accel
    指定嵌入式处理器应用加速流程。
    -target hw_emu
    指示要调试的目标构建。
    -exe ./ps_app
    指示要运行和调试的 PS 应用。
    -program-args ${xcl_bin_dir}/binary_container_1.xclbin
    表示要作为实参加载到可执行文件中的 XCLBIN 文件的位置。
    -port 1440
    指定 ${linux_tcf_agent_port},如前所述。

    这样即可打开 Vitis IDE 并显示Debug(调试)透视图,同时加载 PS 应用的调试配置。



  5. Vitis IDE 的Debug透视图中,创建新的目标连接,类型为Hardware Server(硬件服务器),名为 aie_xrt_server。指定 localhost 作为主机,并指定 xrt_server_port 作为端口(前述示例中为 4352)。
  6. 创建新的Debug(调试)配置,类型为Single Application Debug(单应用调试),如下所示。

    Debug Type(调试类型)
    Attach to running target
    Connection(连接)
    aie_xrt_server
    Execute Script(执行脚本)
    指定到步骤 4 中定义的 aie_app_debug.tcl 的路径。
  7. Debug以继续。

    这样即可连接到 QEMU 中的 PS 应用及其相应的核上运行的 AI 引擎 graph。此应用会在所有 ELF 文件的 main() 函数处自动中断。



此时,您即可在仿真环境中执行所有调试活动,如单步进入、单步跳过、查看变量或植入断点。如需了解更多信息,请参阅 使用调试环境