mirror of https://github.com/llvm/circt.git
Allow firrtl hardware ops under sv.ifdef (#7309)
This commit is contained in:
parent
961bad58f4
commit
cdfcd96664
|
@ -38,7 +38,7 @@ class HardwareDeclOp<string mnemonic, list <Trait> traits = []> :
|
|||
ReferableDeclOp<mnemonic, traits # [
|
||||
ParentOneOf<[
|
||||
"firrtl::FModuleOp", "firrtl::LayerBlockOp",
|
||||
"firrtl::WhenOp", "firrtl::MatchOp"]>]> {}
|
||||
"firrtl::WhenOp", "firrtl::MatchOp", "sv::IfDefOp"]>]> {}
|
||||
|
||||
def InstanceOp : HardwareDeclOp<"instance", [
|
||||
DeclareOpInterfaceMethods<FInstanceLike>,
|
||||
|
|
|
@ -39,7 +39,8 @@ def FIRRTLDialect : Dialect {
|
|||
|
||||
let dependentDialects = [
|
||||
"circt::hw::HWDialect",
|
||||
"circt::om::OMDialect"
|
||||
"circt::om::OMDialect",
|
||||
"circt::sv::SVDialect"
|
||||
];
|
||||
|
||||
let extraClassDeclaration = [{
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "circt/Dialect/HW/HWOpInterfaces.h"
|
||||
#include "circt/Dialect/HW/HWTypes.h"
|
||||
#include "circt/Dialect/HW/InnerSymbolTable.h"
|
||||
#include "circt/Dialect/SV/SVOps.h"
|
||||
#include "circt/Dialect/Seq/SeqAttributes.h"
|
||||
#include "circt/Support/FieldRef.h"
|
||||
#include "circt/Support/InstanceGraph.h"
|
||||
|
|
|
@ -45,6 +45,7 @@ add_circt_dialect_library(CIRCTFIRRTL
|
|||
CIRCTHW
|
||||
CIRCTOM
|
||||
CIRCTSeq
|
||||
CIRCTSV
|
||||
MLIRIR
|
||||
MLIRPass
|
||||
)
|
||||
|
|
|
@ -279,7 +279,7 @@ firrtl.circuit "Foo" {
|
|||
|
||||
firrtl.circuit "Foo" {
|
||||
firrtl.extmodule @Foo()
|
||||
// expected-error @+1 {{'firrtl.instance' op expects parent op to be one of 'firrtl.module, firrtl.layerblock, firrtl.when, firrtl.match'}}
|
||||
// expected-error @+1 {{'firrtl.instance' op expects parent op to be one of 'firrtl.module, firrtl.layerblock, firrtl.when, firrtl.match, sv.ifdef'}}
|
||||
firrtl.instance "" @Foo()
|
||||
}
|
||||
|
||||
|
@ -1829,7 +1829,7 @@ firrtl.circuit "ClassCannotHaveHardwarePorts" {
|
|||
firrtl.circuit "ClassCannotHaveWires" {
|
||||
firrtl.module @ClassCannotHaveWires() {}
|
||||
firrtl.class @ClassWithWire() {
|
||||
// expected-error @below {{'firrtl.wire' op expects parent op to be one of 'firrtl.module, firrtl.layerblock, firrtl.when, firrtl.match'}}
|
||||
// expected-error @below {{'firrtl.wire' op expects parent op to be one of 'firrtl.module, firrtl.layerblock, firrtl.when, firrtl.match, sv.ifdef'}}
|
||||
%w = firrtl.wire : !firrtl.uint<8>
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue