@@ -2593,6 +2593,27 @@ void dbNet::checkSanityModNetConsistency() const
25932593 }
25942594 }
25952595
2596+ std::vector<dbITerm*> iterms_in_hier_only;
2597+ std::set_difference (hier_iterms.begin (),
2598+ hier_iterms.end (),
2599+ flat_iterms.begin (),
2600+ flat_iterms.end (),
2601+ std::back_inserter (iterms_in_hier_only));
2602+
2603+ if (iterms_in_hier_only.empty () == false ) {
2604+ logger->warn (utl::ODB,
2605+ 488 ,
2606+ " SanityCheck: dbNet '{}' is missing ITerms that are present "
2607+ " in its related dbModNets." ,
2608+ getName ());
2609+ for (dbITerm* iterm : iterms_in_hier_only) {
2610+ logger->warn (utl::ODB,
2611+ 489 ,
2612+ " - ITerm: {} (in hier, not in flat)" ,
2613+ iterm->getName ());
2614+ }
2615+ }
2616+
25962617 // 4.2. Compare BTerms
25972618 std::vector<dbBTerm*> bterms_in_flat_only;
25982619 std::set_difference (flat_bterms.begin (),
@@ -2611,6 +2632,27 @@ void dbNet::checkSanityModNetConsistency() const
26112632 logger->warn (utl::ODB, 487 , " - BTerm: {}" , bterm->getName ());
26122633 }
26132634 }
2635+
2636+ std::vector<dbBTerm*> bterms_in_hier_only;
2637+ std::set_difference (hier_bterms.begin (),
2638+ hier_bterms.end (),
2639+ flat_bterms.begin (),
2640+ flat_bterms.end (),
2641+ std::back_inserter (bterms_in_hier_only));
2642+
2643+ if (bterms_in_hier_only.empty () == false ) {
2644+ logger->warn (utl::ODB,
2645+ 490 ,
2646+ " SanityCheck: dbNet '{}' is missing BTerms that are present "
2647+ " in its related dbModNets." ,
2648+ getName ());
2649+ for (dbBTerm* bterm : bterms_in_hier_only) {
2650+ logger->warn (utl::ODB,
2651+ 491 ,
2652+ " - BTerm: {} (in hier, not in flat)" ,
2653+ bterm->getName ());
2654+ }
2655+ }
26142656}
26152657
26162658} // namespace odb
0 commit comments