我的Chisel代码出现问题,我尝试了以下方法
deqReg := Cat((0 until ports).map(ownReg === Cat(io.configVal(portBits*(_) + 2),io.configVal(portBits*(_)+ 1), io.configVal(portBits*(_)))))
但运行上面的代码时出现以下错误
[error] /home/jayant/Dropbox/FIFO/fifo.scala:24: missing parameter type for expanded function ((x$1) => portBits.$times(x$1).$plus(2))
[error] deqReg := Cat((0 until ports).map(ownReg === Cat(io.configVal(portBits*(_) + 2),io.configVal(portBits*(_)+ 1), io.configVal(portBits*(_)))))
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 2 s, completed 4 Sep, 2015 12:31:40 PM
任何人都可以告诉这个错误是什么以及如何纠正它。
答案 0 :(得分:2)
您的地图中有多个嵌套函数,这使得Scala编译器无法推断出参数的类型。换句话说,您不能在此处使用“_”占位符。占位符只是替换表达式中最内层函数的参数。尝试完全指定的匿名函数(或部分函数),如下所示:
deqReg := Cat((0 until ports).map{ case i:Int => ownReg === Cat(io.configVal(portBits*i + 2), io.configVal(portBits*i + 1), io.configVal(portBits*i))})
Scala是一种非常强大的语言,你很可能能够找到一种更优雅的方式来编写代码。