基本上,我想开始研究Chisel / FIRRTL的内部结构。如果有人可以将我指向我可以开始看的地方,那将会有所帮助。
我一直在阅读源代码。到目前为止,我知道Chisel已作为Scala库实现。每个Chisel对象都有一些发射FIRRTL的方法。运行特定的Scala程序后,将遍历对象并生成FIRRTL。
我想知道的是我是否一直朝着正确的方向看。我仍然没有弄清楚Chisel模块的AST构造和类型推断的发生位置。最终我会到达那里,但是如果有人可以向我总结我应该看的地方,那就太好了。
当然,这对Chisel开发人员来说是一个很大的问题,但是即使是一些基本信息也会有所帮助!
答案 0 :(得分:3)
我想说有两个基本的起点。 Firrtl是一个好的开始,因为它比凿子新,而且总体上代码库也新。 Firrtl是一个解析器,转换和发射器,它们非常简单。转换很好地封装了大多数操作
凿子作为EDSL更加复杂和古怪。开始的地方在chiselFrontend中。 Builder类是构建用于发出chirrtl / high-firrtl的内部图的魔力的根源。它使用动态变量为模块及其组件注册其创建和与图形的连接提供了一个地方。
希望可以帮助您入门,愉快地学习