zoukankan      html  css  js  c++  java
  • 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()
    }
     
  • 相关阅读:
    nginx配置虚拟主机
    nginx 中http协议的相关配置
    nginx的性能优化
    编译安装NGINX-1.21.0
    nginx命令使用
    编译安装NGINX1.16.1
    nginx: [emerg] getpwnam("nginx") failed
    swift选择类或结构体
    工具与网址
    WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h:373
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10227158.html
Copyright © 2011-2022 走看看