55#include < cstdio>
66#include < string>
77
8+ #include " db_sta/dbNetwork.hh"
89#include " gtest/gtest.h"
910#include " odb/db.h"
1011#include " sta/NetworkClass.hh"
@@ -22,7 +23,7 @@ class TestDbSta : public tst::IntegratedFixture
2223 }
2324};
2425
25- TEST_F (TestDbSta, TestIsConnected )
26+ TEST_F (TestDbSta, TestHierarchyConnectivity )
2627{
2728 std::string test_name = " TestDbSta_0" ;
2829 readVerilogAndSetup (test_name + " .v" );
@@ -59,6 +60,41 @@ TEST_F(TestDbSta, TestIsConnected)
5960
6061 bool_return = db_network_->isConnected (sta_net, sta_modnet);
6162 ASSERT_TRUE (bool_return);
63+
64+ // Check Network::highestNetAbove(Net* net)
65+ odb::dbNet* dbnet_out2 = block_->findNet (" out2" );
66+ ASSERT_NE (dbnet_out2, nullptr );
67+ Net* sta_dbnet_out2 = db_network_->dbToSta (dbnet_out2);
68+ ASSERT_NE (sta_dbnet_out2, nullptr );
69+ Net* sta_highest_net = db_network_->highestNetAbove (sta_dbnet_out2);
70+ ASSERT_EQ (sta_highest_net, sta_dbnet_out2);
71+
72+ odb::dbModNet* modnet_mod_out = block_->findModNet (" sub_inst/mod_out" );
73+ ASSERT_NE (modnet_mod_out, nullptr );
74+ Net* sta_modnet_mod_out = db_network_->dbToSta (modnet_mod_out);
75+ ASSERT_NE (sta_modnet_mod_out, nullptr );
76+ odb::dbModNet* modnet_out2 = block_->findModNet (" out2" );
77+ ASSERT_NE (modnet_out2, nullptr );
78+ Net* sta_modnet_out2 = db_network_->dbToSta (modnet_out2);
79+ ASSERT_NE (sta_modnet_out2, nullptr );
80+ Net* sta_highest_modnet_out
81+ = db_network_->highestNetAbove (sta_modnet_mod_out);
82+ ASSERT_EQ (sta_highest_modnet_out, sta_modnet_out2);
83+
84+ // Check get_ports -of_object Net*
85+ NetTermIterator* term_iter = db_network_->termIterator (sta_dbnet_out2);
86+ while (term_iter->hasNext ()) {
87+ Term* term = term_iter->next ();
88+ Pin* pin = db_network_->pin (term);
89+ Port* port = db_network_->port (pin);
90+ ASSERT_EQ (db_network_->name (port), block_->findBTerm (" out2" )->getName ());
91+ }
92+
93+ // Check dbBTerm::getITerm()
94+ odb::dbBTerm* bterm_clk = block_->findBTerm (" in1" );
95+ ASSERT_NE (bterm_clk, nullptr );
96+ // There is no related dbITerm for a dbBTerm
97+ ASSERT_EQ (bterm_clk->getITerm (), nullptr );
6298}
6399
64100} // namespace sta
0 commit comments