• Chisel3


     
    介绍构建硬件模型的Builder。
     
    1. DynamicContext
     
    动态上下文,供构建硬件模型时,存放上下文状态信息。
     
     
    2. Builder
     
     
    Builder使用DynamicContext存储数据。供其他类获取和存储信息使用。
     
    3. ClockAndReset
     
    这里以clock和reset为例。
     
    1) DynamicContext中,定义了currentClockAndReset
    var currentClockAndReset: Option[ClockAndReset] = None
     
    Builder中为:
    可以用这些进行获取和设置。
     
    2) 在模块实例化的时候赋值
     
     
    3) 临时更换clock或reset
     
    在MultiClock.scala中,定义了如下方法:
    a. 临时更换clock, withClock:
    b. 临时更换reset, withReset:
    c. 临时更换clock和reset, withClockAndReset:
     
    更换clock和reset之后,再执行block所代表的代码块。
     
    4) 使用Builder中的clock和reset
     
    a. 创建寄存器Reg():
    构建硬件模型时,DefReg中包含了从Builder中获取的clock。
     
    b. 创建带初始值的RegInit():
    这里构建这个寄存器的命令DefRegInit里,包含了从Builder中获取的clock和reset。
     
    所以3)中,临时更换Builder.clockAndReset然后在执行block时,如果有创建寄存器,则其使用的clock/reset即为临时更改后的。
     
     
    4. 附录
     
    private[chisel3] class DynamicContext() {
    val idGen = new IdGen
    val globalNamespace = Namespace.empty
    val components = ArrayBuffer[Component]()
    val annotations = ArrayBuffer[ChiselAnnotation]()
    var currentModule: Option[BaseModule] = None
    // Set by object Module.apply before calling class Module constructor
    // Used to distinguish between no Module() wrapping, multiple wrappings, and rewrapping
    var readyForModuleConstr: Boolean = false
    var whenDepth: Int = 0 // Depth of when nesting
    var currentClockAndReset: Option[ClockAndReset] = None
    val errors = new ErrorLog
    val namingStack = new internal.naming.NamingStack
    // Record the Bundle instance, class name, method name, and reverse stack trace position of open Bundles
    val bundleStack: ArrayBuffer[(Bundle, String, String, Int)] = ArrayBuffer()
    }
     
  • 相关阅读:
    GreenPlum failover,primary和mirror切换实验 -- 重要
    Greenplum 激活standby 和恢复 master 原有角色
    GreenPlum 常用命令
    Greenplum 添加mirror步骤
    PostgreSQL 多版本的实现与Innodb和oracle的差别
    Oracle 与 postgreSQL 事务处理区别(多版本与undo区别)
    服务器使用bbr加速配置
    线表之队列
    线性表之栈
    线性表之单链表
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10227158.html
Copyright © 2020-2023  润新知