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 # [
|
ReferableDeclOp<mnemonic, traits # [
|
||||||
ParentOneOf<[
|
ParentOneOf<[
|
||||||
"firrtl::FModuleOp", "firrtl::LayerBlockOp",
|
"firrtl::FModuleOp", "firrtl::LayerBlockOp",
|
||||||
"firrtl::WhenOp", "firrtl::MatchOp"]>]> {}
|
"firrtl::WhenOp", "firrtl::MatchOp", "sv::IfDefOp"]>]> {}
|
||||||
|
|
||||||
def InstanceOp : HardwareDeclOp<"instance", [
|
def InstanceOp : HardwareDeclOp<"instance", [
|
||||||
DeclareOpInterfaceMethods<FInstanceLike>,
|
DeclareOpInterfaceMethods<FInstanceLike>,
|
||||||
|
|
|
@ -39,7 +39,8 @@ def FIRRTLDialect : Dialect {
|
||||||
|
|
||||||
let dependentDialects = [
|
let dependentDialects = [
|
||||||
"circt::hw::HWDialect",
|
"circt::hw::HWDialect",
|
||||||
"circt::om::OMDialect"
|
"circt::om::OMDialect",
|
||||||
|
"circt::sv::SVDialect"
|
||||||
];
|
];
|
||||||
|
|
||||||
let extraClassDeclaration = [{
|
let extraClassDeclaration = [{
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "circt/Dialect/HW/HWOpInterfaces.h"
|
#include "circt/Dialect/HW/HWOpInterfaces.h"
|
||||||
#include "circt/Dialect/HW/HWTypes.h"
|
#include "circt/Dialect/HW/HWTypes.h"
|
||||||
#include "circt/Dialect/HW/InnerSymbolTable.h"
|
#include "circt/Dialect/HW/InnerSymbolTable.h"
|
||||||
|
#include "circt/Dialect/SV/SVOps.h"
|
||||||
#include "circt/Dialect/Seq/SeqAttributes.h"
|
#include "circt/Dialect/Seq/SeqAttributes.h"
|
||||||
#include "circt/Support/FieldRef.h"
|
#include "circt/Support/FieldRef.h"
|
||||||
#include "circt/Support/InstanceGraph.h"
|
#include "circt/Support/InstanceGraph.h"
|
||||||
|
|
|
@ -45,6 +45,7 @@ add_circt_dialect_library(CIRCTFIRRTL
|
||||||
CIRCTHW
|
CIRCTHW
|
||||||
CIRCTOM
|
CIRCTOM
|
||||||
CIRCTSeq
|
CIRCTSeq
|
||||||
|
CIRCTSV
|
||||||
MLIRIR
|
MLIRIR
|
||||||
MLIRPass
|
MLIRPass
|
||||||
)
|
)
|
||||||
|
|
|
@ -279,7 +279,7 @@ firrtl.circuit "Foo" {
|
||||||
|
|
||||||
firrtl.circuit "Foo" {
|
firrtl.circuit "Foo" {
|
||||||
firrtl.extmodule @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()
|
firrtl.instance "" @Foo()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1829,7 +1829,7 @@ firrtl.circuit "ClassCannotHaveHardwarePorts" {
|
||||||
firrtl.circuit "ClassCannotHaveWires" {
|
firrtl.circuit "ClassCannotHaveWires" {
|
||||||
firrtl.module @ClassCannotHaveWires() {}
|
firrtl.module @ClassCannotHaveWires() {}
|
||||||
firrtl.class @ClassWithWire() {
|
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>
|
%w = firrtl.wire : !firrtl.uint<8>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue