0 简介
这篇文章讲chisel的参数化。chisel的参数化东西是比较多的,打算分两次讲,将其分为初级参数化手段以及高级参数化手段,一次初级参数化,然后两篇高级参数化。
初级参数化比较简单,但是作为后续内容的理解,还是需要讲一下。其中部分内容直接引用自《Digital Design With Chisel》。
初级参数化有两种手段:采用类构造函数的参数化,以及采用类模板的参数化。为什么叫初级参数化?因为其背后的思想和Verilog 使用 parameter传递参数
无区别,都是给每个module传入参数,再例化module即可。
原理是采用scala的构造函数。如下面的代码。scala的构造函数和类声明是一体的。比如声明一个参数n。
在例化的时候直接代入参数即可。
scala作为面向对象的语言,和c++一样有类模板。一些复杂的参数,比如类型都不确定可以直接使用类模板。
如上面所示采用类模板的参数化。模块存在两个参数,dt和n。其中n确定是int, 但是dt的类型需要参数化。这时候就需要用到类模板。
NocRouter是一个类模板,存在一个模板参数T。T可以是任意的data类型比如int, double什么的。[T
关注
打赏