@@ -3143,3 +3143,58 @@ firrtl.circuit "NonPropertyTypeInDomainField" {
31433143 firrtl.domain @Foo [" bar" , !firrtl.uint <1 >]
31443144 firrtl.module @NonPropertyTypeInDomainField () {}
31453145}
3146+
3147+ // -----
3148+
3149+ firrtl.circuit " WrongInstanceDomainInfo" {
3150+ firrtl.domain @ClockDomain
3151+ // expected-note @below {{original module declared here}}
3152+ firrtl.module @Foo (in %a: !firrtl.uint <1 >) {}
3153+ firrtl.module @WrongInstanceDomainInfo () {
3154+ // expected-error @below {{'firrtl.instance' op has a wrong number of port domain info attributes; expected 1, got 0}}
3155+ %a = firrtl.instance foo {domainInfo = []} @Foo (in a : !firrtl.uint <1 >)
3156+ }
3157+ }
3158+
3159+ // -----
3160+
3161+ firrtl.circuit " WrongInstanceDomainInfo" {
3162+ firrtl.domain @ClockDomain
3163+ // expected-note @below {{original module declared here}}
3164+ firrtl.module @Foo (
3165+ in %A : !firrtl.domain of @ClockDomain ,
3166+ in %B : !firrtl.domain of @ClockDomain ,
3167+ in %a : !firrtl.uint <1 > domains [%A ]
3168+ ) {}
3169+ firrtl.module @WrongInstanceDomainInfo () {
3170+ // expected-error @below {{op domain info for "a" must be [0 : ui32], but got [1 : ui32]}}
3171+ %foo_A , %foo_B , %foo_a = firrtl.instance foo @Foo (
3172+ in A : !firrtl.domain of @ClockDomain ,
3173+ in B : !firrtl.domain of @ClockDomain ,
3174+ in a : !firrtl.uint <1 > domains [B ]
3175+ )
3176+ }
3177+ }
3178+
3179+ // -----
3180+
3181+ firrtl.circuit " WrongInstanceChoiceDomainInfo" {
3182+ firrtl.option @Platform {
3183+ firrtl.option_case @FPGA
3184+ }
3185+ firrtl.domain @ClockDomain
3186+ // expected-note @below {{original module declared here}}
3187+ firrtl.module @Foo (
3188+ in %A : !firrtl.domain of @ClockDomain ,
3189+ in %B : !firrtl.domain of @ClockDomain ,
3190+ in %a : !firrtl.uint <1 > domains [%A ]
3191+ ) {}
3192+ firrtl.module @WrongInstanceChoiceDomainInfo () {
3193+ // expected-error @below {{op domain info for "a" must be [0 : ui32], but got [1 : ui32]}}
3194+ %foo_A , %foo_B , %foo_a = firrtl.instance_choice foo @Foo alternatives @Platform { @FPGA -> @Foo } (
3195+ in A : !firrtl.domain of @ClockDomain ,
3196+ in B : !firrtl.domain of @ClockDomain ,
3197+ in a : !firrtl.uint <1 > domains [B ]
3198+ )
3199+ }
3200+ }
0 commit comments