Chisel 的开发人员指南?
Developer's guide for Chisel?
基本上我想开始破解 Chisel/FIRRTL 的内部结构。如果有人能指出我可以开始查看的位置,那将会有所帮助。
我一直在通读源代码。到目前为止,我了解到 Chisel 已作为 Scala 库实现。每个 Chisel 对象都有一些方法来发出 FIRRTL。一个特定的Scala程序在运行之后,遍历对象,生成FIRRTL。
我想知道我是否一直在寻找正确的方向。我仍然没有想出 Chisel 模块的 AST 结构和类型推断发生在哪里。最终我会到达那里,但如果有人能向我总结我应该看的地方,那就太好了。
当然,这对 Chisel 开发人员来说太过分了,但即使是一些基本信息也会有所帮助!
我想说有两个基本的起点。
Firrtl 是一个好的开始,因为它比 chisel 更新,而且整体代码库更新。 Firrtl 是一个解析器、转换和发射器,这些都非常简单。转换很好地封装了大多数操作
作为 EDSL 的凿子要复杂和古怪得多。开始的地方是 chiselFrontend。 Builder class 是构造用于发出 chirrtl/high-firrtl 的内部图的神奇根源。它使用一个动态变量来提供一个地方,模块及其组件将它们的创建和连接注册到图形中。
希望对您有所帮助,侦查愉快
基本上我想开始破解 Chisel/FIRRTL 的内部结构。如果有人能指出我可以开始查看的位置,那将会有所帮助。
我一直在通读源代码。到目前为止,我了解到 Chisel 已作为 Scala 库实现。每个 Chisel 对象都有一些方法来发出 FIRRTL。一个特定的Scala程序在运行之后,遍历对象,生成FIRRTL。
我想知道我是否一直在寻找正确的方向。我仍然没有想出 Chisel 模块的 AST 结构和类型推断发生在哪里。最终我会到达那里,但如果有人能向我总结我应该看的地方,那就太好了。
当然,这对 Chisel 开发人员来说太过分了,但即使是一些基本信息也会有所帮助!
我想说有两个基本的起点。 Firrtl 是一个好的开始,因为它比 chisel 更新,而且整体代码库更新。 Firrtl 是一个解析器、转换和发射器,这些都非常简单。转换很好地封装了大多数操作
作为 EDSL 的凿子要复杂和古怪得多。开始的地方是 chiselFrontend。 Builder class 是构造用于发出 chirrtl/high-firrtl 的内部图的神奇根源。它使用一个动态变量来提供一个地方,模块及其组件将它们的创建和连接注册到图形中。
希望对您有所帮助,侦查愉快