首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
Chisel3 - model - DefWire, Reg, Memory, Prim
】的更多相关文章
Chisel3 - model - DefWire, Reg, Memory, Prim
https://mp.weixin.qq.com/s/KkkqvekWHG6yrqwHUECRIw 介绍如何定义Wire/Reg/Memory/Prim. 1. DefWire Wire()表明内括的Data的容器为线,用法为: Wire()定义如下: a. 获取一个t的克隆x: b. 定义一个Definition, 即为DefWire:DefWire(sourceInfo, x) c. DefWire同时也是一个Command,将其存下:pushCommand(De…
Chisel3 - model - Builder
https://mp.weixin.qq.com/s/THqyhoLbbuXXAtdQXRQDdA 介绍构建硬件模型的Builder. 1. DynamicContext 动态上下文,供构建硬件模型时,存放上下文状态信息. 2. Builder Builder使用DynamicContext存储数据.供其他类获取和存储信息使用. 3. ClockAndReset 这里以clock和reset为例. 1) DynamicContext中,定义了c…
Chisel3 - model - Hardware Model
https://mp.weixin.qq.com/s/x6j7LZg7i7i_KcNEA8YCQw Chisel作为领域专用语言(DSL),用于构建硬件模型.待硬件模型建立后,再基于模型进行仿真.验证,以及转换.硬件模型可以转换为firrtl,也可以转换为verilog. 接下来介绍Chisel如何构建硬件模型. 1. Command Command定义用于构建硬件模型的命令. 命令可以分为两类:用于定义数据类型的命令,用于定义逻辑的命令. 用于定义数据的命令,…
Chisel3 - bind - Wire, Reg, MemPort
https://mp.weixin.qq.com/s/AxYlRtAXjd55eoGX5l1W-A 模块(Module)从输入端口(input ports)接收输入,经过内部实现的转换逻辑,从输出端口(output ports)输出. 在Chisel3中,模块的输入输出端口,通过IO(new Bundle{...})的形式定义,其中定义了各种类型的数据变量.在实现模块内部转换逻辑的时候,也需要使用到各种类型的数据变量.这些变量如何加入到hardware graph中呢?就是通过WireB…
Chisel3 - model - 子模块,顶层模块
https://mp.weixin.qq.com/s/3uUIHW8DmisYARYmNzUZeg 介绍如何构建由模块组成的硬件模型. 1. 子模块 一个模块可以有一个或多个子模块,创建子模块时,需要使用Module(...)包裹: Module()实现如下: bc是一个call-by-name参数,在第一次引用时调用. 1) 在调用bc创建模块之前,先保存Builder的状态. a. Module()只能用于包裹一个模块的实例化操作: Build…
Chisel3 - model - IO ports
https://mp.weixin.qq.com/s/fgCvIFt0RdEajhJVSy125w 介绍模块的输入输出端口的定义与管理. 1. _ports 1) 模块的输入输出端口,在BaseModule中管理: 2) 添加输入输出端口 使用IO(...)添加: 3) 使用 所有的端口一起使用: 2. 用户自定义模块端口 用户通过实现Module类中的抽象方法io,实现一个Bundle的匿名子类,于其中定义各个输入输出端口. …
Chisel3 - model - when
https://mp.weixin.qq.com/s/YGTXky4wff7LXUphUxISQg 介绍创建模块判断逻辑的when命令. 1. when/elsewhen/otherwise 伴生对象when中的工厂方法,会创建一个WhenContext: WhenContext含有方法elsewhen/otherwise: 他们又各自创建一个新的WhenContext. WhenContext的构造方法在类体中: when(cond){...} a…
linux abstract model of virtual memory
…
Chisel3 - model - connect
https://mp.weixin.qq.com/s/w8NqM3GVlF0NydpsB65KPg 介绍创建模块顺序逻辑的connect命令. 0. 这里先简单对 "=" 和 ":="做一个讨论. 假设 a & b 的结果输出到一个匿名变量,记为anonymousVariable. a & b的用法有两种: 1) c := a & b ":="的意思为连接.变量c作为下游,连接到anonymou…
Chisel3 - model - UserModule commands
https://mp.weixin.qq.com/s/0ECca6XyFyEri0B4ckOZ4A 介绍UserModule类中,如何管理构建硬件模型所需的命令. 1. _commands private val _commands = ArrayBuffer[Command]() _commands中存放了构建模块所需的全部命令. 1) 添加命令:addCommand a. 需要没有close:_closed意为模块构建所需已经齐备,不能再向其中添加…