Chisel3 - model - Builder
2024-08-23 21:43:52
介绍构建硬件模型的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()
}
最新文章
- Sublime 3 如何配置SVN插件
- 【读书笔记】iOS-开发技巧-三种收起键盘的方法
- Linux-NTP-Server+Client
- OpenStack:安装Neutron与provider network
- jackson基于注解的简单使用
- 根据id设置、获取元素的文本和value
- 【C语言】单片机上的按键检测框架
- Egret index.html设置
- 7. leetcode 104. Maximum Depth of Binary Tree
- Vue相关(过渡动画)
- 在外围获取APP的机密信息
- printf 函数原型
- 记录ok6410 jlink 命令行调试uboot
- Auth模块使用方法大全
- windows安装 centos
- 【leetcode】7-ReverseInteger
- spring的multipartResolver和java后端获取的MultipartHttpServletRequest方法对比 (附:遇到的坑)
- mysql 回顾
- 【转】修复关于apache-xampp的问题:Port 443 in use by “vmware-hostd.exe”!
- (转载)Ubuntu下安装Qt