2 个版本
0.1.1 | 2022年7月30日 |
---|---|
0.1.0 | 2021年12月11日 |
#392 in 测试
120KB
3K SLoC
rstb
rstb - Rust 测试平台库旨在提供一个易于使用的 Rust 接口,用于实现 VPI 或 VHPI 接口的 HDL 模拟器。
它深受 Python 实现的强大且功能丰富的 cocotb 的启发。
为什么要这样做?事实证明 Rust 非常适合这项任务。它
- 可以轻松与 C
- 自 2019 年底以来,它支持零成本的 futures 与 async/await 语法,这使得编写测试平台变得非常“人体工程学”和易于推理,
- 拥有广泛且快速发展的开源软件包生态系统,
- 并且是一个编译速度快、无需运行时的高速编译语言。
与 Python 相比,Rust 中的测试更详细,编写它们要麻烦一些,因为静态类型和借用检查,但测试执行速度要快得多(以简单的 D-Flipflop 示例为例,速度提高了 80 倍)。
当前功能
- 通过可等待抽象对象(
Trigger
)调度模拟回调 - 运行时管理调度、分支、合并和取消并发任务
- 遍历模拟对象层次结构
- 获取和设置模拟对象值
- 强制/释放信号值
- 宏,用于轻松嵌入用户级测试
- 传递/失败测试的方法
- 合并多个任务
- 基于基础库的并发断言,包括信号历史查找
- 为 CI 提供JUnit XML 输出
- 从命令行启动测试的更便捷方式 -> 查看 rstbrun (GitHub)
功能路线图
- 添加对真实类型的支持。
- 向量切片和数组
- 文档
- 日志解决方案和一些花哨的输出格式化
- 在 VHPI 上工作(我无法访问的模拟器不支持它)
- 支持更多模拟器
- ...
不在路线图上
- Windows(尽管不应该是一个大问题)
- Mentor/Siemens 外语接口
Rstb 支持
- Questa/ModelSim
- Icarus Verilog
- Cadence 模拟器
创建 Rstb 测试
- 编写测试(请参阅此项目的示例)
- 将项目编译为与C兼容的动态库,通过在
crate-type = ["cdylib"]
添加到Cargo.toml
中,就像使用以下示例使用cargo build --release
进行编译一样。 - 使用您喜欢的模拟器运行(见
run_questa.sh/run_icarus.sh/run_cadence.sh
)
在gitpod上运行(使用Icarus Verilog):https://gitpod.io/#https://github.com/benbr8/rstb_examples
依赖项
~8.5MB
~156K SLoC