Skip to content

Commit d5c767d

Browse files
authored
Merge pull request #679 from os-fpga/pln_pinc_better_debug_print_for_EDA2774
pln/pinc: better debug print for EDA-2774
2 parents fbe6ddb + 53d3f7c commit d5c767d

File tree

2 files changed

+93
-36
lines changed

2 files changed

+93
-36
lines changed

stars/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
static const char* _pln_VERSION_STR = "pln0184";
1+
static const char* _pln_VERSION_STR = "pln0187";
22

33
#include "RS/rsEnv.h"
44
#include "util/pln_log.h"

stars/src/pin_loc/pcf_place.cpp

Lines changed: 92 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -613,55 +613,112 @@ bool PinPlacer::write_dot_place(const RapidCsvReader& csv) {
613613
if (is_out_pin) {
614614
xyz = csv.get_opin_xyz_by_name(mode, device_pin_name, gbox_pin_name,
615615
used_oxyz_, pt_row);
616-
if (tr >= 6) {
617-
if (xyz.valid())
618-
lprintf(" get_opin_xyz annotated pt_row= %u\n", pt_row);
619-
else
620-
lputs("\n get_opin_xyz FAILED");
616+
if (tr >= 3) {
617+
if (xyz.valid()) {
618+
if (tr >= 6) lprintf(" get_opin_xyz annotated pt_row= %u\n", pt_row);
619+
} else {
620+
flush_out(true);
621+
err_puts();
622+
lprintf2("[Error] get output pin xyz FAILED for mode= %s device_pin_name= %s\n",
623+
mode.c_str(), device_pin_name.c_str());
624+
flush_out(true);
625+
uint col_idx = csv.getModeCol(mode);
626+
string col_label = csv.label_of_column(col_idx);
627+
vector<uint> enabledRows = csv.get_enabled_rows_for_mode(mode);
628+
lprintf(" ---- BEGIN DEBUG_NOTE ---- mode %s (#%u %s) is enabled for %zu rows:\n",
629+
mode.c_str(), col_idx, col_label.c_str(), enabledRows.size());
630+
for (uint r : enabledRows) {
631+
uint row = r + 2;
632+
const RapidCsvReader::BCD& b = csv.getBCD(r);
633+
const XYZ& p = b.xyz_;
634+
flush_out(false);
635+
636+
if (tr < 4 and b.customer_ != device_pin_name) {
637+
continue;
638+
}
639+
640+
lprintf(" ROW-%u ", row);
641+
lprintf(" B:%s ", b.bump_B_.c_str());
642+
643+
lprintf(" ");
644+
if (b.customer_ == device_pin_name)
645+
lprintf(" NOTE:");
646+
lprintf("C:%s ", b.customer_.c_str());
647+
648+
lprintf(" D:%s ", b.ball_ID_.c_str());
649+
650+
lprintf(" XYZ: (%i %i %i) ", p.x_, p.y_, p.z_);
651+
652+
lprintf(" M:%s ", b.col_M_.c_str());
653+
lprintf(" RXTX:%s ", RapidCsvReader::str_Mode_dir(b.rxtx_dir_));
654+
if (b.dirContradiction()) {
655+
lprintf(" DIR_CONTRADICTION ");
656+
}
657+
flush_out(true);
658+
}
659+
lputs(" -------- END DEBUG_NOTE ---- ");
660+
if (tr >= 4) {
661+
lprintf(" -------- get output pin xyz FAILED for mode= %s device_pin_name= %s\n",
662+
mode.c_str(), device_pin_name.c_str());
663+
lprintf(" -------- see info between 'BEGIN DEBUG_NOTE' 'END DEBUG_NOTE' markers\n");
664+
}
665+
flush_out(true);
666+
}
621667
}
668+
622669
} else {
623670
xyz = csv.get_ipin_xyz_by_name(mode, device_pin_name, gbox_pin_name,
624671
used_ixyz_, pt_row);
625-
if (tr >= 4) {
672+
if (tr >= 3) {
626673
if (xyz.valid()) {
627674
if (tr >= 6) lprintf(" get_ipin_xyz annotated pt_row= %u\n", pt_row);
628675
} else {
629676
flush_out(true);
630-
lprintf("\n get_ipin_xyz FAILED for mode= %s device_pin_name= %s\n",
677+
err_puts();
678+
lprintf2("[Error] get input pin xyz FAILED for mode= %s device_pin_name= %s\n",
631679
mode.c_str(), device_pin_name.c_str());
632680
flush_out(true);
633-
if (tr >= 5) {
634-
uint col_idx = csv.getModeCol(mode);
635-
string col_label = csv.label_of_column(col_idx);
636-
lprintf(" ___ mode %s (#%u %s) is enabled for the following PT rows:\n",
637-
mode.c_str(), col_idx, col_label.c_str());
638-
vector<uint> enabledRows = csv.get_enabled_rows_for_mode(mode);
639-
lprintf(" ___ enabledRows.size()= %zu\n", enabledRows.size());
640-
for (uint r : enabledRows) {
641-
uint row = r + 2;
642-
const RapidCsvReader::BCD& b = csv.getBCD(r);
643-
const XYZ& p = b.xyz_;
644-
645-
flush_out(false);
646-
lprintf(" ROW-%u ", row);
647-
648-
lprintf(" B:%s ", b.bump_B_.c_str());
649-
lprintf(" C:%s ", b.customer_.c_str());
650-
lprintf(" D:%s ", b.ball_ID_.c_str());
651-
652-
lprintf(" XYZ: (%i %i %i) ", p.x_, p.y_, p.z_);
653-
654-
lprintf(" M:%s ", b.col_M_.c_str());
655-
lprintf(" RXTX:%s ", RapidCsvReader::str_Mode_dir(b.rxtx_dir_));
656-
if (b.dirContradiction()) {
657-
lprintf(" DIR_CONTRADICTION ");
658-
}
659-
flush_out(true);
681+
uint col_idx = csv.getModeCol(mode);
682+
string col_label = csv.label_of_column(col_idx);
683+
vector<uint> enabledRows = csv.get_enabled_rows_for_mode(mode);
684+
lprintf(" ---- BEGIN DEBUG_NOTE ---- mode %s (#%u %s) is enabled for %zu rows:\n",
685+
mode.c_str(), col_idx, col_label.c_str(), enabledRows.size());
686+
for (uint r : enabledRows) {
687+
uint row = r + 2;
688+
const RapidCsvReader::BCD& b = csv.getBCD(r);
689+
const XYZ& p = b.xyz_;
690+
flush_out(false);
691+
692+
if (tr < 4 and b.customer_ != device_pin_name) {
693+
continue;
694+
}
695+
696+
lprintf(" ROW-%u ", row);
697+
lprintf(" B:%s ", b.bump_B_.c_str());
698+
699+
lprintf(" ");
700+
if (b.customer_ == device_pin_name)
701+
lprintf(" NOTE:");
702+
lprintf("C:%s ", b.customer_.c_str());
703+
704+
lprintf(" D:%s ", b.ball_ID_.c_str());
660705

706+
lprintf(" XYZ: (%i %i %i) ", p.x_, p.y_, p.z_);
707+
708+
lprintf(" M:%s ", b.col_M_.c_str());
709+
lprintf(" RXTX:%s ", RapidCsvReader::str_Mode_dir(b.rxtx_dir_));
710+
if (b.dirContradiction()) {
711+
lprintf(" DIR_CONTRADICTION ");
661712
}
662-
lputs(" --------");
663713
flush_out(true);
664714
}
715+
lputs(" -------- END DEBUG_NOTE ---- ");
716+
if (tr >= 4) {
717+
lprintf(" -------- get input pin xyz FAILED for mode= %s device_pin_name= %s\n",
718+
mode.c_str(), device_pin_name.c_str());
719+
lprintf(" -------- see info between 'BEGIN DEBUG_NOTE' 'END DEBUG_NOTE' markers\n");
720+
}
721+
flush_out(true);
665722
}
666723
}
667724
}

0 commit comments

Comments
 (0)