@@ -4,8 +4,6 @@ import chisel3.{assert => _, _}
4
4
import chisel3 .experimental .hierarchy ._
5
5
import chisel3 .experimental .inlinetest ._
6
6
import chisel3 .simulator .scalatest .ChiselSim
7
- import chisel3 .simulator
8
- import chisel3 .simulator .{stimulus , Settings }
9
7
import chisel3 .testers ._
10
8
import chisel3 .properties .Property
11
9
import chisel3 .testing .scalatest .FileCheck
@@ -460,116 +458,120 @@ class InlineTestSpec extends AnyFlatSpec with FileCheck with ChiselSim {
460
458
)
461
459
}
462
460
463
- def assertPass (digest : simulator.Simulator .BackendInvocationDigest [_]): Unit =
464
- digest.result
461
+ def assertPass (result : TestResult .Type ): Unit = result match {
462
+ case TestResult .Success => ()
463
+ case TestResult .Failure (e) => throw e
464
+ }
465
465
466
- def assertFail (digest : simulator.Simulator .BackendInvocationDigest [_]): Unit =
467
- intercept[simulator.Exceptions .TestFailed ](digest.result)
468
- .getMessage()
469
- .fileCheck() {
470
- """
471
- | CHECK: The test finished and signaled failure
472
- """
473
- }
466
+ def assertFail (result : TestResult .Type ): Unit = result match {
467
+ case TestResult .Success => fail(" Test unexpectedly passed" )
468
+ case TestResult .Failure (e) =>
469
+ e.getMessage()
470
+ .fileCheck() {
471
+ """
472
+ | CHECK: The test finished and signaled failure
473
+ """
474
+ }
475
+ }
474
476
475
- def assertTimeout (timeout : Int )(digest : simulator.Simulator .BackendInvocationDigest [_]): Unit =
476
- intercept[simulator.Exceptions .Timeout ](digest.result)
477
- .getMessage()
478
- .fileCheck() {
479
- s """
480
- | CHECK: A timeout occurred after ${timeout} timesteps
481
- """
482
- }
477
+ def assertTimeout (timeout : Int )(result : TestResult .Type ): Unit = result match {
478
+ case TestResult .Success => fail(" Test unexpectedly passed" )
479
+ case TestResult .Failure (e) =>
480
+ e.getMessage()
481
+ .fileCheck() {
482
+ s """
483
+ | CHECK: A timeout occurred after ${timeout} timesteps
484
+ """
485
+ }
486
+ }
483
487
484
- def assertAssertion (message : String )(digest : simulator.Simulator .BackendInvocationDigest [_]) =
485
- intercept[simulator.Exceptions .AssertionFailed ](digest.result)
486
- .getMessage()
487
- .fileCheck() {
488
- """
489
- | CHECK: One or more assertions failed during Chiselsim simulation
490
- | CHECK: counter hit max
491
- """
492
- }
488
+ def assertAssertion (message : String )(result : TestResult .Type ): Unit = result match {
489
+ case TestResult .Success => fail(" Test unexpectedly passed" )
490
+ case TestResult .Failure (e) =>
491
+ e.getMessage()
492
+ .fileCheck() {
493
+ """
494
+ | CHECK: One or more assertions failed during Chiselsim simulation
495
+ | CHECK: counter hit max
496
+ """
497
+ }
498
+ }
493
499
494
500
it should " simulate and pass if finish asserted with success=1" in {
495
- assertPass {
496
- simulateTest(
497
- new ModuleWithTests ,
498
- testName = " signal_pass" ,
499
- timeout = 100
500
- )
501
- }
501
+ val results = simulateTests(
502
+ new ModuleWithTests ,
503
+ tests = TestChoice .Name (" signal_pass" ),
504
+ timeout = 100
505
+ )
506
+ assertPass(results(" signal_pass" ))
502
507
}
503
508
504
509
it should " simulate and fail if finish asserted with success=0" in {
505
- assertFail {
506
- simulateTest(
507
- new ModuleWithTests ,
508
- testName = " signal_fail" ,
509
- timeout = 100
510
- )
511
- }
510
+ val results = simulateTests(
511
+ new ModuleWithTests ,
512
+ tests = TestChoice .Name (" signal_fail" ),
513
+ timeout = 100
514
+ )
515
+ assertFail(results(" signal_fail" ))
512
516
}
513
517
514
518
it should " simulate and timeout if finish not asserted" in {
515
- assertTimeout(100 ) {
516
- simulateTest(
517
- new ModuleWithTests ,
518
- testName = " timeout" ,
519
- timeout = 100
520
- )
521
- }
519
+ val results = simulateTests(
520
+ new ModuleWithTests ,
521
+ tests = TestChoice .Name (" timeout" ),
522
+ timeout = 100
523
+ )
524
+ assertTimeout(100 )(results(" timeout" ))
522
525
}
523
526
524
527
it should " simulate and fail early if assertion raised" in {
525
- assertAssertion(" counter hit max" ) {
526
- simulateTest(
527
- new ModuleWithTests ,
528
- testName = " assertion" ,
529
- timeout = 100
530
- )
531
- }
528
+ val results = simulateTests(
529
+ new ModuleWithTests ,
530
+ tests = TestChoice .Name (" assertion" ),
531
+ timeout = 100
532
+ )
533
+ assertAssertion(" counter hit max" )(results(" assertion" ))
532
534
}
533
535
534
536
it should " run multiple passing simulations" in {
535
- simulateTests(
537
+ val results = simulateTests(
536
538
new ModuleWithTests ,
537
- testGlobs = Seq (" signal_pass" , " signal_pass_2" ),
539
+ tests = TestChoice . Names ( Seq (" signal_pass" , " signal_pass_2" ) ),
538
540
timeout = 100
539
- ).map(_._2).foreach(assertPass)
541
+ )
542
+ results.all.foreach { case (name, result) =>
543
+ assertPass(result)
544
+ }
540
545
}
541
546
542
547
it should " run one passing and one failing simulation" in {
543
- simulateTests(
548
+ val results = simulateTests(
544
549
new ModuleWithTests ,
545
- testGlobs = Seq (" signal_pass" , " signal_fail" ),
550
+ tests = TestChoice . Names ( Seq (" signal_pass" , " signal_fail" ) ),
546
551
timeout = 100
547
- ).map {
548
- case (" signal_pass" , digest) => assertPass(digest)
549
- case (" signal_fail" , digest) => assertFail(digest)
550
- case _ => fail(" unexpected test name" )
551
- }
552
+ )
553
+ assertPass(results(" signal_pass" ))
554
+ assertFail(results(" signal_fail" ))
552
555
}
553
556
554
557
it should " simulate all tests" in {
555
- val results = simulateAllTests (
558
+ val results = simulateTests (
556
559
new ModuleWithTests ,
560
+ tests = TestChoice .All ,
557
561
timeout = 100
558
562
)
559
- assert(results.size == 11 )
560
- results.map {
561
- case (" signal_fail" , digest) => assertFail(digest)
562
- case (" timeout" , digest) => assertTimeout(100 )(digest)
563
- case (" assertion" , digest) => assertAssertion(" counter hit max" )(digest)
564
- case (" check1" , digest) => assertTimeout(100 )(digest)
565
- case (" check2" , digest) => assertTimeout(100 )(digest)
566
- case (" bar" , digest) => assertTimeout(100 )(digest)
567
- case (" signal_pass" , digest) => assertPass(digest)
568
- case (" signal_pass_2" , digest) => assertPass(digest)
569
- case (" with_monitor" , digest) => assertTimeout(100 )(digest)
570
- case (" with_result" , digest) => assertTimeout(100 )(digest)
571
- case (" foo" , digest) => assertTimeout(100 )(digest)
572
- case (testName, digest) => fail(s " unexpected test name: $testName" )
573
- }
563
+ assert(results.all.size == 11 )
564
+
565
+ assertFail(results(" signal_fail" ))
566
+ assertTimeout(100 )(results(" timeout" ))
567
+ assertAssertion(" counter hit max" )(results(" assertion" ))
568
+ assertTimeout(100 )(results(" check1" ))
569
+ assertTimeout(100 )(results(" check2" ))
570
+ assertTimeout(100 )(results(" bar" ))
571
+ assertPass(results(" signal_pass" ))
572
+ assertPass(results(" signal_pass_2" ))
573
+ assertTimeout(100 )(results(" with_monitor" ))
574
+ assertTimeout(100 )(results(" with_result" ))
575
+ assertTimeout(100 )(results(" foo" ))
574
576
}
575
577
}
0 commit comments