https://mp.weixin.qq.com/s/6e-G5RSQc7Xje7mQj8-Lag

 
简单介绍Monitor的实现。
 
 
1. 基本介绍
 
用于监控各个channel上的消息是否正确。
 
2. TLMonitorArgs
 
Monitor的参数,包装一个边(TLEdge):
 
3. TLMonitorBase
 
Monitor的基类:
a. io.in:用于接收输入数据,以待进行监控;
b. legalize:用于对输入的数据进行监控,以判断是否合法数据;
 
4. TLMonitor
 
输入监控模块,主要实现legalize方法:
 
1) legalizeFormat
 
对channel a/b/c/d/e的格式进行监视:
 
A. legalizeFormatA
 
a. 判断opcode是否正确;
b. 判断访问地址是否超出可视范围;
c. 判断各个消息内容是否正确;
 
B. legalizeFormatD
 
判断channel d上的消息内容格式是否正确。
 
C. legalizeFormatB
 
判断channel b上的消息内容格式是否正确。
 
D. legalizeFormatC
 
判断channel c上的消息内容格式是否正确。
 
E. legalizeFormatE
 
判断channel e上的消息内容格式是否正确。
 
2) legalizeMultibeat
 
监控channel a/b/c/d上的burst请求是否正确,channel e不存在burst:
 
以legalizeMultibeatA为例:
监控多个beat之间opcode/param/size/source/address域不变。
 
3) legalizeUnique
 
用于监控source/sink是否唯一,即同一个source不能同时存在两个请求未被回复。(这个在规范上有要求吗?存疑)
 
 
A. legalizeADSource
 
判断AD中的source是否唯一。
a. 同一个source不能同时存在两个未被回复的请求:
 
b. 不能回复未发起请求的source:
 
c. 若manager的最小延迟大于一个时钟周期,那么a_set和d_clr在不为零的情况下不能相同:
 
d. 请求间隔和响应时间都不能超过limit个时钟周期,否则会被看门狗视为状态紊乱:
相当于a.fire()和d.fire()时喂狗。
 
B. legalizeDESink
 
用于判断Grant/GrantAck中的sink域是否唯一:
a. 同一个sink不能同时存在两个未被回复的Grant请求;
b. 不能回复未发起Grant请求的sink;
 
5. 使用
 
Monitor在TLImp的monitor方法中使用:
 
这里monitor.io.in接收TLBundleSnoop的输出作为输入,传入的source和sink参数都是bundle参数:
 
这个没有问题:
a. monitor.io.in只是从source和sink中接收信号;
b. 而TLBundleSnoop并不会把source和sink连接到一起:
 

Rocket - tilelink - Monitor的更多相关文章

  1. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  2. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  3. Rocket - tilelink - AsyncCrossing

    https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg   介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...

  4. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  5. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  6. Rocket - tilelink - Bundles

    https://mp.weixin.qq.com/s/jrqBg2AIpQogBrpwNXjmwg   简单介绍Bundles文件中对TileLink规范(1.7.1)的定义. 参考链接:https: ...

  7. Rocket - tilelink - TLBusWrapper.to

    https://mp.weixin.qq.com/s/jSnhBzU5_ayQCg5fWAcx-g 简单介绍TLBusWrapper.to()的实现.主要介绍确定this{...}对应代码的过程. 1 ...

  8. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

  9. Rocket - tilelink - Xbar

    https://mp.weixin.qq.com/s/UXFHYEQaYotWNEhshro68Q   简单介绍Xbar的实现.   ​​   1. 基本介绍   用于为Xbar的输入和输出连接生成内 ...

随机推荐

  1. K. Road Widening

    \(考虑每个区域可行的区间\) \(x[1]=s[1]\ \ y[1]=s[1]+g[1]\) \(x[i]=max(x[i-1]-1,s[i]),y[i]=min(y[i-1]+1,s[i]+g[i ...

  2. 设计模式之GOF23访问者模式

    访问者模式Visitor 模式动机:对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同访问者的访问方式也不同 定义 ...

  3. CentOS7 Installing Python3

    最近开始学习python. python火了这么久,我终于还是跪舔它了,我是一个跟风的人,学过C.C#.JAVA.PHP,无一例外的浅尝即止,不知道我这双已经近视的眼,确认过的眼神还对不对,希望pyt ...

  4. dot 使用教程

    dot使用教程 安装: windows: 安装后需要将安装文件的bin目录添加到命令行, 可以在命令行生成图片 linux: mac: dot和vscode 安装插件:Graphviz (dot) l ...

  5. windows上docker部署springboot多实例

    前提条件: 1.可以运行jar包的环境2.机器上已经安装了docker3.准备部署的springboot的jar包4.Dockerfile文件 准备Dockerfile FROM java:8 VOL ...

  6. webpack指南(四)shimming

    shimming 将一个新的 API 引入到一个旧的环境中,而且仅靠旧的环境中已有的手段实现. ProvidePlugin 我们在程序中暴露一个变量,通知webpack某个库被使用,webpack将在 ...

  7. Java基础之数据类型

    一.数据类型 基本数据类型介绍 byte 1字节 char 2字节 short 2字节 int 4字节 long 8字节 float 4字节 double 8字节 以上有Java中八大基本类型的7种, ...

  8. Django路由配置之正则表达式详解

    正则表达式详解 urls.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles ...

  9. linux DRM/KMS 测试工具 modetest、kmscude、igt-gpu-tools (一)

    这里整理几个在学习Linux DRM/KMS中用到的几个工具,modetest.kmscude.igt-gpu-tools. 简介: modetest 是由libdrm提供的测试程序,可以查询显示设备 ...

  10. Spring Beans 自动装配 简介

    Beans 自动装配 Spring 容器可以在不使用<constructor-arg>和<property> 元素的情况下自动装配相互协作的 bean 之间的关系,这有助于减少 ...