#scala #hdl #chisel
#scala #hdl #зубило
Вопрос:
Можно ли объявлять сигнал, только если параметр установлен в модуле chisel?
Нравится :
class GbWrite (val debug_simu: Boolean = true) extends Module {
val io = IO(new Bundle {
//...
/* debug */
if(debug_simu){
val countcol = Output(UInt(32.W))
}
})
//...
if(debug_simu) {
io.countcol := pixelCount
}
//...
}
Этот код выдает ошибку :
[info] compiling 1 Scala source to /media/stockage/projets/GbVga/chisel/target/scala-2.12/classes ...
[error] /media/stockage/projets/GbVga/chisel/src/main/scala/gbvga/gbwrite.scala:40:8: value countcol is not a member of chisel3.Bundle{val GBHsync: chisel3.Bool; val GBVsync: chisel3.Bool; val GBClk: chisel3.Bool; val GBData: chisel3.UInt; val Maddr: chisel3.UInt; val Mdata: chisel3.UInt; val Mwrite: chisel3.Bool}
[error] io.countcol := pixelCount
[error] ^
[error] one error found
[error] Compilation failed
Ответ №1:
Это возможно, но вам нужно использовать немного другой синтаксис. Смотрите: Как мне создать дополнительный ввод-вывод ?. Проблема val
в том, что создаваемое вами условие находится внутри области действия if
и, следовательно, не отображается дальше в коде.
Комментарии:
1. Спасибо, это было именно то, что я ищу 🙂