summaryrefslogtreecommitdiff
path: root/core/src/main/scala/chisel3/experimental/verification
diff options
context:
space:
mode:
authorJack Koenig2021-09-17 21:01:26 -0700
committerJack Koenig2021-09-17 21:01:26 -0700
commit5c8c19345e6711279594cf1f9ddab33623c8eba7 (patch)
treed9d6ced3934aa4a8be3dec19ddcefe50a7a93d5a /core/src/main/scala/chisel3/experimental/verification
parente63b9667d89768e0ec6dc8a9153335cb48a213a7 (diff)
parent958904cb2f2f65d02b2ab3ec6d9ec2e06d04e482 (diff)
Merge branch 'master' into 3.5-release
Diffstat (limited to 'core/src/main/scala/chisel3/experimental/verification')
-rw-r--r--core/src/main/scala/chisel3/experimental/verification/package.scala47
1 files changed, 33 insertions, 14 deletions
diff --git a/core/src/main/scala/chisel3/experimental/verification/package.scala b/core/src/main/scala/chisel3/experimental/verification/package.scala
index 5c71bd5f..190083fd 100644
--- a/core/src/main/scala/chisel3/experimental/verification/package.scala
+++ b/core/src/main/scala/chisel3/experimental/verification/package.scala
@@ -2,40 +2,59 @@
package chisel3.experimental
-import chisel3.{Bool, CompileOptions}
+import chisel3._
import chisel3.internal.Builder
-import chisel3.internal.Builder.pushCommand
import chisel3.internal.firrtl.{Formal, Verification}
import chisel3.internal.sourceinfo.SourceInfo
package object verification {
+
object assert {
+ /** Named class for assertions. */
+ final class Assert(private[chisel3] val predicate: Bool) extends BaseSim
+
+
def apply(predicate: Bool, msg: String = "")(
implicit sourceInfo: SourceInfo,
- compileOptions: CompileOptions): Unit = {
- val clock = Builder.forcedClock
- pushCommand(Verification(Formal.Assert, sourceInfo, clock.ref,
- predicate.ref, msg))
+ compileOptions: CompileOptions): Assert = {
+ val a = new Assert(predicate)
+ when (!Module.reset.asBool) {
+ val clock = Module.clock
+ Builder.pushCommand(Verification(a, Formal.Assert, sourceInfo, clock.ref, predicate.ref, msg))
+ }
+ a
}
}
object assume {
+ /** Named class for assumes. */
+ final class Assume(private[chisel3] val predicate: Bool) extends BaseSim
+
def apply(predicate: Bool, msg: String = "")(
implicit sourceInfo: SourceInfo,
- compileOptions: CompileOptions): Unit = {
- val clock = Builder.forcedClock
- pushCommand(Verification(Formal.Assume, sourceInfo, clock.ref,
- predicate.ref, msg))
+ compileOptions: CompileOptions): Assume = {
+ val a = new Assume(predicate)
+ when (!Module.reset.asBool) {
+ val clock = Module.clock
+ Builder.pushCommand(Verification(a, Formal.Assume, sourceInfo, clock.ref, predicate.ref, msg))
+ }
+ a
}
}
object cover {
+ /** Named class for covers. */
+ final class Cover(private[chisel3] val predicate: Bool) extends BaseSim
+
def apply(predicate: Bool, msg: String = "")(
implicit sourceInfo: SourceInfo,
- compileOptions: CompileOptions): Unit = {
- val clock = Builder.forcedClock
- pushCommand(Verification(Formal.Cover, sourceInfo, clock.ref,
- predicate.ref, msg))
+ compileOptions: CompileOptions): Cover = {
+ val clock = Module.clock
+ val c = new Cover(predicate)
+ when (!Module.reset.asBool) {
+ Builder.pushCommand(Verification(c, Formal.Cover, sourceInfo, clock.ref, predicate.ref, msg))
+ }
+ c
}
}
}