我想通过在第一次初始化时将所有位设置为1来初始化内存bitmem
。我看过inits
Working demo的ROM,我想知道是否有类似的方法来初始化Mem
中的值?
val bitmem = Mem(Bits(width = conf.ways), (conf.cache_lines*conf.words_per_line)
答案 0 :(得分:3)
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的Reg当你不是时,模拟和记忆。