https://mp.weixin.qq.com/s/Xf4VFTHIDFh1NHmfwlTX3w

简单介绍TLDebugModuleInnerAsync的实现。

1. dmInner

dmInner是TLDebugModuleInnerAsync内部的一个子模块。其中又包含多个子节点。

1) dmiNode

dmiNode是一个寄存器节点:

2) tlNode

tlNode也是一个寄存器节点:

3) sb2tlOpt

sb2tlOpt是一个把系统总线转换为tilelink总线的转换模块:

4) customNode

customNode是一个自定义节点:

5) io

6) 结构图

总体结构图如下:

2. dmiXing

dmiXing是一个TLAsyncCrossingSink节点,用于实现跨域逻辑:

3. dmiNode

dmiNode是dmiXing.node的别名:

4. tlNode

tlNode是dmInner.tlNode的别名。

5. 连接跨域逻辑

6. lazy val module

lazy val module用于实现TLDebugModuleInnerAsync的内部逻辑。

1) io

模块定义了单独的IO:

结构示意图如下:

2) dmactive_synced

使用io.dmactive和io.psd生成的同步之后的dmactive信号:

PS.这里有机会再细究。

3) gated_clock

根据dmactive_synced生成的一个门控时钟:

如果配置参数中clockGate为假,则不使用门控。

PS.这里有机会再细究。

4) 指定时钟

使用withClock指定使用gated_clock为时钟,生成一段连接逻辑:

PS.这里有机会再细究。

7. 总体结构

TLDebugModuleInnerAsync的总体结构示意图(可以单独打开图片查看)如下:

最新文章

  1. IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)
  2. python学习笔记(python简史)
  3. python-open文件处理
  4. Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
  5. python split()函数使用拆分字符串 将字符串转化为列表
  6. Android SDK 更新镜像服务器
  7. BZOJ2494 Triangles and Quadrangle
  8. hdu 5206 Four Inages Strategy
  9. BloomFilter–大规模数据处理利器(转)
  10. linux inode已满解决方法
  11. c# 读取ACCESS 数据库
  12. js插入节点appendChild和insertBefore
  13. 老板让我们去陪睡!-It高管的焦虑
  14. iOS正确使用const,static,extern
  15. Linux常用命令行
  16. Leetcode 125.验证回文串 By Python
  17. ffmpeg在asp.net 视频转换
  18. php http请求封装
  19. Hibernate的Api以及三种查询方式
  20. Graying the black box: Understanding DQNs

热门文章

  1. 自己封装函数,实现数组的内置方法indexOf的功能
  2. 搬东西 dp
  3. 谈谈Spring bean的生命周期(一)
  4. Java 多线程启动为什么调用 start() 方法而不是 run() 方法?
  5. 5.7.17版本mysqlbinlog实时拉取的二进制日志不完整的原因分析
  6. IDEA打包JavaWeb项目
  7. JS理论--正则表达式RegExp的创建、元字符、优先度、方法(test(),exec(),match(),replace())
  8. python --error整理(不定时更新)
  9. java mybatis中大于号小于号的转义
  10. 两个有序数组 A1 A2 的合并