|
CIRCT 24.0.0git
|
This class keeps track of modules and interfaces that need to be renamed, as well as module ports, parameters, declarations and verif labels that need to be renamed. More...

Public Member Functions | |
| GlobalNameResolver (mlir::ModuleOp topLevel, const LoweringOptions &options) | |
| Construct a GlobalNameResolver and perform name legalization of the module/interfaces, port/parameter and declaration names. | |
| GlobalNameTable | takeGlobalNameTable () |
Private Member Functions | |
| void | legalizeModuleNames (HWModuleOp module) |
| Check to see if the port names of the specified module conflict with keywords or themselves. | |
| void | legalizeInterfaceNames (InterfaceOp interface) |
| void | legalizePackageNames (PackageOp package) |
| void | legalizeFunctionNames (FuncOp func) |
| void | gatherEnumPrefixes (mlir::ModuleOp topLevel) |
| GlobalNameResolver (const GlobalNameResolver &)=delete | |
| void | operator= (const GlobalNameResolver &)=delete |
Private Attributes | |
| NameCollisionResolver | globalNameResolver |
| Set of globally visible names, to ensure uniqueness. | |
| GlobalNameTable | globalNameTable |
| This keeps track of globally visible names like module parameters. | |
| const LoweringOptions & | options |
This class keeps track of modules and interfaces that need to be renamed, as well as module ports, parameters, declarations and verif labels that need to be renamed.
This can happen either due to conflicts between them or due to a conflict with a Verilog keyword.
Once constructed, this is immutable.
Definition at line 127 of file LegalizeNames.cpp.
| GlobalNameResolver::GlobalNameResolver | ( | mlir::ModuleOp | topLevel, |
| const LoweringOptions & | options | ||
| ) |
Construct a GlobalNameResolver and perform name legalization of the module/interfaces, port/parameter and declaration names.
Construct a GlobalNameResolver and do the initial scan to populate and unique the module/interfaces and port/parameter names.
Definition at line 269 of file LegalizeNames.cpp.
References circt::LoweringOptions::caseInsensitiveKeywords, gatherEnumPrefixes(), circt::hw::getVerilogModuleNameAttr(), globalNameResolver, globalNameTable, circt::ExportVerilog::NameCollisionResolver::insertUsedName(), circt::sv::isNameValid(), legalizeInterfaceNames(), legalizeModuleNames(), legalizePackageNames(), options, and circt::ExportVerilog::GlobalNameTable::reservedNames.
|
privatedelete |
|
private |
Definition at line 352 of file LegalizeNames.cpp.
References circt::ExportVerilog::GlobalNameTable::enumPrefixes, and globalNameTable.
Referenced by GlobalNameResolver().
|
private |
Definition at line 409 of file LegalizeNames.cpp.
References circt::ExportVerilog::NameCollisionResolver::getLegalName(), globalNameResolver, and circt::ExportVerilog::NameCollisionResolver::insertUsedName().
|
private |
Definition at line 390 of file LegalizeNames.cpp.
References circt::ExportVerilog::NameCollisionResolver::getLegalName(), globalNameResolver, and options.
Referenced by GlobalNameResolver().
|
private |
Check to see if the port names of the specified module conflict with keywords or themselves.
If so, add the replacement names to globalNameTable.
Definition at line 371 of file LegalizeNames.cpp.
References circt::ExportVerilog::GlobalNameTable::addRenamedParam(), circt::ExportVerilog::NameCollisionResolver::getLegalName(), globalNameResolver, globalNameTable, and options.
Referenced by GlobalNameResolver().
|
private |
Definition at line 323 of file LegalizeNames.cpp.
References circt::ExportVerilog::GlobalNameTable::addReservedNames(), circt::ExportVerilog::NameCollisionResolver::getLegalName(), circt::ExportVerilog::getSymOpName(), globalNameResolver, globalNameTable, options, and circt::ExportVerilog::GlobalNameTable::packageEnumFields.
Referenced by GlobalNameResolver().
|
privatedelete |
|
inline |
Definition at line 133 of file LegalizeNames.cpp.
Referenced by circt::ExportVerilog::legalizeGlobalNames().
|
private |
Set of globally visible names, to ensure uniqueness.
Definition at line 148 of file LegalizeNames.cpp.
Referenced by GlobalNameResolver(), legalizeFunctionNames(), legalizeInterfaceNames(), legalizeModuleNames(), and legalizePackageNames().
|
private |
This keeps track of globally visible names like module parameters.
Definition at line 151 of file LegalizeNames.cpp.
Referenced by gatherEnumPrefixes(), GlobalNameResolver(), legalizeModuleNames(), and legalizePackageNames().
|
private |
Definition at line 157 of file LegalizeNames.cpp.
Referenced by GlobalNameResolver(), legalizeInterfaceNames(), legalizeModuleNames(), and legalizePackageNames().