RocketChip中的LazyModules

时间:2018-03-17 17:50:36

标签: riscv chisel

有一段时间,我一直试图了解LazyModule抽象类和diplomacy包。最简单的结论是LazyModule类的子对象只有在第一次访问它们时才会被实例化。 (如果我错了,请纠正我)

RocketTile.scala中,有多个示例LazyModule用法,例如: scala lazy val module = new LazyModuleImp(this) {... 如果未声明值lazy并且仍然为其分配LazyModule

,会发生什么情况

换句话说," laziness"创建的值来自它继承自LazyModule还是我们必须将lazy放在前面以获得预期的行为?

1 个答案:

答案 0 :(得分:1)

我无法详细解释,但将提供此解释:lazy表示Scala语言的延迟初始化。 lazy val module仅在需要时执行/评估。它可以很好地满足所提出的用例,因为只有在完成设计配置后才对硬件描述进行评估。

我前一段时间写了这篇博客。它可能会提供其他见解:

http://blog.edmondcote.com/2017/04/parameters-and-lazy-modules.html