diff --git a/dependency_support/at_clifford_yosys/at_clifford_yosys.bzl b/dependency_support/at_clifford_yosys/at_clifford_yosys.bzl index 1e88f572..e040f86a 100644 --- a/dependency_support/at_clifford_yosys/at_clifford_yosys.bzl +++ b/dependency_support/at_clifford_yosys/at_clifford_yosys.bzl @@ -29,5 +29,6 @@ def at_clifford_yosys(): build_file = Label("@rules_hdl//dependency_support:at_clifford_yosys/bundled.BUILD.bazel"), patches = [ Label("@rules_hdl//dependency_support:at_clifford_yosys/yosys.patch"), + Label("@rules_hdl//dependency_support:at_clifford_yosys/autoname.patch"), ], ) diff --git a/dependency_support/at_clifford_yosys/autoname.patch b/dependency_support/at_clifford_yosys/autoname.patch new file mode 100644 index 00000000..98c5de7e --- /dev/null +++ b/dependency_support/at_clifford_yosys/autoname.patch @@ -0,0 +1,36 @@ +diff --git a/passes/cmds/autoname.cc b/passes/cmds/autoname.cc +index 737bd3e58..474303263 100644 +--- passes/cmds/autoname.cc ++++ passes/cmds/autoname.cc +@@ -34,8 +34,13 @@ int autoname_worker(Module *module, const dict& wire_score) + string suffix; + for (auto bit : conn.second) + if (bit.wire != nullptr && bit.wire->name[0] != '$') { +- if (suffix.empty()) +- suffix = stringf("_%s_%s", log_id(cell->type), log_id(conn.first)); ++ if (suffix.empty()) { ++ if (bit.wire->width > 1) { ++ suffix = stringf("%i_%s_%s", bit.offset, log_id(cell->type), log_id(conn.first)); ++ } else { ++ suffix = stringf("_%s_%s", log_id(cell->type), log_id(conn.first)); ++ } ++ } + string new_name(bit.wire->name.str() + suffix); + int score = wire_score.at(bit.wire); + if (cell->output(conn.first)) score = 0; +@@ -52,8 +57,13 @@ int autoname_worker(Module *module, const dict& wire_score) + string suffix; + for (auto bit : conn.second) + if (bit.wire != nullptr && bit.wire->name[0] == '$' && !bit.wire->port_id) { +- if (suffix.empty()) +- suffix = stringf("_%s", log_id(conn.first)); ++ if (suffix.empty()) { ++ if (bit.wire->width > 1) { ++ suffix = stringf("%i_%s", bit.offset, log_id(conn.first)); ++ } else { ++ suffix = stringf("_%s", log_id(conn.first)); ++ } ++ } + string new_name(cell->name.str() + suffix); + int score = wire_score.at(bit.wire); + if (cell->output(conn.first)) score = 0;