Skip to content

Commit

Permalink
Merge pull request #3611 from alainmarcel/alainmarcel-patch-1
Browse files Browse the repository at this point in the history
interface binding
  • Loading branch information
alaindargelas committed Apr 24, 2023
2 parents e932b42 + 7bff6de commit a1d4bb0
Show file tree
Hide file tree
Showing 26 changed files with 690 additions and 170 deletions.
19 changes: 19 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -1857,6 +1857,25 @@
"ignoreFailures": true
}
]
},
{
"name": "YosysVerx",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/dbuild/bin/surelog",
"args": ["-f", "YosysVerx.sl"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/third_party/tests/YosysVerx",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
50 changes: 30 additions & 20 deletions src/DesignCompile/UhdmWriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1932,11 +1932,6 @@ bool UhdmWriter::writeElabGenScope(Serializer& s, ModuleInstance* instance,
}
}

if (mod) {
lateTypedefBinding(s, mod, m, componentMap);
lateBinding(s, mod, m, componentMap);
}

return true;
}

Expand Down Expand Up @@ -2893,7 +2888,27 @@ void UhdmWriter::lateBinding(UHDM::Serializer& s, DesignComponent* mod,
parent = parent->VpiParent();
}
if (ref->Actual_group()) continue;

if (m->UhdmType() == uhdmmodule_inst) {
module_inst* minst = (module_inst*)m;
if (minst->Interfaces()) {
for (auto n : *minst->Interfaces()) {
if (n->VpiName() == name) {
ref->Actual_group(n);
break;
}
}
if (ref->Actual_group()) continue;
}
if (minst->Interface_arrays()) {
for (auto n : *minst->Interface_arrays()) {
if (n->VpiName() == name) {
ref->Actual_group(n);
break;
}
}
if (ref->Actual_group()) continue;
}
}
if (m->UhdmType() == uhdmmodule_inst ||
m->UhdmType() == uhdminterface_inst || m->UhdmType() == uhdmprogram) {
instance* inst = (instance*)m;
Expand Down Expand Up @@ -3200,13 +3215,6 @@ bool UhdmWriter::writeElabModule(Serializer& s, ModuleInstance* instance,
}
}
}

if (mod) {
lateTypedefBinding(s, mod, m, componentMap);
lateBinding(s, mod, m, componentMap);
lateTypedefBinding(s, mod, m, componentMap);
}

return true;
}

Expand Down Expand Up @@ -3379,12 +3387,6 @@ bool UhdmWriter::writeElabInterface(Serializer& s, ModuleInstance* instance,
}
}
}

if (mod) {
lateTypedefBinding(s, mod, m, componentMap);
lateBinding(s, mod, m, componentMap);
}

return true;
}

Expand Down Expand Up @@ -3452,7 +3454,6 @@ void UhdmWriter::writeInstance(ModuleDefinition* mod, ModuleInstance* instance,
VectorOfprimitive* subPrimitives = nullptr;
VectorOfprimitive_array* subPrimitiveArrays = nullptr;
VectorOfgen_scope_array* subGenScopeArrays = nullptr;

if (m->UhdmType() == uhdmmodule_inst) {
writeElabModule(s, instance, (module_inst*)m, exprBuilder);
} else if (m->UhdmType() == uhdmgen_scope) {
Expand Down Expand Up @@ -3796,6 +3797,15 @@ void UhdmWriter::writeInstance(ModuleDefinition* mod, ModuleInstance* instance,
}
}
}

if (mod && netlist) {
scope* sc = dynamic_cast<scope*>(m);
if (sc) {
lateTypedefBinding(s, mod, sc, componentMap);
lateBinding(s, mod, sc, componentMap);
lateTypedefBinding(s, mod, sc, componentMap);
}
}
}

vpiHandle UhdmWriter::write(PathId uhdmFileId) {
Expand Down
Loading

0 comments on commit a1d4bb0

Please sign in to comment.