Jayant Bedwal
Jayant Bedwal

Reputation: 1

Chisel Programming Error

I am having a problem in my Chisel code, I tried the following approach

deqReg         := Cat((0 until ports).map(ownReg === Cat(io.configVal(portBits*(_) + 2),io.configVal(portBits*(_)+ 1), io.configVal(portBits*(_)))))

but I am getting the following error when running the above code

[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

can any one tell what is this error and how to correct it.

Upvotes: 0

Views: 134

Answers (1)

ɹɐʎɯɐʞ
ɹɐʎɯɐʞ

Reputation: 568

You have multiple nested functions in your map which would make it impossible for the Scala compiler to infer the type of the argument. In other words you cannot user the "_" placeholder here. The placeholder just replaces the argument of the innermost function within the expression. Try a fully specified anonymous function (or a partial function) like this:

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 is a quite powerful language and you'd most probably be able to find a more elegant way to write that code.

Upvotes: 2

Related Questions