Skip to content

Commit b15d22d

Browse files
committed
pin_c: don't translate topInput-2-topInput EDA-3270
1 parent d5be1a7 commit b15d22d

File tree

8 files changed

+38
-30
lines changed

8 files changed

+38
-30
lines changed

planning/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 = "pln0344";
1+
static const char* _pln_VERSION_STR = "pln0345";
22

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

planning/src/pin_loc/pcf_place.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,15 @@ void PinPlacer::print_summary(const string& csv_name) const {
362362

363363
CStr editsVal = has_edits_.empty() ? "FALSE" : has_edits_.c_str();
364364
lprintf(" has edits (config.json) : %s\n", editsVal);
365+
if (not has_edits_.empty()) {
366+
if (tr >= 4) {
367+
lprintf(" pin_names_translated_ : %s\n",
368+
pin_names_translated_ ? "TRUE" : "FALSE");
369+
}
370+
uint icnt = transCnt_.first, ocnt = transCnt_.second;
371+
lprintf(" number of translated pins = %u (input: %u output: %u)\n",
372+
icnt + ocnt, icnt, ocnt);
373+
}
365374

366375
CStr cmapVal = clk_map_file_.empty() ? "(NONE)" : clk_map_file_.c_str();
367376
lprintf(" clk_map_file : %s\n", cmapVal);
@@ -748,15 +757,6 @@ bool PinPlacer::write_dot_place(const PcCsvReader& csv) {
748757
bool is_out_pin =
749758
is_in_pin ? false : (find_udes_output(udes_pn1) >= 0);
750759

751-
////// OBSOLETE CODE: translation is done in translate_PCF_names()
752-
// udes_pn2 = translatePinName(udes_pn1, is_in_pin);
753-
// if (udes_pn2 != udes_pn1) {
754-
// if (tr >= 3) {
755-
// lprintf(" %s pin TRANSLATED: %s --> %s\n",
756-
// is_in_pin ? "input" : "output", udes_pn1.c_str(), udes_pn2.c_str());
757-
// }
758-
// }
759-
760760
const string& udes_pin_name = udes_pn2;
761761
const string& device_pin_name = pcf_cmd[2]; // bump or ball
762762

planning/src/pin_loc/pin_placer.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,9 @@ void PinPlacer::resetState() noexcept {
159159
max_pt_row_ = 0;
160160
no_more_inp_bumps_ = false;
161161
no_more_out_bumps_ = false;
162-
is_fabric_eblif_ = false;
162+
is_fabric_blif_ = false;
163163
pin_names_translated_ = false;
164+
transCnt_ = {0u, 0u};
164165
num_warnings_ = 0;
165166
num_critical_warnings_ = 0;
166167
user_pcf_.clear();
@@ -318,11 +319,12 @@ bool PinPlacer::read_and_write() {
318319
if (usage_requirement_2 || (usage_requirement_0 && user_pcf_ == "")) {
319320
flush_out(true);
320321
if (has_edits_.size()) {
322+
321323
// if auto-PCF and has_edits_, translate and de-duplicate
322324
// user-design ports now, since edits.json could remove some design ports.
323325
if (not pin_names_translated_)
324-
translatePinNames("(auto-PCF)");
325-
//
326+
transCnt_ = translatePinNames("(auto-PCF)");
327+
326328
// de-duplicate inputs
327329
vector<string> dups;
328330
if (user_design_inputs_.size() > 1) {
@@ -489,9 +491,9 @@ bool PinPlacer::read_and_write() {
489491
return true;
490492
}
491493

492-
uint PinPlacer::translatePinNames(CStr memo) noexcept {
494+
upair PinPlacer::translatePinNames(CStr memo) noexcept {
493495
uint16_t tr = ltrace();
494-
uint cnt = 0;
496+
uint icnt = 0, ocnt = 0;
495497
CStr mem = memo ? memo : "";
496498

497499
flush_out((tr >= 5));
@@ -511,7 +513,7 @@ uint PinPlacer::translatePinNames(CStr memo) noexcept {
511513
pin.udes_pin_name_.c_str(), pin.trans_pin_name_.c_str());
512514
}
513515
pin.udes_pin_name_ = pin.trans_pin_name_;
514-
cnt++;
516+
icnt++;
515517
}
516518

517519
flush_out(true);
@@ -527,16 +529,17 @@ uint PinPlacer::translatePinNames(CStr memo) noexcept {
527529
pin.udes_pin_name_.c_str(), pin.trans_pin_name_.c_str());
528530
}
529531
pin.udes_pin_name_ = pin.trans_pin_name_;
530-
cnt++;
532+
ocnt++;
531533
}
532534

533535
if (tr >= 3) {
534536
lprintf("DONE translatePinNames() @ %s\n", mem);
535-
lprintf(" number of translated pins = %u\n", cnt);
537+
lprintf(" number of translated pins = %u (inp:%u out:%u)\n",
538+
icnt + ocnt, icnt, ocnt);
536539
}
537540

538541
pin_names_translated_ = true;
539-
return cnt;
542+
return {icnt, ocnt};
540543
}
541544

542545
} // namespace pln

planning/src/pin_loc/pin_placer.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,10 @@ struct PinPlacer {
268268
bool no_more_inp_bumps_ = false; // state for get_available_device_pin()
269269
bool no_more_out_bumps_ = false; //
270270

271-
bool is_fabric_eblif_ = false;
271+
bool is_fabric_blif_ = false;
272+
272273
bool pin_names_translated_ = false;
274+
upair transCnt_ = {0u, 0u};
273275

274276
mutable uint num_warnings_ = 0, num_critical_warnings_ = 0;
275277
void incrCriticalWarnings() const noexcept { num_critical_warnings_++; }
@@ -304,7 +306,7 @@ struct PinPlacer {
304306

305307
string translatePinName(const string& pinName, bool is_input) const noexcept;
306308

307-
uint translatePinNames(CStr memo) noexcept;
309+
upair translatePinNames(CStr memo) noexcept;
308310
uint translate_PCF_names() noexcept;
309311

310312
const EditItem* findTerminalLink(const string& pinName) const noexcept;

planning/src/pin_loc/read_ports.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ using fio::Fio;
1212
#define CERROR std::cerr << "[Error] "
1313
#define OUT_ERROR lout() << "[Error] "
1414

15-
static bool s_is_fabric_eblif(const string& fn) noexcept {
15+
static bool s_is_fabric_blif(const string& fn) noexcept {
1616
size_t len = fn.length();
1717
if (len < 12 or len > 5000)
1818
return false;
@@ -130,7 +130,7 @@ bool PinPlacer::read_design_ports() {
130130
return false;
131131
}
132132

133-
is_fabric_eblif_ = s_is_fabric_eblif(blif_fn_);
133+
is_fabric_blif_ = s_is_fabric_blif(blif_fn_);
134134
}
135135

136136
size_t sz = raw_design_inputs_.size();
@@ -159,7 +159,7 @@ bool PinPlacer::read_design_ports() {
159159
"DONE read_design_ports() #udes_inputs= %zu #udes_outputs= %zu\n",
160160
raw_design_inputs_.size(), raw_design_outputs_.size());
161161
if (tr >= 4)
162-
lprintf("is_fabric_eblif_: %s\n", is_fabric_eblif_ ? "TRUE" : "FALSE");
162+
lprintf("is_fabric_BLIF: %s\n", is_fabric_blif_ ? "TRUE" : "FALSE");
163163
}
164164

165165
if (tr >= 5) {
@@ -988,7 +988,7 @@ void PinPlacer::finalize_edits() noexcept {
988988
dump_edits("final");
989989
}
990990

991-
translatePinNames("(finalize_edits)");
991+
transCnt_ = translatePinNames("(finalize_edits)");
992992

993993
if (tr >= 5) {
994994
flush_out(true);
@@ -1058,6 +1058,10 @@ string PinPlacer::translatePinName(const string& pinName, bool is_input) const n
10581058
EditItem* root = buf->getRoot();
10591059
assert(root);
10601060
assert(not root->newPin_.empty());
1061+
if (isTopDesInput(root->newPin_)) {
1062+
// never translate a top-input to another top-input. EDA-3270
1063+
return pinName;
1064+
}
10611065
return root->newPin_;
10621066
} else {
10631067
return pinName;

planning/src/util/geo/xyz.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
namespace pln {
1313

14-
using ipair = std::pair<int, int>;
15-
1614
struct XY {
1715
int x_ = INT_MIN, y_ = INT_MIN;
1816

planning/src/util/nw/Nw.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ using std::string;
2424
using std::ostream;
2525
using veci = std::vector<int>;
2626
using vecu = std::vector<uint>;
27-
using ipair = std::pair<int, int>;
28-
using upair = std::pair<uint, uint>;
29-
using uspair = std::pair<uint, string>;
3027

3128
struct NW {
3229
struct Node;

planning/src/util/pln_log.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@
5050
namespace pln {
5151

5252
using CStr = const char*;
53+
using ipair = std::pair<int, int>;
54+
using upair = std::pair<uint, uint>;
55+
using uspair = std::pair<uint, std::string>;
56+
5357
struct LOut;
5458

5559
// log-trace value (debug print verbosity)

0 commit comments

Comments
 (0)