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. 聚合类型与POD类型

    Lippman在<深度探索C++对象模型>的前言中写道: I have heard a number of people over the years voice opinions sim ...

  2. LeetCode--Array--Two sum (Easy)

    1.Two sum (Easy)# Given an array of integers, return indices of the two numbers such that they add u ...

  3. Java 设置PDF中的文本旋转、倾斜

    本文介绍通过Java程序在PDF文档中设置文本旋转.倾斜的方法.设置文本倾斜时,通过定义方法TransformText(page);并设置page.getCanvas().skewTransform( ...

  4. 【hdu1024】简单dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1024 最大m字段和,题目就不多说了,经典dp 这题坑爹...首先不说明m的范围(n<=1000000),还 ...

  5. 安卓APP承载网页(WebView)

    安卓APP自身如何打开网页,如何制作一个简单的浏览器,WebView在其中将是一个重要的角色.WebView是一个基于WebKit引擎.展现Web页面的控件. Webview 是一个基于webkit引 ...

  6. Java元注解@Retention规则

    @Retention是java当中的一个元注解,该元注解通常都是用于对软件的测试 1.适用方式:     @Retention(RetentionPolicy.RUNTIME)     @interf ...

  7. Spring Boot定时任务运行一段时间后自动关闭的解决办法

    用Spring Boot默认支持的 Scheduler来运行定时任务,有时在服务器运行一段时间后会自动关闭.原因:Schedule默认是单线程运行定时任务的,即使是多个不同的定时任务,默认也是单线程运 ...

  8. flink源码阅读

    Flink面试--源码篇 1.Flink Job的提交流程? 2.Flink所谓"三层图"结构是哪几个"图"? 3.JobManger在集群中扮演了什么角色? ...

  9. JSP+Servlet+JDBC+mysql实现的个人日记本系统

    项目简介 项目来源于:https://gitee.com/wishwzp/Diary 本系统基于JSP+Servlet+Mysql 一个基于JSP+Servlet+Jdbc的个人日记本系统.涉及技术少 ...

  10. 高性能MySQL之索引深入原理分析

    一.背景 我们工作中经常打交道的就是索引,那么到底什么是索引呢?例如,当一个SQL查询比较慢的时候,你可能会说给“某个字段加个索引吧”之类的解决方案. 总的来说索引的出现其实就是为了提高数据查询的效率 ...