zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA

     

    简单介绍TLDebugModule中的实现。

     

     

    1. device

     

    device是一个设备描述符,包含了设备的各种信息:

     

    2. dmOuter

     

    dmOuter是一个TLDebugModuleOuterAsync模块:

     

    其结构示意图如下:

     

    3. dmInner

     

    dmInner是一个TLDebugModuleInnerAsync模块:

     

    其结构示意图如下:

     

    4. node

     

    node是dmInner.tlNode的别名:

     

    5. intnode

     

    intnode是dmOuter.intnode的别名:

     

    6. 连接DMI同步接口

     

    连接dmOuter的dmi同步接口(source)和dmInner的dmi同步接口(sink):

     

    7. lazy val module

     

    lazy val module实现了TLDebugModule的内部逻辑。

     

    1) io

     

    lazy val module定义了一组IO接口:

     

    其示意图如下:

     

    2) 为dmOuter指定时钟和复位信号

     

    dmOuter模块使用外部供入的时钟和复位信号:

     

    从目前的实现看,这里的外部是指TestHarness:

     

    TestHarness是顶层模块,其reset信号是最外层的复位信号:

    a. dut也就是RocketSystem的复位信号来自于TestHarness.reset和调试模块的ndreset;

    b. TestHarness的复位信号和时钟信号同时也输出给dut.debug模块:

     

    如果是不需要调试模块,则不需要驱动时钟信号,同时一直保持复位信号即可:

     

    3) 内部连接

     

    将io与dmOuter/dmInner相连,将dmOuter与dmInner相连:

     

    8. 总结

     

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

    其中:

    a. TLDebugModuleOuterAsync使用外部供入的时钟和复位信号;

    b. TLDebugModuleOuterAsync的io.innerCtrl连接到TLDebugModuleInnerAsync的io.innerCtrl,中间有时钟同步逻辑。io.innerCtrl中包含了调试器通过写DMCONTROL寄存器传递的控制信息;

    c. io.ctrl.debugUnavail同时传递给TLDebugModuleOuterAsync和TLDebugModuleInnerAsync;只是TLDebugModuleOuterAsync中不使用;

    d. dmOuter.intnode用于对核心发起中断请求,这里暂时没有连接;

    e. dmInner.tlNode中包含了调试模式下核心要执行的代码,需要连接到核心的总线,并入核心的地址空间;

     

  • 相关阅读:
    Linux XZ格式的解压
    Linux eject弹出光驱
    什么是错误链接/死链接
    什么是相对地址和绝对地址
    网站被K或者降权后应该如何恢复
    网络营销怎么做才有“钱”途
    如何通过seo技术提高网站对用户的友好度
    如何利用微博客进行seo赚钱营销
    做SEO必须制定超越竞争对手网站的方案
    文章很快收录后又被删除的原因
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12639837.html
Copyright © 2011-2022 走看看