diff --git a/src/operation/iCTS/api/CTSAPI.cc b/src/operation/iCTS/api/CTSAPI.cc index dfa84c6cee7aa0236576a9f2c778eb9489964386..8e04b81994352b0093684392daf86e8b40f9151d 100644 --- a/src/operation/iCTS/api/CTSAPI.cc +++ b/src/operation/iCTS/api/CTSAPI.cc @@ -96,7 +96,6 @@ void CTSAPI::writeDB() void CTSAPI::writeGDS() { - writeSkewMap(); GDSPloter::plotDesign(); GDSPloter::plotFlyLine(); GDSPloter::writePyDesign(); @@ -1173,22 +1172,5 @@ ieda_feature::CTSSummary CTSAPI::outputSummary() return summary; } -void CTSAPI::writeSkewMap() const -{ - auto* ista = _timing_engine->get_ista(); - auto& clocks = ista->get_clocks(); - - for (auto& clock : clocks) { - StaBuildClockTree build_clock_tree; - build_clock_tree(clock.get()); - - auto base_path = _config->get_output_def_path() + "/" + std::string(clock->get_clock_name()); - - auto& clock_trees = build_clock_tree.takeClockTrees(); - clock_trees.front()->printInstGraphViz((base_path + "_skewmap.dot").c_str(), false); - clock_trees.front()->printInstJson((base_path + "_skewmap.json").c_str(), false); - clock_trees.clear(); - } -} } // namespace icts \ No newline at end of file diff --git a/src/operation/iCTS/api/CTSAPI.hh b/src/operation/iCTS/api/CTSAPI.hh index ee561031f27152756301014a2dc0792d966864f6..5072c06237be43ffaa01f5a3ec721effae7d74bc 100644 --- a/src/operation/iCTS/api/CTSAPI.hh +++ b/src/operation/iCTS/api/CTSAPI.hh @@ -201,7 +201,6 @@ class CTSAPI double getCapacitance(const double& wire_length, const int& level) const; double getResistance(const double& wire_length, const int& level) const; ista::TimingIDBAdapter* getStaDbAdapter() const; - void writeSkewMap() const; // variable icts::CtsConfig* _config = nullptr; diff --git a/src/operation/iCTS/source/data_manager/io/GDSPloter.cc b/src/operation/iCTS/source/data_manager/io/GDSPloter.cc index 817e74a407f48e7a0ccc8b061eb281b59b2b023e..a8db98e86dcaf7293b596668274a542ec2623eb8 100644 --- a/src/operation/iCTS/source/data_manager/io/GDSPloter.cc +++ b/src/operation/iCTS/source/data_manager/io/GDSPloter.cc @@ -461,7 +461,25 @@ void GDSPloter::writeJsonDesign(const std::string& path) wires.push_back(wire_obj); } - net["wires"] = wires; + net["wires_layout"] = wires; + + // Add delay information + nlohmann::json delays = nlohmann::json::array(); + + // Only consider a single clock source for now. + auto clk_port = design->get_clocks().front()->get_clock_name(); + + for (auto& p : clk_net->get_load_pins()) { + auto delay = CTSAPIInst.getClockAT(p->get_full_name(), clk_port); + auto driver = clk_net->get_driver_pin(); + + nlohmann::json delay_obj; + delay_obj["from"] = driver->get_full_name(); + delay_obj["to"] = p->get_full_name(); + delay_obj["delay"] = delay; + delays.push_back(delay_obj); + } + net["wires_delay"] = delays; nets.push_back(net); }