Assertions(断言)

除了Scala本身的运行断言, 用户还可以使用以下语法添加硬件断言:

assert(assertion : Bool, message : String = null, severity: AssertNodeSeverity = Error)

严重性级别为:

严重性声明 描述
NOTE 用于提供一个消息信息
WARNING 用于报告一个非常规情况
ERROR 用于报告一个本不该出现的情况
FAILURE 用于报告一个失败的情况并终止仿真

以一个实际例子为例, 需要检查握手协议的有效信号valid在ready为低时不会下降:

class TopLevel extends Component {
  val valid = RegInit(False)
  val ready = in Bool

  when(ready) {
    valid := False
  }
  // 这里可以添加某些逻辑

  assert(
    assertion = !(valid.fall && !ready),
    message   = "Valid dropped when ready was low",
    severity  = ERROR
  )
}