我想使用SpinalHdl来使用两个静态内存区域作为一个vexriscv。
很少有使用SpinalHdl和Scala的经验,所以我可能忽略了一些细节。
插件++=列表(新StaticMemoryTranslatorPlugin( ioRange = _.msb ),新StaticMemoryTranslatorPlugin( ioRange = _(31下降到16) === 0x0001 ))
这在cpu生成过程中提供了一个异常。
[error] Exception in thread "main" java.lang.AssertionError: assertion failed: ??? vexriscv.MemoryTranslator
[error] at scala.Predef$.assert(Predef.scala:170)
[error] at spinal.core.package$.assert(core.scala:467) .....新StaticMemoryTranslatorPlugin( ioRange =( _.msb )x _(31降至16) === 0x0001 )
这使我在扩展功能时出现了一个缩放错误:
[error] /home/svhb/dev/JifHybrid/cpu/VexRiscv/src/main/scala/vexriscv/demo/VexRiscv_vdw_1.scala:125:36: missing parameter type for expanded function ((x$1) => x$1.msb)
[error] ioRange = ( _.msb ) || ( _(31 downto 16) === 0x0001 )
[error] ^
[error] one error found有人能给我指明正确的方向吗?
发布于 2022-10-19 10:21:01
正如我所想的,这是因为我对scala语法本身缺乏了解。
我必须完全指定函数,以便在iorange函数上执行一些额外的逻辑表达式!
new StaticMemoryTranslatorPlugin(
ioRange = a => (a.msb) || (a(31 downto 16) === 0x0001)
)而不是仅仅使用: ioRange =( _.msb )x _(31降到16) === 0x0001 )
祝你今天愉快;)
https://stackoverflow.com/questions/73970216
复制相似问题