Skip to content

Commit ba2d267

Browse files
committed
Merge branch 'master' of https://github.com/The-OpenROAD-Project-private/OpenROAD into secure-jhkim-test
2 parents 930ee1c + d42b24e commit ba2d267

10 files changed

Lines changed: 52 additions & 196 deletions

File tree

src/dft/test/BUILD

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ filegroup(
6262
"register_bank_cores.lef",
6363
"register_bank_top.v",
6464
"scan_architect_sky130.v",
65-
"scan_inserted_design_sky130.def.ok",
66-
"scan_inserted_design_sky130.out.def",
6765
"scan_inserted_design_sky130.scandef",
6866
"scan_inserted_design_sky130.v",
6967
"scan_inserted_register_bank.v",

src/dft/test/save_defok.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../test/shared/save_defok.sh

src/dft/test/scan_inserted_design_sky130.out.def

Lines changed: 0 additions & 189 deletions
This file was deleted.
File renamed without changes.

src/dft/test/scandef_sky130.tcl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ read_verilog scan_inserted_design_sky130.v
88
link_design scan_inserted_design
99

1010
read_def -incremental scan_inserted_design_sky130.scandef
11-
write_def scan_inserted_design_sky130.out.def
12-
diff_files scan_inserted_design_sky130.out.def scan_inserted_design_sky130.def.ok
11+
set result_def [make_result_file scandef_sky130.def]
12+
write_def $result_def
13+
diff_files $result_def "scandef_sky130.defok"

src/drt/src/gc/FlexGC_main.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3785,7 +3785,7 @@ void FlexGCWorker::Impl::patchMetalShape_cornerSpacing()
37853785
}
37863786
}
37873787

3788-
// loop through violation and patch C5 enclosure minStep for GF14
3788+
// Patch minStep markers for transition layers vias
37893789
void FlexGCWorker::Impl::patchMetalShape_minStep()
37903790
{
37913791
std::vector<drConnFig*> results;
@@ -3801,7 +3801,8 @@ void FlexGCWorker::Impl::patchMetalShape_minStep()
38013801
auto layer = tech_->getLayer(lNum);
38023802
if (!layer->hasVia2ViaMinStepViol()
38033803
&& !tech_->getLayer(lNum - 1)->hasLef58MaxSpacingConstraints()
3804-
&& !tech_->getLayer(lNum + 1)->hasLef58MaxSpacingConstraints()) {
3804+
&& (lNum + 1 >= tech_->getLayers().size()
3805+
|| !tech_->getLayer(lNum + 1)->hasLef58MaxSpacingConstraints())) {
38053806
continue;
38063807
}
38073808

src/grt/include/grt/GlobalRouter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ class GlobalRouter
288288
FastRouteCore* fastroute() const { return fastroute_; }
289289
Rudy* getRudy();
290290

291+
void writePinLocations(const char* file_name);
292+
291293
private:
292294
// Net functions
293295
Net* addNet(odb::dbNet* db_net);

src/grt/src/GlobalRouter.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4782,6 +4782,29 @@ std::vector<PinGridLocation> GlobalRouter::getPinGridPositions(
47824782
return pin_locs;
47834783
}
47844784

4785+
void GlobalRouter::writePinLocations(const char* file_name)
4786+
{
4787+
std::ofstream pin_loc_file;
4788+
pin_loc_file.open(file_name);
4789+
if (!pin_loc_file) {
4790+
logger_->error(
4791+
GRT, 271, "Global route pin locations file could not be opened.");
4792+
}
4793+
4794+
for (const auto [db_net, net] : db_net_map_) {
4795+
if (!net->getPins().empty()) {
4796+
pin_loc_file << net->getName() << " " << net->getNumPins() << "\n";
4797+
for (const Pin& pin : net->getPins()) {
4798+
const odb::Point& pin_pos = pin.getOnGridPosition();
4799+
pin_loc_file << pin.getName() << " " << pin_pos.getX() << " "
4800+
<< pin_pos.getY() << "\n";
4801+
}
4802+
pin_loc_file << "\n";
4803+
}
4804+
}
4805+
pin_loc_file.close();
4806+
}
4807+
47854808
////////////////////////////////////////////////////////////////
47864809

47874810
bool operator<(const RoutePt& p1, const RoutePt& p2)

src/grt/src/GlobalRouter.i

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,11 @@ void read_segments(const char* file_name)
252252
getGlobalRouter()->readSegments(file_name);
253253
}
254254

255+
void write_pin_locations(const char* file_name)
256+
{
257+
getGlobalRouter()->writePinLocations(file_name);
258+
}
259+
255260
} // namespace
256261

257262
%} // inline

test/orfs/README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,28 @@ The `WORK_HOME` is in `/tmp/place/_main`:
6262
Archiving issue to global_place_skip_io_Element_asap7_base_2025-07-16_08-44.tar.gz
6363
Using pigz to compress tar file
6464

65-
To use a local ORFS and OpenROAD built by CMake:
65+
## Using a local ORFS
66+
67+
bazel-orfs can set up ORFS design files locally for debugging purposes, leaving bazel-orfs entirely out of the equation when chasing down issues. Such a setup is most often a lot more convenient than using `--sandbox_debug`.
68+
69+
NOTE! keep in mind that these local ORFS design files have the depndencies `_deps` to run a particular stage only. Hence, use the `do-` prefix for doing `do-place`, `do-2_1_floorplan`, etc. so that `make` dependency checking is not used. If you use `make floorplan`, this will try to run synthesis first and not find the prequisite files, nor variables in config.mk, for synthesis and it will fail with bogus and confusing error messages.
70+
71+
If you're interested in some other stage, replace `place` with `synth`, `floorplan`, `cts`, `grt`, `route` or `final` below.
72+
73+
The `/tmp/place/make` script, if `FLOW_HOME` is set, will use a local ORFS and OpenROAD built by CMake:
6674

6775
$ . ~/OpenROAD-flow-scripts/env.sh
6876
$ /tmp/place/make print-FLOW_HOME print-OPENROAD_EXE
6977
[deleted]
7078
FLOW_HOME = /home/<username>/OpenROAD-flow-scripts/flow
7179
OPENROAD_EXE = /home/<username>/OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad
7280

81+
More explictly ORFS only:
82+
83+
make --file=~/OpenROAD-flow-scripts/flow/Makefile -C /tmp/place/_main WORK_HOME=test/orfs/mock-array DESIGN_CONFIG=config.mk do-place
84+
85+
This is a bit more verbose, but eliminates any concerns about what the `/tmp/place/make` might be doing differently than ORFS only.
86+
7387
## Running a `make issue` with `cfg=exec` configuraiton
7488

7589
[TL;DR](../../docs/user/Bazel-targets.md), `bazelisk test ...` builds and uses the `cfg=exec` configuration when setting up paths:

0 commit comments

Comments
 (0)