| 86 | } |
| 87 | |
| 88 | bool CompileModule::compile() { |
| 89 | const FileContent* const fC = m_module->m_fileContents[0]; |
| 90 | NodeId nodeId = m_module->m_nodeIds[0]; |
| 91 | Location loc(fC->getFileId(nodeId), fC->Line(nodeId), fC->Column(nodeId), |
| 92 | m_symbols->registerSymbol(m_module->getName())); |
| 93 | VObjectType moduleType = fC->Type(nodeId); |
| 94 | ErrorDefinition::ErrorType errType = ErrorDefinition::COMP_COMPILE_MODULE; |
| 95 | switch (moduleType) { |
| 96 | case VObjectType::paLoop_generate_construct: |
| 97 | case VObjectType::paConditional_generate_construct: |
| 98 | case VObjectType::paGenerate_begin_end_block: |
| 99 | case VObjectType::paGenerate_item: |
| 100 | case VObjectType::paGenerate_module_conditional_statement: |
| 101 | case VObjectType::paGenerate_module_loop_statement: |
| 102 | case VObjectType::paGenerate_module_block: |
| 103 | case VObjectType::paGenerate_module_item: |
| 104 | case VObjectType::paGenerate_module_named_block: |
| 105 | case VObjectType::paGenerate_interface_conditional_statement: |
| 106 | case VObjectType::paGenerate_interface_loop_statement: |
| 107 | case VObjectType::paGenerate_interface_block: |
| 108 | case VObjectType::paGenerate_interface_item: |
| 109 | case VObjectType::paGenerate_interface_named_block: |
| 110 | case VObjectType::paGenerate_region: |
| 111 | errType = ErrorDefinition::COMP_COMPILE_GENERATE_BLOCK; |
| 112 | break; |
| 113 | case VObjectType::paInterface_declaration: |
| 114 | errType = ErrorDefinition::COMP_COMPILE_INTERFACE; |
| 115 | break; |
| 116 | case VObjectType::paUdp_declaration: |
| 117 | errType = ErrorDefinition::COMP_COMPILE_UDP; |
| 118 | break; |
| 119 | case VObjectType::paChecker_declaration: |
| 120 | errType = ErrorDefinition::COMP_COMPILE_CHECKER; |
| 121 | break; |
| 122 | default: |
| 123 | break; |
| 124 | } |
| 125 | |
| 126 | m_module->setDesignElement(fC->getDesignElement(m_module->getName())); |
| 127 | |
| 128 | CommandLineParser* clp = |
| 129 | m_compileDesign->getCompiler()->getCommandLineParser(); |
| 130 | auto& blackboxModules = clp->getBlackBoxModules(); |
| 131 | bool skipModule = false; |
| 132 | std::string libName; |
| 133 | if (!m_module->getFileContents().empty()) |
| 134 | libName = m_module->getFileContents()[0]->getLibrary()->getName(); |
| 135 | const std::string_view modName = m_module->getName(); |
| 136 | if (blackboxModules.find(modName) != blackboxModules.end()) { |
| 137 | errType = ErrorDefinition::COMP_SKIPPING_BLACKBOX_MODULE; |
| 138 | skipModule = true; |
| 139 | } |
| 140 | auto& blackboxInstances = clp->getBlackBoxInstances(); |
| 141 | std::string instanceName; |
| 142 | if (m_instance) { |
| 143 | if (ModuleInstance* inst = |
| 144 | valuedcomponenti_cast<ModuleInstance*>(m_instance)) { |
| 145 | instanceName = inst->getFullPathName(); |
no test coverage detected