chisel - Chisel 开发者指南?

标签 chisel

基本上我想开始对 Chisel/FIRRTL 的内部进行黑客攻击。如果有人能指出我可以开始研究的地方,那将会有所帮助。

我已经阅读了源代码。到目前为止,我了解到 Chisel 已作为 Scala 库实现。每个 Chisel 对象都有一些发出 FIRRTL 的方法。特定的Scala程序运行后,会遍历对象并生成FIRRTL。

我想知道的是我的方向是否正确。我仍然没有弄清楚 Chisel 模块的 AST 形成和类型推断发生在哪里。最终我会到达那里,但如果有人可以向我总结我应该看的地方,那就太好了。

当然,这对 Chisel 开发人员来说要求太高了,但即使是一些基本信息也会有所帮助!

最佳答案

我想说有两个基本的起点。 Firrtl 是一个好的开始,因为它比 chisel 新,而且总体代码库也更新。 Firrtl 是一个解析器、转换器和发射器,这些都非常简单。转换很好地封装了大多数操作

Chisel 作为 EDSL 更加复杂和古怪。开始的地方是 chiselFrontend。 Builder 类是构建用于发出 chirrtl/high-firrtl 的内部图的魔法的根源。它使用动态变量来提供模块及其组件注册其创建以及与图的连接的位置。

希望对您有所帮助,祝您调查愉快

关于chisel - Chisel 开发者指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510182/

相关文章:

chisel - 定义 IO 时如何创建向量的向量

scala - 使用 MixedVec 在 chisel 中使用动态参数创建 IO 包

chisel - 为什么在 chiseltest 中的最后一个时钟周期,戳值发生变化,从而导致断言失败?

chisel - 如何将已弃用的低 Firrtl 转换转换为依赖项 API

chisel - 如何使用bundle/vec输入测试模块?

chisel - 如何初始化向量寄存器?

凿子3 : How to create a register without reset signal in RawModule?

chisel - 如何将零打包到凿子中的捆绑中

chisel - 如何在Chisel中使用参数化模块生成Verilog代码?

chisel - 如何从训练营示例导入 getVerilog() 函数?