SDC: Adjust SDC output for VPR Signed-off-by: Tomasz Michalak <tmichalak@antmicro.com>
diff --git a/sdc-plugin/clocks.cc b/sdc-plugin/clocks.cc index dc1dbcf..09acff7 100644 --- a/sdc-plugin/clocks.cc +++ b/sdc-plugin/clocks.cc
@@ -170,14 +170,8 @@ for (auto& clock : clocks_) { auto clock_wires = clock.GetClockWires(); file << "create_clock -period " << clock.Period(); - if (clock_wires.size() > 1) { - file << " -name " << clock.Name(); - } - file << " -waveform {" << clock.RisingEdge() << " " - << clock.FallingEdge() << "}"; - for (auto clock_wire : clock_wires) { - file << " " << RTLIL::unescape_id(clock_wire->name); - } + file << " -waveform {" << clock.RisingEdge() << " " << clock.FallingEdge() << "}"; + file << " " << Clock::ClockWireName(clock_wires.at(0)); file << std::endl; } } @@ -231,3 +225,11 @@ falling_edge_ = falling_edge; assert(falling_edge - rising_edge == period_ / 2); } + +std::string Clock::ClockWireName(RTLIL::Wire* wire) { + if (!wire) { + return std::string(); + } + std::string wire_name(RTLIL::unescape_id(wire->name)); + return std::regex_replace(wire_name, std::regex{"\\$"}, "\\$"); +}
diff --git a/sdc-plugin/clocks.h b/sdc-plugin/clocks.h index d98d5b4..c1147a0 100644 --- a/sdc-plugin/clocks.h +++ b/sdc-plugin/clocks.h
@@ -42,6 +42,7 @@ float RisingEdge() { return rising_edge_; } float FallingEdge() { return falling_edge_; } void UpdateClock(RTLIL::Wire* wire, float period, float rising_edge, float falling_edge); + static std::string ClockWireName(RTLIL::Wire* wire); private: std::string name_;