|
| 1 | +# AGENT文档 |
| 2 | + |
| 3 | +## 用户指令 |
| 4 | + |
| 5 | +你的任务是将`/home/yqj/proj/arch/BonbonPIM2/rules/generate.bzl`中的`chisel_binary`,`chisel_library`和`chisel_test`,以及`@bazel-orfs//:verilog.bzl`中的`verilog_single_file_library`这些工具函数,还有关于Scala和Chisel依赖管理,封装成名为`rules_chisel`的BCR包,使得用户可以通过类似下面的方式方便地使用chisel: |
| 6 | +```starlark |
| 7 | +# 一个可能的使用样例,你可以优化 |
| 8 | +# User's MODULE.bazel |
| 9 | +bazel_dep(name = "rules_chisel", version = "0.1.0") |
| 10 | + |
| 11 | +# Optional: Configure Chisel/Scala versions |
| 12 | +chisel = use_extension("@rules_chisel//chisel:extensions.bzl", "chisel") |
| 13 | +chisel.toolchain( |
| 14 | + chisel_version = "7.2.0", # Default: latest stable |
| 15 | + scala_version = "2.13.17", # Default: 2.13.17 |
| 16 | +) |
| 17 | +use_repo(chisel, "chisel_maven") |
| 18 | +``` |
| 19 | + |
| 20 | +你需要仿照`/home/yqj/proj/buildtools/bazel_rules_verilator`,建立完善的BCR包工程,包括:简洁清晰的README、最小测试工程、GitHub CI以及BCR包相关元信息。 |
| 21 | + |
| 22 | +请你记得在下面的AGENT 日志用中文记录你的进展以便我审阅。 |
| 23 | + |
| 24 | +## AGENT 日志 |
| 25 | +- 已完成初始方案设计:以 `rules_chisel` BCR 包形式封装 `chisel_binary`、`chisel_library`、`chisel_test` 和 `verilog_single_file_library`。 |
| 26 | +- 结合你的建议(Scala 可由用户自行管理),当前实现将 **Scala toolchain 注册**保留给用户在 `MODULE.bazel` 自管;`rules_chisel` 负责提供 Chisel/ScalaTest Maven 依赖扩展。 |
| 27 | +- 已新增 `chisel/extensions.bzl`:提供 `chisel.toolchain(...)` 扩展,默认生成 `@chisel_maven`,并支持版本参数(`chisel_version`、`scala_version` 等)。 |
| 28 | +- 已新增 `chisel/defs.bzl` 与 `verilog/defs.bzl`:实现/导出所需规则,并给 `chisel_test` 内置 Verilator 运行时包装。 |
| 29 | +- 已建立最小测试工程 `tests/smoke`:覆盖 Chisel library/binary/test 与 Verilog 单文件拼接规则。 |
| 30 | +- 已补齐工程化内容:`MODULE.bazel`、`BUILD.bazel`、`README.md`、`.github/workflows/{ci,lint,bcr_helper}.yml`、基础 Bazel 配置文件。 |
| 31 | +- 下一步:执行本地 `bazel build //...` 与 smoke tests 自检,并根据结果修正细节。 |
| 32 | +- 自检完成: |
| 33 | + - `bazel build //...` 通过。 |
| 34 | + - `bazel test //tests/smoke:verilog_concat_test //tests/smoke:simple_adder_test --test_output=errors` 通过。 |
| 35 | +- 修正记录: |
| 36 | + - 处理了 `chisel_test` 包装规则命名、模板字符串转义、示例 Scala API 兼容性(改为更稳妥的 smoke binary 示例)等问题。 |
| 37 | + - 处理了 bzlmod 下 `maven_install` 生成仓库可见性问题,补充 `rules_shell` / `rules_java` 依赖。 |
| 38 | + - 将 `scalactic` 作为独立 Maven 工件移除,避免解析失败;`scalatest` 维持可用。 |
| 39 | +- 根据评审意见修正文档表达: |
| 40 | + - README 已明确 Scala toolchain 配置是 **必须由用户自行管理**(非 optional)。 |
| 41 | + - README 已增加 `chisel_test` 对 Verilator 依赖的说明(含 `bazel_dep(name = "verilator", ...)` 示例和注意事项)。 |
| 42 | +- 继续按评审建议修正文档:README 已要求用户在 `chisel.toolchain(...)` 中显式指定 `firtool_resolver_version`,并注明其与 `chisel_version` 强绑定,同时给出官方版本对照文档链接(https://www.chisel-lang.org/docs/appendix/versioning)。 |
| 43 | +- 同步更新仓库内 `MODULE.bazel` 示例,显式填写了 `chisel_version` / `scala_version` / `firtool_resolver_version`,避免隐式默认值造成误用。 |
| 44 | +- 按新要求继续修订 README:已单独补充 Verilator 依赖说明,并明确该依赖是 **仅 `chisel_test` 需要**(`chisel_binary`/`chisel_library`/`verilog_single_file_library` 不要求该依赖)。 |
0 commit comments