diff --git a/common/timing.cc b/common/timing.cc
index 69932d6..bde7ce3 100644
--- a/common/timing.cc
+++ b/common/timing.cc
@@ -696,8 +696,11 @@
                             if (usr.cell != cell.second.get() || usr.port != port.first)
                                 continue;
                             // And for each clock event, label node with event as well as max arrival time
-                            for (const auto &i : net_data.at(port.second.net))
-                                f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival + ctx->getNetinfoRouteDelay(port.second.net, usr);
+                            auto it = net_data.find(port.second.net);
+                            if (it != net_data.end()) {
+                                for (const auto &i : it->second)
+                                    f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival + ctx->getNetinfoRouteDelay(port.second.net, usr);
+                            }
                             break;
                         }
                         f << "\"]" << std::endl;
@@ -706,9 +709,12 @@
                         output_ports.push_back(port.first);
                         // Label port
                         f << "\t\t" << "\"" << cell.second->name.str(ctx) << "." << port.first.str(ctx) << "\" [label = \"" << port.first.str(ctx);
-                        // A:d for each clock event, label node with event as well as max arrival time
-                        for (const auto &i : net_data.at(port.second.net))
-                            f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival;
+                        // And for each clock event, label node with event as well as max arrival time
+                        auto it = net_data.find(port.second.net);
+                        if (it != net_data.end()) {
+                            for (const auto &i : it->second)
+                                f << "\\n" << (i.first.edge == RISING_EDGE ? "posedge" : "negedge") << " " << i.first.clock.str(ctx) << " @ " << i.second.max_arrival;
+                        }
                         f << "\"";
                         // IOB outputs are startpoints
                         if (ctx->getBelIOB(cell.second->bel))
