CIRCT
20.0.0git
|
Classes | |
class | CasePattern |
class | CaseDefaultPattern |
class | CaseBitPattern |
class | CaseEnumPattern |
struct | CaseInfo |
class | ProceduralRegion |
Signals that an operations regions are procedural. More... | |
class | ProceduralOp |
This class verifies that the specified op is located in a procedural region. More... | |
class | NonProceduralOp |
This class verifies that the specified op is not located in a procedural region. More... | |
class | VendorExtension |
This class provides a verifier for ops that are expecting their parent to be one of the given parent ops. More... | |
class | Visitor |
Typedefs | |
using | InOutType = circt::hw::InOutType |
Enumerations | |
enum class | CasePatternBit { Zero = 0 , One = 1 , AnyX = 2 , AnyZ = 3 } |
This describes the bit in a pattern, 0/1/x/z. More... | |
Functions | |
bool | hasSVAttributes (mlir::Operation *op) |
Helper functions to handle SV attributes. More... | |
mlir::ArrayAttr | getSVAttributes (mlir::Operation *op) |
Return all the SV attributes of an operation, or null if there are none. More... | |
void | setSVAttributes (mlir::Operation *op, mlir::ArrayAttr attrs) |
Set the SV attributes of an operation. More... | |
void | setSVAttributes (mlir::Operation *op, mlir::ArrayRef< SVAttributeAttr > attrs) |
Set the SV attributes of an operation. More... | |
bool | hasSVAttribute (mlir::Operation *op, SVAttributeAttr attr) |
Check if an op contains a specific SV attribute. More... | |
bool | modifySVAttributes (mlir::Operation *op, llvm::function_ref< void(llvm::SmallVectorImpl< SVAttributeAttr > &)> modifyCallback) |
Modify the list of SV attributes of an operation. More... | |
unsigned | addSVAttributes (mlir::Operation *op, llvm::ArrayRef< SVAttributeAttr > attrs) |
Add a list of SV attributes to an operation. More... | |
unsigned | removeSVAttributes (mlir::Operation *op, llvm::function_ref< bool(SVAttributeAttr)> removeCallback) |
Remove the SV attributes from an operation for which removeCallback returns true. More... | |
unsigned | removeSVAttributes (mlir::Operation *op, llvm::ArrayRef< SVAttributeAttr > attrs) |
Remove a list of SV attributes from an operation. More... | |
llvm::StringRef | resolveKeywordConflict (llvm::StringRef origName, llvm::StringMap< size_t > &nextGeneratedNameIDs, bool caseInsensitiveKeywords) |
Given string origName , generate a new name if it conflicts with any keyword or any other name in the map nextGeneratedNameIDs . More... | |
StringRef | legalizeName (llvm::StringRef name, llvm::StringMap< size_t > &nextGeneratedNameIDs, bool caseInsensitiveKeywords) |
Legalize the specified name for use in SV output. More... | |
bool | isNameValid (llvm::StringRef name, bool caseInsensitiveKeywords) |
Check if a name is valid for use in SV output by only containing characters allowed in SV identifiers. More... | |
bool | isExpression (Operation *op) |
Return true if the specified operation is an expression. More... | |
bool | is2StateExpression (Value v) |
Returns if the expression is known to be 2-state (binary) More... | |
char | getLetter (CasePatternBit bit) |
Return the letter for the specified pattern bit, e.g. "0", "1", "x" or "z". More... | |
LogicalResult | verifyInProceduralRegion (Operation *op) |
Return true if the specified operation is in a procedural region. More... | |
LogicalResult | verifyInNonProceduralRegion (Operation *op) |
Return true if the specified operation is not in a procedural region. More... | |
std::unique_ptr< mlir::Pass > | createPrettifyVerilogPass () |
std::unique_ptr< mlir::Pass > | createHWCleanupPass (bool mergeAlwaysBlocks=true) |
std::unique_ptr< mlir::Pass > | createHWStubExternalModulesPass () |
std::unique_ptr< mlir::Pass > | createHWLegalizeModulesPass () |
std::unique_ptr< mlir::Pass > | createSVTraceIVerilogPass () |
std::unique_ptr< mlir::Pass > | createHWLowerInstanceChoices () |
std::unique_ptr< mlir::Pass > | createHWGeneratorCalloutPass () |
std::unique_ptr< mlir::Pass > | createHWEliminateInOutPortsPass (const HWEliminateInOutPortsOptions &options={}) |
std::unique_ptr< mlir::Pass > | createSVExtractTestCodePass (bool disableInstanceExtraction=false, bool disableRegisterExtraction=false, bool disableModuleInlining=false) |
std::unique_ptr< mlir::Pass > | createHWExportModuleHierarchyPass () |
mlir::Type | getInOutElementType (mlir::Type type) |
Return the element type of an InOutType or null if the operand isn't an InOut type. More... | |
mlir::Type | getAnyHWArrayElementType (mlir::Type type) |
Return the element type of an ArrayType or UnpackedArrayType, or null if the operand isn't an array. More... | |
using circt::sv::InOutType = typedef circt::hw::InOutType |
|
strong |
unsigned circt::sv::addSVAttributes | ( | mlir::Operation * | op, |
llvm::ArrayRef< SVAttributeAttr > | attrs | ||
) |
Add a list of SV attributes to an operation.
The attributes are deduplicated such that only one copy of each attribute is kept on the operation. Returns the number of attributes that were added.
Referenced by applyAttributeAnnotation(), and legalizeHWModule().
std::unique_ptr< Pass > circt::sv::createHWCleanupPass | ( | bool | mergeAlwaysBlocks = true | ) |
Definition at line 252 of file HWCleanup.cpp.
Referenced by circt::firtool::populateHWToSV().
std::unique_ptr< Pass > circt::sv::createHWEliminateInOutPortsPass | ( | const HWEliminateInOutPortsOptions & | options = {} | ) |
Definition at line 237 of file HWEliminateInOutPorts.cpp.
std::unique_ptr< mlir::Pass > circt::sv::createHWExportModuleHierarchyPass | ( | ) |
Definition at line 150 of file HWExportModuleHierarchy.cpp.
Referenced by detail::populatePrepareForExportVerilog().
std::unique_ptr< Pass > circt::sv::createHWGeneratorCalloutPass | ( | ) |
Definition at line 171 of file GeneratorCallout.cpp.
std::unique_ptr< Pass > circt::sv::createHWLegalizeModulesPass | ( | ) |
Definition at line 425 of file HWLegalizeModules.cpp.
Referenced by detail::populatePrepareForExportVerilog().
std::unique_ptr<mlir::Pass> circt::sv::createHWLowerInstanceChoices | ( | ) |
std::unique_ptr< Pass > circt::sv::createHWStubExternalModulesPass | ( | ) |
Definition at line 65 of file HWStubExternalModules.cpp.
std::unique_ptr< Pass > circt::sv::createPrettifyVerilogPass | ( | ) |
Definition at line 582 of file PrettifyVerilog.cpp.
Referenced by detail::populatePrepareForExportVerilog().
std::unique_ptr< Pass > circt::sv::createSVExtractTestCodePass | ( | bool | disableInstanceExtraction = false , |
bool | disableRegisterExtraction = false , |
||
bool | disableModuleInlining = false |
||
) |
Definition at line 883 of file SVExtractTestCode.cpp.
Referenced by circt::firtool::populateHWToSV().
std::unique_ptr< Pass > circt::sv::createSVTraceIVerilogPass | ( | ) |
Definition at line 81 of file SVTraceIVerilog.cpp.
mlir::Type circt::sv::getAnyHWArrayElementType | ( | mlir::Type | type | ) |
Return the element type of an ArrayType or UnpackedArrayType, or null if the operand isn't an array.
mlir::Type circt::sv::getInOutElementType | ( | mlir::Type | type | ) |
Return the element type of an InOutType or null if the operand isn't an InOut type.
Definition at line 42 of file SVTypes.cpp.
char circt::sv::getLetter | ( | CasePatternBit | bit | ) |
mlir::ArrayAttr circt::sv::getSVAttributes | ( | mlir::Operation * | op | ) |
Return all the SV attributes of an operation, or null if there are none.
All array elements are SVAttributeAttr
.
Referenced by hasSVAttribute().
|
inline |
Check if an op contains a specific SV attribute.
Definition at line 43 of file SVAttributes.h.
References getSVAttributes().
bool circt::sv::hasSVAttributes | ( | mlir::Operation * | op | ) |
Helper functions to handle SV attributes.
bool circt::sv::is2StateExpression | ( | Value | v | ) |
Returns if the expression is known to be 2-state (binary)
Return true if the specified expression is 2-state.
This is determined by looking at the defining op. This can look as far through the dataflow as it wants, but for now, it is just looking at the single value.
bool circt::sv::isExpression | ( | Operation * | op | ) |
bool circt::sv::isNameValid | ( | llvm::StringRef | name, |
bool | caseInsensitiveKeywords | ||
) |
Check if a name is valid for use in SV output by only containing characters allowed in SV identifiers.
Call legalizeName()
to obtain a legal version of the name. If caseInsensitive
is true, then the check will be done case insensitively.
Referenced by circt::ExportVerilog::FieldNameResolver::getRenamedFieldName(), and circt::ExportVerilog::GlobalNameResolver::GlobalNameResolver().
StringRef circt::sv::legalizeName | ( | llvm::StringRef | name, |
llvm::StringMap< size_t > & | nextGeneratedNameIDs, | ||
bool | caseInsensitiveKeywords | ||
) |
Legalize the specified name for use in SV output.
Auto-uniquifies the name through resolveKeywordConflict
if required. If the name is empty, a unique temp name is created.
Referenced by circt::ExportVerilog::NameCollisionResolver::getLegalName(), and circt::ExportVerilog::FieldNameResolver::getRenamedFieldName().
bool circt::sv::modifySVAttributes | ( | mlir::Operation * | op, |
llvm::function_ref< void(llvm::SmallVectorImpl< SVAttributeAttr > &)> | modifyCallback | ||
) |
Modify the list of SV attributes of an operation.
This function offers a read-modify-write interface where the callback can modify the list of attributes how it sees fit. Returns true if any modifications occurred.
unsigned circt::sv::removeSVAttributes | ( | mlir::Operation * | op, |
llvm::ArrayRef< SVAttributeAttr > | attrs | ||
) |
Remove a list of SV attributes from an operation.
Returns the number of attributes actually removed.
unsigned circt::sv::removeSVAttributes | ( | mlir::Operation * | op, |
llvm::function_ref< bool(SVAttributeAttr)> | removeCallback | ||
) |
Remove the SV attributes from an operation for which removeCallback
returns true.
Returns the number of attributes actually removed.
llvm::StringRef circt::sv::resolveKeywordConflict | ( | llvm::StringRef | origName, |
llvm::StringMap< size_t > & | nextGeneratedNameIDs, | ||
bool | caseInsensitiveKeywords | ||
) |
Given string origName
, generate a new name if it conflicts with any keyword or any other name in the map nextGeneratedNameIDs
.
Use the value of nextGeneratedNameIDs
as a counter for suffix. Update the nextGeneratedNameIDs
with the generated name and return the StringRef. If is
true, then check against the reserved keywords in a case insensitive manner.
void circt::sv::setSVAttributes | ( | mlir::Operation * | op, |
mlir::ArrayAttr | attrs | ||
) |
Set the SV attributes of an operation.
If attrs
is null or contains no attributes, the attribute is removed from the op.
Referenced by fixUpEmptyModules(), getMemoryRead(), and PlusArgsValueLowering::matchAndRewrite().
void circt::sv::setSVAttributes | ( | mlir::Operation * | op, |
mlir::ArrayRef< SVAttributeAttr > | attrs | ||
) |
Set the SV attributes of an operation.
If attrs
is empty the attribute is removed from the op. The attributes are deduplicated such that only one copy of each attribute is kept on the operation.
LogicalResult circt::sv::verifyInNonProceduralRegion | ( | Operation * | op | ) |
Return true if the specified operation is not in a procedural region.
Definition at line 63 of file SVOps.cpp.
Referenced by circt::sv::NonProceduralOp< ConcreteType >::verifyTrait().
LogicalResult circt::sv::verifyInProceduralRegion | ( | Operation * | op | ) |
Return true if the specified operation is in a procedural region.
Definition at line 56 of file SVOps.cpp.
Referenced by circt::sv::ProceduralOp< ConcreteType >::verifyTrait().