3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-11 13:40:53 +00:00

Merge pull request #5133 from YosysHQ/krys/functional_ordering

Maintain port ordering for functional backend
This commit is contained in:
KrystalDelusion 2025-08-05 12:52:44 +12:00 committed by GitHub
commit fd2ea51e1e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -518,10 +518,13 @@ public:
if (cell->type.in(ID($assert), ID($assume), ID($live), ID($fair), ID($cover), ID($check))) if (cell->type.in(ID($assert), ID($assume), ID($live), ID($fair), ID($cover), ID($check)))
queue.emplace_back(cell); queue.emplace_back(cell);
} }
for (auto wire : module->wires()) { // we are relying here on unsorted pools iterating last-in-first-out
if (wire->port_input) for (auto riter = module->ports.rbegin(); riter != module->ports.rend(); ++riter) {
auto *wire = module->wire(*riter);
if (wire && wire->port_input) {
factory.add_input(wire->name, ID($input), Sort(wire->width)); factory.add_input(wire->name, ID($input), Sort(wire->width));
if (wire->port_output) { }
if (wire && wire->port_output) {
auto &output = factory.add_output(wire->name, ID($output), Sort(wire->width)); auto &output = factory.add_output(wire->name, ID($output), Sort(wire->width));
output.set_value(enqueue(DriveChunk(DriveChunkWire(wire, 0, wire->width)))); output.set_value(enqueue(DriveChunk(DriveChunkWire(wire, 0, wire->width))));
} }