@@ -445,7 +445,7 @@ namespace hal
445
445
auto dsts = net->m_destinations_raw ;
446
446
for (auto dst : dsts)
447
447
{
448
- if (!this ->net_remove_destination (net, dst))
448
+ if (!this ->net_remove_destination_internal (net, dst))
449
449
{
450
450
return false ;
451
451
}
@@ -454,7 +454,7 @@ namespace hal
454
454
auto srcs = net->m_sources_raw ;
455
455
for (auto src : srcs)
456
456
{
457
- if (!this ->net_remove_source (net, src))
457
+ if (!this ->net_remove_source_internal (net, src))
458
458
{
459
459
return false ;
460
460
}
@@ -540,17 +540,15 @@ namespace hal
540
540
// update internal nets and port nets
541
541
if (m_net_checks_enabled)
542
542
{
543
- if (const auto res = gate->get_module ()->check_net (net, true ); res. is_error ( ))
543
+ if (! gate->get_module ()->check_net (net, true ))
544
544
{
545
- log_error (" net" , " {}" , res.get_error ().get ());
546
545
return nullptr ;
547
546
}
548
547
549
548
for (Endpoint* ep : net->get_destinations ())
550
549
{
551
- if (const auto res = ep->get_gate ()->get_module ()->check_net (net, true ); res. is_error ( ))
550
+ if (! ep->get_gate ()->get_module ()->check_net (net, true ))
552
551
{
553
- log_error (" net" , " {}" , res.get_error ().get ());
554
552
return nullptr ;
555
553
}
556
554
}
@@ -561,7 +559,7 @@ namespace hal
561
559
return new_endpoint_raw;
562
560
}
563
561
564
- bool NetlistInternalManager::net_remove_source (Net* net, Endpoint* ep)
562
+ bool NetlistInternalManager::net_remove_source_internal (Net* net, Endpoint* ep)
565
563
{
566
564
auto gate = ep->get_gate ();
567
565
@@ -570,7 +568,6 @@ namespace hal
570
568
return false ;
571
569
}
572
570
573
- bool removed = false ;
574
571
for (u32 i = 0 ; i < net->m_sources .size (); ++i)
575
572
{
576
573
if (net->m_sources_raw [i] == ep)
@@ -582,12 +579,18 @@ namespace hal
582
579
net->m_sources_raw [i] = net->m_sources_raw .back ();
583
580
net->m_sources_raw .pop_back ();
584
581
m_event_handler->notify (NetEvent::event::src_removed, net, gate->get_id ());
585
- removed = true ;
586
- break ;
582
+ return true ;
587
583
}
588
584
}
589
585
590
- if (!removed)
586
+ return false ;
587
+ }
588
+
589
+ bool NetlistInternalManager::net_remove_source (Net* net, Endpoint* ep)
590
+ {
591
+ auto gate = ep->get_gate ();
592
+
593
+ if (!net_remove_source_internal (net, ep))
591
594
{
592
595
log_warning (" net" ,
593
596
" output pin '{}' of gate '{}' with ID {} is not a source of net '{}' with ID {} in netlist with ID {}" ,
@@ -603,17 +606,15 @@ namespace hal
603
606
// update internal nets and port nets
604
607
if (m_net_checks_enabled)
605
608
{
606
- if (const auto res = gate->get_module ()->check_net (net, true ); res. is_error ( ))
609
+ if (! gate->get_module ()->check_net (net, true ))
607
610
{
608
- log_error (" net" , " {}" , res.get_error ().get ());
609
611
return false ;
610
612
}
611
613
612
614
for (Endpoint* dst : net->get_destinations ())
613
615
{
614
- if (const auto res = dst->get_gate ()->get_module ()->check_net (net, true ); res. is_error ( ))
616
+ if (! dst->get_gate ()->get_module ()->check_net (net, true ))
615
617
{
616
- log_error (" net" , " {}" , res.get_error ().get ());
617
618
return false ;
618
619
}
619
620
}
@@ -678,17 +679,15 @@ namespace hal
678
679
// update internal nets and port nets
679
680
if (m_net_checks_enabled)
680
681
{
681
- if (const auto res = gate->get_module ()->check_net (net, true ); res. is_error ( ))
682
+ if (! gate->get_module ()->check_net (net, true ))
682
683
{
683
- log_error (" net" , " {}" , res.get_error ().get ());
684
684
return nullptr ;
685
685
}
686
686
687
687
for (Endpoint* ep : net->get_sources ())
688
688
{
689
- if (const auto res = ep->get_gate ()->get_module ()->check_net (net, true ); res. is_error ( ))
689
+ if (! ep->get_gate ()->get_module ()->check_net (net, true ))
690
690
{
691
- log_error (" net" , " {}" , res.get_error ().get ());
692
691
return nullptr ;
693
692
}
694
693
}
@@ -699,15 +698,15 @@ namespace hal
699
698
return new_endpoint_raw;
700
699
}
701
700
702
- bool NetlistInternalManager::net_remove_destination (Net* net, Endpoint* ep)
701
+ bool NetlistInternalManager::net_remove_destination_internal (Net* net, Endpoint* ep)
703
702
{
704
703
auto gate = ep->get_gate ();
704
+
705
705
if (!m_netlist->is_net_in_netlist (net) || !m_netlist->is_gate_in_netlist (gate) || !net->is_a_destination (ep))
706
706
{
707
707
return false ;
708
708
}
709
709
710
- bool removed = false ;
711
710
for (u32 i = 0 ; i < net->m_destinations .size (); ++i)
712
711
{
713
712
if (net->m_destinations_raw [i] == ep)
@@ -719,12 +718,18 @@ namespace hal
719
718
net->m_destinations_raw [i] = net->m_destinations_raw .back ();
720
719
net->m_destinations_raw .pop_back ();
721
720
m_event_handler->notify (NetEvent::event::dst_removed, net, gate->get_id ());
722
- removed = true ;
723
- break ;
721
+ return true ;
724
722
}
725
723
}
726
724
727
- if (!removed)
725
+ return false ;
726
+ }
727
+
728
+ bool NetlistInternalManager::net_remove_destination (Net* net, Endpoint* ep)
729
+ {
730
+ auto gate = ep->get_gate ();
731
+
732
+ if (!net_remove_destination_internal (net,ep))
728
733
{
729
734
log_warning (" net" ,
730
735
" input pin '{}' of gate '{}' with ID {} is not a destination of net '{}' with ID {} in netlist with ID {}" ,
@@ -739,17 +744,15 @@ namespace hal
739
744
{ // update internal nets and port nets
740
745
if (m_net_checks_enabled)
741
746
{
742
- if (const auto res = gate->get_module ()->check_net (net, true ); res. is_error ( ))
747
+ if (! gate->get_module ()->check_net (net, true ))
743
748
{
744
- log_error (" net" , " {}" , res.get_error ().get ());
745
749
return false ;
746
750
}
747
751
748
752
for (Endpoint* src : net->get_sources ())
749
753
{
750
- if (const auto res = src->get_gate ()->get_module ()->check_net (net, true ); res. is_error ( ))
754
+ if (! src->get_gate ()->get_module ()->check_net (net, true ))
751
755
{
752
- log_error (" net" , " {}" , res.get_error ().get ());
753
756
return false ;
754
757
}
755
758
}
@@ -977,9 +980,8 @@ namespace hal
977
980
{
978
981
for (Net* net : nets)
979
982
{
980
- if (const auto res = affected_module->check_net (net, true ); res. is_error ( ))
983
+ if (! affected_module->check_net (net, true ))
981
984
{
982
- log_error (" module" , " {}" , res.get_error ().get ());
983
985
return false ;
984
986
}
985
987
}
@@ -997,11 +999,7 @@ namespace hal
997
999
998
1000
bool NetlistInternalManager::module_check_net (Module* module, Net* net, bool recursive)
999
1001
{
1000
- if (const auto res = module->check_net (net, recursive); res.is_error ())
1001
- {
1002
- return false ;
1003
- }
1004
- return true ;
1002
+ return module->check_net (net, recursive);
1005
1003
}
1006
1004
1007
1005
// ######################################################################
0 commit comments