@@ -28,12 +28,12 @@ class PlusOneModule extends Module {
28
28
io.out := io.in + 1 .asUInt
29
29
}
30
30
31
- class RawModuleWithImpliitModule extends RawModule {
31
+ class RawModuleWithImplicitModule extends RawModule {
32
32
val in = IO (Input (UInt (32 .W )))
33
33
val out = IO (Output (UInt (32 .W )))
34
34
val clk = IO (Input (Clock ()))
35
35
val rst = IO (Input (Bool ()))
36
-
36
+
37
37
withClockAndReset(clk, rst) {
38
38
val plusModule = Module (new PlusOneModule )
39
39
plusModule.io.in := in
@@ -42,24 +42,46 @@ class RawModuleWithImpliitModule extends RawModule {
42
42
}
43
43
44
44
class ImplicitModuleInRawModuleTester extends BasicTester {
45
- val plusModule = Module (new RawModuleWithImpliitModule )
45
+ val plusModule = Module (new RawModuleWithImplicitModule )
46
46
plusModule.clk := clock
47
47
plusModule.rst := reset
48
48
plusModule.in := 42 .U
49
49
assert(plusModule.out === 43 .U )
50
50
stop()
51
51
}
52
52
53
+ class RawModuleWithDirectImplicitModule extends RawModule {
54
+ val plusModule = Module (new PlusOneModule )
55
+ }
56
+
57
+ class ImplicitModuleDirectlyInRawModuleTester extends BasicTester {
58
+ val plusModule = Module (new RawModuleWithDirectImplicitModule )
59
+ stop()
60
+ }
61
+
53
62
class RawModuleSpec extends ChiselFlatSpec {
54
63
" RawModule" should " elaborate" in {
55
- elaborate { new RawModuleWithImpliitModule }
64
+ elaborate { new RawModuleWithImplicitModule }
56
65
}
57
-
66
+
58
67
" RawModule" should " work" in {
59
68
assertTesterPasses({ new RawModuleTester })
60
69
}
61
-
70
+
62
71
" ImplicitModule in a withClock block in a RawModule" should " work" in {
63
72
assertTesterPasses({ new ImplicitModuleInRawModuleTester })
64
73
}
65
- }
74
+
75
+
76
+ " ImplicitModule directly in a RawModule" should " fail" in {
77
+ intercept[chisel3.internal.ChiselException ] {
78
+ elaborate { new RawModuleWithDirectImplicitModule }
79
+ }
80
+ }
81
+
82
+ " ImplicitModule directly in a RawModule in an ImplicitModule" should " fail" in {
83
+ intercept[chisel3.internal.ChiselException ] {
84
+ elaborate { new ImplicitModuleDirectlyInRawModuleTester }
85
+ }
86
+ }
87
+ }
0 commit comments