3333#include " sta/TableModel.hh"
3434#include " sta/TimingArc.hh"
3535#include " sta/Units.hh"
36+ #include " utl/SuppressStdout.h"
3637#include " utl/deleter.h"
3738
3839namespace abc {
@@ -43,10 +44,24 @@ void Abc_Stop();
4344
4445namespace cut {
4546
46- AbcLibrary::AbcLibrary (utl::UniquePtrWithDeleter<abc::SC_Lib> abc_library)
47- : abc_library_(std::move(abc_library))
47+ AbcLibrary::AbcLibrary (utl::UniquePtrWithDeleter<abc::SC_Lib> abc_library,
48+ utl::Logger* logger)
49+ : abc_library_(std::move(abc_library)), logger_(logger)
4850{
49- mio_library_ = abc::Abc_SclDeriveGenlibSimple (abc_library_.get ());
51+ mio_library_ = utl::UniquePtrWithDeleter<abc::Mio_Library_t>(
52+ abc::Abc_SclDeriveGenlibSimple (abc_library_.get ()),
53+ [](abc::Mio_Library_t* lib) { abc::Mio_LibraryDelete (lib); });
54+ }
55+
56+ abc::Mio_Library_t* AbcLibrary::mio_library ()
57+ {
58+ if (mio_library_ == nullptr ) {
59+ utl::SuppressStdout nostdout (logger_);
60+ mio_library_ = utl::UniquePtrWithDeleter<abc::Mio_Library_t>(
61+ abc::Abc_SclDeriveGenlibSimple (abc_library_.get ()),
62+ [](abc::Mio_Library_t* lib) { abc::Mio_LibraryDelete (lib); });
63+ }
64+ return mio_library_.release ();
5065}
5166
5267static bool IsCombinational (sta::LibertyCell* cell)
@@ -382,8 +397,10 @@ AbcLibrary AbcLibraryFactory::Build()
382397 abc::Abc_SclHashCells (abc_library);
383398 abc::Abc_SclLinkCells (abc_library);
384399
385- return AbcLibrary (utl::UniquePtrWithDeleter<abc::SC_Lib>(
386- abc_library, [](abc::SC_Lib* lib) { abc::Abc_SclLibFree (lib); }));
400+ return AbcLibrary (
401+ utl::UniquePtrWithDeleter<abc::SC_Lib>(
402+ abc_library, [](abc::SC_Lib* lib) { abc::Abc_SclLibFree (lib); }),
403+ logger_);
387404}
388405
389406std::vector<sta::LibertyCell*> AbcLibraryFactory::GetLibertyCellsFromCorner (
0 commit comments