In addition of scala run-time assertion, you can add hardware assertion via the following syntax:

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

Severity levels are :

Name Description
NOTE Used to report a informative message
WARNING Used to report a unusual case
ERROR Used to report an situation that should not happen
FAILURE Used to report a fatal situation and close the simulation

One practical example could be to check that the valid of a handshake protocol never drop when ready is low :

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

  when(ready){
    valid := False
  }
  // some logic

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