refactor(third_party): replace Abseil with STL - #235
Conversation
Review summaryPR #235 removes the vendored Abseil dependency and replaces several Abseil containers with STL containers. The larger mapped MiniRV test does not show a measurable slowdown, but the container changes still have a plausible performance risk for large Liberty workloads. Benchmark comparison
Findings
Test scopeThe mapped MiniRV fixture contains approximately 4,168 standard-cell instances, 4,441 wires, and more than 4,000 processed pins, nets, and components. The benchmark initializes the ics55 LEF/DEF database, loads two large Liberty files, and imports the mapped MiniRV Verilog netlist. It does not run placement, CTS, routing, or STA. Therefore, the evidence supports no observed regression, but it is not sufficient to claim performance neutrality for a million-cell production flow. The likely impact scales with Liberty complexity, the number of timing objects, and the number of library corners loaded. Harness code#include "LibParserCpp.hh"
#include <cstdlib>
int main(int argc, char** argv) {
if (argc < 2 || argc > 3) return 2;
int count = argc == 3 ? std::atoi(argv[2]) : 1;
for (int i = 0; i < count; ++i) {
void* group = liberty_parse_lib(argv[1]);
if (!group) return 1;
liberty_free_lib_group(group);
}
return 0;
}The Tcl cases were: # Parser-only case
lib_init <ics55-liberty-file>
exit
# Full mapped MiniRV initialization case
idb_init <ics55-database-config>
lib_init {<ics55-liberty-file-1> <ics55-liberty-file-2>}
verilog_init <mapped-minirv-netlist> minirv
exitFlamegraph image linksC API parser, repeated Liberty parsingmainPR #235Liberty parser profilemainPR #235
|
Summary
src/third_party/abseil-cppsource tree and its CMake integrationValidation
cmake --build build --target ecc_bin ecc_py --parallel 8