Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>BUAA CO ToolkitNew to Visual Studio Code? Get it now.
BUAA CO Toolkit

BUAA CO Toolkit

stone926

|
41 installs
| (0) | Free
计算机组成实验 VSCode 工具箱:支持内置 MIPS 汇编、Icarus Verilog 与 Logisim
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

BUAA CO 工具箱

面向北航计算机组成(CO)实验的 VS Code 插件。它把 MIPS 汇编、Verilog、Logisim 和 P3–P7 CPU 对拍测试整合到同一个工作流中:少装工具、少配参数,先让项目跑起来。

在 VS Code Marketplace 安装 · GitHub 仓库 · 发布版本与 VSIX

快速开始

1. 安装并确认运行环境

可在扩展市场搜索 BUAA CO Toolkit 安装;离线安装时,从发布页下载与本机匹配的 VSIX,再在扩展视图的“从 VSIX 安装…”中打开它。

插件需要 VS Code 1.90 或更高版本,并在以下本地扩展宿主上发布:

本地 VS Code 宿主 支持情况 手动安装的 VSIX
Windows 10/11 x64 支持 win32-x64
macOS 14+,Apple Silicon 支持 darwin-arm64
macOS 14+,Intel 支持 darwin-x64
Linux x64(Ubuntu 22.04 / 24.04) 支持 linux-x64
Linux ARM64(Ubuntu 22.04 / 24.04) 支持 linux-arm64
Windows ARM64、Linux ARM32、Alpine / musl 不支持 —

每个平台包只携带对应平台和架构的 Icarus 运行时。Linux 使用系统标准 glibc、libstdc++ 和 libgcc;其他 glibc 发行版不做白名单拦截,但尚未承诺兼容。WSL、Remote SSH 和 Dev Containers 的完整工作流尚未验收。

2. 打开项目并选择 Profile

新项目:先在 VS Code 中打开一个文件夹或工作区,然后在命令面板(Ctrl+Shift+P)运行 CO: 项目向导。向导可以创建课程目录、模板文件,并写入 Profile。

已有项目:运行 CO: 选择项目 Profile,选择 P0–P7;也可以把 co.project.profile 设为 auto,插件会根据项目文件、顶层接口和 trace 格式推断。不能唯一推断时,插件会提示你选择。

3. 只配置当前工作流需要的外部工具

打开 VS Code 设置,搜索 co.toolchain。P1 和 P4–P7 的常规 Verilog 检查、手动仿真和自动测试都使用插件随包提供的 Icarus,无需安装 ISE、Homebrew 或 MARS。

课程阶段或功能 需要配置 对应设置
P0 / P3 Logisim Logisim JAR;Java 不在 PATH 时再指定 Java co.toolchain.logisim、co.toolchain.java
P2 ASM 运行 MARS JAR;Java 不在 PATH 时再指定 Java co.toolchain.mars、co.toolchain.java
P1、P4–P7 标准 Verilog 工作流 无 —
P5–P7 流水线冲突分析(可选) 课程 hazard_analysis 目录;必要时指定 Python co.toolchain.hazardCalculator、co.toolchain.python
ISim GUI 波形 / 集成 VCD(可选) Windows x64 上的 ISE 安装目录 co.toolchain.isePath

工具路径是本机配置;不要把个人绝对路径提交到项目的 .vscode/settings.json。配置后运行 CO: 检查工具链,它只检查当前 Profile 和操作实际需要的工具。

4. 开始使用

从左侧活动栏打开 BUAA CO Toolkit,在“操作”区按需要执行:

目标 最快入口
P3–P7 测试 CPU 启动持续测试;首个失败或错误会停止,并保留可复现用例
停止或查看测试结果 停止持续测试、测试历史 / 失败用例
P2 运行 MIPS 程序 在 MIPS 文件的“操作”中运行 MARS
P1 / P4–P7 检查或运行 Verilog 保存 .v 文件触发默认检查;在编辑器右键菜单或侧边栏运行仿真
P0 / P3 打开电路、生成或注入 ROM 打开 .circ 文件后使用“操作”区
VCD、Hazard、日志转 CSV 等低频功能 CO: 更多工具

P3 自动测试需要 Logisim 和 Java;P4–P7 自动测试不需要 MARS 或 ISE。

插件如何工作

插件把“编辑体验”和“课程工具链”分开处理。MIPS、Verilog 与 Logisim 文件先获得高亮、诊断、导航和格式化;涉及课程执行时,再根据 Profile 选择对应的运行流程。

P3–P7 的自动测试链路如下:

内置测试生成器
  → 内置 TypeScript 汇编器
  → 内置课程 oracle
  → Logisim(P3)或随包 Icarus(P4–P7)运行你的 CPU
  → 比较课程可观察写事件,生成报告和可复现用例

默认引擎边界如下:

场景 默认实现
P3–P7 自动测试、ROM/机器码准备、课程文本段导出 内置 TypeScript 汇编器和课程执行器
P2,以及普通 MIPS 运行、标准输入和终端交互 MARS + Java
P3 电路运行与对拍 Logisim + Java
P1、P4–P7 Verilog 检查与仿真 随包 Icarus + VVP
ISim GUI 波形与集成 VCD 仅 Windows x64 的可选 ISE 功能

内置汇编器面向 P3–P7 课程硬件,支持课程指令集、常用伪指令、.text、.ktext、.data、宏、.eqv 和有界 .include。它不是完整的 MARS 替代品:不提供 P2 syscall 控制台、标准输入或交互终端,也不承诺支持所有 MARS 扩展。CPU 测试中,数据存储器按课程约定从全零开始,因此含非零 .data 初值的用例会被拒绝;请在程序运行时用 store 初始化数据。

“启动持续测试”固定采用当前 Profile 的强测试策略,而不是让用户选择生成器、批量大小或对拍后端。co.test.instructions 是唯一的测试侧重点设置:留空会覆盖该阶段完整课程指令集,填写真实指令可让生成器优先覆盖它们。P7 还会覆盖 CP0、异常、外部中断和 Timer;对拍关注课程定义的可观察行为,不把某一种流水线周期数当作正确性的唯一标准。

功能一览

范围 提供的能力
MIPS(.asm / .s / .mips) 高亮、补全、悬浮、定义/引用跳转、诊断、格式化、重命名、MARS trace 解析与对比
Verilog(.v / .vh) 高亮、模块/信号大纲、跨文件导航、课程 Lint、隐式连线/位宽/连接诊断、格式化、信号连线视图、随包 Icarus 检查与仿真
SystemVerilog(.sv / .svh) 仅词法高亮;不进入 Verilog LSP、编译器检查或仿真
Logisim(.circ) 电路与组件大纲、标签诊断、打开电路、ROM 生成/注入、日志转 CSV,以及 P3 trace 对拍
P5–P7 可选的流水线冲突分析与报告

常用设置与生成文件

除工具路径外,大多数项目只需要下面几项设置:

设置 用途
co.project.profile 当前课程阶段;默认 auto
co.test.instructions 自动测试要重点覆盖的真实指令;留空使用默认全集
co.verilog.syntax.external.mode 内置 Icarus 检查的触发时机;默认保存时检查
co.project.topModule、co.project.testbench、co.project.machineCode、co.project.simTime 非标准工程或手动仿真的高级覆盖项;自动测试不读取这些手动参数

插件会在工作区的 .co/ 下保存生成物:

位置 内容
.co/cases/<caseId>/ 测试程序、机器码、报告、trace 和复现元数据;失败与错误用例会保留
.co/out/ 手动运行或批量运行的输出与摘要
.co/isim/、.co/logisim/、.co/hazard/ 仿真、电路与冲突分析的工作文件

这些文件是本地工作产物,不是学生源代码;建议在自己的课程项目中把 .co/ 加入 .gitignore。

兼容性与边界

  • Icarus 是常规 Verilog 后端。co.toolchain.isePath 不会切换保存时检查、手动仿真或自动测试到 ISE。
  • Linux 内置 Icarus 保留文本 trace、$readmemh 和基础 VCD,不提供 FST / LXT / LXT2 压缩波形或 readline 行编辑。ISE / ISim GUI 功能仍仅支持 Windows。
  • 插件不覆盖 Xilinx vendor IP、综合、实现、时序仿真或 bitstream 工作流;这些请在相应 Xilinx 工具中完成。
  • P3 trace 对拍要求课程标准的单个 32 位 ROM 和 trace 接口;无法可靠识别时,插件会给出缺失或冲突端口的诊断。
  • 随机和定向测试能有效发现很多问题,但“通过”不等于所有场景都正确;课程最终结果仍以课程测评环境为准。

开发与维护

维护者可从仓库根目录运行:

npm ci
npm run compile
npm test
npm run check:generated
npm run package:vsix

npm run package:vsix 默认生成 Windows x64 包。其他平台在对应系统上运行 node scripts/package-vsix.mjs --target <target> --out dist/<name>.vsix;支持上表的五个 target,统一按目标裁剪运行时,macOS / Linux 在原生系统打包以保留可执行权限。

Extension platforms CI 在 PR、主分支提交和手动触发时验证五个平台的最终 VSIX:检查包内容与 Icarus,再启动真实 VS Code 稳定版,验证扩展激活、LSP 保存诊断与修复、仿真命令和一个固定 P4 课程用例的 Worker / 对拍报告。发布复用同一验证步骤;全量单元测试仍由原有 CI 执行。维护者无需准备其他系统的电脑。

本地可在对应平台解包 VSIX 后运行 npm run verify:extension-host -- <解包后的 extension 目录>;无显示器的 Linux 使用 xvfb-run -a npm run verify:extension-host -- <目录>。VS Code 自动下载至 .vscode-test/,测试工作区和日志保留在 .vscode-test/extension-host-smoke/;排查指定版本时可设置 CO_VSCODE_VERSION。

Linux 二进制由手动触发的 Build bundled Linux Icarus workflow 在两个原生架构的 Ubuntu 22.04 容器中生成;下载 tar artifact 后,将完整安装目录放入 vendor/iverilog/<target>/ 并提交。构建配方 vendor/iverilog/build-linux.sh 随 VSIX 分发;日常发布使用仓库内固定产物,无需重新编译 Icarus。

发布使用 npm run publish -- patch(也可替换为 minor、major 或显式版本号),release matrix 从五个平台的最终 VSIX 解包运行 smoke。完整架构、模块边界和验证说明见架构索引;变更记录见 CHANGELOG。随包 Icarus 的许可证、校验信息和对应源码说明见 Windows x64、macOS Apple Silicon、macOS Intel、Linux x64 和 Linux ARM64。

遇到问题或希望补充课程场景,请到 GitHub Issues 反馈。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft