'emit' Dialect
Types and operations for the emit
dialect
The emit
dialect is intended to model the structure of the emitted RTL.
It organizes the files, file lists, directories and collateral.
Operations
emit.file
(::circt::emit::FileOp)
Represents the contents of an emitted file
Syntax:
operation ::= `emit.file` $file_name (`sym` $sym_name^)? $bodyRegion attr-dict
This operation groups a set of nested operations to be emitted to a file.
Other operations (such as file lists)can reference a file to access its filename through an optional symbol.
Traits: IsolatedFromAbove
, NoRegionArguments
, NoTerminator
, SingleBlock
Interfaces: Symbol
Attributes:
Attribute | MLIR Type | Description |
---|---|---|
file_name | ::mlir::StringAttr | string attribute |
sym_name | ::mlir::StringAttr | string attribute |
emit.file_list
(::circt::emit::FileListOp)
Represents a file list
Syntax:
operation ::= `emit.file_list` $file_name `,` $files (`sym` $sym_name^)? attr-dict
This operation emits a file list referencing a set of files.
File lists can be references from other ops (including other file lists) through an optional symbol.
Interfaces: SymbolUserOpInterface
, Symbol
Attributes:
Attribute | MLIR Type | Description |
---|---|---|
file_name | ::mlir::StringAttr | string attribute |
files | ::mlir::ArrayAttr | flat symbol ref array attribute |
sym_name | ::mlir::StringAttr | string attribute |
emit.fragment
(::circt::emit::FragmentOp)
Emittable fragment which can be replicated before modules
Syntax:
operation ::= `emit.fragment` $sym_name $bodyRegion attr-dict
The fragment operation is a container for other operations that can
be emitted before other operations. It carries a symbol that can be
referenced by an emit.fragments
attribute placed on operations before
which the fragments should be inserted.
In single-file mode, each fragment is emitted once. In split file emission mode, fragments precede all operations that reference them, but are still emitted at most once per file.
Traits: HasParent<mlir::ModuleOp>
, IsolatedFromAbove
, NoRegionArguments
, NoTerminator
, SingleBlock
Interfaces: Symbol
Attributes:
Attribute | MLIR Type | Description |
---|---|---|
sym_name | ::mlir::StringAttr | string attribute |
emit.ref
(::circt::emit::RefOp)
Print a referenced SV operation inline into the file
Syntax:
operation ::= `emit.ref` $target attr-dict
The emit.ref
operation targets an op via a symbol, emitting its
contents into the file it is part of. The set of targetable
operations and the emission rules are defined in ExportVerilog.
Traits: HasParent<circt::emit::FileOp>
Interfaces: SymbolUserOpInterface
Attributes:
Attribute | MLIR Type | Description |
---|---|---|
target | ::mlir::FlatSymbolRefAttr | flat symbol reference attribute |
emit.verbatim
(::circt::emit::VerbatimOp)
Verbatim opaque text emitted inline.
Syntax:
operation ::= `emit.verbatim` $text attr-dict
This operation produces opaque text inline in the file.
emit.verbatim
allows symbol reference substitutions with {{0}} syntax.
Traits: HasParent<circt::emit::FileOp>
Attributes:
Attribute | MLIR Type | Description |
---|---|---|
text | ::mlir::StringAttr | string attribute |