@@ -489,10 +489,13 @@ static bool s_read_json_items(const nlohmann::ordered_json& from,
489
489
PinPlacer::EditItem& last = items.back ();
490
490
last.name_ = obj[" name" ];
491
491
492
- // 3. read 'module'
492
+ // 3. read 'module' and 'js_dir'
493
493
if (obj.contains (" module" )) {
494
494
last.module_ = obj[" module" ];
495
495
}
496
+ if (obj.contains (" direction" )) {
497
+ last.js_dir_ = obj[" direction" ];
498
+ }
496
499
497
500
if (tr >= 6 ) {
498
501
ls << " rd_js_items --- .name_= " << last.name_
@@ -528,10 +531,17 @@ static bool s_read_json_items(const nlohmann::ordered_json& from,
528
531
if (!has_new and !has_old and cont_1 and cont_2) {
529
532
last.newPin_ = propObj[" D" ];
530
533
auto Q_obj = propObj[" Q" ];
531
- if (Q_obj.is_array ())
532
- last.oldPin_ = Q_obj[0 ];
533
- else
534
+ if (Q_obj.is_array ()) {
535
+ size_t q_sz = Q_obj.size ();
536
+ if (q_sz) {
537
+ last.oldPin_ = Q_obj[0 ];
538
+ last.Q_bus_ .resize (q_sz);
539
+ for (size_t i = 0 ; i < q_sz; i++)
540
+ last.Q_bus_ [i] = Q_obj[i];
541
+ }
542
+ } else {
534
543
last.oldPin_ = Q_obj;
544
+ }
535
545
has_new = true ;
536
546
has_old = true ;
537
547
}
@@ -606,34 +616,42 @@ void PinPlacer::dump_edits(const string& memo) noexcept {
606
616
for (uint i = 0 ; i < esz; i++) {
607
617
const EditItem& ed = all_edits_[i];
608
618
lprintf (
609
- " |%u| name_:%s mode_:%s dir:%i old: %s new: %s\n " ,
610
- i+1 , ed.cname (), ed.mode_ .c_str (),
611
- ed.dir_ , ed.oldPin_ .c_str (), ed.newPin_ .c_str ());
619
+ " |%u| %s module: %s js_dir:%s dir:%i old: %s new: %s" ,
620
+ i+1 , ed.cname (), ed.c_mod (), ed.c_jsdir (), ed.dir_ , ed.c_old (), ed.c_new ());
621
+ if (ed.isBus ())
622
+ lprintf (" BUS-%u" , ed.busSize ());
623
+ lputs ();
612
624
if (!ed.dir_ )
613
625
undefs.push_back (i);
614
626
}
615
627
lprintf (" ---- obufs (%zu) ----\n " , obufs_.size ());
616
628
for (const EditItem* e : obufs_SortedByOld_) {
617
629
const EditItem& ed = *e;
618
- lprintf (" name_:%s dir:%i old: %s new %s R:%i\n " ,
619
- ed.cname (), ed.dir_ ,
620
- ed.oldPin_ .c_str (), ed.newPin_ .c_str (), ed.isRoot ());
630
+ lprintf (" nm:%s module: %s js_dir:%s dir:%i old: %s new %s R:%i" ,
631
+ ed.cname (), ed.c_mod (), ed.c_jsdir (), ed.dir_ ,
632
+ ed.c_old (), ed.c_new (), ed.isRoot ());
633
+ if (ed.isBus ())
634
+ lprintf (" BUS-%u" , ed.busSize ());
635
+ lputs ();
621
636
}
622
637
lprintf (" ---- ibufs (%zu) ----\n " , ibufs_.size ());
623
638
for (const EditItem* e : ibufs_SortedByOld_) {
624
639
const EditItem& ed = *e;
625
- lprintf (" name_:%s dir:%i old %s new %s R:%i\n " ,
626
- ed.cname (), ed.dir_ ,
627
- ed.oldPin_ .c_str (), ed.newPin_ .c_str (), ed.isRoot ());
640
+ lprintf (" nm:%s module: %s js_dir:%s dir:%i old %s new %s R:%i" ,
641
+ ed.cname (), ed.c_mod (), ed.c_jsdir (), ed.dir_ ,
642
+ ed.c_old (), ed.c_new (), ed.isRoot ());
643
+ if (ed.isBus ())
644
+ lprintf (" BUS-%u" , ed.busSize ());
645
+ lputs ();
628
646
}
629
647
lputs (" ====" );
630
648
if (! undefs.empty ()) {
631
649
lprintf (" >>>==== NOTE undefs (%zu) ====\n " , undefs.size ());
632
650
for (uint u : undefs) {
633
651
const EditItem& ed = all_edits_[u];
634
652
lprintf (
635
- " |u#%u| name_ :%s old: %s new: %s\n " ,
636
- u, ed.cname (), ed.oldPin_ . c_str (), ed.newPin_ . c_str ());
653
+ " |u#%u| nm :%s module: %s js_dir:%s old: %s new: %s\n " ,
654
+ u, ed.cname (), ed.c_mod (), ed. c_jsdir (), ed.c_old (), ed. c_new ());
637
655
}
638
656
}
639
657
lputs (" ====" );
0 commit comments