2 分•作者: charlesfrisbee•20 天前
我主要想快速原型化硬件想法,尽量缩短从编写电路到看到它运行之间的时间。市面上已经有基于通用语言的成熟的嵌入式硬件描述语言(HDL),例如 Chisel (Scala)、Amaranth (Python)、SpinalHDL。它们都有自己的模拟器,但这些模拟器运行在 JVM 或 Python 工具链中。我想要一个可以直接在浏览器中打开并开始构建的东西,无需任何安装。如果有人熟悉 Steam 上的游戏 Turing Complete,它就是我灵感的很大一部分来源。我只是厌倦了手动连接门电路。
Simten 是一种纯 TypeScript 编写的硬件描述语言。电路是一个类型化的值,你可以逐周期地在 Node.js 或浏览器中进行模拟,并提供一个交互式视图,你可以深入其中并在周期之间来回切换。无需安装任何东西即可运行,并且电路可以作为实时组件嵌入到网页中。当你想要进一步开发设计时,它仍然会为现有的基本模块(非常早期、扁平化的模块)导出 Verilog。另外,由于它是 TS,你可以做一些很酷的事情,比如使用 npm 中的现有库并在编译时将它们集成到模拟中,例如加载数据,将其烘焙到 ROM 中,然后运行它。主页顶部的 figlet 示例展示了这一点。
还有一个 MCP,允许你使用 Claude 进行构建并将本地内容推送到浏览器(我知道大多数人可能不想学习它的语法)。
就我目前用它所做的而言:
* 门级 snake/pong(实际上比听起来要难!)
* 一个 rv32i (risc-v) CPU,能够运行使用 GCC/rustc 编译的 C/C++/Rust
* 通过开源 FPGA 工具链运行输出的 verilog(以及一些特定板的附加组件),例如 Verilog -> Yosys -> nextPNR -> 在我的 ULX3S 上刷写并运行
我很想听听你的想法,以及人们是否会真正使用它。我曾想过它的交互式方面可能在计算机科学课程中很有用。这样学生就可以看到流水线冒险逐周期地发生,而不是教科书中的静态示例。
* [https://simten.dev/circuit](https://simten.dev/circuit) (用于编写/模拟电路的 Playground)
* [https://simten.dev/cpu/rv32i](https://simten.dev/cpu/rv32i) (可以单步执行的 RISC-V CPU)
* [https://github.com/simtenHQ/simten](https://github.com/simtenHQ/simten) — 仓库