初始化 Mem 中的数据(Chisel)
Initialize data in Mem (Chisel)
我想通过在第一次初始化时将所有位设置为 1 来初始化内存 bitmem
。看过ROM的inits
used,不知道Mem
有没有类似的初始化值的方法?
val bitmem = Mem(Bits(width = conf.ways), (conf.cache_lines*conf.words_per_line)
Chisel 主要用于设计 ASIC。因此,重点放在 synthesizable 硬件上,这样当您模拟 Chisel 代码时,您模拟的是您正在综合的同一事物。由于 Mem
旨在映射到 ASIC 中的 SRAM,而 SRAM 无法初始化,因此我们不支持 Chisel 本身的这种构造。如果您想创建寄存器而不是 SRAM,请尝试 Reg of Vec。
但是,初始化 Mems 的能力对于模拟来说显然是一个有用的功能。我们正在改造 Chisel Testers and this feature is intended to be a first class feature. We are also discussing what Chisel API could help users initialize their memories in Verilog or SystemVerilog testbenches.
与此同时,作为一种解决方法,您可以根据内存(或多个内存)是否应该初始化(即,如果您正在为模拟或合成进行详细说明)来参数化您的设计,并在以下情况下发出 Vec 的 Reg你正在模拟,当你不在时是一个 Mem。
我想通过在第一次初始化时将所有位设置为 1 来初始化内存 bitmem
。看过ROM的inits
used,不知道Mem
有没有类似的初始化值的方法?
val bitmem = Mem(Bits(width = conf.ways), (conf.cache_lines*conf.words_per_line)
Chisel 主要用于设计 ASIC。因此,重点放在 synthesizable 硬件上,这样当您模拟 Chisel 代码时,您模拟的是您正在综合的同一事物。由于 Mem
旨在映射到 ASIC 中的 SRAM,而 SRAM 无法初始化,因此我们不支持 Chisel 本身的这种构造。如果您想创建寄存器而不是 SRAM,请尝试 Reg of Vec。
但是,初始化 Mems 的能力对于模拟来说显然是一个有用的功能。我们正在改造 Chisel Testers and this feature is intended to be a first class feature. We are also discussing what Chisel API could help users initialize their memories in Verilog or SystemVerilog testbenches.
与此同时,作为一种解决方法,您可以根据内存(或多个内存)是否应该初始化(即,如果您正在为模拟或合成进行详细说明)来参数化您的设计,并在以下情况下发出 Vec 的 Reg你正在模拟,当你不在时是一个 Mem。