Rocket - diplomacy - LazyModule的实例化】的更多相关文章

https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIntSource   以NullIntSource为例,将其作为顶层的LazyModule考虑: ​​     2. LazyModule实例化过程   1) 执行NullIntSource的构造方法,首先要逐层向上找到各个父类,然后逐层向下执行各个父类的构造方法:   a. 最开始执行LazyMod…
https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIntSource   以NullIntSource为例,将其作为顶层的LazyModule考虑: ​​     2. 实例化过程   1) 执行NullIntSource的构造方法,首先要逐层向上执行各个父类的构造方法:   a. 最开始执行LazyModule类的构造方法:用于构造LazyModul…
https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule LazyModule是一个泛化的模块概念,其中包含了代表模块与其他模块相连的节点(diplomacy node),也包含了模块的内部逻辑实现(lazy val module). 其定义为: --------------------------------------------------------…
https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModule内部的LazyModule,说明LazyModule是可以嵌套的.   在如下位置添加: ​​     2. nodes   LazyModule内部的Node.   相较之下,Node不能嵌套,内部没有其他Node.   在BaseNode中添加: ​​     3. parent   记录父…
https://mp.weixin.qq.com/s/j1M9ZOTtqvc1Fv9T6dy9kg   以tilelink下的Buffer为例,介绍LazyModule如何组织内部的节点和模块.   1. TileLink Channels   ​​ 参考TileLink总线的规范文档.   2. BufferParams   ​​   BufferParams包含了定义一个Buffer需要用到的3个参数: a. depth; b. flow; c. pipe;     3. TLBufferN…
https://mp.weixin.qq.com/s/gDbUto1qd7uWbpnxovr5pg   介绍LazyModuleImpLike类的实现.     1. wrapper   LazyModuleImpLike是LazyModule的内部实现,LazyModule则是LazyModuleImpLike的外部包裹(wrapper).   ​​   2. 悬边   既未与上游节点.亦未与下游节点相连的边: ​​   边包含Bundle的信息,实际相连时,是使用Bundle相连接.    …
https://mp.weixin.qq.com/s/eOgNLi_MJ8HJOpepGaaW8Q   简单介绍BaseNode的实现.   ​​   1. You cannot create a node outside a LazyModule   ​​   LazyModule.scope在LazyModule对象中定义: ​​   在LazyModule类中赋值: ​​   那么这里的“outside a LazyModule”中的LazyModule指的应该是LazyModule类,而…
https://mp.weixin.qq.com/s/X0s5CWN84GEiwpNR7tiRgA 基于AddressAdjuster介绍LazyModule的实现.   参考链接:https://github.com/freechipsproject/rocket-chip/blob/master/src/main/scala/tilelink/AddressAdjuster.scala   1. AddressAdjuster   ​​   地址适配器,根据chip_id & mask对地址…
https://mp.weixin.qq.com/s/zgeAI2n-2cHJi7-Ra5rYZA   介绍MixedNode的实现.     1. 类定义   ​​ ​​   2. inner/outer   inner side/outer side of the node. ​​   3. inward/outward   Inward/Outward node: ​​   4. resolveStar   抽象方法,实现如下逻辑:确定绑定中的星号(*)所代表的连接的个数. 根据Star所…
https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​   这里补上了省略掉的implicit parameter,如下: ​​     2. 实现   ValName的实现如下: ​​   ValNameImpl的实现如下: ​​     3. 提取   ValName和ValNameImpl实现相对独立,可以提取出来单独调试.   新建一个项目.因为…