MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / elaborationSystemTask

Method elaborationSystemTask

src/DesignCompile/CompileHelper.cpp:5450–5495  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5448}
5449
5450bool CompileHelper::elaborationSystemTask(DesignComponent* component,
5451 const FileContent* fC, NodeId id,
5452 CompileDesign* compileDesign) {
5453 NodeId taskNameId = fC->Child(id);
5454 NodeId NumberOrArgList = fC->Sibling(taskNameId);
5455 NodeId ArgList = NumberOrArgList;
5456 if (fC->Type(ArgList) != VObjectType::paList_of_arguments) {
5457 ArgList = fC->Sibling(ArgList);
5458 }
5459 NodeId Expression = fC->Child(ArgList);
5460 NodeId Primary = fC->Child(Expression);
5461 NodeId Primary_literal = fC->Child(Primary);
5462 NodeId StringId = fC->Child(Primary_literal);
5463 std::string_view text = fC->SymName(StringId);
5464 std::string_view name = fC->SymName(taskNameId);
5465 Serializer& s = compileDesign->getSerializer();
5466 UHDM::sys_task_call* scall = s.MakeSys_task_call();
5467 fC->populateCoreMembers(id, id, scall);
5468 scall->VpiName(name);
5469 VectorOfany* args = s.MakeAnyVec();
5470 scall->Tf_call_args(args);
5471 constant* c = s.MakeConstant();
5472 args->push_back(c);
5473 c->VpiValue(std::string("STRING:") + std::string(text));
5474 c->VpiDecompile(text);
5475 c->VpiConstType(vpiStringConst);
5476 component->addElabSysCall(scall);
5477 Location loc(fC->getFileId(id), fC->Line(id), fC->Column(id),
5478 m_symbols->registerSymbol(text));
5479 if (name == "fatal") {
5480 Error err(ErrorDefinition::ELAB_SYSTEM_FATAL, loc);
5481 m_errors->addError(err);
5482 } else if (name == "error") {
5483 Error err(ErrorDefinition::ELAB_SYSTEM_ERROR, loc);
5484 m_errors->addError(err);
5485 }
5486 if (name == "warning") {
5487 Error err(ErrorDefinition::ELAB_SYSTEM_WARNING, loc);
5488 m_errors->addError(err);
5489 }
5490 if (name == "info") {
5491 Error err(ErrorDefinition::ELAB_SYSTEM_INFO, loc);
5492 m_errors->addError(err);
5493 }
5494 return true;
5495}
5496
5497} // namespace SURELOG

Callers 2

collectModuleObjects_Method · 0.80

Calls 11

populateCoreMembersMethod · 0.80
addElabSysCallMethod · 0.80
ChildMethod · 0.45
SiblingMethod · 0.45
TypeMethod · 0.45
SymNameMethod · 0.45
getFileIdMethod · 0.45
LineMethod · 0.45
ColumnMethod · 0.45
registerSymbolMethod · 0.45
addErrorMethod · 0.45

Tested by

no test coverage detected