3333#include " sta/Search.hh"
3434#include " utils.h"
3535#include " utl/Logger.h"
36+ #include " utl/SuppressStdout.h"
3637#include " utl/deleter.h"
3738#include " utl/unique_name.h"
3839
@@ -76,37 +77,6 @@ extern void Abc_NtkRedirectCiCo(Abc_Ntk_t* pNtk);
7677namespace rmp {
7778using utl::RMP;
7879
79- class SuppressStdout
80- {
81- #ifndef _WIN32
82- public:
83- SuppressStdout (utl::Logger* logger)
84- {
85- // This is a hack to suppress excessive logs from ABC
86- // Redirects stdout to /dev/null, preserves original stdout
87- fflush (stdout);
88- saved_stdout_fd = dup (1 );
89- const int dev_null_fd = open (" /dev/null" , O_WRONLY);
90- if (dev_null_fd < 0 ) {
91- logger->error (utl::RMP, 58 , " Can't open /dev/null" );
92- }
93- dup2 (dev_null_fd, 1 );
94- close (dev_null_fd);
95- }
96-
97- ~SuppressStdout ()
98- {
99- // Restore stdout
100- fflush (stdout);
101- dup2 (saved_stdout_fd, 1 );
102- close (saved_stdout_fd);
103- }
104-
105- private:
106- int saved_stdout_fd;
107- #endif
108- };
109-
11080static void replaceGia (abc::Gia_Man_t*& gia, abc::Gia_Man_t* new_gia)
11181{
11282 if (gia == new_gia) {
@@ -224,7 +194,7 @@ void AnnealingStrategy::OptimizeDesign(sta::dbSta* sta,
224194 // &false
225195 debugPrint (
226196 logger, RMP, " annealing" , 1 , " Starting false path elimination" );
227- SuppressStdout nostdout (logger);
197+ utl:: SuppressStdout nostdout (logger);
228198 replaceGia (gia, Gia_ManCheckFalse (gia, 0 , 0 , false , false ));
229199 },
230200
@@ -637,7 +607,7 @@ void AnnealingStrategy::RunGia(
637607 }
638608
639609 {
640- SuppressStdout nostdout (logger);
610+ utl:: SuppressStdout nostdout (logger);
641611 current_network = WrapUnique (abc::Abc_NtkMap (current_network.get (),
642612 nullptr ,
643613 /* DelayTarget=*/ 1.0 ,
@@ -661,7 +631,7 @@ void AnnealingStrategy::RunGia(
661631
662632 if (resize_iters > 0 ) {
663633 // All the magic numbers are defaults from abc/src/base/abci/abc.c
664- SuppressStdout nostdout (logger);
634+ utl:: SuppressStdout nostdout (logger);
665635 abc::SC_SizePars pars = {};
666636 pars.nIters = resize_iters;
667637 pars.nIterNoChange = 50 ;
0 commit comments