Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Smarterasemi ProfilerNew to Visual Studio Code? Get it now.
Smarterasemi Profiler

Smarterasemi Profiler

smartera-test

|
4 installs
| (0) | Free
Import a run folder (with a .log file) and view NPU profiling: summary, NPU cards, timeline, and Perfetto trace. Includes integrated parser for log analysis.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Smarterasemi Profiler

Smarterasemi Profiler 是一个用于分析运行日志的 VS Code 扩展。导入包含性能日志的运行目录后,可以在 VS Code 中查看 NPU 汇总指标、各 NPU 状态、执行时间线、聚合数据表以及完整的 Perfetto Trace。

日志解析器已集成到扩展中,使用扩展时不需要安装 Python。

功能

  • 导入模拟器运行目录并自动解析性能日志
  • 展示 NPU 数量、执行周期、负载率和各类指令统计
  • 查看 NPU Cards、执行时间线和聚合数据表
  • 按需打开 Perfetto Trace Timeline,避免首次加载时占用过多资源
  • 使用 spike.log 为 Trace 事件补充 PC 信息
  • 通过调试信息 ELF 和 addr2line 从 PC 跳转到源码
  • 支持单 die 和多 die 运行数据
  • 生成可供其他工具使用的 JSON 结果

环境要求

使用扩展

  • VS Code 1.90 或更高版本
  • 仅在需要 PC 源码定位时,才需要 RISC-V addr2line 和带调试信息的 ELF

快速开始

  1. 准备一个包含模拟器性能日志的运行目录。
  2. 在 VS Code 命令面板中运行 Smarterasemi Profiler: Import Run Folder;也可以在 Explorer 中右键目录并选择该命令。
  3. 扩展解析完成后会打开 Dashboard。
  4. 点击 打开 Trace Timeline 查看完整 Perfetto 时间线。
  5. 如果 Trace 事件包含 PC,点击 PC 可配置 ELF 并跳转到对应源码。

输入目录

最小输入只需要一个性能日志:

run-folder/
└── test.log

需要 PC 标注和源码定位时,可以同时提供 spike.log:

run-folder/
├── test.log       # 模拟器性能日志
├── spike.log      # 可选,用于为 Trace 事件补充 PC
└── firmware.elf   # 可选,带调试信息的 RISC-V ELF

导入目录时,扩展会在目录顶层查找 .log 文件,并优先选择 test.log。如果存在多个其他 .log 文件,则按文件名排序后选择第一个,并在解析结果中给出警告。CLI 用户可以通过 --log 明确指定日志。

spike.log 必须与选中的性能日志位于同一目录,才能被扩展自动发现。ELF 可以位于其他位置,首次点击 PC 时再选择即可。

输出文件

默认情况下,扩展会在导入的运行目录中生成:

profiling-result.json
profiling-result.trace.json
  • profiling-result.json:Dashboard 使用的汇总指标、NPU 实例和事件数据。
  • profiling-result.trace.json:Perfetto Trace 数据。

将 smarterasemiProfiler.writeOutputToRunFolder 关闭后,这两个文件会写入系统临时目录。ELF 映射配置仍保存在运行目录中。

设置

设置 默认值 说明
smarterasemiProfiler.writeOutputToRunFolder true 是否将结果 JSON 写入导入的运行目录;关闭后写入系统临时目录。
smarterasemiProfiler.addr2linePath "" addr2line 可执行文件路径;留空时从常见的 RISC-V 工具链目录和 PATH 中自动查找。

PC 源码定位与 ELF 映射

源码定位需要以下数据:

  • spike.log 中存在可匹配的 PC
  • 每个 die 对应一个包含调试信息的 RISC-V ELF
  • 可用的 addr2line,建议使用与 ELF 匹配的 riscv64-unknown-elf-addr2line

点击 PC 且当前没有映射时,扩展会打开 ELF 映射编辑器。多 die 运行会在同一张表中显示所有 die,可以逐项选择、按路径模式填充或将一个 ELF 应用到全部 die。自动发现的候选 ELF 只会预填,保存前仍需确认。

导入运行目录后,也可以随时运行 Smarterasemi Profiler: Configure ELF Mapping 手动打开编辑器。

映射保存在运行目录下的 profiling-elf-config.json:

{
  "version": 1,
  "elf_config": [
    {
      "die_id": 0,
      "elf_path": "D:/firmware/case_die0.elf",
      "load_addr": "0x4000000000",
      "elf_image_base": "0x20000000"
    }
  ]
}
  • die_id 对应 Trace 事件的 pid / logical core。只有共享的单 die 回退配置可以省略该字段。
  • elf_path 是调试信息 ELF 的路径。
  • load_addr 用于覆盖运行日志中的加载地址,通常不需要填写。
  • elf_image_base 将原始二进制偏移 0 映射到 ELF VMA。完整的 objcopy -O binary 镜像通常可以从 ELF PT_LOAD 自动推导;经过 section 过滤的镜像可能需要显式设置。

PC、加载地址和 ELF 地址在内部均使用 BigInt 计算,在 JSON 边界使用十六进制字符串。

本地开发

项目包含扩展后端和 React Dashboard 两个构建部分。首次检出后需要分别安装依赖:

npm ci
npm --prefix ui ci
npm --prefix ui run build
npm run build

构建产物分别位于:

  • dist/:扩展主进程和解析 Worker
  • ui-dist/:Dashboard 前端

构建完成后,在 VS Code 中按 F5 启动 Extension Development Host,然后运行 Smarterasemi Profiler: Import Run Folder。

修改 Dashboard 后需要重新运行 npm --prefix ui run build;修改扩展后端时可以运行:

npm run watch

测试与检查

npm test
npm run typecheck

打包 VSIX:

npx @vscode/vsce package

命令行解析

解析器也可以脱离 VS Code 使用:

npm run parse -- --run-dir <run-folder>

可用参数:

参数 必填 说明
--run-dir <path> 是 运行目录。
--log <path> 否 明确指定性能日志。
--spike-log <path> 否 明确指定用于 PC 标注的 Spike 日志。
--out <path> 否 指定 profiling-result.json 输出路径。
--trace <path> 否 指定 Trace JSON 输出路径。

示例:

npm run parse -- \
  --run-dir ./trace/demo \
  --log ./trace/demo/test.log \
  --spike-log ./trace/demo/spike.log \
  --out ./out/result.json \
  --trace ./out/result.trace.json

常见问题

提示 no .log file found

确认导入的是运行目录本身,并且性能日志位于该目录顶层。扩展不会递归查找子目录中的日志。

PC 没有显示源码位置

依次确认:

  1. 性能日志旁存在正确的 spike.log。
  2. 已为对应 die 配置正确的 ELF。
  3. ELF 包含 DWARF 调试信息。
  4. smarterasemiProfiler.addr2linePath 指向与 ELF 架构匹配的 RISC-V addr2line。
  5. 日志中的加载地址和 elf_image_base 配置正确。

Dashboard 打不开或开发环境显示空白

先构建 React Dashboard,再重新启动 Extension Development Host:

npm --prefix ui run build
npm run build
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft