只是说您正在为芯片中的某些基础设施自动生成一些 Chisel 代码。单个文件实例化大量内存映射寄存器,然后是 IO 分配。
然后假设有一天你添加了一个额外的寄存器,JVM 就因为 JVM 中的任意 64k 方法限制大小而崩溃并且不想再构建它:
[error] Could not write class HasRegsModuleContents because it exceeds JVM code size limits. Method scala/Some's code too large!
[error] one error found
[error] (chipBlocks / Compile / compileIncremental) Compilation failed
[error] Total time: 41 s, completed 27/11/2018 2:32:29 AM
HasRegsModuleContents 内部是一堆寄存器的声明,然后是一个大的 regmap 语句,其中包含芯片的一堆寄存器声明。之后是模块的 io 端口的分配或来自模块的 io 端口的分配。
这对我们来说效果很好,但现在似乎被最大化了,这很烦人。
有没有人遇到过这个?将其分解为多个寄存器块(以及更多硬件,现在在 pbus 上有多个总线接口)将是可行的,因此如果有人知道解决方法,将不胜感激。