• Rocket


    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的总体结构示意图(可以单独打开图片查看)如下:

     

                 

     

     

     

  • 相关阅读:
    Connected Graph
    Gerald and Giant Chess
    [NOI2009]诗人小G
    四边形不等式小结
    [NOI2007]货币兑换
    Cats Transport
    Cut the Sequence
    Fence
    The Battle of Chibi
    [Usaco2005 Dec]Cleaning Shifts
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12639813.html
Copyright © 2020-2023  润新知