Chisel3 - model - 子模块,顶层模块】的更多相关文章

https://mp.weixin.qq.com/s/3uUIHW8DmisYARYmNzUZeg   介绍如何构建由模块组成的硬件模型.   1. 子模块   一个模块可以有一个或多个子模块,创建子模块时,需要使用Module(...)包裹: ​​   Module()实现如下: ​​   bc是一个call-by-name参数,在第一次引用时调用.   1) 在调用bc创建模块之前,先保存Builder的状态. ​​ a. Module()只能用于包裹一个模块的实例化操作: ​​ Build…
我们用Modelsim SE进行仿真时,为了方便,一般会编写.do文件来启动当前仿真.关于.do文件的编写,一般网上都有成型的模板,我们只要稍微改几个参数,就可以符合我们的仿真需求了.但是如果仿真时需要链接额外已经编译好的自定义逻辑库到testbench模块时(比如Altera(Intel PSG)或者Xilinx的仿真库),就需要在现有的模板上加一点东西. 在下面这句话的基础上,加上需要链接的库就可以了,格式为“-L 库名”. vsim -voptargs=+acc work.tb 下面是链接…
https://mp.weixin.qq.com/s/THqyhoLbbuXXAtdQXRQDdA   介绍构建硬件模型的Builder.   1. DynamicContext   ​​ 动态上下文,供构建硬件模型时,存放上下文状态信息.     2. Builder   ​​   Builder使用DynamicContext存储数据.供其他类获取和存储信息使用.   3. ClockAndReset   这里以clock和reset为例.   1) DynamicContext中,定义了c…
https://mp.weixin.qq.com/s/fgCvIFt0RdEajhJVSy125w   介绍模块的输入输出端口的定义与管理.     1. _ports   1) 模块的输入输出端口,在BaseModule中管理: ​​ 2) 添加输入输出端口   使用IO(...)添加: ​​   ​​   3) 使用   所有的端口一起使用: ​​   2. 用户自定义模块端口   用户通过实现Module类中的抽象方法io,实现一个Bundle的匿名子类,于其中定义各个输入输出端口. ​​…
https://mp.weixin.qq.com/s/YGTXky4wff7LXUphUxISQg   介绍创建模块判断逻辑的when命令.   1. when/elsewhen/otherwise   伴生对象when中的工厂方法,会创建一个WhenContext: ​​   WhenContext含有方法elsewhen/otherwise: ​​ 他们又各自创建一个新的WhenContext.   WhenContext的构造方法在类体中: ​​   when(cond){...}   a…
https://mp.weixin.qq.com/s/w8NqM3GVlF0NydpsB65KPg   介绍创建模块顺序逻辑的connect命令.     0. 这里先简单对 "=" 和 ":="做一个讨论.   假设 a & b 的结果输出到一个匿名变量,记为anonymousVariable.   a & b的用法有两种:   1) c := a & b   ":="的意思为连接.变量c作为下游,连接到anonymou…
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…
https://mp.weixin.qq.com/s/0ECca6XyFyEri0B4ckOZ4A   介绍UserModule类中,如何管理构建硬件模型所需的命令.   ​​   1. _commands   private val _commands = ArrayBuffer[Command]()   _commands中存放了构建模块所需的全部命令.     1) 添加命令:addCommand   ​​ a. 需要没有close:_closed意为模块构建所需已经齐备,不能再向其中添加…
https://mp.weixin.qq.com/s/x6j7LZg7i7i_KcNEA8YCQw   Chisel作为领域专用语言(DSL),用于构建硬件模型.待硬件模型建立后,再基于模型进行仿真.验证,以及转换.硬件模型可以转换为firrtl,也可以转换为verilog.   接下来介绍Chisel如何构建硬件模型.   ​​   1. Command   Command定义用于构建硬件模型的命令.   命令可以分为两类:用于定义数据类型的命令,用于定义逻辑的命令.   用于定义数据的命令,…
此部分来自于<Python学习手册>第五部分 一.模块(21章) 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用..模块往往对应于python程序文件.每个文件就是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名.模块可以由两个语句和一个重要的内置函数进行处理:a.import,使客户端(导入者)以一个整体获取一个模块:b.from,允许客户端从一个模块文件中获取特定的变量名:c.imp.reload,在不中止python程序的情况下,提供了一种重新载入模块文…