scala - 在 Mem (Chisel) 中初始化数据

标签 scala memory fpga hdl chisel

我想初始化内存 bitmem通过在第一次初始化时将所有位设置为 1。我见过inits used对于ROM,我想知道是否有类似的方法来初始化Mem中的值?

val bitmem = Mem(Bits(width = conf.ways), (conf.cache_lines*conf.words_per_line)

最佳答案

Chisel 首先用于设计 ASIC。因此,重点是可综合的硬件,因此当您模拟 Chisel 代码时,您正在模拟您正在综合的相同内容。自 Mem旨在映射到 ASIC 中的 SRAM 并且 SRAM 无法初始化,我们不支持 Chisel 本身的这种构造。如果您希望创建寄存器而不是 SRAM,请尝试 Reg of Vec .

然而,初始化 Mems 的能力显然是一个有用的模拟功能。我们正在改造 Chisel Testers此功能旨在成为一流的功能。我们也在讨论什么Chisel API could help users initialize their memories in Verilog or SystemVerilog testbenches .

与此同时,作为一种变通方法,您可以根据内存(或多个内存)是否应该初始化(即,如果您正在为仿真或综合进行详细说明)来参数化您的设计,并在仿真时发出一个 Vec 和一个当你不在时,请记住。

关于scala - 在 Mem (Chisel) 中初始化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43857577/

相关文章:

f# - 设计实时采集和 'control'的系统架构

c++ - 程序运行良好数小时,最终出现内存地址 0x10 的段错误

scala - 展开/剥离无形余积对象

scala - 幺半群如何泛化类型

scala - 为什么 Doobie 使用免费 monad?

C# object array = null,不释放内存

java - 无论内存需求有多大,有什么方法可以强制 JVM 使用交换?

vhdl - 进程与 "vanilla"VHDL的区别

c - 写入内核模块时内核非法指令

scala - Spark SQL - 从 sql 函数生成数组数组