https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ

 
介绍LazyModule的实现。
 
 
 
1. children
 
LazyModule内部的LazyModule,说明LazyModule是可以嵌套的。
 
在如下位置添加:
 
 
2. nodes
 
LazyModule内部的Node。
 
相较之下,Node不能嵌套,内部没有其他Node。
 
在BaseNode中添加:
 
 
3. parent
 
记录父LazyModule的信息。
 
 
4. inModuleBody
 
一些在Module Body中执行的函数。
 
 
5. GraphML
 
用于把LazyModule的结构信息,转化为GraphML的结构信息:
GraphML是yworks公司(http://www.yworks.com/xml/graphml)定义的一种图标记语言(Graph Markable Language),类似于HTML/XML等。
 
所以生成的GraphML文本,可以使用yworks公司的GraphML工具来可视化。如果所猜测不错的话,应该是如下图所示:
 
 
6. index
 
当前LazyModule实例的编号,代表该实例是被第几个创建的。
 
 
7. module
 
LazyModule的实现,多以lazy val的形式出现。这个lazy也是LazyModule中的Lazy的由来。
 
 
PS. 这种命名法不推荐。名称应当取决于其意义(见名知义),而不是来自于其实现。如果要改的话,不妨改成TileModule,体现其空心框架的意义,同时也与TileLink对应。或者叫DiplomaticModule,体现其协商参数的意义,同时与diplomacy的包名对应。
 
 
8. 总结
 
a. LazyModule是Module吗?
 
如果Module是指Chisel3和Verilog中的硬件模块,那么LazyModule不是。LazyModule的实现LazyModuleImpLike对应着硬件模块。
 
如果把LazyModule和LazyModuleImp作为一个整体看的话,又可以把他们理解为一个硬件模块:包含了输入输出,包含了内部的子模块(LazyModule)和子节点(Node)。
 
b. LazyModule的作用
 
如同一块空心砖(tile),撑起一个框架结构,以供填充内部具体实现。
 

Rocket - diplomacy - LazyModule的更多相关文章

  1. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  2. Rocket - diplomacy - LazyModule的实例化(补)

    https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  3. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  4. Rocket - diplomacy - LazyModule实例:Buffer

    https://mp.weixin.qq.com/s/j1M9ZOTtqvc1Fv9T6dy9kg   以tilelink下的Buffer为例,介绍LazyModule如何组织内部的节点和模块.   ...

  5. Rocket - diplomacy - AddressAdjuster

    https://mp.weixin.qq.com/s/X0s5CWN84GEiwpNR7tiRgA 基于AddressAdjuster介绍LazyModule的实现.   参考链接:https://g ...

  6. Rocket - diplomacy - LazyModuleImpLike

    https://mp.weixin.qq.com/s/gDbUto1qd7uWbpnxovr5pg   介绍LazyModuleImpLike类的实现.     1. wrapper   LazyMo ...

  7. Rocket - diplomacy - ValName

    https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​ ...

  8. Rocket - diplomacy - BaseNode

    https://mp.weixin.qq.com/s/eOgNLi_MJ8HJOpepGaaW8Q   简单介绍BaseNode的实现.   ​​   1. You cannot create a n ...

  9. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

随机推荐

  1. 201771010113 李婷华 《面向java对象程序设计(Java)》第四章学习总结

    一. 理论知识部分 第四章 对象与类 本章主要讲述面向对象程序设计.如何创建标准Java类库中的类对象.如何编写自己的类. 1.面向对象程序设计的几个主要概念: 抽象数据类型.类和对象.封装.类层次( ...

  2. python地图投影转换

    一.投影包osr与proj4的使用 1.osr投影转换示例 from osgeo import osr,ogr#定义投影#wgs84source=osr.SpatialReference()sourc ...

  3. Java for 嵌套循环

    嵌套循环 可以是for循环 while循环也可以是do-while循环  这三着进行组合嵌套 循环思路:先执行外层循环,内层循环作为外层循环的循环体,直到内层循环执行完毕,再次计算外层循环,根据条件决 ...

  4. CF-292D Connected Components 并查集 好题

    D. Connected Components 题意 现在有n个点,m条编号为1-m的无向边,给出k个询问,每个询问给出区间[l,r],让输出删除标号为l-r的边后还有几个连通块? 思路 去除编号为[ ...

  5. HDU 3874 Necklace 区间查询的离线操作

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=3874 对需要查询的区间按右端点排序,然后从左到右依次加入序列中的元素,同时更新,更新的方法是,把上一次出 ...

  6. [hdu4576]dp

    题意:1-n围成1圈,从1出发,第i次走a[i]步,问走m次后出现在[L,R]的概率L<=R. 思路:明显的DP,把编号变成0~n-1,令dp[i][j]表示走完i步之前停在了j上,则有dp[i ...

  7. Spring Junit--第一个测试

    配置成功后,需要启动测试用例! package com.cml.controller; import javax.annotation.Resource; import org.junit.Test; ...

  8. mysql安装之后需要调的参数

    http://www.mysqlperformanceblog.com/2014/01/28/10-mysql-settings-to-tune-after-installation/ 翻译加深理解. ...

  9. react-debug

    最近练习react的时候遇到一些问题: 在redux模式下,同一个api依据参数获取不同data的时候,返回的data相同 原因:多次调用该接口时,action的type相同,导致对应于该接口的每个r ...

  10. Node.js服务器创建和使用

    1.使用zlib模块对服务器端响应压缩 //1.1引入zlib模块 const zlib=require('zlib'); //1.2 设置内容的压缩形式 'Content-Encoding': 'g ...