mirror of https://github.com/YosysHQ/yosys.git
unescape string tag attribute
This commit is contained in:
parent
54050a8c16
commit
9c255c98b1
|
@ -251,6 +251,14 @@ static const RTLIL::Const verific_const(const char *value, bool allow_string = t
|
|||
return c;
|
||||
}
|
||||
|
||||
static const std::string verific_unescape(const char *value)
|
||||
{
|
||||
std::string val = std::string(value);
|
||||
if (val.size()>1 && val[0]=='\"' && val.back()=='\"')
|
||||
return val.substr(1,val.size()-2);
|
||||
return value;
|
||||
}
|
||||
|
||||
void VerificImporter::import_attributes(dict<RTLIL::IdString, RTLIL::Const> &attributes, DesignObj *obj, Netlist *nl)
|
||||
{
|
||||
MapIter mi;
|
||||
|
@ -1109,13 +1117,13 @@ bool VerificImporter::import_netlist_instance_cells(Instance *inst, RTLIL::IdStr
|
|||
RTLIL::SigSpec sig_set_mask = operatorInport(inst, "set_mask");
|
||||
RTLIL::SigSpec sig_clr_mask = operatorInport(inst, "clr_mask");
|
||||
RTLIL::SigSpec sig_o = operatorOutput(inst);
|
||||
std::string tag = inst->GetAtt("tag") ? inst->GetAttValue("tag") : "";
|
||||
std::string tag = inst->GetAtt("tag") ? verific_unescape(inst->GetAttValue("tag")) : "";
|
||||
module->connect(sig_o, module->SetTag(new_verific_id(inst), tag, sig_expr, sig_set_mask, sig_clr_mask));
|
||||
return true;
|
||||
}
|
||||
if (inst->Type() == OPER_YOSYSHQ_GET_TAG)
|
||||
{
|
||||
std::string tag = inst->GetAtt("tag") ? inst->GetAttValue("tag") : "";
|
||||
std::string tag = inst->GetAtt("tag") ? verific_unescape(inst->GetAttValue("tag")) : "";
|
||||
module->connect(operatorOutput(inst),module->GetTag(new_verific_id(inst), tag, operatorInput(inst)));
|
||||
return true;
|
||||
}
|
||||
|
@ -1124,13 +1132,13 @@ bool VerificImporter::import_netlist_instance_cells(Instance *inst, RTLIL::IdStr
|
|||
RTLIL::SigSpec sig_signal = operatorInport(inst, "signal");
|
||||
RTLIL::SigSpec sig_set_mask = operatorInport(inst, "set_mask");
|
||||
RTLIL::SigSpec sig_clr_mask = operatorInport(inst, "clr_mask");
|
||||
std::string tag = inst->GetAtt("tag") ? inst->GetAttValue("tag") : "";
|
||||
std::string tag = inst->GetAtt("tag") ? verific_unescape(inst->GetAttValue("tag")) : "";
|
||||
module->addOverwriteTag(new_verific_id(inst), tag, sig_signal, sig_set_mask, sig_clr_mask);
|
||||
return true;
|
||||
}
|
||||
if (inst->Type() == OPER_YOSYSHQ_ORIGINAL_TAG)
|
||||
{
|
||||
std::string tag = inst->GetAtt("tag") ? inst->GetAttValue("tag") : "";
|
||||
std::string tag = inst->GetAtt("tag") ? verific_unescape(inst->GetAttValue("tag")) : "";
|
||||
module->connect(operatorOutput(inst),module->OriginalTag(new_verific_id(inst), tag, operatorInput(inst)));
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue