сравнивая значение в регистре с int - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь получить значение рег и сравнить его с числом внутри и если утверждение

  val refill_addr    = Reg(UInt(width = paddrBits))
if ( refill_addr >  20000.U) 
   cacheable := true
   else 
       cacheable := false

но я получаю эту ошибку

[error] /home/a/i-rocket-chip/src/main/scala/rocket/ICache.scala:365:18: type mismatch;
[error]  found   : chisel3.core.Bool
[error]  required: Boolean
[error] if ( refill_addr >  20000.U) 
[error]                  ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed

1 Ответ

3 голосов
/ 27 мая 2019

Вы должны использовать when / .otherwise здесь вместо if / else.

when - это аппаратная конструкция с долотом, которая в конечном итоге будет отображаться на одном или нескольких мультиплексорах.if является конструкцией Scala и может использоваться для генерации аппаратного обеспечения во время компиляции.

when (refill_addr >  20000.U) {
  cacheable := true
} .otherwise {
  cacheable := false
}

Для получения дополнительной информации, здесь был похожий вопрос .

...